基于深度学习的目标检测算法详解(二):Faster R-CNN与Mask R-CNN

本教程由深度学习中文社区(Studydl.com)持续发布与更新, 关注我头条号, 发送私信"目标检测"即可获取文中算法实现代码.

前言

在 (点击可阅读)中我们介绍了一下R-CNN与Fast R-CNN的算法原理, 在这篇文章中我们将接着介绍一下目标检测算法中比较经典的Faster R-CNN与Mask R-CNN.

3, Faster R-CNN

上面两种方法都依赖于Selective Search生成候选区域,十分耗时。考虑到CNN如此强大,Faster R-CNN提出使用CNN来得到候选区域。假设有两个卷积神经网络,一个是区域生成网络,得到图像中的各个候选区域,另一个是候选区域的分类和边框回归网路。这两个网络的前几层都要计算卷积,如果让它们在这几层共享参数,只是在末尾的几层分别实现各自的特定的目标任务,那么对一幅图像只需用这几个共享的卷积层进行一次前向卷积计算,就能同时得到候选区域和各候选区域的类别及边框。

基于深度学习的目标检测算法详解(二):Faster R-CNN与Mask R-CNN

Faster R-CNN:在卷积后的特征图上使用Region Proposal Network

候选区域生成网络(Region Proposal Network, RPN)如下,先通过对输入图像的数层卷积得到一个特征图像,然后在特征图像上生成候选区域。它使用一个n x n(n = 3)的滑动窗口,将局部的特征图像转换成一个低维特征, 预测k个的区域(cls层,2k个输出)是否为候选区域和对应的k个边框(reg层,4k个输出)。这里的k个区域被称为锚(anchor), 对应着与滑动窗口具有相同的中心的不同大小和不同长宽比的矩形框。假设卷积后的特征图像大小为WxH,那么一共有WHK个锚。这种特征提取和候选区域生成的方法具有位移不变性。

基于深度学习的目标检测算法详解(二):Faster R-CNN与Mask R-CNN

对一个滑动窗口中的anchor预测候选区域

使用RPN得到候选区域后,对候选区域的分类和边框回归仍然使用Fast R-CNN。这两个网络使用共同的卷积层。 由于Fast R-CNN的训练过程中需要使用固定的候选区域生成方法,不能同时对RPN和Fast R-CNN使用反向传播算法进行训练。该文章使用了四个步骤完成训练过程:1,单独训练RPN;2,使用步骤中1得到的区域生成方法单独训练Fast R-CNN; 3, 使用步骤2得到的网络作为初始网络训练RPN;4, 再次训练Fast R-CNN, 微调参数。

Faster R-CNN的精度和Fast R-CNN差不多,但是训练时间和测试时间都缩短了10倍。

4, Mask R-CNN

Faster R-CNN 在物体检测中已达到非常好的性能,Mask R-CNN在此基础上更进一步:得到像素级别的检测结果。 对每一个目标物体,不仅给出其边界框,并且对边界框内的各个像素是否属于该物体进行标记。

基于深度学习的目标检测算法详解(二):Faster R-CNN与Mask R-CNN

Mask R-CNN: 像素级别的目标检测

Mask R-CNN利用Faster R-CNN中已有的网络结构,再添加了一个头部分支,使用FCN对每个区域做二值分割。

基于深度学习的目标检测算法详解(二):Faster R-CNN与Mask R-CNN

Mask R-CNN还提出了两个小的改进使分割的结果更好。第一,对各个区域分割时,解除不同类之间的耦合。假设有K类物体,一般的分割方法直接预测一个有K个通道的输出,其中每个通道代表对应的类别。而Mask R-CNN预测K个有2个通道(前景和背景)的输出,这样各个类别的预测是独立的。第二,Faster R-CNN中使用ROI Pooling之前的取整操作使特征图中所使用的ROI与原图中ROI的位置不完全对应。在Fast和Faster R-CNN中,在使用ROI Pooling之前的特征图大小是原图的1/16。假设一个ROI在原图中的横坐标范围是 W0到 W1,纵坐标范围是h0到 h1,那么在特征图中该ROI的横坐范围是 W0/16到 w1/16, 纵坐标范围是 h0/16到 h1/16 , 取整得到 [w0/16],[w1/16],[h0/16],[h1/16]。这样会导致Pooling前的特征图中的ROI与原图中的ROI没有完全对齐。这不会对分类和边框回归造成大的影响,但是会影响分割的结果,因为没有保持空间对应关系。Faster R-CNN不取整,使用双线性插值得到 与原图中ROI对应的特征图中的区域,保留坐标的对应关系,该方法称作ROIAlign.

文中所有代码实现Demo均已收集, 关注我头条号, 发送私信"目标检测"即可获取文中算法实现代码.

本系列教程文章地址:

本系列已发表如下教程,点击文末了解更多按钮继续阅读, 同时关注我可在第一时间获得最新教程.

基于深度学习的目标检测算法详解(二):Faster R-CNN与Mask R-CNN

基于深度学习的目标检测算法详解(二):Faster R-CNN与Mask R-CNN


分享到:


相關文章: