精华内容
下载资源
问答
  • Parameter(参数)用来表示“出现在子句(或类型定义)头部的变量”, ...Argument(参量)用来表示“出现在目标(或类型的实例)中的”。 换句话说,Arguments(参量)就是对 Parameters(参数)的具体化。 ...

    Parameter(参数)用来表示“出现在子句(或类型定义)头部的变量”,

    Argument(参量)用来表示“出现在目标(或类型的实例)中的值”。

    换句话说,Arguments(参量)就是对 Parameters(参数)的具体化。

    展开全文
  • 迄今为止我都是把 Parameter(参数)用来表示“出现在子句(或类型定义)头部的变量”,而把 Argument(参量)用来表示“出现在目标(或类型的实例)中的”。换句话说,Arguments(参量)就是对 Parameters(参数...
    • 来源:http://www.cs.mu.oz.au/
    • 作者:Ralph Becket

    我重新开始了从事编写 Mercury 指南书籍的工作。迄今为止我都是把 Parameter(参数)用来表示“出现在子句(或类型定义)头部的变量”,而把 Argument(参量)用来表示“出现在目标(或类型的实例)中的值”。换句话说,Arguments(参量)就是对 Parameters(参数)的具体化。

    转载于:https://www.cnblogs.com/Laeb/archive/2007/01/29/633857.html

    展开全文
  • 背景:非极大抑制算法(Non-maximum suppression, NMS)的本质是搜索局部极大,抑制非极大元素。在目标检测之中用到非常多。 目的:搞懂此算法原理且看懂代码。 目录 一、算法解析 1.1 算法概览 1.2 算法...

    背景:非极大值抑制算法(Non-maximum suppression, NMS)的本质是搜索局部极大值,抑制非极大值元素。在目标检测之中用到非常多。

    目的:搞懂此算法原理且看懂代码。

    目录

    一、算法解析

    1.1 算法概览

    1.2 算法过程

    二、c代码解析

    2.1 输入参量

    2.2 按置信概率排序

    sort函数

    2.3 IOU的确定

    string.compare函数

    vector.at函数

    2.4 概率最大框保留,重叠抑制

    vector::inerator

    2.5 最终保留的框

    三、python代码解析

    np.empty

    s_sort

    3.1 按照置信概率排序

    numpy.argsort函数

    numpy.zeros_like函数

    3.2  IOU的计算


    一、算法解析

    1.1 算法概览

    非极大值抑制(Non-Maximum Suppression,NMS),顾名思义就是抑制不是极大值的元素,可以理解为局部最大搜索。这个局部代表的是一个邻域,邻域有两个参数可变,一是邻域的维数,二是邻域的大小。这里不讨论通用的NMS算法(参考论文《Efficient Non-Maximum Suppression》对1维和2维数据的NMS实现),而是用于目标检测中提取分数最高的窗口的。例如在行人检测中,滑动窗口经提取特征,经分类器分类识别后,每个窗口都会得到一个分数。但是滑动窗口会导致很多窗口与其他窗口存在包含或者大部分交叉的情况。这时就需要用到NMS来选取那些邻域里分数最高(是行人的概率最大),并且抑制那些分数低的窗口。
    NMS在计算机视觉领域有着非常重要的应用,如视频目标跟踪、数据挖掘、3D重建、目标识别以及纹理分析等。

    1.2 算法过程

    Step1:按置信概率排列相应的备选框

    Step2:取最大的框作为保留框,与其IOU大于阈值的框删除掉

    Step3:剩下的框执行Step2

    很容易理解

    根据候选框的类别分类概率做排序:A<B<C<D<E<F

    A<B<C<D<E<F

    1. 先标记最大概率矩形框F是我们要保留下来的;
    2. 从最大概率矩形框F开始,分别判断A~E与F的重叠度IOU(两框的交并比)是否大于某个设定的阈值,假设B、D与F的重叠度超过阈值,那么就扔掉B、D;
    3. 从剩下的矩形框A、C、E中,选择概率最大的E,标记为要保留下来的,然后判读E与A、C的重叠度,扔掉重叠度超过设定阈值的矩形框

    就这样一直重复下去,直到剩下的矩形框没有了,标记完所有要保留下来的矩形框

    二、c代码解析

    void nms(vector<struct Bbox> &boundingBox_, vector<struct orderScore> &bboxScore_, const float overlap_threshold, string modelname){
    	if(boundingBox_.empty()){
            return;
        }
        std::vector<int> heros;
        //sort the score
        sort(bboxScore_.begin(), bboxScore_.end(), cmpScore);
    
        int order = 0;
        float IOU = 0;
        float maxX = 0;
        float maxY = 0;
        float minX = 0;
        float minY = 0;
        while(bboxScore_.size()>0){
            order = bboxScore_.back().oriOrder;
            bboxScore_.pop_back();
            if(order<0)continue;
            heros.push_back(order);
            boundingBox_.at(order).exist = false;//delete it
    
            for(int num=0;num<boundingBox_.size();num++){
                if(boundingBox_.at(num).exist){
                    //the iou
                    maxX = (boundingBox_.at(num).x1>boundingBox_.at(order).x1)?boundingBox_.at(num).x1:boundingBox_.at(order).x1;
                    maxY = (boundingBox_.at(num).y1>boundingBox_.at(order).y1)?boundingBox_.at(num).y1:boundingBox_.at(order).y1;
                    minX = (boundingBox_.at(num).x2<boundingBox_.at(order).x2)?boundingBox_.at(num).x2:boundingBox_.at(order).x2;
                    minY = (boundingBox_.at(num).y2<boundingBox_.at(order).y2)?boundingBox_.at(num).y2:boundingBox_.at(order).y2;
                    //maxX1 and maxY1 reuse 
                    maxX = ((minX-maxX+1)>0)?(minX-maxX+1):0;
                    maxY = ((minY-maxY+1)>0)?(minY-maxY+1):0;
                    //IOU reuse for the area of two bbox
                    IOU = maxX * maxY;
                    if(!modelname.compare("Union"))
                        IOU = IOU/(boundingBox_.at(num).area + boundingBox_.at(order).area - IOU);
                    else if(!modelname.compare("Min")){
                        IOU = IOU/((boundingBox_.at(num).area<boundingBox_.at(order).area)?boundingBox_.at(num).area:boundingBox_.at(order).area);
                    }
                    if(IOU>overlap_threshold){
                        boundingBox_.at(num).exist=false;
                        for(vector<orderScore>::iterator it=bboxScore_.begin(); it!=bboxScore_.end();it++){
                            if((*it).oriOrder == num) {
                                (*it).oriOrder = -1;
                                break;
                            }
                        }
                    }
                }
            }
        }
        for(int i=0;i<heros.size();i++)
            boundingBox_.at(heros.at(i)).exist = true;
    }

    2.1 输入参量

    vector<struct Bbox> &boundingBox_, 输入的备选框,Bbox类型的向量,名称为boundingBox_

    struct Bbox
    {
        float score;
        int x1;
        int y1;
        int x2;
        int y2;
        float area;
        bool exist;
        mydataFmt regreCoord[4];
    };

    其中包括四个点的坐标,置信概率,区域大小,是否存在的概率。

    vector<struct orderScore> &bboxScore_, 表示框的置信概率和初始的顺序。

    struct orderScore
    {
        mydataFmt score;
        int oriOrder;
    };

    const float overlap_threshold, string modelname

    分别为抑制框的IOU阈值与相应的nms的方法分为Union与Min

    2.2 按置信概率排序

    程序开始时,需要将相应的备选框排序

        //sort the score
        sort(bboxScore_.begin(), bboxScore_.end(), cmpScore);

    与之对应的cmpScore函数为:

    bool cmpScore(struct orderScore lsh, struct orderScore rsh){
        if(lsh.score<rsh.score)
            return true;
        else
            return false;
    }

    sort函数

    头文件<algorithm>

    http://www.cplusplus.com/reference/algorithm/sort/

    程序意思即对备选框按照置信概率升序排列(注意这里是置信概率,置信概率之中包含了原始的备选框的位置)。

    2.3 IOU的确定

    maxX = (boundingBox_.at(num).x1>boundingBox_.at(order).x1)?boundingBox_.at(num).x1:boundingBox_.at(order).x1;
    maxY = (boundingBox_.at(num).y1>boundingBox_.at(order).y1)?boundingBox_.at(num).y1:boundingBox_.at(order).y1;
    minX = (boundingBox_.at(num).x2<boundingBox_.at(order).x2)?boundingBox_.at(num).x2:boundingBox_.at(order).x2;
    minY = (boundingBox_.at(num).y2<boundingBox_.at(order).y2)?boundingBox_.at(num).y2:boundingBox_.at(order).y2;
    //maxX1 and maxY1 reuse 
    maxX = ((minX-maxX+1)>0)?(minX-maxX+1):0;
    maxY = ((minY-maxY+1)>0)?(minY-maxY+1):0;
    //IOU reuse for the area of two bbox
    IOU = maxX * maxY;
    if(!modelname.compare("Union"))
    	IOU = IOU/(boundingBox_.at(num).area + boundingBox_.at(order).area - IOU);
    else if(!modelname.compare("Min")){
    	IOU = IOU/((boundingBox_.at(num).area<boundingBox_.at(order).area)?boundingBox_.at(num).area:boundingBox_.at(order).area);
    }

     这部分函数相当于确定num位置和order位置的bBox之间的IOU。

    string.compare函数

    http://www.cplusplus.com/reference/string/string/compare/

    string在c与python之中都有出现且常用,所以应当仔细研读,熟练运用。

    返回值为0表示相等。modelname.compare("Union")表示modelname为 "Union"时候则返回0.

    vector.at函数

    http://www.cplusplus.com/reference/vector/vector/at/

      std::vector<int> myvector (10);   // 10 zero-initialized ints
    
      // assign some values:
      for (unsigned i=0; i<myvector.size(); i++)
        myvector.at(i)=i;

    2.4 概率最大框保留,重叠抑制

        while(bboxScore_.size()>0){
            order = bboxScore_.back().oriOrder;
            bboxScore_.pop_back();
            if(order<0)continue;
            heros.push_back(order);
            boundingBox_.at(order).exist = false;//delete it

    概率最大的框的在Bbox向量组中的序列存于order之中,存于向量hero之中,然后当前boundingBox删掉,其exist设为false

    if(IOU>overlap_threshold){
    	boundingBox_.at(num).exist=false;
    	for(vector<orderScore>::iterator it=bboxScore_.begin(); it!=bboxScore_.end();it++){
    		if((*it).oriOrder == num) {
    			(*it).oriOrder = -1;
    			break;
    		}
    	}
    }

    与最大概率框IOU大于阈值的框也删掉。首先是boundingBox的exist设为false,然后bboxScore的oriOrder设为-1

    vector::inerator

    http://www.cplusplus.com/reference/vector/vector/

    2.5 最终保留的框

        for(int i=0;i<heros.size();i++)
            boundingBox_.at(heros.at(i)).exist = true;

    只是将最终保留的框的exist设为true,删掉的框exist设为false,但是其内存空间还是占用的。

    三、python代码解析

    def nms(boxes, threshold, method):
        if boxes.size == 0:
            return np.empty((0, 3))
        x1 = boxes[:, 0]
        y1 = boxes[:, 1]
        x2 = boxes[:, 2]
        y2 = boxes[:, 3]
        s = boxes[:, 4]
        area = (x2 - x1 + 1) * (y2 - y1 + 1)
        s_sort = np.argsort(s)
        pick = np.zeros_like(s, dtype=np.int16)
        counter = 0
        while s_sort.size > 0:
            i = s_sort[-1]
            pick[counter] = i
            counter += 1
            idx = s_sort[0:-1]
            xx1 = np.maximum(x1[i], x1[idx])
            yy1 = np.maximum(y1[i], y1[idx])
            xx2 = np.minimum(x2[i], x2[idx])
            yy2 = np.minimum(y2[i], y2[idx])
            w = np.maximum(0.0, xx2 - xx1 + 1)
            h = np.maximum(0.0, yy2 - yy1 + 1)
            inter = w * h
            if method is 'Min':
                o = inter / np.minimum(area[i], area[idx])
            else:
                o = inter / (area[i] + area[idx] - inter)
            s_sort = s_sort[np.where(o <= threshold)]
        pick = pick[0:counter]
        return pick

    np.empty

    https://docs.scipy.org/doc/numpy/reference/generated/numpy.empty.html

    https://blog.csdn.net/HHTNAN/article/details/78590780

        if boxes.size == 0:
            return np.empty((0, 3))

    这个表示若是没有输入相应的框则返回空数组,数组中带0则数组不存在,输出为空 []

    s_sort

    https://blog.csdn.net/HARDBIRD123/article/details/82261651

    3.1 按照置信概率排序

    def nms(boxes, threshold, method):
        if boxes.size == 0:
            return np.empty((0, 3))
        x1 = boxes[:, 0]
        y1 = boxes[:, 1]
        x2 = boxes[:, 2]
        y2 = boxes[:, 3]
        s = boxes[:, 4]
        area = (x2 - x1 + 1) * (y2 - y1 + 1)
        s_sort = np.argsort(s)
        pick = np.zeros_like(s, dtype=np.int16)
        counter = 0

    这部分代码计算了相应的区域的面积,然后运用numpy.argsort函数对置信概率进行排序。

    numpy.argsort函数

    https://docs.scipy.org/doc/numpy/reference/generated/numpy.argsort.html

    针对s排序的顺序存在s_sort数组之中。

    numpy.zeros_like函数

    https://docs.scipy.org/doc/numpy/reference/generated/numpy.zeros_like.html

    返回一个与初始置信概率数组相同结构的数组 s=boxes[:,4],(这里数据类型为int16)。pick为最终选用的置信概率。

    3.2  IOU的计算

        while s_sort.size > 0:
            i = s_sort[-1]
            pick[counter] = i
            counter += 1
            idx = s_sort[0:-1]
            xx1 = np.maximum(x1[i], x1[idx])
            yy1 = np.maximum(y1[i], y1[idx])
            xx2 = np.minimum(x2[i], x2[idx])
            yy2 = np.minimum(y2[i], y2[idx])
            w = np.maximum(0.0, xx2 - xx1 + 1)
            h = np.maximum(0.0, yy2 - yy1 + 1)
            inter = w * h
            if method is 'Min':
                o = inter / np.minimum(area[i], area[idx])
            else:
                o = inter / (area[i] + area[idx] - inter)
            s_sort = s_sort[np.where(o <= threshold)]

    展开全文
  • 假定视频图像序列中每个背景图像像素点灰度观测的时序变化由白噪声引起,利用建立的初始化背景高斯统计模型对每帧图像进行归一化,得到了背景像灰度比值的分布符合标准柯西分布的结论,解决了柯西分布的模型参量估计...
  • 应用改进的粒子群算法,结合双向反射分布函数五参量模型,获得了测量光谱范围内各波长(间隔1 nm)对应的共381组五参量值。利用五参量模型计算了目标样片的光谱双向反射分布函数及其方向半球反射率(DHR),并与实验测量...
  • 并根据一定的通信系统参量,利用蒙特卡罗方法模拟了水下目标接收信号的时间空间分布。蒙特卡罗估计误差与平均比值的上限小于0.3%。根据模拟的结果,得出了优化的接收系统采样时隙接收望远镜视场角,进而计算了...
  • 该方法通过增加目标透射光辐射强度的反演过程,同时引入修正参数,对目标透射光辐射强度进行校正,有效避免了传统水下偏振差分成像模型中由全局参量直接反演场景图像造成的图像失真局部灰度为负数的情况。...
  • 然而,在实际工作过程中,由于探测器噪声等因素的影响,平均半径计算与理论存在一定的偏差,从而对校正过程产生影响。对噪声下平均半径的计算误差以及阈值对误差的影响进行了理论仿真分析,结果表明存在最优...
  • 利用数学方法对模型进行求解,即推导出网络系统的关键参量和目标分析函数。通过验证实验,该模型可以求得网络中非饱和资源分配状态下的一些关键参量值。理论分析和实验结果都说明了新模型是合理、有效的。
  • 分析了地面激光雷达的工作特点,提出假设简化了激光强度数据的计算方程,得出影响激光强度数据的3个主要参量目标反射率、入射角度扫描距离。以垂直立面为目标分析地面激光雷达扫描的空间点阵间距的非均匀分布...
  • 结果表明:对于一定的偏振测量精度,纵向、横向允许的安置误差随波长和目标偏振度的变化而变化,两棱镜光轴夹角允许的安置误差则为固定.研究结果为双Wollaston棱镜偏振测量系统的设计提供了理论依据.
  • 针对露天矿用凿岩用LWD-200B钻机的自动钻进系统的时变、多目标非线性的特点,提出了利用模糊控制器对钻机主回转马达恒钻压给进的控制方案。将采样时获得基础参量的误差误差变化信号送入模糊单元,模糊推理后对主...
  • 制作了以聚碳酸酯毛细管为基管的,高柔韧性的,可同时低损耗传输红外目标波长激光可见导航光红外的空芯光纤。对光纤传输性能进行了测试。在2.94 μm波长的Er∶YAG0.63 μm波长的红色半导体激光器的直线损耗分别为...
  • 辐射定标: 1、定义(Radiometric Calibration)是计算地物的光谱反射率或光谱...反射率法:在卫星过顶时同步测量地面目标反射率因子大气光学参量(如大气光学厚度、大气柱水汽含量等)然后利用大气辐射传输模...

    辐射定标:

    1、定义(Radiometric Calibration)是计算地物的光谱反射率或光谱辐射亮度时,或者需要对不同时间、不同传感器获取的图像进行比较时,都必须将图像的亮度灰度值(DN)转换为绝对的辐射亮度或者表观反射率(TOA),这个过程就是辐射定标。

    2、方法

    • 反射率法:在卫星过顶时同步测量地面目标反射率因子和大气光学参量(如大气光学厚度、大气柱水汽含量等)然后利用大气辐射传输模型计算出遥感器入瞳处辐射亮度值,具有较高的精度。
    • 辐亮度法:采用经过严格光谱与辐射标定的辐射计,通过航空平台实现与卫星遥感器观测几何相似的同步测量,把机载辐射计测量的辐射度作为已知量,去标定飞行中遥感器的辐射量,从而实现卫星的标定,最后辐射校正系数的误差以辐射计的定标误差为主,仅仅需要对飞行高度以上的大气进行校正,回避了底层大气的校正误差,有利于提高精度。
    • 辐照度法:又称改进的反射率法,利用地面测量的向下漫射与总辐射度值来确定卫星遥感器高度的表观反射率,进而确定出遥感器入瞳处辐射亮度。这种方法是使用解析近似方法来计算反射率,从而可大大缩减计算时间和计算复杂性。

    3、ENVI软件的操作

    http://blog.sina.com.cn/s/blog_764b1e9d0102v59e.html

    大气校正:

    1、定义

    • 大气校正是指传感器最终测得的地面目标的总辐射亮度并不是地表真实反射率的反映,其中包含了由大气吸收,尤其是散射作用造成的辐射量误差。大气校正就是消除这些由大气影响所造成的辐射误差,反演地物真实的表面反射率的过程

    2、ENVI主要方法:

    • FLASSH
    • QUICK

    3、常用的模型:

    6S辐射传输模型和Mortran模型

    几何校正:

       定义:几何校正是利用地面控制点和几何校正数学模型来矫正非系统因素产生的误差,由于校正过程中会将坐标系统赋予图像数据,所以此过程包括了地理编码。

       ENVI操作:http://blog.sina.com.cn/s/blog_764b1e9d0102v1it.html

    地形校正:

    复杂地形下遥感影像受传感器方位与太阳高度、方位等影响,造成阴坡接收到的照度较弱从而具有较低的亮度值,阳坡接收到的照度较强从而具有较高的亮度值。地形校正是指通过各种变换,将所有像元的辐射亮度变换到某一参考平面(通常取水平面),从而消除由于地形起伏而引起的影像辐亮度值的变化,使影像更好地反映地物的光谱特征(高永年等,2008)

    ENVI操作:http://blog.sina.com.cn/s/blog_764b1e9d0102y7ss.html

    展开全文
  • 根据手机镜头的设计要求, 研究了设计要求参量与Delano图的相关约束条件和目标函数的转换关系, 结合蒙特卡罗-粒子群优化(PSO)混合算法, 实现了手机镜头初始结构的快速求解生成。使用所提出的方法设计了一款5片式...
  • 此外,还采用了采用TCi热分析仪的瞬态技术的实验程序来确定加纳选定的砂浆混凝土砌块的热物理性质,此外,还根据设计进行了设计的参量砂浆混凝土砌块的变比,并从调查中获得了比例。诺丁汉大学。 根据研究,在...
  • 在多路CCD成像结构中,由于影响各路成像参量不一致的因素较多,常规校正方法变得复杂困难。在分析多路CCD成像机理的基础上,提出了一种利用小波变换的多路CCD成像非一致性动态校正新方法,即在分析同一目标成像中异路...
  • 进行比较(见图2), 得到实际测量值与设定值的偏差,然后根据偏差信号的大小、变化率被控制对象的动态特性,经过思维推理,决定采用什么样的控制规律,以使被控制量快速、平稳、准确地到达所预定的目标值。...
  • 大型竞技场意味着无人机必须跨越更多距离才能达到目标,这直接影响其能量任务的成功。 可以通过添加材料(在“材料”部分中介绍)来定制竞技场。 墙体颜色 [R,G,B] “墙壁颜色”参数可用于设置舞台的墙壁颜色...
  • DBX260中文说明书

    2013-04-24 11:07:35
    数据轮还用来改变选择参数的。按下数据轮触发当前被选效果模块任何页上可得到的参数。 2.2 FX钮数组的概况 在接下来的部分里将介绍260 DriveRack FX 钮精确导航功能的具体内容。每一个图指示的是每一个FX 钮的...
  • boolean (8bit,不定的)只有truefalse两个 char 16bit, 0~2^16-1 (2^16=6万6) byte 8bit, -2^7~2^7-1 (2^7=128; 注意:两个 byte 数相加,变 int 型) short 16bit, -2^15~2^15-1 (2^15=32768) int 32bit, ...
  • MATLAB实现K-means聚类

    2015-09-20 16:50:53
    % varargin:实际输入参量 if nargin error('At least two input arguments required.'); end % n points in p dimensional space [n, p] = size(X); Xsort = []; Xord = []; % 变量名称 pnames = { 'distance'...

空空如也

空空如也

1 2
收藏数 24
精华内容 9
关键字:

参量值和目标值