G-CNN详解

本文转载自博客G-CNN详解

本篇论文的主要创新点是去除了基于CNN的目标检测框架中object proposal阶段,将目标检测问题模型化为迭代回归问题。
摘要:我们介绍一种基于CNN但不需要proposal算法的目标检测技术。G-CNN从一个固定bounding boxes的多尺度网格开始(starts with a multi-scale grid of fixed bounding boxes)。我们训练一个回归器迭代循环地朝着目标移动或放大网格中的元素(train a regressor to move and scale elements of the grid towards objects iteratively)。G-CNN将目标检测问题模型化为寻找从一个固定网格到紧紧包围目标的boxes的一条路径问题。G-CNN with around 180 boxes in a multi-sacle grid(180个左右多尺度网络下的boxes)与约2k个bounding boxes的Fast R-CNN性能相当。G-CNN通过去除object proposal阶段,同时也减少需要处理的boxes数目,从而使得检测变得更快。
1.引言
(1)受文献[2]迭代优化的启发,我们介绍了了一种迭代算法,从图像中一个正常采样的多尺度网格boxes出发,然后更新boxes,使得boxes能够覆盖(cover)和分类目标。一步的回归(one step regression)不能够解决处理从a regular grid到包含目标的boxes的这种非线性映射。
(2)迭代算法G-CNN的总体思路图:

(3)根据G-CNN的框架结构图,它的总体思路是:首先在图像上添加多尺度的regular grid(multi-scale regular grid),图中为了可视化,展示的grid是不重叠,但实际上boxes之间是重叠的。在训练时,通过分配函数为每一个box分配一个groundtruth object,分配函数是基于box与groundtruth的IoU进行分配的。然后,在每一个训练step,对grid中的boxes进行回归,使得box朝着分配给它的图像中的目标移动。测试时(test time),对于每次迭代中的每一个box,可以得到它在所有类别上的confidence scores(可信度分值),用最可能类别(the most probable class)的回归器来更新box的Location。
2.相关工作
(1)Prior to CNN(在CNN之前):目标检测问题在使用CNN之前多是用滑动窗口和分类(sliding window and classification)实现的,如HOG+SVM。还有DPM模型
(2)CNN age:Grishick提出了一个多阶段的目标检测系统R-CNN(第一个基于深度学习的目标检测系统)。为了处理目标检测中的定位问题,R-CNN主要依赖于object proposal技术。另一方面,R-CNN用一个标准的CNN作为特征提取器来提取每个proposed bounding box的特征,最后用一分类器对box中的目标类别进行判断识别。R-CNN的主要缺点是计算特征的冗余性。一般来说,一幅图像要生成2k个proposals,对每一个proposal都要运用CNN来提取特征。为了缓和这个问题,在SPP-Net中,对于每一幅图像,网络的卷积层只运用一次,然后每个roi的特征通过整个图像的feature map得到。然而SPP-Net中学习仅限于微调完全卷积层的权值。这一问题在Fast-RCNN中得以解决。在Fast-RCNN中所有参数都通过反向误差传播(BP)来学习。Fast-RCNN的不足是没有将目标proposals生成集成到网络中。对于Fast-RCNN来说,object proposal成为了瓶颈问题。为了使object proposals数目更少一些,Multibox提出了一种使用CNN生成proposal的算法,输出800个bounding boxes。Multibox将CNN最后一层的大小增加到4096*800*5,引入了很多参数。文献[17]提出了Faster-RCNN,它从几千个anchor points开始生成300个boxes。
(3)将目标检测模型化回归问题:除了分类,使用回归器(regressor)进行目标检测在之前也有一些研究。(一种思路是将目标检测作为分类任务来实现,RCNN,Fast RCNN这一系列都是对object proposal进行分类,然后利用regressor修正位置,而另一种思路是将目标检测任务通过回归来实现)。如文献[19]提出将目标检测模型化一个回归问题,提出了基于CNN的一个回归系统(a CNN-based regression system)。近期,文献[23](ICCV2015的一篇论文)提出了AttentionNet,它使用迭代回归来检测图像中的一个单个目标,是单类别目标检测。对于多类目标,模型使用proposal算法生成上千个proposals,然后对每个prpoposal重复运用进行单类别目标检测,效率非常低。
(4)去除基于CNN的目标检测系统中的proposal阶段:文献[14]论述了基于CNN的目标检测系统中object proposal算法的必需性。在文献[14]中,用一个固定的bounding boxes集合来替代proposals。另一个去除proposal阶段的尝试是文献[16],which conducts object detection in a single shot。


3.G-CNN目标检测器
3.1网络结构
(1)G-CNN训练一个CNN朝着目标objects移动和放大缩小a fixed multi-scale grid of bounding boxes。回归器的结构如Figure2所示:

(2)在G-CNN的网络结构中,它的主干可以是任何一种CNN网络(如AlexNet,VGG)。网络先是卷积层,然后是一个roi pooling层(给定一个box的位置,能够根据roi的位置计算box的特征),后接完全连接层(fc layers),最后是线性回归器(它输出每个当前bounding box在位置和尺度上的变化调整)。
3.2网络训练
(1)尽管G-CNN和Fast R-CNN在网络结构上非常相似,但它们的训练方法和目标是不同的;
(2)G-CNN是将目标检测问题定义为在所有可能的bounding boxes空间下的迭代搜索(iterative search)。
(3)G-CNN从一个固定的multi-scale spatial pyramid of boxes开始,学习的目标是训练网络在S步内能够从初始的intial boxes集合移动到图像中的目标。
3.2.1损失函数(loss function)
(1)G-CNN是一个迭代方法,它将bounding boxes在Strain steps下朝着目标位置(object location)移动。所以不仅每个训练样本要定义损失函数,在每个迭代时间步iterative step也要定义损失函数。
(2)形式化描述定义:
a.设B表示所有可能的bounding boxes组成的4维空间(four-dimensional space),每个bounding box表示为一个4维向量(中心点的坐标,宽度,高度)。是第i个训练bounding box。我们使用上标(superscript)来表示G-CNN训练中的时间步变量s,是在step s的第i个训练bounding box的位置。
b.在训练时,通过分配函数为每一个与groundtruth box的IoU大于最小阈值(small threshold)0.2的box分配一个groundtruth box。分配函数是一个多对一的函数,定义为:

其中是所在图像的groundtruth box集合。
(个人理解就是为每个分配一个与它重叠度最高的groundtruth作为它的移动目标或学习目标)
从公式1可以看出,对于每个训练bounding box,在训练初始step就完成了分配,在整个训练过程中是不变的。
c.由于直接从初始bounding boxes到分配给它的ground truth bounding box的回归是高度非线性的(highly non-linear)。我们通过piece-wise regression approach(分段回归方法)来解决这个问题。在step s,每个step s解决的是从到step s 对应的target bounding box的回归。这个target bounding box是在到分配给它的groundtruth box路径上的。(个人理解,每次迭代是将移动到每步对应的target bounding box 上,最后在Strain步移动到对应的groundtruth box box)。
d.每个在step s对应的target bounding box的计算函数:


  
其中是分配给的Groundtruth box。
即在训练的每个step,将bounding box的当前表示与所分配的ground truth间的路径分成剩下的步数(the remaining steps number),目标是与当前位置相近的下一单元。
e.G-CNN回归网络对每个class输出4个值,表示将这个bounding box回归到这个类别的参数化变化。
参数用表示,其中是根据公式2计算得到的。
f.G-CNN的损失函数定义为:
  
其中是对每个类别的四维输出,表示bounding box 的相对变化;是分配给的ground truth box的类别标记。是回归损失函数,是指示函数,当条件满足时输出1,否则输出为0。
表示所有的背景bounding boxes集合(the set of all background bounding boxes)。
g.训练时,每个step s的bounding box 的表示可以通过以下的更新公式得到:

更新公式近似为:


3.2.2 优化
算法1是在每个step为每个bounding box生成训练样本training samples的方法。

3.3 Fine-tuning
3.4 G-CNN Test network
(1)在测试时,像Fast R-CNN和SPP-Net一样没有必要在每次迭代时运行网络的所有层,所以在测试时将整个网络层分为两部分:global parts和regression parts

global net包含网络的所有卷积层,regression part仅包含完全连接层和regression权值;global net的输入是图像,对于每幅图像前向计算仅计算一次,所以在算法2的检测循环之外。在算法2的检测循环中,我们处理是的regression网络,regression网络以global net最后一个层的输出作为输入,生成的是bounding box的修改(bounding box modification)。
(2).检测时通过算法2进行检测:

(3)G-CNN的计算成本与Fast R-CNN相当。在G-CNN和Fast R-CNN中global net都是只调用一次,然后Fast R-CNN进行次regression network的前向计算(其中是每张图像生成的object proposals的数目);而G-CNN进行的是次regression network的前向计算,其中是测试的迭代次数,是初始网格中bounding boxes的数目(the number of bounding boxes in the initial grid),在4.2的实验中时G-CNN达到了时Fast R-CNN的效果。
4.实验效果


                    


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值