R-CNN
Pre-knowledge
1. Selective Search
Goal:
Propose possible regions of the object.
Considerations:
尽可能遍历所有的尺度,但是不同于暴力穷举,可以先得到小尺度的区域,然后一次次合并得到大的尺寸,这样也符合人类的视觉认知。
既然特征很多,那就把我们知道的特征都用上,但是同时也要照顾下计算复杂度,不然和穷举法也没啥区别了。 texture, edge, color
Hierarchical Grouping. 能够对每个区域进行排序,这样你想要多少个候选我就产生多少个.
Methods
a. Algorithm
计算所有相邻区域之间的相似度(相似度函数之后会重点分析),放入集合 S 中,集合 S 保存的其实是一个区域对以及它们之间的相似度。
找出 S 中相似度最高的区域对,将它们合并,并从 S 中删除与它们相关的所有相似度和区域对。重新计算这个新区域与周围区域的相似度,放入集合 S 中,并将这个新合并的区域放入集合 R 中。重复这个步骤直到 S 为空(需要注意的是,为了计算方便,当两个region合并的时候,新的region的特征应当从之前的两个region的特征直接计算出,而不是再回到图片像素来计算)。
并且,其中每次产生的图像块包括合并的图像块我们都保存下来,这样就得到图像的分层表示。
b. Similarity Calculation
相似度度量公式分为四个子公式,称为互补相似度测量(Complementary Similarity Measures) 。这四个子公式的值都被归一化到区间 [0, 1] 内。
颜色相似度Scolor (ri,rj)
纹理相似度stexture (ri,rj)
尺寸相似度ssize (ri,rj)
填充相似度sfill(ri,rj)
c. Combining Locations
我们将覆盖整个区域的 region 的序号标记为 1,合成这个区域的两个子区域的序号为 2,以此类推。但如果仅按序号排序,会存在一个漏洞,那就是区域面积大的会排在前面,为了避免这个漏洞,作者又在每个序号前乘上一个随机数 RND∈[0,1]RND∈[0,1],通过这个新计算出来的数值,按从小到大的顺序得出 region 最终的排序结果。
2. Non-maximum suppression 非极大值抑制
同一个目标会被多个建议框包围,这时需要非极大值抑制操作去除得分较低的候选框以减少重叠框。
(2000×20维矩阵表示每个建议框是某个物体类别的得分情况)
① 对2000×20维矩阵中每列按从大到小进行排序;
② 从每列最大的得分建议框开始,分别与该列后面的得分建议框进行IoU计算,若IoU>阈值 (IoU: (A∩B)/(A∪B)),则剔除得分较小的建议框,否则认为图像中存在多个同一类物体;
③ 从每列次大的得分建议框开始,重复步骤②;
④ 重复步骤③直到遍历完该列所有建议框;
⑤ 遍历完2000×20维矩阵所有列,即所有物体种类都做一遍非极大值抑制;
⑥ 最后剔除各个类别中剩余建议框得分少于该类别阈值的建议框。
Main Steps of RCNN
1. 输入一张多目标图像,采用selective search算法提取约2000个建议框;
2. 先在每个建议框周围加上16个像素值为建议框像素平均值的边框,再直接变形为227×227的大小;
(AlexNet get features:)
3. 先将所有建议框像素减去该建议框像素平均值后【预处理操作】,再依次将每个227×227的建议框输入AlexNet CNN网络获取4096维的特征【比以前的人工经验特征低两个数量级】,2000个建议框的CNN特征组合成2000×4096维矩阵;
(SVM classify:)
4. 将2000×4096维特征与20个SVM组成的权值矩阵4096×20相乘【20种分类,SVM是二分类器,则有20个SVM】,获得2000×20维矩阵表示每个建议框是某个物体类别的得分。
(Get location:)
5. 分别对上述2000×20维矩阵中每一列即每一类进行非极大值抑制剔除重叠建议框,得到该列即该类中得分最高的一些建议框。
6. 分别用20个回归器对上述20个类别中剩余的建议框进行回归操作,最终得到每个类别的修正后的得分最高的bounding box。 (用回归器是因为目标检测不仅是要对目标进行识别,还要完成定位任务,所以最终获得的bounding-box也决定了目标检测的精度。对建议框进行校正,使得校正后的Region Proposal与ground truth更接近, 以提高最终的检测精度。)
So, we need the model for each AlexNet, SVM and Bounding box regression. The following part is the training process.
Training Process
rcnn首先需要在AlexNet上进行分类的训练model,得到AlexNet之后才能进行分类(Pretrained procedure->SoftMax2SVM)。分类之后在改一下AxlexNet model (fc: 1000->21)得到detection model(training)->(testing)
然后在上面利用SVM进行二分类判断当前的region有没有包含我们需要的物体(对结果进行排序,取前面的IOU最大的那几个(nms)),在对这些进行canny边缘检测,才可以得到bounding-box(then B-BoxRegression)。
AlexNet Training
1. Pre-training
没有位置情况下,训练每个类的feature分布情况
ILSVRC样本集上用于图片分类的含标注类别的训练集有1millon之多,总共含有1000类;而PASCAL VOC 2007样本集上用于物体检测的含标注类别和位置信息的训练集只有10k,总共含有20类,直接用这部分数据训练容易造成过拟合,因此文中利用ILSVRC2012的训练集先进行有监督预训练。
ILSVRC样本集上仅有图像类别标签,没有图像物体位置标注;
采用AlexNet CNN网络进行有监督预训练,学习率=0.01;
该网络输入为227×227的ILSVRC训练集图像,输出最后一层为4096维特征->1000类的映射,训练的是网络参数。
2. 特定样本下的微调
有位置情况下,用ground truth 和与ground truth>IoU 的pos
PASCAL VOC 2007样本集上既有图像中物体类别标签,也有图像中物体位置标签;
采用训练好的AlexNet CNN网络进行PASCAL VOC 2007样本集下的微调,学习率=0.001【0.01/10为了在学习新东西时不至于忘记之前的记忆】;
mini-batch为32个正样本和96个负样本【由于正样本太少】;
该网络输入为建议框【由selective search而来】变形后的227×227的图像,修改了原来的1000为类别输出,改为21维【20类+背景】输出,训练的是网络参数。
SVM training
由于SVM是二分类器,需要为每个类别训练单独的SVM;
SVM训练时输入正负样本在AlexNet CNN网络计算下的4096维特征,输出为该类的得分,训练的是SVM权重向量;
由于负样本太多,采用hard negative mining的方法在负样本中选取有代表性的负样本
Bounding box regression training
输入数据为某类型样本对N个:{(Pi,Gi)}i=1⋯N以及Pii=1⋯N所对应的AlexNet CNN网络Pool5层特征ϕ5(Pi)i=1⋯N,输出回归后的建议框Bounding-box,训练的是dx(P),dy(P),dw(P),dh(P)四种变换操作的权重向量。
Fast RCNN
R-CNN为什么检测速度这么慢,一张图都需要47s!仔细看下R-CNN框架发现,对图像提完Region Proposal(2000个左右)之后将每个Proposal当成一张图像进行后续处理(CNN提特征+SVM分类),实际上对一张图像进行了2000次提特征和分类的过程!这2000个Region Proposal不都是图像的一部分吗,那么我们完全可以对图像提一次卷积层特征,然后只需要将Region Proposal在原图的位置映射到卷积层特征图上,这样对于一张图像我们只需要提一次卷积层特征,然后将每个Region Proposal的卷积层特征输入到全连接层做后续操作.(对于CNN来说,大部分运算都耗在卷积操作上,这样做可以节省大量时间).
现在的问题是每个Region Proposal的尺度不一样,直接这样输入全连接层肯定是不行的,因为全连接层输入必须是固定的长度.SPP-NET恰好可以解决这个问题.
Main Steps
(1)输入测试图像;
(2)利用selective search 算法在图像中从上到下提取2000个左右的建议窗口(Region Proposal);
(3)将整张图片输入CNN,进行特征提取;
(4)把建议窗口映射到CNN的最后一层卷积feature map上;
(5)通过RoI pooling层使每个建议窗口生成固定尺寸的feature map;
(6)利用Softmax Loss(探测分类概率) 和Smooth L1 Loss(探测边框回归)对分类概率和边框回归(Bounding box regression)联合训练.
Faster RCNN
FASTER-RCNN创造性地采用卷积网络自行产生建议框,并且和目标检测网络共享卷积网络,使得建议框数目从原有的约2000个减少为300个,且建议框的质量也有本质的提高.
Main Steps
(1)输入测试图像;
(2)将整张图片输入CNN,进行特征提取;
(3)用RPN生成建议窗口(proposals),每张图片生成300个建议窗口;
(4)把建议窗口映射到CNN的最后一层卷积feature map上;
(5)通过RoI pooling层使每个RoI生成固定尺寸的feature map;
(6)利用Softmax Loss(探测分类概率) 和Smooth L1 Loss(探测边框回归)对分类概率和边框回归(Bounding box regression)联合训练.
RPN explain
http://blog.csdn.net/sloanqin/article/details/51545125