计算机视觉的任务很多,有图像分类、目标检测、语义分割、实例分割和全景分割等,那它们的区别是什么呢?

Image Classification(图像分类)(分出人、狗、狼)

   图像分类(下图左)就是对图像判断出所属的分类,比如在学习分类中数据集有人(person)、羊(sheep)、狗(dog)和猫(cat)四种,图像分类要求给定一个图片输出图片里含有哪些分类,比如下图的例子是含有person、sheep和dog三种。

语义分割之后再做目标检测 语义分割和目标检测_图像分类


Object detection(目标检测)(框出个体)

    目标检测(上图右)简单来说就是图片里面有什么?分别在哪里?(把它们用矩形框框住)
目前常用的目标检测算法有Faster R-CNN和基于YOLO的目标检测的算法


semantic segmentation(语义分割)(语义分割分割哪个像素属于哪个物种)

   通常意义上的目标分割指的就是语义分割

   语义分割(下图左)就是需要区分到图中每一点像素点,而不仅仅是矩形框框住了。但是同一物体的不同实例不需要单独分割出来。对下图左,标注为人,羊,狗,草地。而不需要羊1,羊2,羊3,羊4,羊5等。

语义分割之后再做目标检测 语义分割和目标检测_分类_02


Instance segmentation(实例分割)(实力分割 分割像素属于哪个个体)

    实例分割(上图右)其实就是目标检测和语义分割的结合。相对目标检测的边界框,实例分割可精确到物体的边缘;相对语义分割,实例分割需要标注出图上同一物体的不同个体(羊1,羊2,羊3…)

目前常用的实例分割算法是Mask R-CNN。
   Mask R-CNN 通过向 Faster R-CNN 添加一个分支来进行像素级分割,该分支输出一个二进制掩码,该掩码表示给定像素是否为目标对象的一部分:该分支是基于卷积神经网络特征映射的全卷积网络。将给定的卷积神经网络特征映射作为输入,输出为一个矩阵,其中像素属于该对象的所有位置用 1 表示,其他位置则用 0 表示,这就是二进制掩码。
   一旦生成这些掩码, Mask R-CNN 将 RoIAlign 与来自 Faster R-CNN 的分类和边界框相结合,以便进行精确的分割:


Panoramic segmentation(全景分割)(全景分割连背景都要分)

   全景分割是语义分割和实例分割的结合。跟实例分割不同的是:实例分割只对图像中的object进行检测,并对检测到的object进行分割,而全景分割是对图中的所有物体包括背景都要进行检测和分割。