【colab】在colab上使用mmdet训练自己的数据

一.开始

本文记录了在谷歌平台colab上使用mmdetV2.20训练自己的模型,包括具体流程和ipynb代码,使用colab的优点是价格较其他云平台较实惠,并且容易上手,缺点是存在限额,存在人机验证,每次最多使用24小时

二.修改并上传项目文件

出于方便修改的原因,我是在本地先下载mmdet项目,修改好具体代码,然后再上传到Google drive的。当然也可以在colab/drive中修改代码,不过稍微麻烦一点

1. 下载项目

mmdet官网下载项目文件,本次项目选用了最新的V2.20

2. 制作coco数据集

制作自己的coco数据集,具体制作流程参考我之前发的文章,然后在mmdet项目下创建新文件夹data,将数据集放在里面,详细的信息如下图
请添加图片描述

3. 修改参数

需要修改的文件全部在config文件夹下,主要有两个文件夹

  • configs/bash下的文件(定义基本的训练通用参数,重点!
  • configs/具体模型(使用什么模型就修改对应文件参数)

3.1. configs/_bash_需要修改的参数

(1)configs/ base /datasets/coco_detection.py

首先修改训练/测试时候的图片尺寸,我设置是640x640;其次修改训练/验证的batch_size,分别对应第二个图的samples_per_gpu和interval,我这里设置是16(这个看GPU的性能)
请添加图片描述
请添加图片描述

(2)configs/ base /models/cascade_rcnn_r50_fpn.py(或其他模型)

这一步主要是修改种类数,修改num_classes为自己的类别(不需要考虑背景+1,有几种就修改成几种),这里我的瑕疵类别有3种
请添加图片描述

(3)configs/ base /schedules/schedule_1x.py(schedule_2x.py)

修改训练的最大轮次max_epochs和学习率lr,主要是根据自己的训练要求来进行修改
请添加图片描述

(4)default_runtime.py

修改checkpoint_config的interval参数,这里设置为10的作用是:每10个epochs储存一次weights权值文件,设置大一点可以减少内存占用(cascade-rcnn模型每一个大概500M,跑200epochs如果不设置将会占用100G内存空间)
请添加图片描述

3.2. configs/具体模型_需要修改的参数

(1)不需要修改的模型类型

例如faster-rcnn和cascade-rcnn,特点是文件里面只有引用_bash_的代码
请添加图片描述

(2)需要修改的模型

例如yolov3就需要重新修改num_classes种类数/img_scale图片尺寸,特点是下面还附带一些代码
请添加图片描述

4. 上传项目

Google Drive中先创建一个空的文件夹命名为mmdet(或者其他),之后在该文件下上传整个项目(Folder upload),
请添加图片描述
至此项目修改完成,准备到colab中写代码运行项目

三.新建colab笔记本(mmdet.ipynb)

打开Colab,首先新建mmdet.ipynb笔记本,然后打开①修改,将笔记本设置为GPU模型,有条件升级为高RAM(Colba Pro功能),之后点击②连接到colab的虚拟机,然后开始输入代码进行训练,一般colab pro有更大的可能分到P100的显卡,普通用户可能是T4显卡或者K80。
请添加图片描述
笔记本中输入的代码如下(点击左上角+代码开始输入):

1. 查看GPU

!nvidia-smi

2. 连接到自己的Google Drive

import os
from google.colab import drive
drive.mount('/content/drive')

3. 进入到Drive根目录

%cd /content/drive/
%cd My\ Drive/mmdet

4. 下载mmcv-full

切记要标注版本号,就是下面代码后面的cu111/torch1.10,不然下载很久很久,甚至卡住

!pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.10.0/index.html

5. 下载requirements需求文件

%cd mmdetection
!pip install cython && pip --no-cache-dir install -r requirements.txt

6. 编译文件

!python setup.py develop

7. 开始训练

根据自己需求添加–no-validate,这个代码含义是:训练过程中不进行验证,训练过程不验证可以在训练结束后,自己验证,将会加快训练。

!python tools/train.py configs/cascade_rcnn/cascade_rcnn_r50_fpn_1x_coco.py --no-validate 

8. 中止后继续训练

如果训练中断,例如虚拟机到24小时自动断开,或者没有及时进行人机认证,都会导致断开虚拟机,这个时候需要重新进行1-6步,然后跳过第7步,执行第8步继续训练(-- auto-resume)

!python tools/train.py configs/cascade_rcnn/cascade_rcnn_r50_fpn_1x_coco.py --auto-resume --no-validate 

四.结语

至此在colab使用mmdet训练模型的过程就结束了,可以根据自己需求选择开通colab pro或者pro+这样训练资源更多。
在这里插入图片描述


版权声明:本文为qq_41627396原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。