接上文,配置好环境后,就开始体验一下分割demo吧!官方网址也有给出demo教程。注:这里的demo指的是使用预训练好的模型对指定图像进行分割,并可视化分割结果。
官方demo教程网址:
https://github.com/open-mmlab/mmsegmentation/blob/main/docs/zh_cn/user_guides/3_inference.md
我会一步一步根据提供的image_demo.py演示如何在服务器上运行jupyter(也可以直接在python命令行输入)指令运行。
一、预训练模型配置文件
首先,我们要知道预训练模型配置文件路径:
在mmsegmentation/configs下,可以看到有很多分割算法选择,点进去对应的文件夹里有很多基于不同数据集在不同条件下进行预训练的模型配置文件,当选择相应文件进行预测后,首次会自动下载预训练模型的权重(妈妈再也不用担心我找不到权重文件啦!)
具体的网络模型可以在下图中的model zoo搜索:
这里我以Segformer模型为例演示对demo图像进行分割的过程:
选择下图红框的配置文件,其中,命名可以看出是在MIT-B0 backbone上,对输入图像裁剪成1024*1024大小的,对cityscapes数据集进行预训练得到的模型,这里使用MIT-B0轻量化模型骨干
具体的网络模型introduction可以在各自模型的文件中找到
二、图像预测image_demo.py
打开image_demo.py文件,找到命令行参数
可以看到,这里面提供了不少的参数,我们主要关注前7项参数(其中前3项为必填项,后4项为选填项):
img : 预测图像的路径
config:预训练模型配置文件路径
checkpoint:预训练模型的权重文件下载路径
--out-file:输出预测图像的路径(注意要具体到文件名称+后缀)
--device:算力设备(GPU或者CPU)
--opacity:控制原图像与预测掩码叠加透明度,在(0,1]之间,取值越大,原图像就会保留越少
--with-labels:是否在预测图上显示预测标签
其中checkpoint参数可以根据下图右键红框复制下载链接即可
config文件具体ctrl+c文件路径即可
2.1 运行指令
这里运行python命令:
!python demo/image_demo.py demo/test_image/1.jpg /home/ubuntu/mmsegmentation/configs/segformer/segformer_mit-b0_8xb1-160k_cityscapes-1024x1024.py https://download.openmmlab.com/mmsegmentation/v0.5/segformer/segformer_mit-b0_8x1_1024x1024_160k_cityscapes/segformer_mit-b0_8x1_1024x1024_160k_cityscapes_20211208_101857-e7f88502.pth --out-file outputs/test_1.jpg
指令有点长,应该有更简单的实现方法。第一次运行,会先下载预训练模型的权重文件。
2.2 运行效果
稍等片刻,见证奇迹的时刻!!!
可以看到,即使是使用轻量级模型,仍能达到不错的分割效果!