深度学习在目标检测中的应用及其tensorflowAPI实践(二)

来源:互联网 发布:通联数据待遇怎么样 编辑:程序博客网 时间:2024/06/10 02:47

这系列文章的内容目录如下:

  • 目标检测的任务

  • 深度学习在目标检测中的应用

    • RCNN
    • fast RCNN
    • faster RCNN
    • RFCN
    • yolo
    • yolo V2
    • SSD
  • tensorflow目标检测API的使用

在第一篇里说完了RCNN和fast RCNN,接下来继续说faster RCNN,建议不了解RCNN和fast RCNN的读者先回头了解了RCNN和fast RCNN在继续读下去。

faster RCNN的流程如下:
这里写图片描述
faster RCNN首先通过一个RPN网络生成一堆候选框ROI,后面的操作和fast RCNN基本一致。
我们可以先看看RPN网络是个什么样的结构。
首先明确RPN网络的输入输出,RPN网络输入是一张图片,输出是这张图片上有可能是物体的一堆候选框,并对这些框做第一次的bbox-rg。
下图是一个RPN网络原理的示意图,我没有去画具体的CNN结构,因为这部分是可变的,可以用VGG,也可以用inceptionnet,只要知道一张图片经过一个CNN后会生成一堆feature map。
这里写图片描述
下面依次解释上图的每一步都做了什么:
图片经过CNN输出一堆feature map,每个feature map相较原始图片是变小了的,取决于你使用的CNN结构,这时候作者基于这堆feature map为其上的每个点设定了一系列anchors(原文是9个),如下图所示:
这里写图片描述
假设最后得到的feature map形状如上图左侧所示,为7x7,那么就会在整张图片上产生7x7x9个候选框,每个候选框的大小由不同的宽高比来设定。
这样对应到上图的RPN结构,左侧的分支softmax就负责预测这些候选框里是否有物体,可以看到作者设置了18个1x1的卷积,正好对应每个候选框是否有物体。
那么上面为什么还要接一个3x3的卷积呢?是为了能让feature map更好的结合周围的像素信息。
所以RPN网络的作用就是预测这7x7x9个候选框里是否有物体,并且对所有候选框做第一次的bbox-rg。
最后的proposal是对上面RPN的输出做一个整理的步骤,做了以下几件事:

  1. 对上面RPN输出的bbox-rg参数(宽高缩放比和横竖偏移量)对候选框进行修正
  2. 根据softmax输出的每个框里是否有物体的概率值对所有的框做一个排序,取出最有可能是物体的n个候选框
  3. 删除根据bbox-rg的结果修正后的候选框里严重超出边界的候选框
  4. 这时候仍然有很多框,所以做一个nms(非极大抑制),再对剩下的框执行步骤2,保留m个框(m小于n)

综合以上,我们经过RPN网络,得到了m个有可能是物体的候选框,和fast RCNN里的selective search步骤的结果一致,只不过现在由深度学习来完成这件事。
ok,绕了一大圈终于得到了我们要的候选框,接下来针对这些候选框的操作就和fast RCNN很类似了。需要注意的是在RPN的最后也是一个多任务的学习任务所以也设置了多任务的损失函数。
几乎所有的目标检测方法都会设置一个多任务的损失函数,分为两部分,一部分用来对分类做softmax损失,另一部分用来对bbox-rg做损失,学习平移量和缩放量,只是具体的损失函数需要对着各个方法的论文去看。
得到了RPN输出的候选框之后,我们首先对这些候选框进行ROIpooling,把他们做到相同大小,然后送入一个小网络做分类和再一次的bbox-rg,流程如下:
这里写图片描述
上面这个过程的细节不做过多说明,结构很简单,最后的损失函数也是分两部分,分类的softmax损失和回归的学习平移缩放的损失。
细心的读者一定会发现,faster RCNN竟然涉及到了两个独立的网络,而且有一部分卷积层其实是共享的,但最后接的损失函数是不一样的,就像下面这样:
这里写图片描述
上图中蓝色部分为RPN,红色部分为第二步类似fast RCNN中的处理,前面的卷积层部分其实是共享的。但两部分的训练目标是不一样的,于是作者提出了以下训练方法,这个方法在后续的RFCN中也用到了:

  1. 训练RPN,注意一般训练网络都不会从头开始训练,这里是用在ImageNet预训练的vgg权重初始化的(tensorflowAPI里用的不是VGG)
  2. 训练独立的fastRCNN检测网络,使用第一步中生成的ROI,初始化也是用ImageNet预训练的权重,此时两个网络是不共享卷积层的。
  3. 使用2中训练的fast r-cnn检测网络重新初始化RPN网络,然后固定共享卷积层不训练,只对RPN后面的几层进行微调。
  4. 保持3中共享卷积层不训练,由3训练后得到的ROI,再训练fast r-cnn中的全连接层,这样一个完整的网络训练完毕。

这种两个网络交替统一训练的方法很有开创的意义,在后续的RFCN中也参考了这里的训练方法。
faster RCNN提出了anchors的概念,提出了两个网络共同训练的方法,对后续的发展起到了很大的推动作用。
下一篇继续介绍RFCN。戳这里>>>
持续更新中~

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 天猫卖家超过72小时未发货怎么办 淘宝超过72小时不发货怎么办 鸿运当头干叶了怎么办 百合枝干长歪了怎么办 植物主干长歪了怎么办 钱兜子花叶子黄怎么办 丝瓜有苦味吃了怎么办 吃了苦的西葫芦怎么办 吃了苦的西葫芦中毒怎么办 吃了一点苦丝瓜怎么办 丝瓜苦味我吃了怎么办? 小孩牙地包天怎么办 小孩的牙地包天怎么办 小孩牙是地包天怎么办 布偶猫生宝宝时怎么办 仔猪拉稀打针喂药都不好怎么办 qq群宠物沉眠怎么办 单位不给开离职证明怎么办 电梯年检报告丢了怎么办 小学生养成夜训交怎么办? 遇到自私多疑的老公该怎么办 老年人吵架非说打她了装病怎么办 高三厌学家长该怎么办 考研团员档案丢了怎么办 学生的档案丢了怎么办 大四团员证丢了怎么办 2岁宝宝吸收不好怎么办 孩子逆反心理特强沟通不了怎么办 一年级孩子有逆反心里怎么办 如果一个学生会部门没人留怎么办 如果学生会部门很少人报名怎么办 职场说错话了我该怎么办? 中考通知书收到两份怎么办 高三学生英语差怎么办 论文查重百分之0怎么办 微信红包发错人了怎么办 文学社在社团活动日可以怎么办 小孩玩游戏瞎花钱怎么办 党员不配合纪检调查工作怎么办 新同事老问问题怎么办 白色衣服染红色了怎么办