Mask R-CNN图像识别和分割实现步骤(一)

在本篇文章中,主要讲解Mask R-CNN的原理以及如何运用它的步骤:

一、参考github代码链接

Mask_RCNN/samples/balloon at master · matterport/Mask_RCNN · GitHub

二、概述

  (一)、什么是实例分割?

     实例分割从本质上而言,就是像素级上区分识别对象的轮廓。在计算机视觉研究方面,是一个较难解决的难题。我们大脑中可以识别番茄,草莓,土豆,对于图像而言,他们就是千百万个像素的集合。

    其主要分为四个关键问题:

     (1)、分类:在图片中进行物体分类;

     (2)、语义分割:在图片中进行语义分割

     (3)、物体检测:主要在图像中考虑重叠的部分

     (4)、实例分割:具体到分割每一个物体中包含的像素。

(二)、什么是Mask R-CNN?

   最大的特点:Mask R-CNN相比Faster R-CNN的最大区别之处在于Faster R-CNN在进行Rol pooling层时会失去浮点小数,尽量两层的取整之后,同比例放大将失去不少的像素,这将产生一个新的问题;而在Mask R-CNN中,使用RolALign替代了Rol Pooling,巧妙地使用双线性插值的方法,使得RoleAlign在另一个层上带有小数的运算,并在后续增加了Lmask层。

  通过下列图片,看一下两者之间的区别:

Rol Pooling会进行量化处理,Rol Align会在Feature map中计算四个采样点,具体看下面的过程

1、原始数据

2、Rol Pooling与Rol Align

 3、Rol Pooling与Rol Align得output

 4、Rol Pooling输出如上图所示,Rol Align的输出还有以下两步:

 

 支持,已经完成2X2的输出,更加详细的说明请去github上了解~~

(三)、网络架构

 根据这种网络架构图可以看出:

两者都是包含两个支线,一个支线完成class、box的输出;另一个支线完成mask的输出;

其中,两者都是经过反卷积操作,rol pooling中输出的mask大小为14x14x80,rol pooling中输出的mask大小为28x28x80。

 (四)、Loss Function

 每个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没有贡献)。

 三、安装使用环境

下一章节讲解!

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值