语义分割快速入门教程(mmsegmentation平台)

引言

最近项目用到语义分割相关的技术,跟目标检测一样,离不开标注数据集、制作训练数据、模型训练、模型推理测试几个环节,找到了一个比较好的平台mmsegmentation,是香港中文大学-商汤科技联合实验室(MMLab)推出的一个集齐目标检测、语义分割等深度学习的框架和平台,让小白也能快速将论文中的算法模型、网络结构复现落地应用,工欲善其事,必先利其器,那就从搭建环境开始吧!

目录

引言

一、搭建环境

1.  安装cuda、cudnn

2. 安装pytorch-gpu

3. 安装MMCV

4.安装mmsegmentation

5.测试验证

二、制作数据集

1. 搭建环境

2.数据转码和划分数据集

三、模型训练

1.配置文件

2.注意事项

四、模型推理预测

1.单张图片推理

2.视频流推理

 3.摄像头推理预测

致谢


一、搭建环境

参考链接:Get started: Install and Run MMSeg

1.  安装cuda、cudnn

我这边电脑是有两台笔记本,一个是RTX3060(6G独显)的天选2笔记本,另一个是GTX 1050Ti 的戴尔笔记本,安装好显卡驱动,用nvidia-smi可以查看电脑支持CUDA的最高版本,这里以我的电脑为例,最高支持到CUDA 12.2,而目前pytorch-gpu版本是只兼容到12.1,所以为了适配性,建议安装不大于12.1的CUDA版本

这里有显卡驱动与支持CUDA版本对应关系表 ,如果是要安装CUDA 12.X版本,显卡驱动不低于于525.60.13

到官网CUDA ToolkitcuDNN Archive 安装对应的版本包

我这边安装的是CUDA 12.1 和 CUDNN 8.9.2 版本,因为之前天选2电脑是安装了CUDA 12.0版本,在安装mmsegmentation平台环境报错,当时一直无法安装通过,最后把之前的CUDA版本卸载了,重新安装了CUDA才行,希望大家避开这个坑!!!

wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda_12.1.0_530.30.02_linux.run
sudo sh cuda_12.1.0_530.30.02_linux.run

 除了驱动无须安装,其他可以正常安装,安装完后在 ~/.zshrc 和 或 ~/.bashrc 文件末尾添加CUDA环境变量,并且生效即可

$ sudo gedit ~/.zshrc
$ source ~/.zshrc
export PATH=/usr/local/cuda-12.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=/usr/local/cuda

解压下载的cudnn压缩包,并且将对应的CUDNN的软件链库拷贝到对应CUDA目录下并赋予权限,可参考这个安装教程

tar -xf cudnn-linux-x86_64-8.9.2.26_cuda12-archive.tar.xz

# dell@wu in ~/cudnn-linux-x86_64-8.9.2.26_cuda12-archive [22:49:11] 
$ sudo cp -d lib/* /usr/local/cuda-12.1/lib64/
$ sudo cp include/* /usr/local/cuda-12.1/include/
$ sudo chmod a+r /usr/local/cuda-12.1/include/cudnn.h /usr/local/cuda-12.1/lib64/libcudnn*

安装完毕之后,可以输入以下命令查看安装的版本

cat /usr/local/cuda-12.1/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
nvcc --version

2. 安装pytorch-gpu

创建虚拟环境之后,根据自己电脑配置情况选择对应的pytorch-gpu版本,我这里两台电脑环境有些差异,天选2安装了pytorch-gpu 2.2.0,但戴尔电脑安装了pytorch-gpu 2.1.0,因为我后面在戴尔电脑按照天选2的一样环境安装,发现错误,具体可以往下看,所有只能把pytorch版本往后退。

conda create --name mmsegmentation python=3.8 
conda activate mmsegmentation

RTX 3060 天选2电脑环境:

torch                         2.2.2
torchaudio                    2.2.2
torchvision                   0.17.2
mmcv                          2.1.0
mmengine                      0.10.3
mmsegmentation                1.2.2       /home/mmsegmentation
numpy                         1.24.4
onnxruntime                   1.15.1
opencv-python                 4.9.0.80
openmim                       0.3.9

GTX 1050Ti 戴尔电脑环境:

torch                                2.1.0+cu121
torchaudio                           2.1.0+cu121
torchvision                          0.16.0+cu121
mmcv                                 2.1.0
mmengine                             0.10.3
mmsegmentation                       1.2.2        /home/mmsegmentation
numpy                                1.23.5
onnx                                 1.4.1
onnxruntime                          1.18.1
opencv-python                        4.7.0.72
openmim                              0.3.9

3. 安装MMCV

MMCV官网教程

pip install -U openmim
mim install mmcv==2.1.0

记住这里安装mmcv,最好是指定版本2.1.0,切勿直接执行 mim install mmcv (避坑)!!!,否则它是默认安装最新版本,有可能出现环境不兼容的问题,我4月底在天选2电脑安装的版本是 mmcv 2.1.0,当时是没有任何问题。但最近在戴尔电脑安装的时候,发现mmcv 更新到最新版本 2.2.0,而我的numpy 默认装了1.24.x版本,结果导致出现 module 'numpy' has no attribute 'object' [closed] 错误,后来尝试把numpy版本降到1.23.5版本,但运行的时候,仍有如下错误,貌似是mmcv 2.2.0版本不兼容,我就尝试把conda的虚拟环境重新卸载和安装,折腾了好几次还是失败。最后只能把pytorch版本降到 2.1.0,重新走一遍流程,参考这个教程才算成功安装成功。

pip install mmcv==2.1.0 -f https://download.openmmlab.com/mmcv/dist/cu121/torch2.1/index.html

Traceback (most recent call last):
  File "demo/image_demo.py", line 6, in <module>
    from mmseg.apis import inference_model, init_model, show_result_pyplot
  File "/root/mmsegmentation/mmseg/__init__.py", line 61, in <module>
    assert (mmcv_min_version <= mmcv_version < mmcv_max_version), \
AssertionError: MMCV==2.2.0 is used but incompatible. Please install mmcv>=2.0.0rc4.

4.安装mmsegmentation

git clone -b main https://github.com/open-mmlab/mmsegmentation.git
cd mmsegmentation
pip install -v -e .

5.测试验证

mim download mmsegmentation --config pspnet_r50-d8_4xb2-40k_cityscapes-512x1024 --dest .
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

二、制作数据集

1. 搭建环境

这里我推荐用X-AnyLabeling,这个本身集合目标检测、语义分割算法模型,快速进行图像数据标注,建议大家用conda单独创建一个虚拟环境,按照下述步骤安装配置环境

git clone https://github.com/CVHub520/X-AnyLabeling.git
# upgrade pip to its latest version
pip install -U pip
pip install -r requirements-gpu-dev.txt
python anylabeling/app.py

大家可以在X-AnyLabeling v0.2.0 或者X-AnyLabeling 模型库 这里找到对应的算法模型权重包,提前下载,参考加载内置模型 教程来配置相关文件,就可以用SAM(Segment Anything Model )模型(SAM是Meta 公司提出的分割一切模型)完成大部分场景的自动标注

下载权重文件和对应的.yaml配置文件,放在model路径下,把对应的encoder_model_path 和 decoder_model_path 替换成自己本地的模型权重路径,最后选择加载自定义模型,即可使用

执行下面命令即可运行界面

python3 anylabeling/app.py 

标注数据时,几点提醒:

1.关闭 Save With Image Data(不会把图片信息记录在.json文件里)

2.选择 Save Automatically,自动保存

3.标注生成的.json文件保存到跟图片同一个路径下

生成的json文件内容如下:

{
  "version": "2.3.5",
  "flags": {},
  "shapes": [
    {
      "label": "watermelon",
      "points": [
        [
          329.0,
          12.0
        ],
        [
          329.0,
          31.0
        ],
        [
          330.0,
          32.0
        ],
        [
          330.0,
          33.0
        ],
        [
          329.0,
          34.0
        ],
        [
          329.0,
          36.0
        ],
        [
          330.0,
          37.0
        ],
        [
          330.0,
          58.0
        ],
        [
          331.0,
          59.0
        ],
        [
          331.0,
          64.0
        ],
        [
          332.0,
          65.0
        ],
        [
          348.0,
          65.0
        ],
        [
          349.0,
          64.0
        ],
        [
          350.0,
          64.0
        ],
        [
          351.0,
          65.0
        ],
        [
          359.0,
          65.0
        ],
        [
          360.0,
          64.0
        ],
        [
          363.0,
          64.0
        ],
        [
          364.0,
          65.0
        ],
        [
          370.0,
          65.0
        ],
        [
          371.0,
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值