mmsegmentation学习笔记

mmsegmentation教程

下载预训练权重

github–>mmsegmentation–>model zoo–>XXX model(例如:PSPNet)–>找到预选连权重与config的前缀一致:pspnet_r50-d8_4xb2-40k_cityscapes-512x1024 (model)

了解配置文件

查看配置文件,可以运行 python tools/misc/print_config.py /PATH/TO/CONFIG 来查看完整的配置文件。

python tools/misc/print_config.py configs/deeplabv3plus/deeplabv3plus_r50-d8_4xb4-40k_pascal-context-59-480x480.py
准备数据集
  1. 按照同济子豪兄的西瓜语义分割数据集进行制作
  2. 建立mmseg/datasets/My_Dataset.py
构建模型
  1. 执行以下两步生成完整的配置文件,在文件夹work_dirs中
cd mmsegmentation
python tools/train.py configs/deeplabv3plus/deeplabv3plus_r50-d8_4xb4-40k_pascal-context-59-480x480.py
  1. 复制在configs/deeplabv3plus并命名为:my_deeplabv3plus_r50-d8_4xb4-40k_pascal-context-59-480x480.py
  2. 修改完整的配置文件的num_classes,所有的num_classes=背景+类别数
  3. 修改完整的配置文件的dataloader的路径
  4. 找到路径mmseg/datasets,复制pascal_context.py模仿建立my_pascal_context.py,在init.py中导入,并随后在配置文件中修改数据集格式。
  5. 将type='SyncBN’修改成type=‘BN’
  6. 添加更多的评估指标’mDice’,'mFscore’等等
  7. 修改完成后请pip install -v -e .或者python setup.py install
模型训练
  1. 模型训练
    方法一:注意tools/train.py ‘xxx’和’–xxx’的区别,有’–‘可以添加也可以不添加,无’–'是必须添加。
python tools/train.py configs/my_deeplabv3plus/deeplabv3plus_r50-d8_4xb4-40k_pascal-context-59-480x480.py

方法二: train.py–>Configuration–>Parameters: E:/Python_Project/mmsegmentation_ours/configs/my_deeplabv3plus/deeplabv3plus_r50-d8_4xb4-40k_pascal-context-59-480x480.py --work-dir mmseg_log -->apply–>run train.py

模型测试
  1. 对验证集或者测试集上图片进行测试
 python tools/test.py configs/deeplabv3plus/my_deeplabv3plus_r50-d8_4xb4-40k_pascal-context-59-480x480.py work_dirs/my_deeplabv3plus_r50-d8_4xb4-40k_pascal-context-59-480x480/iter_5000.pth --work-dir work_dirs/my_deeplabv3plus_r50-d8_4xb4-40k_pascal-context-59-480x480/test  --show --show-dir work_dirs/my_deeplabv3plus_r50-d8_4xb4-40k_pascal-context-59-480x480/test_img --out work_dirs/my_deeplabv3plus_r50-d8_4xb4-40k_pascal-context-59-480x480/test_images
  1. 单张图像分割显示:参考同济子豪兄
  2. 批量图像分割显示:参考同济子豪兄
模型分析实用工具
  1. 计算参数量(params)和计算量( FLOPs)
python tools/analysis_tools/get_flops.py configs/deeplabv3plus/my_deeplabv3plus_r50-d8_4xb4-40k_pascal-context-59-480x480.py --shape 512 512

注意:将tools/analysis_tools/get_flops.py进行以下修改:

outputs = get_model_complexity_info(
    model,
    # input_shape,#注释掉
    inputs=data['inputs'],
    show_table=False,
    show_arch=False)
  1. 计算FPS,特别注意,在同一个benchmark上面对比性能指标,才有意义,200张以上才有效。
python tools/analysis_tools/benchmark.py configs/deeplabv3plus/my_deeplabv3plus_r50-d8_4xb4-40k_pascal-context-59-480x480.py work_dirs/my_deeplabv3plus_r50-d8_4xb4-40k_pascal-context-59-480x480/iter_5000.pth
  1. 获得Grad-CAM热力图,打印出网络结构:–category-index,仅仅包含了类别,不包括背景
python tools/analysis_tools/visualization_cam.py  data/Watermelon87_Semantic_Seg_Mask/img_dir/test/denn-ke-11-7.jpg configs/deeplabv3plus/my_deeplabv3plus_r50-d8_4xb4-40k_pascal-context-59-480x480.py work_dirs/my_deeplabv3plus_r50-d8_4xb4-40k_pascal-context-59-480x480/iter_5000.pth --target-layers backbone.layer4[2].relu --category-index 2 --device cuda:0
 python tools/analysis_tools/visualization_cam.py  data/Watermelon87_Semantic_Seg_Mask/img_dir/test/denn-ke-11-7.jpg configs/deeplabv3plus/my_deeplabv3plus_r50-d8_4xb4-40k_pascal-context-59-480x480.py work_dirs/my_deeplabv3plus_r50-d8_4xb4-40k_pascal-context-59-480x480/iter_5000.pth --target-layers decode_head.sep_bottleneck[1].pointwise_conv.activate --category-index 1 --device cuda:0
  1. 画出混淆矩阵
python tools/analysis_tools/confusion_matrix.py configs/deeplabv3plus/my_deeplabv3plus_r50-d8_4xb4-40k_pascal-context-59-480x480.py work_dirs/my_deeplabv3plus_r50-d8_4xb4-40k_pascal-context-59-480x480/test_images work_dirs/my_deeplabv3plus_r50-d8_4xb4-40k_pascal-context-59-480x480/confusion_matrix
  1. 浏览数据集
python tools/analysis_tools/browse_dataset.py configs/deeplabv3plus/my_deeplabv3plus_r50-d8_4xb4-40k_pascal-context-59-480x480.py
  1. 分析日志文件参考同济子豪兄
模型部署
  1. MMDeploy-在线模型转换工具
    在线模型转换工具:https://platform.openmmlab.com/deploee
    在线模型测速工具:https://platform.openmmlab.com/deploee/task-profile-list
  2. 模型本地部署参考同济子豪兄

猜你喜欢

转载自blog.csdn.net/qq_50993557/article/details/134620844