写在前面的话:文章内容来源于但不限于网络、书籍、个人心得体会等,意在总结和方便各位同行快速参考,共同学习进步,记录自己的问题。错误在所难免,有请各位批评斧正。如有侵权,烦请第一时间通知,我会立即删除相关内容,万分感谢!
一、Selective Search for Object Recognition
Selective Search需要考虑的几个问题:
1. 适应不同尺度(Capture All Scales):穷举搜索(Exhaustive Selective)通过改变窗口大小来适应物体的不同尺度,选择搜索(Selective Search)同样无法避免这个问题。算法采用了图像分割(Image Segmentation)和层次算法(Hierarchical Algorithm)有效地解决了这个问题。
2. 多样化(Diversification):单一的策略无法应对多种类别的图像。使用颜色(color)、纹理(texture)、大小(size)等多种策略对分割好的区域进行合并。
注意:合并应注意,颜色( RGB、灰度、HSV )、纹理(texture)、大小、吻合情况 的相似度
3. 效率(Fast to Compute)
二、图像分割
图像分割(Image Segmentation)的主要目的也就是将图像(image)分割成若干个特定的、具有独特性质的区域(region),然后从中提取出感兴趣的目标(object)。
1. 图像(image)的图(graph)表示;Spanning Tree)。 把图像中的每一个像素点看成一个顶点vi ∈ V(node或vertex),像素点之间的关系对(可以自己定义其具体关系,一般来说是指相邻关系)构成图的一条边ei ∈ E,这样就构建好了一个图 G = (V,E)。
2. 最小生成树(Minimun ) 将图像表达成图之后,将每个节点(像素点)看成单一的区域,然后进行合并。使用最小生成树方法合并像素点,然后构成一个个区域。相似的区域在一个分支(Branch)上面(有一条最边连接),大大减少了图的边数。
三、Object proposal 转换(Warp)
将各个Region的大小变换 到CNN 的输入尺寸
变换,包括:
Scale: (B) Isotropically 各向同性地 (C)anisotropically 各向异性地
Warp: 各向异性缩放 +16pixels
四、Supervised pre-training迁移学习
对象分类:标注好的训练数据非常多;
目标检测:标注数据很少,如何用少量的标注数据,训练高质量的模型
迁移学习:检测 ≈ 定位 + 分类。例如我们先对Imagenet数据集(ILSVRC 2012的数据集)进行CNN的分类预训练( pre-traing ),然后在PASCAL数据集上微调( fine-runing )。
ILSVRC: ImageNet Large Scale Visual Recognition Challenge (ImageNet大规模图像识别挑战赛)
PASCAL VOC Challenge: Pattern Analysis, Statical Modeling and Computational Learning Visual Object Classes(模式分析,统计建模,计算学习 视觉物体分类挑战赛)
五、CNN训练及特征提取
1.预训练:
训练集: ILSVRC 2012;
输出:1000维类别标号;
学习率:0.01
提取的特征为4096维,送入一个4096->1000的全连接(fc)层进行分类
2.调优训练
训练集:PASCAL VOC 2007;
学习率:0.001
输入:227x227的正负样本(正:32,负:96;包括所有类别)
输出:21维(20类+背景);
同样使用上述网络,最后一层换成4096->21的全连接网络
正负样本的选取: IOU>0.5,标记为positive,否则标记为negative
SVM分类器输入:4096*N或者21*N
六、训练SVM分类器
1.训练特定类别的SVM分类器
2.训练SVM的正负样本:作者同样是使用IoU阈值的方法,计算每一个region proposal与标准框的IoU,这次的阈值为0.3(实验结果),大于这个阈值的作为正样本,否则为负样本。
3.Hard negative mining:一般来说训练一个SVM分类器,需要正负两个样本,训练集图片中作为正样本很少,但是随机产生用于训练的负样本可能远远大于正样本,这样训练出来的SVM效果并不好,所以利用Hard negative mining方法,从负样本中选取出一些有代表性的负样本,使得分类器的训练结果更好。
正:标注样本+IOU>0.5
负:不包含正样本区域
4.输入:CNN提取的区域特征 输出:每个候选区域特征的概率输出
七、获取每个类别的Bounding box(BBox)
针对各个类别(N):
CNN生成每个Region proposal固定长度的特征向量
SVMs分类器计算每个Region特征向量的Score
每个Region(区域)的Score排序
NMS:选取概率最大的区域,计算与其他区域的IOU;如果IOU大于给定阈值(经验值0.3)丢弃该区域; 同样的 过程依次遍历所有剩余的Region。
用各个类指定的回归模型来细化框的位置
八、NMS:非极大值抑制
例如:定位一个车辆,算法就找出了若 干方框需要判别哪些矩形框是没用的。
非极大值抑制:先假设有6个矩形框, 根据分类器分类概率做排序,从小到大 分别属于车辆的概率分别为A、B、C、 D、E、F。
(1)从最大概率矩形框F开始,分别判断 A~E与F的重叠度IOU是否大于某个设定的阈值;
(2)假设B、D与F的重叠度超过阈值,那么就扔掉B、D;并标记第一个矩形框F,是我们保留下来的。
(3)从剩下的矩形框A、C、E中,选择概率最大的E,然后判断E与A、C的重叠度,重叠度大于一定的阈值,那么就扔掉;并标记E是我们保留下来的第二个矩形框。
就这样一直重复,找到所有被保留下来的矩形框。
九、IOU交并比
IOU表示了bounding box 与 ground truth 的重叠度,如下图所示:
矩形框A、B的重合度IOU计算公 式:IOU=(A∩B)/(A∪B) 或 IOU=SI/(SA+SB-SI)
考察一个候选框和当前图像上所有标定框重叠面积最大的一个。如果重叠比例大于设定阈值,则认为此候选框为此标定的类别;否则认为此候选框为背景。
十、位置精修
根据最后输出的feature 进一步做了regression, 采用的是之前在DPM检测中的用的Linear regression model
例如:左图自行车的左轮, 如果我们只用rootfilter检 测出来的区域,即红色区 域,那么前轮会被切掉一 部分,但是如果能综合partfilter检测出来的bounding box就能得到更加确的bounding box如右图。 使用最小二乘(Least Squres)线性回归模型。
十一、 回归器
对每一类目标,使用一个线性回归器进行精修。
正则项 λ=10000。
输入:CNN网络pool5层的4096维特征
输出:xy方向的缩放和平移W=[x,y,w,h]。
训练样本: 判定为本类的候选框中,和真值重叠面积大于0.6的候选框。
其中*可以是:x,y,w,h,(x,y)是目标中心相对位置, w,h是变换后的宽度和高度缩放比例的对数值