【R-CNN】(讲解)

首先给出论文地址:Rich feature hierarchies for accurate object detection and segmentation

这篇论文提出的房价叫做R-CNN,中文解释可以为基于区域候选的卷积神经网络。这个网络结构也是发挥了很大的作用,也导致了后面很多的网络都是基于这个改进的,例如啊:Fast R-CNN、Faster R-CNN等等。这个框架在当时的数据集VOC 2012取得了非常好的效果,高于之前最好的结果约30%,实现了平均准确率为53.3%。

这篇博文的结构大概是这样的:
1、区域候选的产生方法----selective search
2、模型的框架
3、CNN 微调
3、分类策略
4、定位策略


区域候选的产生方法----selective search

使用区域候选方法创建目标检测的感兴趣区域(ROI)。在选择性搜索中,我们可以先分成足够小的区域,然后将两个区域相近的合并,这样子一直做下去,直到合成最后一个区域为整个图片。
在介绍Selective Search之前,先说些小知识点:
a.适应不同尺度:穷举搜索通过改变窗口大小来适应物体的不同尺度,选择搜索同样无法避免这个问题。
b.多样化:单一的策略无法对应多种类别的图像,使用颜色、纹理、大小等多种策略对分割的区域进行合并。
c.速度快。
下面具体讲讲两个区域合并,要满足什么条件这两个区域才能合并呢?——这就是多样新策略

-距离计算方式
距离计算方式需要满足两个条件:速度快,因为我们有这么多的区域建议还有这么多的多样性 ,其二是合并后的特征好计算,因为我们通过贪心算法合并区域,如果每次都需要重新计算距离,这个计算量就太大了。

  • 颜色距离:
    我们费劲心思搞了这个多的色彩空间,首先当然是计算颜色距离:
    S c o l o r ( r i , r j ) = ∑ k = 1 n m i n ( c i k , c j k ) S_{color}(r_i, r_j) = \sum\limits_{k=1}^nmin(c_i^k, c_j^k) Scolor(ri,rj)=k=1nmin(cik,cjk)
    距离的计算方式很简单,就是对各个通道计算颜色直方图,然后取各个对应bins的直方图最小值。这样做的话两个区域合并后的直方图也就很好计算,直接通过直方图大小加权然后除以总区域大小就好了。

  • 纹理距离
    S t e x t u r e ( r i , r j ) = ∑ k = 1 n m i n ( t i k , t j k ) S_{texture}(r_i, r_j) = \sum\limits_{k = 1}^nmin(t_i^k, t_j^k) Stexture(ri,rj)=k=1nmin(tik,tjk)
    纹理距离计算方式和颜色距离几乎一样,我们计算每个区域的快速sift特征,其中方向个数为8, 3个通道,每个通道bins为10,对于每幅图像得到240维的纹理直方图,然后通过上式计算距离。

  • 优先合并小的区域
    如果仅仅是通过颜色和纹理特征合并的话,很容易使得合并后的区域不断吞并周围的区域,后果就是多尺度只应用在了那个局部,而不是全局的多尺度。因此我们给小的区域更多的权重,这样保证在图像每个位置都是多尺度的在合并。
    S s i z e ( r i , r j ) = 1 − s i z e ( r i ) + s i z e ( r j ) s i z e ( i m ) S_{size}({r_i, r_j}) = 1 - \frac{size(r_i) + size(r_j)}{size(im)} Ssize(ri,rj)=1size(im)size(ri)+size(rj)

  • 区域的合适度度距离
    不仅要考虑每个区域特征的吻合程度,区域的吻合度也是重要的,吻合度的意思是合并后的区域要尽量规范,不能合并后出现断崖的区域,这样明显不符合常识,体现出来就是区域的外接矩形的重合面积要大。因此区域的合适度距离定义为:
    f i l l ( r i , r j ) = 1 − s i z e ( B B i j ) − s i z e ( r i ) − s i z e ( r j ) s i z e ( i m ) fill(r_i, r_j) = 1 - \frac{size(BB_{ij})-size(r_i) - size(r_j)}{size(im)} fill(ri,rj)=1size(im)size(BBij)size(ri)size(rj)

  • 综合各种距离
    现在各种距离都计算出来,我们要做的就是整合这些距离,通过多种策略去得到区域建议,最简单的方法当然是加权咯:
    S ( r i , r j ) = α 1 S s c o l o r ( r i , r j ) + α 2 S t e x t u r e ( r i , r j ) + α 3 S s i z e ( r i , r j ) + α 4 S f i l l ( r i , r j ) S(r_i, r_j) = \alpha_1S_{scolor}(r_i, r_j) + \alpha_2S_{texture}(r_i, r_j) + \alpha_3S_{size}(r_i, r_j) + \alpha_4S_{fill}(r_i,r_j) S(ri,rj)=α1Sscolor(ri,rj)+α2Stexture(ri,rj)+α3Ssize(ri,rj)+α4Sfill(ri,rj)

  • 参数初始化多样性
    我们基于基于图的图像分割得到初始区域,而这个初始区域对于最终的影响是很大的,因此我们通过多种参数初始化图像分割,也算是扩充了多样性。
    返回目录


模型的框架

这篇论文对图片特征提取的框架与之前的AlexNet框架是一样的,没有什么大的变化。这个框架可以参考我之前的博文:【论文】 ImageNet Classification with Deep Convolutional Neural Networks(讲解)

返回目录


CNN 微调

CNN 微调,英文为 CNN fine-tuning,这个方法是非常有用的,特别是在我们的训练集数据比较少的时候显得很有用。
像我们之前的模型训练的方法是,先搭建我们的模型,然后用这个model去fit我们的训练集,这些初始化的参数都是我们随机的,或者是一些经验值,这样,可能会导致一个过拟合,因为我们的数据集如果很少的话,第二个就是这样训练的时间会比较长,而且性能也不是特别好。
fine-tuning的思想是借助一个大的训练集去训练,等训练完后,然后将这些参数保存起来,再将这个模型在我们自己的训练集上去训练,而且论文中的实验也表明,对卷积层微调对性能提升不大,什么没有提升,但是对全连接层进行微调后,性能上有了比较明显的提升,这就说明,对特征层进行提高针对某个具体任务产生的影响不大,对全连接层微调让整个网络更适应当前任务。
返回目录


分类策略

这篇文论就是训练了一个SVM来做分类检测的。
返回目录


定位策略

这里大家还是要好好理解一下那些公式的,很有意思。具体的大家可以去看论文。

Reference
[1]目标检测(1)-Selective Search

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值