直接进入正题(如需环境安装包,请私信,每日回复)
一.Mmdetection2.X的windows环境安装与测试
二.Mmdetection的训练与测试
Mmdetection的2.1,2.2,2.3的配置windows都不行。前提:CUDA需求10.1(首先要装CUDA),vs2017整个都要装以及anaconda的环境变量
一.Mmdetection2.6的windows环境安装与测试
① 安装pytorch及虚拟环境
conda create -n mmd python=3.7
conda activate mmd
执行下面添加源的命令,否则找不到torchvision-
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes # 设置搜索时显示通道地址
#再加入Pytorch的Anaconda第三方镜像
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
开始安装pytorch及其组件
conda install pytorch=1.6 torchvision cudatoolkit=10.1
(下面这个命令不需要编译mmcv,直接就可以安装,减少了很多手动编译的错误)
pip install mmcv-full==1.1.5 -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.6.0/index.html
② 安装完上述后,cd/d 到mmdetection 文件夹,执行如下语句
pip install -r requirements.txt
python setup.py develop
pip install opencv-python==4.2.0.34(官方给的mmd2.6opencv适配版本,否则会报错)
③ 测试1:
此时,我们已经将mmdetection的环境装好了,输入下面的命令进行测试:
python demo/webcam_demo.py configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py checkpoints/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth
此命令需要无驱摄像头,连接即可实时检测
测试2:
python demo/image_demo.py demo/demo.jpg configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py checkpoints/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth
此命令就是测试一下demo图片
二.Mmdetection的训练与测试
-
数据集的准备
标注软件选用labelme,将已标注的图片和每一个图片标注完后生成的json文件同时放入data/coco/train2014文件夹中
接着在val2014文件中放入已标注的图片及json文件作为验证集,最后在test2014文件夹中只放入预测的图片即可。
在数据集的位置放置正确后,运行每一个文件夹中已经存在的labelme2coco.py脚本,语句为python .\labelme2coco.py。运行完之后会在当前文件夹里生成一个大的instances_train2014.json文件,将该文件放入data/coco/annotations文件夹中。 -
修改根目录下的change.py的num_class = 类别并运行,这一步的目的是下载我们的预训练权重,运行之后就会在mmdetection2.6文件夹下生成适合所需要训练类别的backbone。
-
跟mmdetection1.x版本不同的是现在的配置文件分为了三个,所以要修改三次,首先修改mmdetection2.6\configs_base_\models\faster_rcnn_r50_fpn.py,其num_classes = 类别;接着修改mmdetection2.6\configs_base_\schedules\schedule 1x.py,学习率lr和训练此时total_epochs都可以修改(尽量都是十的倍数);最后修改mmdetection2.6\configs_base\default_runtime.py,第一个interval是每隔多少次保存权重文件,第二个interval是val2014文件夹图片数目。
-
修改mmdetection2.6\configs_base_\datasets\coco_detection.py,将’annotations/instances_train2017.json’修改为’annotations/instances_train2014.json’,test和val同理,一共改六个部位的数字。
-
修改mmdetection2.6\mmdet\datasets\coco.py,将其原有类别注释,修改为自己的数据类别
-
修改mmdetection\configs_base_\default_runtime.py,将load_from = ‘你的model’,
-
定位到(每个人的路径可能不一样)D:\ProgramData\Anaconda3\envs\mmd26\Lib\site-packages\mmcv\runner\epoch_based_runner.py 172行改为:shutil.copy(filepath, dst_file),否则训练时会出现保存权重的错误,这是因为platform是windows,如果是linux就不会有错误。
-
在anaconda中进入虚拟环境,cd到mmdetection文件夹,执行语句:
python tools/train.py configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py
开始训练,如下图所示:
-
在训练过程中可以在mmdetection\work_dirs中看到训练日志,可以获取数据画曲线图。
-
在anaconda中进入虚拟环境,cd到mmdetection文件夹,执行语句:
python demo/image_demo.py demo/00000.bmp configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py work_dirs/faster_rcnn_r50_fpn_1x_coco/epoch_20.pth
用训练好的权重文件来测试自己的图片