• Fast R-CNN


    这次讨论的是RCNN的升级版,Fast R-CNN,作者还是rbg。

    Fast RCNN是RCNN的改进,那么首先要知道RCNN有哪些地方可以改进的。

    首先 ,RCNN模型中CNN模型的分类和SVM模型的分类是一前一后的,也正是这种关系,使得模型有了断层。具体说来SVM参数的更新对于CNN网络模型的更新是没有影响的。这在Fast RCNN中的改进是使用一个end-to-end的方式来进行整体结构优化(当然region proposals还是使用SS生成的,这也是Faster RCNN的一个改进的地方),这也是为什么Fast RCNN中最后会有两个输出结构的分支。

    其次,在RCNN后面更新的版本中(version5),提到使用Bounding-box regression的方式来对候选框进行一个修正,这个改进彻底的引入到了Faster RCNN模型当中,最后输出的一个分支结构就是具体的体现。

    最后一个就是共享层的提出,这个我觉得是最棒的了,因为大大降低了模型的计算量。在RCNN中,是先从image中crop出SS出来的图像,然后在送到网络中得到对应的特征向量,因此,对于一张图片来讲要进行2k次这样的计算,这是因此这个crop操作实在网络的输入处,如果将这个操作移到网络的输出处(论文中说的是pool5),那么就可以只计算一次就可以,然后再从对应的特征中crop出来。

    大体来讲整个模型的主要改进就是这样的。

    因此网络模型分为两步:

    第一步,生成对应的候选框,region proposals,在这篇文章中也叫做RoI。

    第二步,将图片以及对应的RoI输入到网络中,得到图片的类别信息和需要修正RoI的信息(并不是直接生成物体所在的边框的位置,而是生成对SS出来的边框的一个修正值),最后在进行和RCNN中后面类似的操作就可以了。

    END ^_^


    细节部分

    RoI 是什么?

    论文中RoI是一个4元组,表示的是region proposals在原始图像中的位置,从左到右的含义依次为,左上角的x,左上角的y,高度h,和宽度w。

    RoI和RoI层是相关联的,RoI层的输入就是从feature中crop出来的RoI。文章提出RoI层的目的是为了对于不同尺寸的RoI对应的Feature map(也是不同尺寸)生成同样尺寸的Feature map(这里继承了SPNet的思想,采用的是最大池化的方式)。具体实现就是预先定义好要生成的尺寸大小(文中是作为一种超参数存在的),然后按照根据这个尺寸大小求出对应池化大小的尺寸,这样就可以了。

    网络模型:

    这次使用的是预训练好的网络模型权重,因此不用像RCNN中那样,自己训练一个网络模型。

    然后就是进行网络结构的调整,具体步骤如下:

    首先,网络模型最后的池化层被RoI层给取代了。接着将全连接层以及最后的softmax层用两个分支层来替换,一个层来输入对应类别概率,另一个是用来输出对于RoI的bounding-box regressors。最后将模型单输入修改成为多输入,一个输入原始图片信息,另一个输入对一个RoI(也就是那个四元组)。

    接下来是什么呢?那就是最最重要的微调了。

    第一:对数据的采样方式。每次输入2张图片(随机采样)和64个RoI(每张图片),这样可以尽可能的利用sharing features。

    第二:采用多任务损失函数来联合训练。

    然后采用SGD的方式进行训练就可以了,这部分用语言描述太微弱了,还是看原文是如何来进行陈述的吧,最考验技巧性的时候到了。

    这里插一句话,总感觉Fast RCNN这种实现方式,像极了将深度学习当作一个黑箱,比方说,在图像尺度方面的描述称让网络自己来学习其中的尺度不变性,以及在RCNN中还使用线性回归的方式来进行bbos-regression,这里直接使用神经网络来实现了,可能两者是等效的吧,我对这里的研究还不是太深。总之这篇文章中有太多的不可描述。过几天写Faster RCNN的时候会显得更加机械化,也就是说不出道理来,这样会使得效果很好,解释性就显得微弱一些,回到正题吧。

    测试阶段:

    上面的网络模型已经训练好了,接下来就是将测试的图片输入到网络中,输入一张图片以及2k左右的RoI,网络会得到一个2K*(C+1)的概率矩阵,同时还会得到2k*4k(这里的k表示的是类别信息)的region refine,然后进行non-maximum suppression independently for each class,这里只要对列进行操作就行了,因为每一列都是同一个类别的。

    感觉自己理解的也不是特别深刻,就这样吧。

  • 相关阅读:
    链接的思考
    反向传播算法为什么要“反向”
    浅说机器学习理论
    体验一下5分钟快速迁移mysql近亿数据量大表的速度!!!
    (MHA+MYSQL-5.7增强半同步)高可用架构设计与实现
    MySQL-开发规范升级版
    Mysql 优化建议
    Percona XtraDB Cluster(PXC)-高可用架构设计说明
    企业级-Mysql双主互备高可用负载均衡架构(基于GTID主从复制模式)(原创)
    记一次测试环境下PXC集群问题《经验总结》
  • 原文地址:https://www.cnblogs.com/andyniu/p/7411602.html
Copyright © 2020-2023  润新知