目标检测:RCNN 系列解读

RCNN系列从R-CNN到Fast R-CNN、Faster R-CNN,再到FPN,逐步优化了目标检测的效率和准确性。R-CNN通过预训练的CNN提取特征,SVM分类,引入region proposal;Fast R-CNN通过RoI pooling层整合特征提取和分类,引入多任务损失;Faster R-CNN提出RPN网络,同时进行region proposal和检测;FPN构建特征金字塔,提升小目标检测效果。文章详细介绍了每一步的创新点、训练策略和性能提升。
摘要由CSDN通过智能技术生成

RCNN 系列解读

先放一个大神博客吧,膜拜~
http://www.rossgirshick.info/
有空还需要把细节和补充材料review一下!

参考:
https://cloud.tencent.com/developer/news/281788
其他人的博文整理:
https://www.cnblogs.com/yhyue/p/9247962.html
https://blog.csdn.net/briblue/article/details/82012575

目标检测前沿及回顾(2018)
脉络清晰,有延伸

关于目标检测的论文集锦参看下面这个GitHub:
https://github.com/hoya012/deep_learning_object_detection

零、R-CNN之前的故事

  1. HoG特征 梯度直方图
    参考:HoG特征
    ① 对图像进行预处理,主要是伽马矫正和灰度化,尽量去除光照的影响
    ② 对原图中的每一点,计算其梯度值,得到其梯度的大小和方向
    例如,水平方向梯度gx:做水平差分;竖直方向梯度gy:做竖直差分。
    总的梯度大小g = sqrt(gx2+gy2)
    总的梯度方向θ = arctan(gx/gy)
    ③ 计算梯度直方图
    将8x8大小的区域划分为一个cell,其元素共有8x8x2=128个关于梯度的值,将其按角度分到9个bin中,这9个bin是将180度划分为9份得到。这样,就得到一个长度为9的数组(梯度的直方图)。一般来说,观察梯度方向的主要分布范围,就可以大致认为该8x8区域的具有某个方向的边缘。HoG是对边界敏感,对灰度变化平坦的区域不敏感。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UvMmOvNR-1586676325899)(en-resource://database/2775:1)]
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EJhlpGAa-1586676325901)(en-resource://database/2777:1)]
    ④ 以4个cell为一个block进行归一化,进一步降低光照影响。
    一个block事实上对应16x16的区域。4个cell,每个cell经过梯度直方图计算已经转化为一个长度为9的vector,现在一个block相当于包含一个长度为4x9=36的vector。这里的归一化,就是对这个长度为36的向量进行归一化。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4wJ9nQW6-1586676325906)(en-resource://database/2773:1)]
    ⑤ 得到HoG特征向量
    注意block是在整张图上滑动的,因此对于64x128的图像,共7x15个block。
    因此一张图像的HoG向量为7x15x36 = 3780
    得到HoG特征向量之后,一般用svm进行分类。

  2. sift特征
    包含了候选特征提取、特征描述两个部分。其中特征描述为重点,因为特征提取可以用很多方法实现,并不是sift的核心。
    ① 特征提取
    a 候选关键点
    通过高斯尺度差分(DoG)实现,DoG是高斯金字塔和差分金字塔的结合。所谓高斯金字塔,是多组图像金字塔,在每组金字塔中,图像尺寸不变,也就是分辨率相同,但高斯核的方差按一定比例增长,也就是模糊程度不同。在不同组之间,尺寸每次减半,也就是进行步长为2的下采样。而差分金字塔,就是高斯金字塔中,同一组内的相邻图像两两差分形成。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d4RNPCrI-1586676325909)(en-resource://database/2779:1)]
    对DoG的图像进行归一化,可以看到差分图像所蕴含的特征。并且有的特征是在不同模糊程度、不同尺度下都存在的,这些特征正是sift要提取的特征。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wTUaXhdp-1586676325911)(en-resource://database/2781:1)]
    b 关键点定位
    通过DoG筛选出候选关键点后,对这些关键点进行精确的拟合,来进一步确定位置和尺度

② 特征描述
类似简易版hog
https://www.cnblogs.com/wangguchangqing/p/4853263.html

  1. selective search
    ① 分割
    先按一定方法将图像分割为许多小快,然后使用贪心策略,计算每两个相邻区域的相似度,然后每次合并最相似的两块,将这其中每次产生的图像块都保留下来,这样就得到了图像的分层表示。
    ② 区域合并-如何检测相似性
    采样三种多样性策略来增加候选区域,避免并不相似区域被错误合并,或者相似区域没有被合并到。
  • 多种颜色空间
  • 多种相似度度量,如颜色、纹理、大小、重叠
  • 通过改变阈值初始化原始的区域,阈值大,则分割的区域少
    ③ 给区域打分
    给定权重,相同区域多次出现权重叠加,计算所有目标区域的分数,排序。
    ④ 性能评估
    通过算法计算得到的包含物体的Bounding Boxes与真实情况(ground truth)的窗口重叠越多,那么算法性能就越好。

一、R-CNN

Rich feature hierarchies for accurate object detection and semantic segmentation | [CVPR’ 14] |
参考:
https://blog.csdn.net/wopawn/article/details/52133338(非常详细的解读了rcnn各个部分是如何训练,如何选择和构造样本,以及输入输出形式。(重点关注bbox回归的部分))

创新点:
1.采用CNN网络提取图像特征,从经验驱动的人造特征范式HOG、SIFT到数据驱动的表示学习范式,提高特征对样本的表示能力;
2.采用大样本下有监督预训练+小样本微调的方式解决小样本难以训练甚至过拟合等问题。

编辑于2019/12/26
**在AlexNet在ImageNet上获得成功之后,R-CNN作者思考是否能将其用到目标检测领域的Pascal VOC数据集上来。由于目标检测的数据集较少,采用了迁移学习的方法,即对ImageNet上的预训练模型进行fine-tune。于是R-CNN的基本思路为:

  1. 通过selective research在图片上生成2k个region proposal
  2. 将所有proposal缩放(warp)到227x227,依次送入特征提取网络获得一个4096维特征(细节:warp时对各区域进行膨胀,也就是人为添加了边框,每个box向外扩张了16个像素)
  3. 将特征输入每个类别的SVM进行分类,每个类别的SVM给所有特征向量进行单独打分。也就是说,现在的每个region proposal都有针对每个类别的分数;而每****一类别,在每个region proposal上都有一个得分
  4. 对每个类别,分别使用NMS进行候选框筛选,拒绝掉一些和高分区域IOU大于阈值的候选框
  5. 分类完毕,进行bbox regression **

CNN和SVM各自的训练策略:

  1. 特征提取网络是AlexNet(5个卷积,3个全连接)的迁移学习;
    特征提取器CNN训练时,输入网络的proposal(bbox参数,xywh),如果其和真实标注的框IoU>0.5就认为时positive,否则认为是negtive;学习率设维初始化训练时的1/10;每轮SGD迭代,使用正负例样本数维32:96
  2. 分类器SVM训练时,完全重合的认为是groudtruth,IoU<0.3的认为是背景,其余丢弃(注意这个0.3的阈值选择很重要,是在[0.1,0.2,0.3,0.4,0.5]中网格搜索得到的;训练时采用hard negtive mining策略,也就是每次迭代时,将损失函数最高的。
    关于为什么CNN和SVM训练时使用正负样本比例不同的一个讨论:
    (简而言之就是CNN需要大样本来避免过拟合,而阈值宽松一点能提供更多样本;而svm适合小样本学习,故使用更严格的阈值)
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-juxNzikf-1586676325914)(en-resource://database/1263:1)]

此外,作者还讨论了为什么单独训练一个svm分类器,而不是使用cnn层的fc层(见补充材

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值