Swin-Transformer-Object-Detection训练自己的数据

一、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

你可能感兴趣的:(transformer,深度学习,人工智能)