昇腾社区首页
中文
注册

目标检测场景YOLOv4

YOLOv4训练参数及范围

YOLOv4模型训练的参数名、类型、取值范围、默认值及说明如表1所示。

表1 YOLOv4训练参数信息(yolov4_mindspore/model_train.py)

参数名

类型

取值范围

默认值

说明

--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所示。

图1 YOLOv4模型训练精度结果

训练结束后日志信息如图2所示。

图2 YOLOv4模型训练日志信息

训练结束后会在“--train_output_path”参数指定的输出目录中生成.ckpt、.a310.om、.a310p.om和.air格式的模型文件。

YOLOv4模型评估参数及范围

YOLOv4模型评估的参数名、类型、取值范围、默认值及说明如所示。

表2 YOLOv4模型评估参数信息(yolov4_mindspore/model_eval.py)

参数名

类型

取值范围

默认值

说明

--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所示。

图3 YOLOv4模型评估精度

在评估目录下会生成如图4所示的文件及目录,其中“ok_images”“ng_fp_images”“ng_fn_images”文件夹存放评估图片的结果、“statistics.csv”存放对应的精度结果。

图4 YOLOv4模型评估生成目录

3.0版本新增特性:“statistics.csv”中新增图片级精度评估指标。

图5 图片级精度评估指标