конфигурация конфигурационного файла mmdetection, запустите

машинное обучение

Метод обучения ансамбля mmdetection

mmdetection-master/configs/{方法名}/{方法名}.pyНо когда мы нажмем на эти файлы .py, мы обнаружим, что код внутри очень короткий.

image.png

Фактически этим занимается_base_Ссылки на другие файлы, часто такие ссылки имеют семь или восемь слоев.Проблема в том, что нам нужно сгенерировать полный файл конфигурации и изменить его параметры

Просмотр и создание файлов конфигурации


# 查看目标对象完整的配置文件,包含所有字段
python tools/misc/print_config.py configs/{方法名}/{方法名}.py

# 将内容导入到txt 生成在mmdetection-master主目录下
python tools/misc/print_config.py configs/{方法名}/{方法名}.py > config.txt 

# 生成项目文件夹record,在record下保存训练结果,并生成完整的对应方法的config配置文件
python tools/train.py configs/{方法名}/{方法名}.py --work-dir record

введение параметра конфигурации

Подробное введение в fast_rcnn_r50_fpn_1x.py:https://blog.csdn.net/hajlyx/article/details/85991400

Введение имени метода

config 配置

# faster_rcnn 方法名
# r50 50层训练
# caffe 
# coco coco数据集
faster_rcnn_r50_caffe_c4_1x_coco.py

# fpn 目标检测进一步处理
# mstrain  多尺度训练策略
# 3x   3*12=36个epoch训练
faster_rcnn_r101_fpn_mstrain_3x_coco.py

параметр модели (обычно мало что меняется)

models(一般改动不多)
每一个属性中的参数其实都是为了传递到mmdet/models下的模型类文件中去

参数type对应模型的类名,每一个类文件都会登记在mmdet/models/__init__里

常用参数:(参数和模型有关,每个模型参数不同)
backbone.depth    将50改成101,对应r50、r101
roi_head.numclass = 80    训练次数

model = dict(
        # 类型
        type = ...

        # 
        backbone

        # 后处理fpn
        neck

        # rpn层 和 roi层
        rpn_head
        roi_head

        # 设置
        train_cfg
        test_cfg
)

параметр наборов данных --- обработка данных (высокий пользовательский компонент)

sample_per_gpu = 2 # batch size of each gpu 每个gpu上的sample,类似pytorch dataloader上的参数
work_per_gpu = 2 # 子线程

train
        type 同上,传参到对应的类文件  mmdet/datasets/.....   类名在mmdet/datasets/__init__里登记过
        ann_file 	标注文件路径json文件
        img_prefix	标注文件的图片前缀 
        pipeline =  ..  数据处理流

val
test 

графики (пользовательский компонент высокий)

optimizer
lr
checkpoint 多少个epoch保存一个log
log_config 多少个epoch打印一次当前epoch的log
load_from  重新跑
resume_from 从断点继续跑,参数效果覆盖load_from
worckflow = [{(train, 12),(val, 1),(test, 1)}]   train 12次,val 1次, test 1次  (这个参数有问题*)
work_dir

другие инструкции по обучению

  1. Используйте один графический процессор для обучения
python tools/train.py ${CONFIG_FILE}
  1. Постройте кривую потерь для файла журнала обучения
# 参数
# --keys 分析对象
# --legend 图表标题
# --out 生成文件

安装依赖项 
pip install seaborn


python tools/analyze_logs.py plot_curve [--keys ${KEYS}] [--title ${TITLE}] [--legend ${LEGEND}] [--backend ${BACKEND}] 
[--style ${STYLE}] [--out ${OUT_FILE}]


绘制分类损失 
python tools/analyze_logs.py plot_curve log.json --keys loss_cls --legend loss_cls

绘制一些运行的分类和回归损失,并将该图保存为pdf
python tools/analyze_logs.py plot_curve log.json --keys loss_cls loss_reg --out losses.pdf
  1. Сравнение bbox mAP из двух прогонов на одном графике
# 参数
# json文件 运行生成的数据

python tools/analyze_logs.py plot_curve log1.json log2.json --keys bbox_mAP --legend run1 run2
  1. Рассчитать среднюю скорость тренировки
# 参数
# ${CONFIG_FILE} 训练用的框架
python tools/analyze_logs.py cal_train_time ${CONFIG_FILE} [--include-outliers]