- 资产集市
- 教学
- 实践
- AI说
- 案例库
- 生态合作
- 专区
中国站
简体中文此模型基于Scalable and Efficient Object Detection中提出的模型结构实现,EfficientDet是一个总称,可以分为 EfficientDet D1 ~ EfficientDet D7,速度逐渐变慢,但是精度也逐渐提高。 以EfficientNet作为Backbone。该算法会载入在COCO上的预训练模型,在用户数据集上做迁移学习。我们提供了训练代码和可用于训练的模型,用于实际场景的微调训练。训练后生成的模型可直接在ModelArts平台部署成在线服务。
Model | mAP (coco开源数据集) | P4推理速度(ms/pic) |
---|---|---|
EfficientDet-D0 | 33.8 | 29.48 |
EfficientDet-D1 | 39.6 | 55.21 |
EfficientDet-D2 | 43.0 | 75.66 |
EfficientDet-D3 | 45.8 | 146.69 |
EfficientDet-D4 | 49.4 | 232.33 |
EfficientDet-D5 | 50.7 | 464.53 |
EfficientDet-D6 | 51.7 | 631.41 |
EfficientDet-D7 | 53.7 | 851.40 |
名称 | 默认值 | 类型 | 是否必填 | 是否可修改 | 描述 |
---|---|---|---|---|---|
mode | train | string | 是 | 是 | 是否边训练边验证,默认训练, 可选参数为train和train_and_eval,如果选择train,那么在模型训练结束的时候,统一做一次eval,如果选择train_and_eval,那么每次训练迭代一个epoch,就做一次eval,耗时比较久。 |
model_name | efficientdet-d0 | string | 是 | 是 | EfficientDet训练选择的模型种类,目前可选项为efficientdet-d0,efficientdet-d1,efficientdet-d2,efficientdet-d3,efficientdet-d4,efficientdet-d5,efficientdet-d6,efficientdet-d7 |
train_batch_size | 8 | int | 是 | 是 | 每步训练的图片数量(单卡) |
eval_batch_size | 8 | int | 是 | 是 | 每步验证的图片数量(单卡) |
num_epochs | 100 | int | 是 | 是 | 模型训练最大的迭代数 |
do_data_cleaning | True | bool | 是 | 是 | 是否开启数据清洗功能 |
hparams | moving_average_decay=0 | string | 是 | 是 | 键值对参数,可选择的有label_smoothing(默认是0,0),box_loss_weight(默认是50),learning_rate(默认是0.08),lr_warmup_init(默认是0.008),lr_warmup_epoch(默认是1),first_lr_drop_epoch(默认是200),second_lr_drop_epoch(默认是250),在使用的时候,需要用逗号隔开,中间不能有空格,moving_average_decay=0必须包含,例如"moving_average_decay=0,label_smoothing=0.08" |
deps_save_path
的目录参数来保存json结果文件。训练完成后的输出文件如下
训练输出目录
|- model
|- variables
|- variables.data-00000-of-00001
|- variables.index
|- customize_service.py
|- index
|- config.json
|- saved_model.pb
|- archive
|- model.ckpt-xxx
|- checkpoint
|- best_eval.txt
|- checkpoint
|- model.ckpt-xxx
|- ...
|- ...
|- events...
|- graph.pbtxt
元模型来源 选择 从训练中选择,选择训练作业及版本。
CPU/GPU训练+CPU/GPU推理,可参考图像分类案例指导
目前EfficientDet
预置算法支持模型评估自调优,用户在训练结束之后,可根据推理评估的建议进行训练优化。
针对移动端以及视频类的检测,ModelArts
版的EfficientDet
针对模型时延对Google
版的EfficientDet
进行了优化,开发了具有低时延的网络结构tiny EfficientDet
,具体时延对比参加下表:
模型名称(model_name) | P4推理速度(ms/pic) |
---|---|
efficientdet-d0 | 29.48 |
efficientdet-t0 | 23.69 |
efficientdet-t1 | 14.10 |
efficientdet-t2 | 13.16 |
离线蒸馏,即two stage knowledge distillation
,指的是用户需要提前训练一个teacher
模型,然后利用这个teacher
模型对student
模型进行训练,目前ModelArts
上的EfficientDet
已经支持了该功能,目前支持的网络模型只有efficientdet-d0
,具体使用流程如下:
用户按照正常使用AI市场的流程创建一个efficientdet-d0
的训练作业
用户需要创建一个teacher
网络的训练作业,需要加一个参数,export_teacher_model=True
,表示该模型是作为teacher
模型使用的,目前可供选择的模型以及参数如下:
模型名称 | 填写的参数 |
---|---|
efficientdet-d2 | model_name=efficientdet-d2; export_teacher_model=True |
efficientdet-d3 | model_name=efficientdet-d3; export_teacher_model=True |
efficientdet-d4 | model_name=efficientdet-d4; export_teacher_model=True |
efficientdet-d5 | model_name=efficientdet-d5; export_teacher_model=True |
efficientdet-d6 | model_name=efficientdet-d6; export_teacher_model=True |
可以看到在输出路径train_url
下面有一个model
目录,下面会有一个frozen
的PB
推理文件,为接下来做准备。
用户需要重新创建一个efficientdet-d0
的作业,另外需要填写两个参数teacher_model_url
和use_offline_kd=True
,其中teacher_model_url
填写的内容是步骤二训练teacher
输出路径的model
目录,注意需要填写model
的那一层级。按照正常创建训练作业即可。
至此,用户完成使用离线蒸馏的功能。
在训练过程中可能会出现NaN
的情况,需要调整蒸馏loss的权重,修改soft_cls_loss
和soft_box_loss
的值,默认soft_cls_loss=2,soft_box_loss=200
,用户也可以根据自己的选择将某一个权重设置为0
,即在蒸馏的时候不去训练,防止出现NaN
,具体添加方式如下所示:
hparams =moving_average_decay=0,soft_box_loss=50,soft_cls_loss=1
在日志中会打印loss_soft_cls
和loss_soft_box
的值,不同的数据集可能会有不同的数量级,一般需要按照自己的数据集通过修改soft_cls_loss
和soft_box_loss
的值将上述两个loss
的值调整到合适的值,比如5
以下。
efficientdet-d0
网络模型支持离线蒸馏。使用蒸馏提升精度的前提是,训练的teacher
模型的精度比student
的精度要高,并且差距越大蒸馏的效果越好。目前tiny EfficientDet
算法里面增加了在线蒸馏的功能,相比于传统的离线蒸馏,用户不需要传入预训练好的pb文件,而是在之前训练版本的基础上,直接起一个在线蒸馏任务,用来提升模型训练精度。
用户在选用tiny EfficientDet
模型进行在线蒸馏的时候,需要添加参数use_online_kd
,即可体验模型的在线蒸馏功能,目前支持在线蒸馏的网络模型以及具体使用方法如下所示:
模型名称 | 参数传入(不使用在线蒸馏) | 参数传入(使用在线蒸馏) |
---|---|---|
efficientdet-t0 | model_name=efficientdet-t0 |
model_name=efficientdet-t0 ; use_online_kd=True |
efficientdet-t1 | model_name=efficientdet-t1 |
model_name=efficientdet-t1 ; use_online_kd=True |
efficientdet-t2 | model_name=efficientdet-t2 |
model_name=efficientdet-t2 ; use_online_kd=True |
efficientdet-t0
, efficientdet-t1
,efficientdet-t2
三个网络模型支持在线蒸馏您可以在华为云ModelArts控制台直接使用资产,但无法下载资产
版本号 | 版本ID | 发布时间 | 状态 | 版本说明 | 使用约束 |
---|
9.0.0 | 9.0.0 | 2021-07-26 14:18 | 已完成 | 更新评估脚本映射以及OBS_SDK版本 |
若您怀疑合法知识产权遭受侵犯,可以通过此链接进行投诉与建议。