随笔 - 70  文章 - 0  评论 - 0  阅读 - 1889 

1、语义分割

将图片中的所有像素进行分类(包括背景),不区分具体目标,仅做像素级分类。

2、实例分割
对于有多个目标的图片,对每个目标完成像素级的分类,并区分每一个目标(即区分同一个类别但属于不同的目标)。

FCN

对原图的每个像素进行分类,将输出层的每一个像素点当作分类任务做一个 Softmax.即对于一张 W*H*3的图片,中间经过若干层卷积,卷积的kernel大小为W*H,最终通过一个 W*H*C(C为之前定义好的类别个数)的Softmax对原图的每一个像素进行分类
然而,这种最简单解决方案的问题是中间卷积层尺度太大,内存和计算量的消耗也非常大。因此,在2015年,Long、Shelhamer、Darrell和Noh等人提出了在卷积神经网络内部使用下采样和上采样结合的方式实现图片的语义分割,在这个过程中,下采样主要是通过我们之前学习过的Pooling(池化)和调整卷积的 stride(步幅)来实现的,上采样的过程其实就是与下采样相反,主要包括Unpooling(反池化)和 Deconvolution(反卷积)两种方式。

SegNet

与 U-Net结构类似,SegNet也是分割网络,并由编码器、解码器、像素级分类器3个部分组成。考虑到普通卷积神经网络在做下采样的过程中,其空间分辨率有所损失,然而边缘轮廓对分割问题而言比较重要,因此这种下采样带来的分辨率损失还是会有不小的影响,所以,如果能在下采样之前获取并存储边缘信息,那么理论上是可以提升分割的效果的。因此SegNet提出,在下采样时获取Max-Pooling的索引,即为每个特征层在每个下采样滑窗上记录Max-Pooling的位置和最大值回。然后,在上采样的时候将对应 Max-Pooling 的索引位置映射回去,之后再通过卷积进行学习。

PSPNet
1)语义之间存在一定的关联性,传统 FCN 将“船”预测成了“汽车”,但如果考虑上下文信息就可以知道,“汽车”是不可能出现在“河”上面的。

2)对于易混淆的类,传统FCN 将该物体的一部分分割为“摩天大楼”,一部分分割为“建筑”,而实际上这是同一个物体,或者被分为“摩天大楼”,或者被分为“建筑”,而不是两者都有。产生这种问题的原因是没有考虑局部的物体信息。
3)一些细小的物体在语义分割时经常被忽略,“枕头的花色和床单很接近从而导致被FCN误分类,如果我们更加关注局部特征的获取,那么这里就可以更好地区分出“枕头”与“床”

PSPNet 的具体做法对特征层使用4个不同的尺度进行池化:第一个红色部分是全局池化,第二个黄色是将特征层分为4块不同的子区域进行池化,后而蓝色、绿色的层以此类推。池化后为了保证不同尺度的权重,通过1*1的卷积对特征层降维到 1/N(N为不同尺度的数量,这里是4)。然后将N个降维后的特征层上采样到原特征层尺寸并与原特征层进行合并,最终形成多尺度融合后的特征层。

实例分割
目标检测是将图片中的物体位置检测出来并给出相应的物体类别,语义分割是给出每个像素的类别,只区分类别,不区分是否为同一个物体,而实例分割则是要给出类别并区分出不同的物体
由于实例分割需要识别出“每一个物体”,因此需要进行目标检测,而它又需要得到像素级别分割的结果,因此还需要将语义分割的方法融合进来,这实际上是一个多任务学习的方法。多任务学习通常具有两种方式(如图10-14所示):一种是堆叠式,即将不同的任务通过某种方式连接起来进行训练;另一种是扁平式,即每个任务单独训练。

层叠式
1)检测--使用 Faster R-CNN的RPN方法预测所有潜在物体的bbox(这里只做二分类是不是物体)。
2)分割--将步骤1)的ROI压缩到指定尺寸(论文中是14*14*128),通过两个全连接层(用来降维)后预测每个像素点是不是物体。
3)分类--将步骤1)和步骤2)的结果统一到一个尺寸做元素级点乘,再过两个全连接层后对每个 ROI进行分类预测。

扁平式
由于目标检测的结果既有紧贴着目标的矩形框,又有矩形框里目标的类别,那么是否可以基于目标检测的结果,直接在上面做FCN实现像素级分割。Mask-RCNN间是在目前业界公认的效果较好的检测模型 Faster R-CNN 的基础上直接添加第三个分割分支。由于FasterR-CNN已经有了bbox 和 bbox的类别,因此如何定义第三个分割分支的学习方法就是关键。对于指定区域(压缩后的ROI)进行分割比较容易想到的就是全连接网络(FCN)。FCN首先让图片通过下采样(卷积或池化)对图片进行压缩,而后又通过上采样(反卷积或反池化)对图片进行还原,最终针对还原后的特征层上的每个点使用多类Softmax 逐一进行类别预测。即在 FasteR-CNN 的最后一个特征层(7*7*2048)上进行上采样(反卷或反池化),然后再对上采样后的特征层进行像素级预测。这里需要注意的是,输出层是14*14*80(80是需要预测的类别个数),而不是Softmax对应1个channel,原因是Mask-RCNN的作者将每个channel看作一个类别,每个channel只采用2分类的Sigmoid来预测该点是否属于该类物品。

posted on   风起-  阅读(50)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示