RCNN阅读笔记

转载自https://blog.csdn.net/u014796085/article/details/83931150

前言
在经历了一段时间的胡碰乱撞之后,对基于深度学习的目标检测有了初步的认识,决定开始系统地学习目标检测算法,品读论文,研究算法,编程实现。作为小白,还是从早期经典的RCNN开始入手。

RCNN详解


1.摘要


RCNN(region with CNN features),区域卷积神经网络。主要有以下两个创新点:
(1) 通过图像分割和选择搜索(selective search)得到候选框(region proposal),然后在候选框上使用CNN提取特征,用于定位和识别物体。
(2) 当带标签的训练数据不足时,对辅助任务的大训练集进行有监督训练,然后在小数据集上进行微调(fine-tune)。

2.训练过程


(1) 预训练卷积网络

在ILSVRC2013训练集上图片resize到227x227,有监督预训练alexnet。
(2) 卷积网络参数微调

首先,根据特定任务修改alexnet最后几层结构。(把原本的2000分类改成小样本训练集的种类数目,并用小样本数据集进行少量训练吗,也就是微调,最后截取微调后的除去分类层的网络进行提取特征)
在小数据集中,对每张图片通过选择搜索得到的约2000个候选框,与groundtruth的iou>=0.5的为正样本,其他为负样本,resize到227x227,迭代训练alexnet 200~500步,微调alexnet参数。
(3) 训练svm分类器

在小数据集中,对每张图片通过选择搜索得到的候选框,与groundtruth的iou>0.6的为正样本、iou<0.1的为负样本,resize后经过alexnet全连接层输出的4096维特征向量,放入训练集(防止正负样本数量相差太多,分类器偏向负分类),训练svm分类器。剩下的resize后经过alexnet全连接层得到特征向量,作为待定的测试样本。
由于这样训练集负样本比较单一,没有部分包含目标的候选框,所以用难负例挖掘(hard negative mining method)。用训练好的svm分类器在测试样本中预测,对于预测结果为正的测试样本,将其中得分前百分之10的作为负样本加入训练集,重新训练,直到svm分类器在训练集上正确率不再提高,或者训练集数量不足10个,停止迭代。
(4) 训练boundingbox回归

在小数据集中,对每张图片通过选择搜索得到的候选框,与groundtruth的iou>0.6的resize后经过alexnet全连接层输出的特征向量加入训练集,对应搜索框的[x,y,w,h]与groundtruth的[gx,gy,gw,gh]变换得到[tx,ty,tw,th],作为输出加入训练集。
boundingbox回归作为线性回归问题,把训练集中特征向量作为输入,[tx,ty,tw,th]作为输出,训练该线性回归模型。


3.测试过程


(1) 测试图片选择搜索得到候选框,筛选,并且resize到227x227。
(2) 所有候选框经过alexnet,提取全连接层输出的4096维特征向量。
(3) 特征向量通过svm分类,保留其中包含目标的。
(4) 包含目标的特征向量,boundingbox回归后范围处理得到精确位置。
(5) 剩下的特征向量进行非极大抑制,得到最终结果。参考
1.RCNN(regions with CNN features)论文
论文翻译参考以下网址,第一个博客更贴近原论文,第二个条理更清晰,更详细,细节更到位:
https://blog.csdn.net/v1_vivian/article/details/78599229
https://blog.csdn.net/wopawn/article/details/52133338

2.知识点1:框回归(bounding box)
在论文第一章Introduction中,作者使用了边框回归(boundingbox)的方法有效减少了定位偏差(mislocation)。边框回归的介绍可以参见:https://blog.csdn.net/zijin0802034/article/details/77685438

3.知识点2:选择搜索(selective search)
论文第二章用RCNN目标检测中,在产生候选框(region proposal)时采用了选择搜索(selective search)的方法,该方法的介绍,可以参考:https://blog.csdn.net/mao_kun/article/details/50576003

知识点2.1:图像分割算法(Effective graph-based image segmentation)
在选择搜索(selective search)产生候选框(region proposal)时,在图像分割部分采用了基于图的图像分割算法(Effective graph-based image segmentation),参考:https://blog.csdn.net/surgewong/article/details/39008861

4.知识点3:难负例挖掘(hard negative mining method)
论文在2.3训练时采用了难负例挖掘算法(hard negative mining method),主要是因为负例过多,正例只有ground-truth,所以在分类时容易把部分包含目标的候选框(region proposal)误判为正例,此时把这些误判的样本作为负例加入负样本集,重新训练,直到成绩不再提升为止。

编程实现
文中关于图像分割算法(Effective graph-based image segmentation)的python实现,在我的另一篇博客中有详细描述:
https://blog.csdn.net/u014796085/article/details/83449972
关于选择搜索(selective search)的python实现:
https://blog.csdn.net/u014796085/article/details/83478583
RCNN训练及测试过程的python实现,已经完成,博客很快会写,到时补充。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值