语义分割简述
目录
一、上采样
二、ROI Pooling操作及其改进
三、FPN(特征金字塔网络)
四、语义分割
五、FCN(全卷积网络)
六、U-Net
七、Mask R-CNN
一、上采样
- 上采样方式
- Resize
-
-
- 双线性插值直接缩放,类似图像缩放,如双线性插值。
- 双线性插值又称双线性内插,是两个变量插值函数的线性插值扩展,核心思想是在两个方向分别进行一次线性插值。
- 例如已知Q12、Q22、Q11、Q21四个点,在x轴方向插值得到R1、R2,再对R1、R2插值得到P点。
- 数学上,可简化插值公式或用矩阵运算表示,如将坐标系统设定为特定值时,插值公式可化简。
- Deconvolution(转置卷积)
-
-
-
- 通过conv2d_transpose函数实现。
- 参数说明:filter为卷积核,形状为[kernel_size, kernel_size, output_channels, input_channels],与正向卷积核的通道数参数放置位置相反;output_shape为输出张量形状;strides为步幅;padding为填充方式。
- 实现过程分两步:第一步扩充输入,元素之间插入0,扩充倍数与步幅有关;第二步对扩充后的矩阵用卷积核进行卷积操作,步长为1,卷积核数量由filter决定。
-
- 实验代码
- 使用TensorFlow的conv2d_transpose,输入一张28x28的图像,卷积核尺寸4x4,输出通道数5,输入通道数3,设置步幅为2,padding为"SAME",输出形状为1x56x56x5。
二、ROI Pooling操作及其改进
- RoI Pooling
-
- 应用于Faster RCNN中,用于目标检测的特征提取。
- 具体步骤:
- 计算特征图上对应区域的大小,如400x300的边界框在feat stride=16时对应25x18.75的特征区域,需进行第一次量化操作,得到25x18。
- 根据固定输出尺寸划分特征图,如输出7x7时,每块大小为25/7x18/7≈3.57x2.57,需第二次量化操作,得到3x2区域,再进行max pooling。
- RoI Wrap Pooling
-
- 与RoI Pooling的区别在于第二步使用双线性差值算法,使特征图变化到固定尺度,减少量化误差。
- RoI Align Pooling
-
- 在Mask RCNN中采用,完全去掉量化操作,使用双线性插值使网络特征图中的点连续。
- 如特征区域大小为25x18.75,每个块大小为3.57x2.65,通过选择采样点并双线性插值得到连续值。
三、FPN(特征金字塔网络)
- 组合结构
-
- 由自下而上和自上而下路径组成,其中自下而上路径用于特征提取,空间分辨率逐渐下降,语义值增加。
- 可结合RPN、Fast R-CNN或Faster R-CNN使用,生成特征图金字塔,根据ROI大小选择合适的特征图层提取特征块。
- 改进检测器
-
- 提供自上而下的路径,从语义丰富的层构建高分辨率层,提高检测准确率和速度,尤其是小目标检测。
- 添加横向连接,使目标位置检测更准确。
- 在不同框架中的应用
-
- SSD:通过多个特征图完成检测,但最底层分辨率高但语义不足,不用于检测,导致小目标检测性能差。
- YOLOv3:使用DarkNet-53作为骨干网络,并添加特征金字塔,增强小目标检测能力,使用3个尺度的特征图进行多尺度检测。
四、语义分割
- 定义与应用场景
- 图像语义分割是对图像中每个像素点分类,确定其类别,是图像处理和机器视觉的重要部分,应用于自动驾驶、无人机落点判定等领域。
- 分类包括语义分割、实例分割和全景分割。
- CNN通过多层结构自动学习多尺度特征,适合分类而不适合分割,因convolution和pooling过程丢失细节。
五、FCN(全卷积网络)
- 网络结构
- 结构类似编码器-解码器,经过多次conv和max pooling,feature map尺寸逐渐减小。
- 不使用全连接层,将全连接替换为卷积,输出2维feature map后接softmax获得像素级分类信息。
- 不同版本差异
- FCN-32s:对pool5 feature进行32倍上采样。
- FCN-16s:先对pool5 feature进行2倍上采样与pool4 feature相加,再进行16倍上采样。
- FCN-8s:在pool4和pool3特征融合基础上进行更多次融合。
- 融合多层feature有利于提高分割准确性。
六、U-Net
- 结构与特点
- 参加ISBI Challenge提出的分割网络,适应小训练集。
- 结构类似U形,使用conv+max pooling下采样,再通过deconv反卷积上采样,crop之前的低层feature map进行融合。
- 采用特征拼接而非逐点相加,形成更“厚”特征。
七、Mask R-CNN
- 网络结构
-
- 基于Faster R-CNN,在分类和坐标回归基础上增加语义分割分支。
- 主干网络使用ResNet50与ResNet FPN,HEAT Network在每个ROI输出Mask。
- Loss函数包括Loss mask,对每个像素进行分类,使用average binary cross-entropy loss。
- ROI Align
-
- 改进自Faster R-CNN的Roi-Pooling,取消量化操作,对像素进行精准对准。
- 训练与Inference细节
-
- 训练时与Faster R-CNN类似,图像变换到短边800,正负样本比例1:3。
- Inference时,ResNet的Mask R-CNN生成300个候选区域,FPN生成1000个候选区域进行分类回归和非极大值抑制,最后检测分数前100的区域进行mask检测。
- 实验结果
-
- 溶解实验:网络越深效果越好,FPN效果好,sigmoid优于softmax,RoI Align提升效果,特别是AP75,Mask分支采用CNN效果好,每个类预测mask更好。
- 目标检测结果:即使不使用mask分支,结果也很好,RoI Align比RoI Pooling高约0.9个点,比Mask R-CNN低0.9个点,归结为多任务训练提升。
- 人体关键点检测:mask进行one-hot编码,输出softmax,mask分辨率提高有利于检测。
总述:语义分割涉及多种技术,包括上采样、特征金字塔网络、不同的pooling方法和网络架构如FCN、U-Net、Mask R-CNN等。这些技术的应用和改进有助于提高目标检测和分割的精度。