前言
- 在刚接触MMsegmentation的时候,我是怎么看都看不明白,那个过程实在是太痛苦了,所以我当时就想着一定要把这个写成文章,希望后来者能很轻松的就上手。
- 该系列文章不涉及框架的底层原理,仅以一个使用者的身份带领读者学会使用MMsegmentation。若有帮助还望多多支持。
MMsegmentation官方资源
官方代码网站: https://github.com/open-mmlab/mmsegmentation
官方文档网站:https://mmsegmentation.readthedocs.io/zh-cn/0.x/
note: mmseg有多个版本,看文档的时候注意下自己看的是第几版本的文档
MMsegmentation代码下载
note: 本篇教程以 mmseg v0.30.0 版本为例
进入官方网站,点击Tags,选择v0.30.0版本
MMsegmentation目录结构介绍
主要目录介绍
- 若要看详细介绍,请浏览https://zhuanlan.zhihu.com/p/520397255,官方这篇写的还挺不错的。
mmsegmentation
|
|- configs # 配置文件
| |- _base_ # 基配置文件
| | |- datasets # 需要修改
| | |- models # 需要修改
| | |- schedules # 一般不需要修改
| | |- default_runtime.py # 一般不需要修改
| |
| |- swin # 需要修改
| |- 配置写在这个位置...
|- data # 一般把data放在这儿,放在别的地方也ok
|- mmseg # 配置文件具体实现位置
| |- core # 核心组件 一般不需要修改
| | |- evaluation # 评估模型性能代码
| |- datasets # 数据集相关代码
| | |- pipelines # 数据预处理 ---一般不需要修改
| | |- samplers # 数据集采样代码 ---一般不需要修改
| | |- ade.py # 各个数据集的代码
| | |- 自己数据集.py # 需要修改
| | |- ...
| |- models # 分割模型具体实现代码
| | |- backbones # 主干网络
| | |- decode_heads # 解码头
| | |- losses # 损失函数
| | |- necks # 颈
| | |- segmentors # 构建完整分割网络的代码
| | |- utils # 构建模型时的辅助工具
|- tools # 一般不需要修改
| |- model_converters # 各个主干网络预训练模型转 key 脚本
| |- convert_datasets # 各个数据集准备转换脚本
| |- train.py # 训练脚本
| |- test.py # 测试脚本
| |- ...
|- ...
从我自身使用角度来看,与我们相关的有以下几个文件夹:
-
configs
包括了各个算法的配置文件、存放常用的数据集配置、基础模型以及训练策略的基配置文件configs/_base_
-
大白话: 运行代码,就需要在
configs
目录下写一个配置文件File
,在File
中调用configs/_base_
的文件 -
例如:在
configs
目录中创建了一个文件夹1.example
,然后在里边创建了demo.py
-
接下来我在
demo.py
中调用configs/_base_
中的文件
-
-
mmseg
里面是 MMSegmentation 的算法库,包括核心组件、数据集处理、分割模型代码和面向用户的 API 接口。我们一般情况下修改如下几个地方就足够了- backbone:特征提取部分,类似于U-Net的编码器
- necks:对backbone输出的特征再做一次增强,类似于U-Net中的跳跃连接,可以没有necks
- decode_heads: 类似于U-Net的解码器
- losses:损失,如果需要添加一些新的损失,在这个里边添加
-
tools
包括了调用 MMSegmentation 作为训练和测试入口的tools/train.py
和tools/test.py
,预训练模型和数据集准备的转换脚本,以及部署和可视化相关的脚本。平常用到的基本上就是下边这四个文件。这里的文件我们一般不用进行修改。
MMsegmentation环境安装
note: 本篇教程以 mmseg v0.x版本为例
官方文档网站:https://mmsegmentation.readthedocs.io/zh-cn/0.x/
点击依赖
-
第一步,默认读者已经安装好了conda或者miniconda
-
第二步:conda create --name environmentName python=3.8 -y
--name
后边的是虚拟环境名称python
后边是对应的版本,如果已知要安装torch的版本,需要注意下python和torch的版本需要匹配,这个 大家在网上搜一下就可以查到。-y
就是安装的时候默认yes,不用用户再进行输入。
-
第三步:这里我以GPU安装为例,点击官方说明四个字
- 然后在下图中的页面中选择自己需要安装的torch版本即可
- note: 感觉打开这个网址还需要进行科学上网
-
第四步:按下图执行命令即可
-
第五步:一般情况下我们都是在mmseg中开发代码,所以都是选择从源码安装,在前边我已经介绍过代码下载这里就不进行赘述。
- 下载源码后,我们需要在下图目录中执行
pip install -v -e .
(e后边间隔后还有一个.)
`
到此安装过程就算完成了
运行MMsegmentation遇到的问题
按照上述步骤运行后,有时会出现 mmcv版本不匹配 的问题
解决方法:在mmseg目录下有一个__init__.py
,按下图操作即可。
参考文章
- 超详细!带你轻松掌握 MMSegmentation 整体构建流程:https://zhuanlan.zhihu.com/p/520397255