当前位置: 首页 > article >正文

语义分割简述

目录

一、上采样

二、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等。这些技术的应用和改进有助于提高目标检测和分割的精度。


http://www.kler.cn/a/535599.html

相关文章:

  • python:csv文件批量导入mysql
  • go流程控制
  • 三维粒子滤波(Particle Filter)MATLAB例程,估计三维空间中匀速运动目标的位置(x, y, z),提供下载链接
  • Python 数据挖掘与机器学习
  • Rust错误处理:从灭火器到核按钮的生存指南
  • stm32点灯 GPIO的输出模式
  • Python-memoryutils:内存泄漏检测与防止工具
  • JS:将JS对象格式化为php语法形式(完美支持无unicode编码匹配的正则)
  • Debian安装Seafile
  • 【基于SprintBoot+Mybatis+Mysql】电脑商城项目之修改密码和个人资料
  • android 适配 api 35(android 15) 遇到的问题
  • 接雨水算法 思路讲解与拓展
  • python:csv文件批量导入mysql
  • 前端控制器模式
  • 【目标检测】模型验证:K-Fold 交叉验证
  • (算法竞赛)图论+DFS深搜——图的dfs遍历1
  • 大数据学习之Spark分布式计算框架RDD、内核进阶
  • 一文读懂:TCP网络拥塞的应对策略与方案
  • 风控系统指标版本管理,前端实现
  • sql版本序列号
  • Linux 源码编译安装httpd 2.4,提供系统服务管理脚本并测试
  • 在IDEA中高亮的注释
  • Ubuntu 上可以安装ms sqlserver?(不能上网2)
  • 数据结构:排序—插入排序(一)
  • React 中常见的Hooks,安排!
  • LabVIEW2025中文版软件安装包、工具包、安装教程下载