MMSegmentation安装

安装MMSegmentation

OpenMMLab官方安装教程

说明

本教程使用jupyter notebook编写, 可新建一个目录,将代码下载运行

本机环境

!uname -v
#91~18.04.1-Ubuntu SMP Fri Jul 23 13:36:29 UTC 2021
!lspci | grep -i vga
02:00.0 VGA compatible controller: NVIDIA Corporation GP102 [GeForce GTX 1080 Ti] (rev a1)
03:00.0 VGA compatible controller: NVIDIA Corporation GP102 [GeForce GTX 1080 Ti] (rev a1)
!nvidia-smi
Fri Apr 28 15:15:23 2023       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.63.01    Driver Version: 470.63.01    CUDA Version: 11.4     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  Off  | 00000000:02:00.0 Off |                  N/A |
|  0%   39C    P8    10W / 280W |     13MiB / 11178MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
|   1  NVIDIA GeForce ...  Off  | 00000000:03:00.0 Off |                  N/A |
|  0%   36C    P8     9W / 250W |    226MiB / 11178MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      1393      G   /usr/lib/xorg/Xorg                  4MiB |
|    0   N/A  N/A      2225      G   /usr/lib/xorg/Xorg                  4MiB |
|    1   N/A  N/A      1393      G   /usr/lib/xorg/Xorg                 18MiB |
|    1   N/A  N/A      1578      G   /usr/bin/gnome-shell               72MiB |
|    1   N/A  N/A      2225      G   /usr/lib/xorg/Xorg                101MiB |
|    1   N/A  N/A      2372      G   /usr/bin/gnome-shell               24MiB |
|    1   N/A  N/A      2582      G   ...setup/gnome-initial-setup        2MiB |
+-----------------------------------------------------------------------------+

Conda虚拟环境

步骤0. 安装conda
步骤1. 创建一个 conda 环境,并激活

conda create --name openmmlab python=3.8 -y
conda activate openmmlab
%conda create --name openmmlab python=3.8 -y
# 在notebook中使用无法conda activate,需要手动切换,新环境需要安装ipykernel
# %conda activate openmmlab

步骤2. 参考pytorch官网安装pytorch

conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia -y

查看是否torch能否成功调用GPU

%conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia -y
import torch
torch.cuda.is_available()
True

安装mmseg

步骤0. 安装MMCV

pip install -U openmim
mim install mmengine
mim install "mmcv>=2.0.0"
%pip install -U openmim
!mim install mmengine
!mim install "mmcv>=2.0.0"

步骤1. MMSegmentation

git clone -b main https://github.com/open-mmlab/mmsegmentation.git
cd mmsegmentation
pip install -v -e .
# 连接不到github可以把连接换成gitee
!git clone -b main https://gitee.com/open-mmlab/mmsegmentation.git
%cd mmsegmentation
%pip install -v -e .

验证是否安装成功

为了验证 MMSegmentation 是否正确安装,MMSegmentation提供了一些示例代码来运行一个推理 demo 。
步骤1. 下载配置文件和模型文件

!mim download mmsegmentation --config pspnet_r50-d8_4xb2-40k_cityscapes-512x1024 --dest .

步骤 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

查看推理结果

import matplotlib.pyplot as plt
from PIL import Image

img = Image.open('demo/demo.png')
pred = Image.open('result.jpg')

plt.figure(figsize=(12, 6))
plt.subplot(121)
plt.xticks([])
plt.yticks([])
plt.imshow(img)
plt.title('image')
plt.subplot(122)
plt.imshow(pred)
plt.xticks([])
plt.yticks([])
plt.title('predict')
plt.show()

使用现有模型进行训练和测试(CHASE_DB1数据集)

MMSegmentation官网教程:准备数据集

步骤1. 准备CHASE_DB1数据集

!wget https://staffnet.kingston.ac.uk/~ku15565/CHASE_DB1/assets/CHASEDB1.zip
!python tools/dataset_converters/chase_db1.py CHASEDB1.zip

步骤2. 使用UNet进行训练
选择configs/unet/unet-s5-d16_fcn_4xb4-40k_chase-db1-128x128.py进行训练,为了缩短时间,仅作示例,在文件中添加一行
train_cfg = dict(type=‘IterBasedTrainLoop’, max_iters=4000, val_interval=400)
完整unet-s5-d16_fcn_4xb4-40k_chase-db1-128x128.py文件内容如下

_base_ = [
    '../_base_/models/fcn_unet_s5-d16.py', '../_base_/datasets/chase_db1.py',
    '../_base_/default_runtime.py', '../_base_/schedules/schedule_40k.py'
]
crop_size = (128, 128)
data_preprocessor = dict(size=crop_size)
model = dict(
    data_preprocessor=data_preprocessor,
    test_cfg=dict(crop_size=(128, 128), stride=(85, 85)))

train_cfg = dict(type='IterBasedTrainLoop', max_iters=4000, val_interval=400)
!python tools/train.py configs/unet/unet-s5-d16_fcn_4xb4-40k_chase-db1-128x128.py

将mmsegmentation/mmseg/datasets/chase_db1.py的最后一行注释掉
assert self.file_client.exists(self.data_prefix[‘img_path’])
重新运行

!python tools/train.py configs/unet/unet-s5-d16_fcn_4xb4-40k_chase-db1-128x128.py

步骤3. 测试

运行测试发现指定–show-dir参数后,并没有输出结果图,通过debug发现,根据SegVisualizationHook的文档,interval默认值为50,及50个iter显示一次,但CHASE_DB1测试集数据不足50张,所以没有输出。通常测试输出时期望能够可视化查看所有图片,但在schedules中修改SegVisualizationHook会影响到训练,于是选择在mmsegmentation/mmseg/.mim/tools/test.py中对trigger_visualization_hook函数进行修改,添加visualization_hook[‘interval’] = 1,代码如下

def trigger_visualization_hook(cfg, args):
    default_hooks = cfg.default_hooks
    if 'visualization' in default_hooks:
        visualization_hook = default_hooks['visualization']
        # Turn on visualization
        visualization_hook['draw'] = True
        # 指定添加interval为1
        visualization_hook['interval'] = 1

        if args.show:
            visualization_hook['show'] = True
            visualization_hook['wait_time'] = args.wait_time
        if args.show_dir:
            visulizer = cfg.visualizer
            visulizer['save_dir'] = args.show_dir
    else:
        raise RuntimeError(
            'VisualizationHook must be included in default_hooks.'
            'refer to usage '
            '"visualization=dict(type=\'VisualizationHook\')"')

    return cfg
# 根据自己的情况修改checkpoint和show-dir的路径
!python tools/test.py configs/unet/unet-s5-d16_fcn_4xb4-40k_chase-db1-128x128.py work_dirs/unet-s5-d16_fcn_4xb4-40k_chase-db1-128x128/iter_4000.pth --show-dir work_dirs/unet-s5-d16_fcn_4xb4-40k_chase-db1-128x128/result

查看测试图片

img = Image.open('work_dirs/unet-s5-d16_fcn_4xb4-40k_chase-db1-128x128/result/vis_data/vis_image/test_Image_11L.png_0.png')
plt.imshow(img)
plt.xticks([])
plt.yticks([])
plt.show()
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

热度__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值