本文是openmmlab AI实战营的第五次课程的笔记,以下是我比较关注的部分。
本次课程是mmdetection 实践,我会稍微详细记录
在openbayes 官网 创建装好 邀请码wanglin_g8vp
创建容器
容器中很多环境已经安装好,可以使用pip list 查看
接下来安装 mmdetection
方法有两种
git clone
openmim
这里使用第二种 ,我们知道pip 是管理python的工具包,MIM实际上就是管理OpenMMLab工具包,因为有一些依赖关系比较复杂,如果直接去写比较麻烦,openmmlab 又单独开发这么一套工具去帮助简化流程
!pip install openmim
! mim install mmdet==2.22.0
个人感觉该平台网速很快,流畅访问github,安装很快
import mmdet
print(mmdet.__version__)
查看是否安装成功
下载模型
搜索 mmdet 中的模型
!mim search mmdet --model "mask r-cnn"
选一个模型,复制configid
例如:mask_rcnn_x101_32x4d_fpn_2x_coco
#下载该模型
!mim download mmdet --config mask_rcnn_x101_32x4d_fpn_2x_coco
修改配置文件
此处插播 :
深度学习模型的训练涉及几个方面:
模型结构:模型有多少层、每层多少通道数
数据集 : 用什么数据训练模型:模型划分,数据文件路径,数据增强策略等
训练策略:梯度下降法,学习率参数,batch_size,训练总轮数,学习率变化策略
运行时 :GPU,分布式环境配置
一些辅助功能: 如打印日志,定时保存checkpoint 等等
事实上,要从头写一个模型训练程序要写这么多东西,但是这里面又有很多东西是共通的,从一个软件的角度来讲,我们要把一样的东西给抽出来,然后把不一样的东西写成配置文件,让用户去配置,所以在mmdetction当中形成了这么一个东西叫配置文件。你用什么样的模型,你用什么样的数据,你用什么样的数据,你用什么样的学习算法,都在配置文件中写上自己的。这个配置文件就是 上面那个命令下载的py文件
这里面比较重要的实际上也就这么几项:
model 字段定义模型
data字段定义数据
Optimizer, Ir_config 等字段定义训练策略
load_from 字段定义训练模型的参数文件
预训练的模型,只涵盖了某个数据集的一些数据,在用自己数据集训练的时候,基于预训练的模型进行微调:
使用基于coco 预训练的检测模型作为梯度下降的“起点”
使用自己的数据进行“微调训练”,通常需要降低学习率
具体到MMdetction 需要:
选择一个基础模型,下载对应的配置文件和预训练模型的参数文件
将数据调整成mmdetection支持的格式,如coco格式
修改配置文件
修改配置文件中的数据路径
修改模型的分类头
设置加载预训练模型
修改优化器配置
修改一些杂项
配置文件可以通过继承方式
训练
!mim train mmdet 配置文件
成功训练 !!!
最好再降低一下学习轮次,降低学习率。
runner :epoch
optimizer : learning rate (lr)