参考的是这篇博文,mmsegmentation训练自己的任务 - 知乎
1、安装mmcv,参考GitHub - open-mmlab/mmcv: OpenMMLab Computer Vision Foundation
|
2、下载mmsegmentation,地址https://github.com/open-mmlab/mmsegmentation
3、如有需要增加对应格式数据加载方法mmseg/datasets/pipelines/loading.py
imdecode_backend# 加载图像的包。
img_bytes = self.file_client.get(filename)#应该是字节格式的数据
img = mmcv.imfrombytes(img_bytes, flag=self.color_type, ackend=self.imdecode_backend)# 将字节数据转换成numpy数组
gt_semantic_seg = mmcv.imfrombytes(
img_bytes, flag='unchanged',
backend=self.imdecode_backend).squeeze().astype(np.uint8)# 将字节数据转换成numpy数组
@PIPELINES.register_module():别忘记注册这个方法
3、注册编写的数据加载方法:mmseg/datasets/pipelines/__init__.py,
from .loading import LoadAnnotations, LoadImageFromFile
__all__ = [...]
这样才能在后续的代码中引用到这个方法。
4、编写自己数据库对应的dataset,根目录configs/_base_/datasets,随便参考一个简单的pipeline,主要是修改Load方法,如果有必要Normalize方法mmseg/datasets/pipelines/transforms.py也可以修改。
LoadImageFromFile:载入图像
LoadAnnotations:载入标记
Normalize:归一化
将base修改完了之后就可以直接修改具体的dataset方法了mmseg/datasets,随便找一个进行修改。
CLASSES:('background', 'vessel')类别名称
PALETTE:[[0], [1]]对应的类别标记
img_suffix='.png':图像后缀
seg_map_suffix='_1stHO.png':标签后缀
最后在mmseg/datasets/__init__.py中注册dataset。
5、创建配置文件,这个路径随便放了,最好单独创建文件夹https://github.com/open-mmlab/mmsegmentation/blob/master/docs_zh-CN/tutorials/config.md
,例如configs/swin/upernet_swin_tiny_patch4_window7_512x512_160k_ade20k_pretrain_224x224_1K.py
'../_base_/models/upernet_swin.py',:网络
'../_base_/datasets/ade20k.py':dataset载入
'../_base_/default_runtime.py':运行时
'../_base_/schedules/schedule_160k.py':训练计划
然后修改需要修改的部分。
6、开始训练,文档中写的蛮清楚的https://github.com/open-mmlab/mmsegmentation/blob/master/demo/MMSegmentation_Tutorial.ipynb
。mmsegmentation/get_started.md at master · open-mmlab/mmsegmentation · GitHub。实际上调用的是tools/train.py
7、预测和训练差不多。mmsegmentation/inference.md at master · open-mmlab/mmsegmentation · GitHub