OPenMMlab学习指导文档
一、运行环境
1.1 cuda环境
备注:cuda环境为个人学习和日常模型训练环境
1.登录环境
IP地址:10.201..
用户名:*******
密码:******
要用此用户名和密码!!
建议:自己创建自己的用户名和密码
2.登录conda环境
执行指令
conda activate open-mmlab
查看环境
pip list
则看到已安装的环境。
1.2 寒武纪环境
1.登录环境
IP地址:10.201..
用户名:*******
密码:********
2.登录openmmlab容器
打开容器
docker start openmmlab_main
进入容器
docker exec -it openmmlab_main bash
查看环境
二、初步运行MMyolo
在cuda和mlu环境中,后续所有操作一样,故不再分开单独讲解,掌握在cuda的操作,则mlu也掌握。
在**登录****账号后,默认进入到路径:
/home/workspace/extdata/share/******
然后进入到OPenMMlab的工作目录下:
cd OpenMMLab
再进入到mmyolo环境下:
cd mmyolo-main
执行训练指令:
python ./tools/train.py ./configs/yolov5/yolov5_s-v61_fast_1xb12-40e_cat.py
当出现日志文件:
则训练成功。
在模型训练时,建议好好看看mmyolo-main\docs\zh_cn\get_started\15_minutes_object_detection.md文档
2.1 脚本讲解
在进行算法选择时,目前框架中针对各个算法有基本的配置文件,当确定选择应用的算法后,直接创建一个配置文件,然后继承即可,比如yolov5_s-v61_fast_1xb12-40e_cat.py,则是应用了yolov5算法,使用coco的数据格式,在配置文件中继承的是:base = 'yolov5_s-v61_syncbn_fast_8xb16-300e_coco.py'(此处的相对路径是相对于调用的配置文件的相对路径,即yolov5_s-v61_fast_1xb12-40e_cat.py当前所在目录的相对路径)
后续在针对某一个项目或者模型,则是一个配置文件,类似yolov5_s-v61_fast_1xb12-40e_cat.py,里面详细的记载了模型的结构、数据详情、优化策略等,当调试算法或者更改数据时,修改此配置文件即可。
1、数据配置
在实际项目中,针对局点问题,不同项目的数据集不同,而使用的检测算法项目,也许此时修改的数据目录即可,在直接在配置文件中修改:
data_root = './data/cat/' #此处的相对路径是相对于执行程序的路径。比如是在mmyolo-main目录下执行,则是在此目录下的相对路径路径
class_name = ('cat', )
num_classes = len(class_name)
多个公共数据集,包括 COCO, Pascal VOC, Cityscapes 和 其他更多数据集。
如果想用自己的数据集,格式要遵循以上数据集标定的格式。如果想多了解点数据的详情,请看文档:mmdetection-main\docs\zh_cn\user_guides\dataset_prepare.md。注意此处是mmdetect的指导文档。如果要分析自己的数据或者转化自己的数据,工程提供了详细的公工具,具体的指导文档为:mmyolo-main\docs\zh_cn\useful_tools下的dataset_ananlysis/dataset_converters/download_dataset等等。
2、模型算法配置
在选择完算法后,继承的配置文件,数据路径同样配置完成,则是针对当前数据的一些常规的配置了。比如:
max_epochs = 40 #最大迭代次数
train_batch_size_per_gpu = 12 #batchsize
train_num_workers = 4 #线程数
load_from = './premodel/yolov5_s-v61_syncbn_fast_8xb16-300e_coco_20220918_084700-86e02187.pth' # 预训练模型路径
model = dict(
backbone=dict(frozen_stages=4), #冻结模型的层数,微调
bbox_head=dict(
head_module=dict(num_classes=num_classes),
prior_generator=dict(base_sizes=anchors)))
#这些一般也可不用动
train_dataloader = dict(
batch_size=train_batch_size_per_gpu,
num_workers=train_num_workers,
dataset=dict(
data_root=data_root,
metainfo=metainfo,
ann_file='annotations/trainval.json', #根据自己的数据集目录形式修改
data_prefix=dict(img='images/')))
val_dataloader = dict(
dataset=dict(
metainfo=metainfo,
data_root=data_root,
ann_file='annotations/test.json',
data_prefix=dict(img='images/')))
test_dataloader = val_dataloader
_base_.optim_wrapper.optimizer.batch_size_per_gpu = train_batch_size_per_gpu
val_evaluator = dict(ann_file=data_root + 'annotations/test.json')
test_evaluator = val_evaluator
配置文件的详情请见:mmyolo-main\docs\zh_cn\tutorials\config.md
三、实操掌握mmyolo
在掌握上面的基本操作后,进行实操加深理解。
3.1 在当前的基础上,用自己的数据进行训练
1、将自己的标定数据转化为指定格式的,比如coco、或者 Pascal VOC形式的,在tools中有数据转化脚本
2、在配置文件中修改训练、验证数据集的根目录
3、启动训练
3.2 在3.1基础上更该为yolov6/7等算法,尝试如何切换算法
1、新创建配置文件,继承yolov6/7等算法
2、修改数据集目录
3、修改常见的训练参数
3.3 指标测试或者deploy的操作
将15_minutes_object_detection.md的操作部署文档执行一遍即可。