我这里给了一个 FasterRCNN 一个整体的结构。比如这里是图片的话,这里是我们常用的卷积网络,在这里得到我的 Feature Map,就是这个地方。通过这个 Feature Map 有两个分支,通过这个 Feature Map 可以提刚才的候选区域,通过候选区域又映射回刚才得到的这个特征,Feature Map 就相当于提取了某一个候选区域的特征,这里再加一些全链接层或者卷积层,直接得到它的结构。我们可以看到,整个就是一个端对端的训练。这里是 FasterRCNN 的一个介绍。(附该结构的 Github 代码地址:https://github.com/rbgirshick/py-faster-rcnn) RFCN 下面是 RFCN 的结构。RFCN 解决了什么问题呢?在刚才的这个图当中,如果这里得到了 2000 个的候选区域,每一个区域都要进行分类,这一部分要运算 2000 次,这个特别是在残差网络,在运行过程当中,会把最后的做分类,这样的话预算代价特别高,RFCN 的提出就是为了解决这个问题。这里也是设计了一种特殊的呼应的方法,就是刚才通过这张图得到了我的特征图之后,向大家强制输出跟我的类别相关的一个特征图的数目,比如我一般是 256 个,我把这里强制输出是乘以类别数的 Feature Map。这里有什么好处呢?这个好处就是,我针对每一个类别,比如我输出的是九个 Feature Map,,这里是特征图,这是对应到特征图的区域,把这个分为九块。做铺列的时候,针对第一个 Feature Map 图只举左上的一小块进行铺列,得到第一个图,第二个得到第二个图,九个特征图最后得到九个小块。这个是跟刚才 FasterRCNN 里面是一样的,我这里也给了一个 RFCN 整体的架构,这一部分跟刚才不一样,我如果得到特征图之后,这里是一个新加的卷积层,这里是让大家强制输出成和我类别数相关的一个卷积层,就是 Feature Map 的数目,这边是一个分类,这边是采用刚才这种铺列的方法,最后也得到了检测的结果。这里是一个效果对比图,FasterRCNN 的话速度是 420 毫秒一张图,通过这个简化之后,RFCN 是 170 毫秒一张图,相当于提升了三倍的速度。对应的准确率比 FasterRCNN 要高。(附该结构的 Github 代码地址: https://github.com/daijifeng001/caffe-rfcn) PVANET 这一部分介绍的是 PVANET。我们常用的这一部分,通过图像得到这个特征图的时候,我们一般常用的是这些网络,这个提特征值的时候有没有更好的网络设计?PVANET 对这一部分做了三步改进:第一步使用了 CReLU 的激活方法,一般的卷积层比如有 200 个,会输出 256 个 Feature Map,这相当于有一大部分是冗余的,这个 CReLU 就可以让输出的数量变少,比如 256 个 Feature Map 变成 128 个,这样的话就可以减少预算量。第二步是引入 Inception 网络,Inception 模块是有多个不同大小的卷积组合,得到下一层的 Feature Map。这样有一个好处就是说,相当于做了一个特征的融合,就是说我得到的特征是有不同的特征,不同大小的卷积得到的特征。第三步是把卷积神经网络不同层的输出进行结合,这里有一个什么好处呢?比如说一个网络有五层的话,第五层可能是结构化信息非常高的。这样的话,可能对一些小的物体,这些小的物体到高层的话损失特别大。这里就把低层的 Feature Map 和高层的 Feature Map 进行融合,得到了最后的这个,这一层包含的信息比传统的信息更多。而且更重要的是,这里通过一些设计,让卷积层 Feature Map 的数量变少,达到了很大速度的提升。下面这个图可以看出来,PVANET 可以达到 46 毫秒一张图,比刚才的 RFCN 还要快,刚才的 RFCN 是 133 毫秒,这样就可以达到一个实时的效果,大约 120 帧 1 秒的速度,而且是不同的融合方法,最后检测的准确率是非常高的。(附该结构的 Github 代码地址: https://github.com/lvchigo/PVANet_train) YOLO (责任编辑:本港台直播) |