Faster RCNN作为两阶段目标检测模型,可以分为四个主要内容:
Conv层。 作为CNN网络的一种目标检测方法,Faster RCNN首先采用基础的conv relu轮询层提取图像的性能图。 该feature maps由后续的RPN层和所有连接层共享。
区域专业网络。 RPN网络用于生成区域进度。 该层在softmax中判断anchors属于positive或negative,在bounding box regression中修改anchors以获得准确的proposals。 RPN网络实际上分为两条线,一条通过softmax对anchors进行分类获得positive和negative的分类,另一条通过计算相对于anchors的bounding box regression偏移量来获得准确的propors 最后一个Proposal层将定位分析和相应的边界盒注册偏移合并以获取proposals,从而排除太小而超出边界的proposals。 专业层完成了与目标定位相当的功能。
投资轮询。 该层收集输入的性能图和proposals,将这些信息合并后提取proposal feature maps,送入后续的所有连接层判断目标类别。
类别认证。 使用proposal feature maps计算proposal类别,然后再次运行边界盒注册以获取发现帧的最终准确位置。
ROI轮询旨在从RPN网络中确定的ROI导出小特征图(a small feature map,eg 7×7 ),ROI大小各不相同,但RoIPool后均为7×7 RPN网络将若干RoI的坐标表示为[x,y,w,h],输入RoI轮询,输出7×7大小的特征图用于分类和定位。 问题是ROI轮询的输出大小为7×7。 当ROI网络输出的ROI大小为8*8时,不能保证输入像素和输出像素一一对应。 首先,他们包含的信息量不同(可能是一对一的,也可能是一对一的),然后他们的坐标无法与输入对应(请参见。 这对分类影响不大,但对分割有很大的影响。
狗的BB对应于feature map之上,得到665/32 x 665/32=20.78 x 20.78的结果,包括浮点数,但是如果我们的像素值可以没有小数,作者对其进行了量化操作(即舍入操作)。 也就是说,结果是20 x 20,向这里引入了第一次量化误差; 将20 x 20的ROI映射到7 x 7的ROI feature,结果是20 /7 x 20/7=2.86 x 2.86。 相同的浮点数,包含小数点。 用同样的操作把这个揉起来吧。 这里引入了第二次量化误差。 的误差会导致图像中的像素与特征中的像素的偏移,即使将feature空间的ROI与原图像的上方相对应也会产生较大的偏移。
————————————————
原文链接: 3359 zuan LAN.zhi Hu.com/p/314264583358 www.Sina.com /是在Faster R-CNN中添加了预测分割掩码的分支,如上图所示。 其中黑色部分为原Faster-RCNN,红色部分为Faster-RCNN网络中的修改。 用ROI对齐层替换了ROI轮询层; 添加了并行的FCN层(mask层)。
RoIAlign、RoIAlign的输出坐标采用插值算法获得,不再量化; 每个grid的值也不再使用max,而是使用差分算法。 双线性插值是一种相对较好的图像缩放算法,并且利用原始图像中虚拟点周围的四个实际像素值(例如,浮点值(例如,20.56 ),像素位置都是整数值,没有浮点值),来共同确定目标图像中的一个像素值。 即,可以估计与20.56这一虚拟位置点相对应的像素值。
loss function,L=Lcls Lbox Mask R-CNN
各ROIAlign对应于K * m^2维的输出。 k对应于类别的个数,即输出k个mask,m对应于池分辨率(7*7)。 Loss函数定义: LMask(cls_k ) Sigmoid (cls _ k )、平均二值交叉熵(average binary cross-entropy ) Loss通过逐像素sigmoid计算对应于GT中属于第k类的ROI,Lmask仅定义在第k个mask上面(其他k-1个mask输出对整个Loss没有贡献)。 Why K个标志? 每个类对应一个掩码可以有效地避免类之间的竞争(其他类对Loss没有贡献)。
————————————————
原文链接: https://blog.csdn.net/QQ _ 37392244/article/details/88844681