一、windows 环境配置
1.1 准备环境
(1)创建python=3.8的虚拟环境 conda create --name lane_seg python=3.8 conda activate lane_seg (2)安装cuda版pytorch(需要根据自己配置调整) pip install torch==1.8.1+cu101 torchvision==0.9.1+cu101 torchaudio==0.8.1 -f 网址:https://download.pytorch.org/whl/torch_stable.html
1.2 安装mmcv
补充知识:mmcv是什么? MMCV(OpenMMLab Computer Vision)是由 OpenMMLab 团队开发和维护的开源计算机视觉基础库。它为计算机视觉研究人员和工程师提供了丰富的工具和函数,简化了计算机视觉任务的开发和实验过程 。 (1)克隆版本mmcv与mmdetection版本以来关系: https://mmdetection.readthedocs.io/zh_CN/v2.25.0/get_started.html
git clone -b v1.4.0 https://github.com/open-mmlab/mmcv.git
(2)设置临时的环境变量(要根据自己环境)
查看cuda的安装位置: $env:CUDA_HOME = "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1"
(3)根据官网查询自己GPU架构:https://developer.nvidia.cn/zh-cn/cuda-gpus
$env:TORCH_CUDA_ARCH_LIST="6.1"(自己的) $env:MMCV_WITH_OPS = 1 # 完全版 $env:MAX_JOBS = 4
(4)进入目录 cd mmcv (5)编译 python setup.py build_ext
(6)安装
python setup.py develop
(7)检查 pip list
1.3 安装mmdetection
补充知识:mmdetection是什么? MMDetection 是一个由 OpenMMLab 团队开发的开源目标检测工具箱,基于PyTorch 实现。它提供了丰富的目标检测、实例分割和全景分割算法,以及相关的组件和模块,广泛应用于学术研究和工业实践中。 (1)clone mmdetection
git clone -b v2.25.0 https://github.com/open-mmlab/mmdetection.git
cd mmdetection
(2)安装
pip install -r requirements/build.txt
pip install -v -e .
(3)检查
pip list
1.4 安装apx混合精度工具
补充知识:apx是什么? APX 精度工具通常指的是用于高精度测量和校准的设备或软件。
(1)安装apex混合精度工具
git clone https://github.com/NVIDIA/apex
cd apex
python setup.py install
1.5 安装Swin-Transformer-Object-Detection
(1)clone
git clone https://github.com/SwinTransformer/Swin-Transformer-Object-Detection.git
(2) 安装
cd Swin-Transformer-Object-Detection
python setup.py develop
(3)复制权重文件到项目目录下,权重位置:swin-transformer车道分割\3.权重文件
mask_rcnn_swin_tiny_patch4_window7_1x.pth
(4)测试图片
python demo/image_demo.py demo/demo.jpg configs/swin/mask_rcnn_swin_tiny_patch4_window7_mstrain_480-800_adamw_1x_coco.py weights/mask_rcnn_swin_tiny_patch4_window7_1x.pth
(5)测试视频
python demo/video_demo.py demo/demo.mp4 configs/swin/mask_rcnn_swin_tiny_patch4_window7_mstrain_480-800_adamw_1x_coco.py weights/mask_rcnn_swin_tiny_patch4_window7_1x.pth --show
1.6 训练
1.6.1 安装lableme
(1) 安装labelme
pip install labelme
(2) 启动
labelme
1.6.2 标注图片数据
在lableme中进行标注会生成json文件(保存的时候尽量保存到原图片一起的文件夹中):
1.6.3 转换COCO格式并组织文件结构
(1)为了尽可能少改动配置文件,我们需要将训练文件按照以下结构组织
# 0.项目下新建2级文件夹data/coco
# 1.将标注好的图片和标注json文件分为训练集和测试集,并分别放到 train2017和val2017文件夹下
# 2.使用脚本labelme2coco.py生成COCO格式的json标注文件
# 3.新建文件夹annotations,将instances_train2017.json和instances_val2017.json移入
# 4.最终文件结构如下,附件位置:class\swin-transformer车道分割\5.数据集
Swin-Transformer-Object-Detection
--|data
--|coco
--|annotations
--|instances_train2017.json
--|instances_val2017.json
--|train2017
--|图片
--|标注.json
--|val2017
--|图片
--|标注.json
1.6.4 修改配置文件
(1)修改configs\_base_\models\mask_rcnn_swin_fpn.py第54、73行num_classes为自己的类别数
(2)运行 python modify.py 修改预训练模型
python .\modify.py --weights mask_rcnn_swin_tiny_patch4_window7_1x.pth --num_class 4 --output model_new.pth
这行代码是重新生成一个文件,因为官网的预训练模型的 num_classes是80,需要自己写一个脚本
(3)修改configs\_base_\default_runtime.py,在最后增加一句加载预训练模型命令,用绝对路径
load_from = r"C:/Users/Administrator/Documents/douyin_live/DY25/diff_test/Swin-Transformer-Object-Detection/mask_rcnn_swin_modified_4.pth"
(4)修改configs\swin\mask_rcnn_swin_tiny_patch4_window7_mstrain_480-800_adamw_1x_coco.py第69行max_epochs数量
(5)修改configs\_base_\datasets\coco_instance.py第31-32行数据加载情况
samples_per_gpu=1,
workers_per_gpu=0,
(6)修改mmdet\datasets\coco.py第23行改为自己的标注,label顺序在coco_validate.ipynb中查看
CLASSES = ('arrow', 'car', 'dashed', 'line')
1.6.5 训练可视化
(1)安装wandb
pip install wandb
(2)登录
wandb login
(3)修改configs\_base_\default_runtime.py
log_config = dict(
interval=50,
hooks=[
dict(type='TextLoggerHook'),
dict(type='TensorboardLoggerHook'), # 开启tensorboard
dict(
type='WandbLoggerHook',
init_kwargs=dict(
project='road_segmentation', # 项目名
name='windows_modified_run' # 运行名
)
)
])
# wandb在浏览器打开即可
1.6.6 开始训练
训练 python tools/train.py configs/swin/mask_rcnn_swin_tiny_patch4_window7_mstrain_480-800_adamw_1x_coco.py
如与报错:AssertionError: Incompatible version of pycocotools is installed. Run pip uninstall pycocotools first. Then run pip install mmpycocotools to install open-mmlab forked pycocotools.
就根据要求操作即可。
1.6.7 测试
(1)测试图片
python demo/image_demo.py demo/road.png configs/swin/mask_rcnn_swin_tiny_patch4_window7_mstrain_480-800_adamw_1x_coco.py work_dirs/mask_rcnn_swin_tiny_patch4_window7_mstrain_480-800_adamw_1x_coco/latest.pth
(2)测试视频
python demo/video_demo.py demo/lane1.MOV configs/swin/mask_rcnn_swin_tiny_patch4_window7_mstrain_480-800_adamw_1x_coco.py work_dirs/mask_rcnn_swin_tiny_patch4_window7_mstrain_480-800_adamw_1x_coco/latest.pth --show