在桌面打开终端,进行创建和激活环境(创建虚拟环境opne-mmlab并激活python=3.7)
conda create -n open-mmlab python=3.7
conda activate open-mmlab
其中pytroch1.5.0 torchvision0.6.0 cudatoolkit==10.2.89
conda install pytorch==1.5.0 torchvision==0.6.0 cudatoolkit=10.2 -c pytorch
如果下载较慢,可以到网站上下载对应的离线包,然后在虚拟环境中进入到下载文件夹,使用pip安装离线包到虚拟环境当中
Pytorch_stable下载地址.
清华镜像下载
pip install mmcv-full
文件夹放到桌面上命名为mmdetection,如果下载过慢,就到mmdetection网站上下载
git clone https://github.com/open-mmlab/mmdetection.git
从桌面终端进入根目录(在open-mmlab虚拟环境中),我下载的mmdetection版本是V2.11
cd mmdetection
pip install -r requirements.txt
如果上面的运行失败就使用下面的(每次选择其中一个进行尝试)
pip install -r build.txt
pip install -v -e .
python setup.py develop
pip install mmdet
后续差什么依赖包就按照提示pip安装对应包
参考:球场书生的博文
创建文件夹checkpoints
,并把下载的预训练模型放在其中
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
创建data文件夹
,将coco数据集放入,放入后格式如下
mmdetection\data\coco
—annotations
——instances_test2017.json
——instances_train2017.json
——instances_val2017.json
—test2017
—train2017
—val2017
—test.txt
—train.txt
—val.txt
- —config文件夹(包含3个,图片尺寸、学习率、训练次数、种类个数)
——coco_detection.py
——schedule_1x.py
——cascade_rcnn_r50_fpn.py(如果使用faster_rcnn,则修改faster_rcnn_r50_fpn.py即可,其余不用改)- ——mmdet文件夹(包含2个,种类名字)
—— coco.py
—— class_names.py
1.mmdetection\configs\cascade_rcnn\cascade_rcnn_r50_fpn_1x_coco.py
这个文件不修改,主要查看需要修改哪些文件及其位置(如果使用faster-rcnn也是需要打开对应的文件来查询更改文件的位置)
2.mmdetection\configs_base_\datasets\coco_detection.py
修改图片尺寸
3.mmdetection\configs_base_\schedules\schedule_1x.py
修改学习率lr,以及训练次数max_epochs(依照自己电脑配置)
这里先查看自己电脑的GPU颗数,如果是1,lr设置为0.0025比较合适,如果是4则设为0.01,依次增加。设置过大容易梯度爆炸,设置太小则训练时间较长,需要自己权衡
查看命令如下图,我的电脑是1
4.(1)mmdetection\configs_base_\models\cascade_rcnn_r50_fpn.py
修改你自己模型的class类别,我的种类共有5种,所以num_classes=5
(2)如果使用的是faster_rcnn,则修改mmdetection\configs_base_\models\faster_rcnn_r50_fpn.py
5.mdetection\mmdet\datasets\coco.py
修改类别名字为自己的,我这里是5种
6.mmdetection\mmdet\core\evaluation\class_names.py
修改类别名字,与上一步一致
参考:包子爱跑步的文章
AssertionError: The `num_classes` (5) in Shared2FCBBoxHead of MMDataParallel does not matches the length of `CLASSES` 80) in RepeatDataset
python setup.py install
参考:ydwl_懒洋洋的博文
如果编译后还是失败,可以先删掉mmdetection,重新下载修改再编译。我之前也遇到编译后出错,重新下载一次就解决了。
创建新文件夹work_dirs
,用于存放训练后的模型python tools/train.py configs/cascade_rcnn/cascade_rcnn_r50_fpn_1x_coco.py
训练完成后work_dirs文件夹包含每轮训练的结果
一般来说最后一次训练(lastest)的效果最佳,所以用它来查看训练效果
进入到mmdetection根目录,进入到open-mmlab虚拟环境
python tools/test.py configs/cascade_rcnn/cascade_rcnn_r50_fpn_1x_coco.py \
work_dirs/cascade_rcnn_r50_fpn_1x_coco/latest.pth \
--eval bbox --show
结果如下
训练完成后的模型可视化可以参考:可视化
至此训练模型过程就结束了,本次训练的模型检测效果不算太好,对于部分瑕疵的识别准度还不够,后续会在数据集本身以及模型参数方面进行改进!感谢博客上其他大佬的文章,帮助我完成本次的模型训练