目标检测场景YOLOv4
YOLOv4训练参数及范围
YOLOv4模型训练的参数名、类型、取值范围、默认值及说明如表1所示。
参数名 |
类型 |
取值范围 |
默认值 |
说明 |
---|---|---|---|---|
--train_dataset_path |
str |
- |
None |
训练数据集路径。 |
--pretrained_ckpt_path |
str |
- |
"pre_trained_ckpt" |
预训练模型路径。 |
--train_output_path |
str |
- |
"train_output_path" |
训练结果输出路径。 |
--device_id |
int |
[0,7] |
0 |
训练NPU的id。 |
--device_num |
int |
1,2,4,8 |
1 |
训练NPU的数量。 |
--rank_table_file |
str |
- |
None |
供多卡训练使用。 |
--input_width |
int |
[192,1920],且是32的倍数 |
1472 |
模型输入图片宽度。 |
--input_height |
int |
[192,1920],且是32的倍数 |
1472 |
模型输入图片高度。 |
--split_ratio |
float |
(0, 1) |
0.8 |
训练/验证数据集比例。 |
--per_batch_size |
int |
[1, 3] |
2 |
训练图片批数量。 |
--lr |
float |
(0, 1) |
0.0005 |
训练学习率。 |
--t_max |
int |
[1, 10000] |
100 |
T-max 学习率参数。 |
--max_epoch |
int |
[1, 10000] |
100 |
训练的轮数。 |
--run_eval |
bool |
True or False |
True |
训练时是否评估。 |
--eval_start_epoch |
int |
[1, 10000] |
40 |
训练时多少轮开始评估。 |
--auto_set_eval_interval |
bool |
True 或 False |
False |
是否开启自动评估,该参数开启后“--eval_start_epoch”和“--eval_interval”无效,不需要配置。 |
--eval_detail_info |
bool |
True 或 False |
False |
评估时是否进行详细评估。 |
--eval_interval |
int |
[1, 10000] |
1 |
评估间隔,保持默认值。 |
--min_score |
float |
(0, 1) |
0.2 |
评估的最小分数阈值。 |
--nms_threshold |
float |
(0, 1) |
0.3 |
评估的nms阈值。 |
--max_box_num |
int |
[1, 1000] |
90 |
评估检测框的上限。 |
--multi_scale_input |
bool |
True 或 False |
False |
多尺度训练开关。 |
--mosaic |
bool |
True 或 False |
False |
数据增强开关。 |
--self_fit |
bool |
True 或 False |
False |
根据数据集分析结果,自适应调整模型宽高。 |
--self_fit_prior_choice |
str |
'enlarge_image'、 'shrink_image'、 'enlarge_aspect_ratio' 或 'shrink_aspect_ratio' |
"" |
自适应调整模型宽高的优先策略,仅支持四种中其中一种,且仅在self_fit检测到同时存在多种场景时生效。 |
--dump_preprocessed_image |
bool |
True 或 False |
False |
保存预处理后的图片到MindInsight中。 |
--reg_loss |
str |
"ciou" 或 "giou" |
"ciou" |
loss计算方式。 |
--enable_modelarts |
bool |
True 或 False |
False |
是否使用ModelArts进行训练。 |
--data_url |
str |
- |
None |
在ModelArts训练时,数据集路径。 |
--train_output_url |
str |
- |
None |
在ModelArts训练时,输出路径。 |
--checkpoint_url |
str |
- |
None |
在ModelArts训练时,预训练模型路径。 |
--split_image |
bool |
True 或 False |
False |
手动开启图片分块功能,适用小目标检测,仅在self_fit为False时生效。 |
--split_resize_ratio |
str |
参数中2个数值的取值范围:[0.1, 10] |
"1,1" |
原图放大的比例,参数值顺序为宽、高。 |
--split_block_size |
str |
参数中2个数值的取值范围:[192,1920] |
"1472,1472" |
图像分块后,图像块的大小,参数值顺序为宽、高。 图像块的宽、高的设置要小于原图乘上放大比例后的宽、高。 |
--split_overlap_size |
str |
参数中2个数值的取值范围:[96,split_block_size的最小值-96] |
"256,256" |
图像分块的重叠区域大小,参数值顺序为宽、高。 |
--force_fp16 |
bool |
True 或 False |
False |
导出OM模型时是否使用fp16的精度模式。 |
注:原SSD小目标检测参数“split_auto”将在后续版本中弃用。 |
YOLOv4训练命令参考
YOLOv4模型训练的启动参考以下命令执行。
python3 model_train.py --train_dataset_path=/path_to/images --pretrained_ckpt_path=/path_to/ckpt --train_output_path=./outputs/ --device_num=1 --device_id=0 --per_batch_size=2 --input_width=1472 --input_height=1472 --max_epoch=20 --lr=0.0005 --min_score=0.01 --nms_threshold=0.5 --eval_start_epoch=20 --run_eval=True --split_ratio=0.8
模型训练过程存在随机性,最终以评估精度为准。使用以上参数,10张图片,20个epoch时训练精度结果如图1所示。
训练结束后日志信息如图2所示。
训练结束后会在“--train_output_path”参数指定的输出目录中生成.ckpt、.a310.om、.a310p.om和.air格式的模型文件。
YOLOv4模型评估参数及范围
YOLOv4模型评估的参数名、类型、取值范围、默认值及说明如所示。
参数名 |
类型 |
取值范围 |
默认值 |
说明 |
---|---|---|---|---|
--eval_dataset_path |
str |
- |
None |
评估数据集路径。 |
--eval_ckpt_path |
str |
- |
"pre_trained_ckpt" |
训练后模型路径。 |
--eval_output_path |
str |
- |
"eval_output_path" |
评估结果输出路径。 |
--device_id |
int |
[0, 7] |
0 |
评估NPU的ID。 |
--per_batch_size |
int |
仅支持为1 |
1 |
评估图片批数量。 |
--input_width |
int |
[192, 1920] |
与训练参数一致 |
模型输入图片宽度。 |
--input_height |
int |
[192, 1920] |
与训练参数一致 |
模型输入图片高度。 |
--min_score |
float |
(0, 1) 或 -1 |
0.2 |
评估的最小分数阈值。 |
--nms_threshold |
float |
(0, 1) |
0.6 |
评估的nms阈值。 |
--max_box_num |
int |
[0, 1000] |
90 |
评估检测框的上限。 |
--eval_detail_info |
bool |
True 或 False |
True |
评估时是否进行详细评估 |
--enable_modelarts |
bool |
True 或 False |
False |
是否使用ModelArts进行训练。 |
--data_url |
str |
- |
None |
在ModelArts评估时,数据集路径。 |
--eval_output_url |
str |
- |
None |
在ModelArts评估时,输出路径。 |
--checkpoint_url |
str |
- |
None |
在ModelArts评估时,预训练模型路径。 |
YOLOv4模型评估命令参考
YOLOv4模型评估的命令参考如下:
python3 model_eval.py --eval_dataset_path=path_to/images --eval_ckpt_path=path_to/your_ckpt --eval_output_path=./outputs_eval/ --min_score=0.001 --nms_threshold=0.5
采用训练输出的ckpt,来评估模型的精度值,参考如图3所示。
在评估目录下会生成如图4所示的文件及目录,其中“ok_images”、“ng_fp_images”和“ng_fn_images”文件夹存放评估图片的结果、“statistics.csv”存放对应的精度结果。
3.0版本新增特性:“statistics.csv”中新增图片级精度评估指标。
