MMSeg 使用
MMSeg
MMSeg 安装
参考官方安装
在基于MMDet安装后,运行类似安装代码
git clone https://github.com/open-mmlab/mmsegmentation.git
cd mmsegmentation
pip install -e .
验证安装
如果下载完成,且当前目录下多了两pspnet*
的文件则安装成功
mim download mmsegmentation --config pspnet_r50-d8_512x1024_40k_cityscapes --dest .
MMSet 推理
命令行推理
在mmsegmentation目录下运行
!python demo/image_demo.py \
demo/demo.png \
configs/* \ # 配置文件路径
https://download* \ # 配置文件的预训练模型pth路径
--out-file output.jpg \
--device cuda:0 \
--opacity 0.5 # mask可视化结果的透明度
python api 推理
最后分割结果就会保存在result
这个变量中
result:
- pred_sem_seg: shape(1, H, W),值为 0 ~ classes,可以使用matplotlib绘图
- seg_logits: shape(classes, H, W),值为概率
from mmseg.apis import init_segmentor, inference_segmentor, show_result_pyplot
from mmseg.core.evaluation import get_palette
import matplotlib.pyplot as plt
config_file = 'config.py'
checkpoint_file = 'config.pth'
model = init_segmentor(config_file, checkpoint_file, device='cuda:0')
img = 'test.png'
result = inference_segmentor(model, img)
可视化
opactiy:透明度,值越小越接近原图
vision_img = show_result_pyplot(model, img, result, opacity=.5, out_file="output.jpg")
plt.imshow(vision_img[..., ::-1])
自定义数据集
images: 原图片(jpg)
labels: mask图(png),标注文件。内部的值为 0 ~ classes,所以肉眼不可见,可以用matploblib归一化后显示
自定义数据集类
from mmseg.registry import DATASETS
from mmseg.datasets import BaseSegDataset
@DATASETS.register_module()
class CoutomNameDataset(BaseSegDataset):
# classes:所有类名
# palette: 调色板
METAINFO = dict(classes=classes, palette=palette)
def __init__(self, **kwargs):
super().__init__(img_suffix=".jpg", seg_map_suffix=".png", **kwargs)
随后修改配置文件,类似于MMDet过程