文章目录
一、识别、定位、检测和分割
1.1 识别和定位:
针对单个目标的任务,识别就是给定一张图片,要让计算机告诉你图片中是什么。而定位任务不仅要识别出图像中是什么,还要给出目标在图像中的位置信息。简单的说,就是用一个矩形框把识别的目标框出来(有时候也有多个固定数量的目标)。而我们通常采用两种方式在图像中表示一个矩形框:
- (x1, y1, x2, y2): 即给出矩形框左上角和右下角的坐标
- (x1, y1, w, h):即给出矩形框的左上角坐标和矩形框的长宽。
总的的来说,不管用哪种方法表示,我们都至少需要 4 个值来定位出图像中的一个目标,如果一副图像中包含 C 个目标,那我们至需要 4*C
值来定位所有目标(这里不包括用于识别的类别标签)。
1.2 检测和分割:
针对一幅图像中有多个目标(数量不固定)的情况。检测任务要尽可能多的将图像中的目标用矩形框定位出来,相当于对多个目标的定位。而分割要求更严格,不再是用矩形框框出目标,而是要从像素层面上将目标和背景完全分离出来。分割的结果往往是找出目标的轮廓线。
![](https://i-blog.csdnimg.cn/blog_migrate/7b754998ab0911ccf26940b120ee8911.png)
二、定位任务评估方法:Intersection over Union (IoU)
IoU用来衡量模型最终输出的矩形框或者测试过程中找出的候选区域(Region Proposal)与实际的矩形框(Gound Truth)的差异程度,定义为两者交集和并集的比值。
![](https://i-blog.csdnimg.cn/blog_migrate/e87805e83ff4ba3a7e5aadb72a25ae02.png)
三、目标检测评价指标:mean average precision (mAP)
这里涉及到两个概念:查准率(precision) 和 查全率(recall)
因为对于目标检测任务,我们往往需要在一张图中检测多个目标。对于每一个目标都可以计算测试的查准率和查全率,通过选用不同的阈值进行测试实验,可以得出多组查准率和查全率数据,利用这些数据可以得到一条 P-R 曲线,而曲线下包围的面积就表示 average precision (AP),也就是说,这个值越大,说明模型的综合性能越好。而对于多个目标,我们计算所有目标AP的平均值作为目标检测最终的性能评价指标即 mean average precision (mAP)
四、选择性搜索(selective search)
基于候选框的目标检测需要先产生 2000
个左右的候选区域,而产生这些区域用的最多的方法是选择性搜索。
算法过程大致如下:
- 生成初始区域集合
- 计算区域集合中所有相区域的相似度(相似度综合考虑了颜色、纹理、尺寸和空间交叠)
- 合并相似度最高的两个区域,并移除所有与这两个区域有关的区域
- 重新计算合并的区域和其他所有区域的相似度并执行合并过程直到结束
五、非极大值抑制(Non-Maximum Suppression)
在目标检测的时候,因为我们是在多个区域上分别执行的,最终必然会产生大量的候选框。而我们希望得到一个最好的框来定位目标的位置。非极大值抑制完成的就是抑制冗余的矩形框,保留最优框的过程。
具体来说,对于某一个目标,我们的模型框出了很多候选框,每一矩形框都会有一个对应的类别分类概率,我们将他们从大到小排序,然后舍弃掉与最大概率的矩形框相似度高的矩形框(IoU值大于设定的阈值),保留剩下来的矩形框。
非极大值抑制流程如下:
# INPUT:所有预测出的bounding box (bbx)信息(坐标和置信度confidence), IOU阈值(大于该阈值的bbx将被移除)
for object in all objects:
(1) 获取当前目标类别下所有bbx的信息
(2) 将bbx按照confidence从高到低排序,并记录当前confidence最大的bbx
(3) 计算最大confidence对应的bbx与剩下所有的bbx的IOU,移除所有大于IOU阈值的bbx
(4) 对剩下的bbx,循环执行(2)和(3)直到所有的bbx均满足要求(即不能再移除bbx)