【目标检测】R-CNN学习笔记

背景

  • 简单的说,目标检测就是将图像中的物体进行定位然后识别。
  • 在R-CNN之前,过去的十年间,目标识别任务主要建立在对HOG和SIFT等特征描述子的使用(OpenCV中也有相关的算法API可直接调用)
  • 2012年AlexNet的出现使得CNN开始逆袭人生并不断发展,相关有VGG、GoogLeNet、ResNet等,OverFeat是AlexNet的衍生,用于目标检测,但是效果不佳
  • ImageNet上的CNN分类结果,应用到PASCAL VOC挑战的物体检测任务上需要做到什么程度,是一个问题。

在这里插入图片描述

目标定位和识别

  • 通过连接图像分类和目标检测来解决背景写到的第四个问题

  • 使用深度网络定位物体和在小规模的标注数据集上进行大型网络模型的训练。与图像分类不同的是检测需要定位一个图像内的许多物体。一个方法是将框定位看做是回归问题,但Szegedy等人的工作说明这种策略并没啥效果

  • 滑动窗口探测器,R-CNN论文中提到,通过这种方法使用CNNs至少已经有20年的时间了,通常用于一些特定的种类如人脸,行人等,但是由于网络层次更深,输入图片有非常大的感受野(195×195)和步长(32×32),这使得采用滑动窗口的方法充满挑战,遂放弃使用这种方法。

  • 借鉴滑动窗口思想,提出recognition using regions的观点,模型为:区域推荐+特征提取
    在这里插入图片描述

  • 识别的具体流程(如上图所示):
    1.给定一张输入图片,从图片中提取 2000 个类别独立的推荐区域(region proposals)
    2.对于每个区域利用 CNN 抽取一个固定长度的特征向量
    3.对每个区域利用 线性SVM 进行分类

  • 推荐区域(region proposals)的提取方法有很多:objectness、selective search、category-independen object proposals、constrained parametric min-cuts(CPMC)、multi-scale combinatorial grouping、以及Ciresan等人的方法。
    而R-CNN选用的是第二种,选择性搜索(selective search)

  • 特征抽取,R-CNN在特征提取时候,无论多少大小尺寸的图片,均统一化为227x227,这是为了与AlexNet保持兼容,变换的时候,会进行加框处理,在box周围加上固定大小的像素

训练

  • 论文中提到一个重点,由于训练数据比较少,故采用有监督的预训练作为辅助工作,然后进行特定的调优处理,使得效果大大上升
  • R-CNN 采取迁移学习,提取在 ILSVRC 2012 的模型和权重进行预训练CNN,CNN十分接近krizhevsky等人的网络的性能
  • 使用变形后的推荐区域对CNN参数进行SGD训练,替换掉了ImageNet专用的1000-way分类层,换成了一个随机初始化的21-way分类层(20类别数+1背景),而卷积部分都没有改变
  • R-CNN 将推荐区域与 GroundTrue 中的 box 标签相比较,如果 IoU > 0.5,说明两个对象重叠的位置比较多,于是就可以认为这个推荐区域是 Positive,否则就是 Negetive
  • 训练策略:采用随机梯度下降算法(SGD)训练,初始学习率为 0.001,mini-batch 大小为 128

识别

  • 采用IoU,阈值取0.3,如果一个区域与Ground-truth的IoU值低于设定的阈值,那么可以讲它看成是Negetive,否则是Positive
  • 阈值很重要,如果设置为0.5,可以降低mAP5个点,设置为0,就会降低4个点
    在这里插入图片描述

笔记总结

  • R-CNN是在推荐区域上,自下而上使用大型卷积神经网络(CNNs),用以定位和分割物体
  • 采用 Selective Search 技术生成推荐区域,使用的是AlexNet网络
  • 在 ImageNet 上先进行预训练,然后进行 fine-tune(迁移学习),优化了效率问题,效果更好
  • 用 CNN 抽取特征,然后用一系列的的 SVM 做类别预测
  • bbox 位置回归基于 DPM 的灵感,自己训练了一个线性回归模型
  • 区域分类技术是语义分割的标准做法,所以 R-CNN 也可以做语义分割
  • Bbox 的值其实就是物体方框的位置,预测它就是回归问题
  • 神经网络最神奇的力量主要来自卷积层,甚至去除了全连接影响也不会太大

论文:《Rich feature hierarchies for accurate object detection and semantic segmentation》
论文翻译:https://blog.csdn.net/v1_vivian/article/details/78599229
参考资料:https://blog.csdn.net/briblue/article/details/82012575 思路很清晰,值得学习

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小风_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值