(202302)OpenMMLab实战CV陆——语义分割算法简介

什么是语义分割

任务: 将图像按照物体的类别分割成不同的区域

等价于: 对每个像素进行分类

应用方面:无人驾驶汽车、人像分割、智能遥感、医疗影像分析

区别

  • 语义分割:仅考虑像素的类别 不分割同一类的不同实体
  • 实例分割:分割不同的实体 仅考虑前景物体
  • 背景仅考虑类别 前景需要区分实体

语义分割的思路

按颜色分割

先验知识:物体内部颜色相近,物体交界颜色变化——先验知识不完全准确: 不同物体颜色可能相近,物体内也会包含多种颜色

逐像素分类

优势:可以充分利用已有的图像分类模型

问题:效率低下,重叠区域重复计算卷积

深度学习下的语义分割模型

全卷积网络(FCN)

FCN网络结构主要分为两个部分:全卷积部分和反卷积部分。其中全卷积部分为一些经典的CNN网络(如VGG,ResNet等),用于提取特征;反卷积部分则是通过上采样得到原尺寸的语义分割图像。FCN的输入可以为任意尺寸的彩色图像,输出与输入尺寸相同,通道数为n(目标类别数)+1(背景)。
————————————————
版权声明:本文为优快云博主「晓野豬」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/qq_41731861/article/details/120511148

如上,原文链接中的文章可以了解一些全卷积网络知识

上下文信息与PSPNet模型

由于可能出现歧义,所以要进行联系上下文。图像周围的内容(也称上下文)可以帮助我们做出更准确的判断。

方案:增加感受野更大的网络分支, 将上下文信息导入局部预测中

例子:PSPNet2016

  • (a) 对特征图进行不同尺度的池化,得到不同尺度的上下文特征
  • (b) 上下文特征经过通道压缩和空间上采样之后拼接回原特征图 → 同时包含局部和上下文特征
  • © 基于融合的特征产生预测图

空洞卷积与DeepLab模型

DeepLab 是语义分割的又一系列工作,其主要贡献为:

• 使用空洞卷积解决网络中的下采样问题

• 使用条件随机场 CRF 作为后处理手段,精细化分割图

• 使用多尺度的空洞卷积(ASPP 模块)捕捉上下文信息 DeepLab v1 发表于 2014 年,后于 2016、2017、2018 年提出 v2、v3、v3+ 版本

使用空洞卷积(Dilated Convolution/Atrous Convolution)解决下采样问题,在不增加参数的情况下增大感受野。

PSPNet 使用不同尺度的池化来获取不同尺度的上下文信息 DeepLab v2 & v3 使用不同尺度的空洞卷积达到类似的效果。

分割模型的评估方法

评估指标与图像分类相近。

整理自openmmlab实战营课程

本文将以语义分割为例,介绍如何使用OpenMMLab框架进行实战操作。 一、准备工作 1.安装OpenMMLab框架 可以按照官网提供的安装方式进行安装,也可以使用pip install mmcv-full安装mmcv-full,然后再使用pip install openmmlab安装OpenMMLab。 2.下载数据集 本文使用的是PASCAL VOC2012数据集,可以在官网上下载。 3.配置环境变量 为了方便使用,可以将数据集路径添加到环境变量中,使用时直接调用。 二、数据预处理 1.将数据集转换为COCO格式 由于OpenMMLab使用的是COCO格式的数据集,因此需要将PASCAL VOC格式的数据集转换为COCO格式。可以使用官方提供的脚本进行转换。 python tools/datasets/voc_convert.py --voc-dir /path/to/voc --json-dir /path/to/save/json 其中,--voc-dir表示PASCAL VOC格式的数据集路径,--json-dir表示将要保存COCO格式的数据集路径。 2.数据增强 使用数据增强可以使模型更具有泛化能力,常用的增强方法包括随机旋转、随机裁剪、随机翻转等。可以使用OpenMMLab提供的数据增强模块进行处理。 from mmcv import Config from mmcv.runner import obj_from_dict cfg = Config.fromfile('configs/deeplabv3_r50-d8_512x512_40k_voc12aug.py') train_pipeline = obj_from_dict(cfg.data.train.pipeline) 其中,train_pipeline为数据增强的流程,可以根据需要进行修改。 三、模型训练 使用OpenMMLab提供的训练脚本进行训练。 python tools/train.py ${CONFIG_FILE} 其中,${CONFIG_FILE}为配置文件路径,可以在configs文件夹中选择合适的配置文件进行训练。 四、模型测试 使用OpenMMLab提供的测试脚本进行测试。 python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} [--out ${RESULT_FILE}] [--eval ${EVAL_METRICS}] [--show] 其中,${CONFIG_FILE}为配置文件路径,${CHECKPOINT_FILE}为训练好的模型文件路径,${RESULT_FILE}为结果保存路径,${EVAL_METRICS}为评价指标,--show表示显示结果。 五、模型部署 使用OpenMMLab提供的导出模型脚本将模型导出为ONNX格式或TorchScript格式,以便在C++或Python中使用。 python tools/export_model.py ${CONFIG_FILE} ${CHECKPOINT_FILE} ${EXPORT_TYPE} [--out ${EXPORT_FILE}] [--input-img ${INPUT_IMG}] [--shape ${INPUT_SHAPE}] 其中,${EXPORT_TYPE}为导出模型格式,可以选择onnx或torchscript,${EXPORT_FILE}为导出模型路径,${INPUT_IMG}为输入图片路径,${INPUT_SHAPE}为输入图片大小。 六、总结 通过以上实战操作,我们可以使用OpenMMLab框架进行语义分割模型的训练、测试和部署。OpenMMLab框架提供了丰富的模型和数据增强模块,使得模型训练更加便捷。同时,OpenMMLab框架也支持模型导出为ONNX或TorchScript格式,方便在C++或Python中使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

早上真好

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值