数据的准备其实是最花功夫和时间的,度过了上一个阶段后,就进入激动的模型训练阶段了,首先简要聊聊我对Mask RCNN算法的理解:
MaskRCNN是何凯明大神基于FastRCNN的改进,2018年初在tensorflow上实现了该模型算法。在原有FastRCNN的基础上,将ROIPooling部分调整为ROIAlign,同时增加mask值描述分类。我对整个Mask RCNN的理解如下:
MaskRCNN 是一种two stage图像检测方法,追求精度和识别效果,所谓two stage,就是说第一步先要对图像进行扫描,然后生成目标区域,认为里面有东西;第二部再进行图片分类以及生成界限框(矩形框rois)和mask。与yolo和视网膜等追求速度的one stage算法不一样。
下面一步一步说,first stage:
图像进来首先是卷积层:这是一个标准的残差网,代码使用的是ResNet101网络作为特征抽取器,前面的几层可以检测低层次的特征,比如边缘和边角,后面的层次可以检测一些高级特征,具体汽车、人、天空等等,通过这个backbone网络,图片会被提取出32*32的特征图 共计2048个。这些特征图会进入下一个stage
在残差网络生成特征的同时,FPN特征金字塔也能更好识别物体的多重尺度上的特征,它将不同层级的特征可以自由的传递。虽然最后一层的feature maps 语义强,但是位置和分辨率都比较低,容易检测不到比较小的物体。FPN的功能就是融合了底层到高层的feature maps ,从而充分的利用了提取到的各个阶段