安装步骤:
该部分引用自开始:安装和运行 MMSeg — MMSegmentation 1.0.0 文档
步骤 0. 从官方网站下载并安装 Miniconda
步骤 1. 创建一个 conda 环境,并激活
conda create --name openmmlab python=3.8 -y
conda activate openmmlab
Step 2. 参考 official instructions 安装 PyTorch
在 GPU 平台上:
conda install pytorch torchvision -c pytorch
pip install -U openmim
mim install mmengine
mim install "mmcv>=2.0.0"
step 4. 安装 MMSegmentation
通过源码安装:
git clone -b main https://github.com/open-mmlab/mmsegmentation.git
cd mmsegmentation
pip install -v -e .
# '-v' 表示详细模式,更多的输出# '-e' 表示以可编辑模式安装工程,# 因此对代码所做的任何修改都生效,无需重新安装
验证是否安装成功
步骤 1. 下载配置文件和模型文件
mim download mmsegmentation --config pspnet_r50-d8_4xb2-40k_cityscapes-512x1024 --dest .
该下载过程可能需要花费几分钟,这取决于您的网络环境。当下载结束,您将看到以下两个文件在您当前工作目录:pspnet_r50-d8_4xb2-40k_cityscapes-512x1024.py 和 pspnet_r50-d8_512x1024_40k_cityscapes_20200605_003338-2966598c.pth
步骤 2. 验证推理 demo
python demo/image_demo.py demo/demo.png configs/pspnet/pspnet_r50-d8_4xb2-40k_cityscapes-512x1024.py pspnet_r50-d8_512x1024_40k_cityscapes_20200605_003338-2966598c.pth --device cuda:0 --out-file result.jpg
#您将在当前文件夹中看到一个新图像 result.jpg,其中所有目标都覆盖了分割 mask
注意:如果按照官方教程,pytorch无法调用cuda,只需要卸载pytorch,然后pip命令常规安装即可,安装过程参考其他pytorch安装教程。
自定义数据集并训练
参考文章(2条消息) mmsegmentation教程1:自定义数据集、config文件修改、训练教程_AESA相控阵的博客-CSDN博客,里面讲的很详细
简要总结:
(1).在mmseg/datasets/文件夹下加入自己的数据集的配置文件;
(2).在configs/_ base _/datasets下面对数据加载进行定义;
(3).在configs/下面选择你需要的模型参数进行修改,查看你修改的文件中调用的配置文件,如调度器、模型、runtime、数据集等等,这些文件同样要修改;
(4).使用命令进行训练。
例如我的训练命令:
python train.py /root/mmsegmentation/configs/bisenetv2/bisenetv2_fcn_4x4_1024x1024_160k_cityscapes.py --work-dir /root/mmsegmentation/work-dir/BiSeNetV2
后面的参数为你的模型,而-work-dir是你的工作目录,训练中所有的数据都会保存在这里。
推理,测试:
python tools/test.py /root/mmsegmentation/configs/bisenetv2/bisenetv2_fcn_4x4_1024x1024_160k_cityscapes.py\
/root/mmsegmentation/work-dir/ BiSeNetV2/latest.pth \
--show-dir BiSeNetV2
推理完成后就会生成分割图。
注:输出的mask默认是叠加原图的,想要输出mask不叠加原图,tools/test中只需要opacity的默认值为1即可。
parser.add_argument(
'--opacity',
type=float,
default=1,
help='Opacity of painted segmentation map. In (0, 1] range.')
parser.add_argument('--local_rank', type=int, default=0)