文档首页 > > AI Gallery用户指南> 预置AI算法(官方发布)> 物体检测>

RetinaNet_ResNet50(物体检测)

RetinaNet_ResNet50(物体检测)

分享
更新时间:2020/12/14 GMT+08:00

概述

RetinaNet物体检测的网络中,通过使用focal loss,使“容易”的负样本贡献更低的损失,让损失集中在“难”样本上,从而提高了预测准确性。将ResNet+FPN作为特征提取的主干,再加上两个用于分类和边界框回归的网络,实现了性能先进的RetinaNet。

用户提供带有物体框标注的数据集,该算法会载入在VOC上的RetinaNet预训练模型,在用户数据集上做迁移学习。训练后生成的模型可直接在ModelArts平台部署为在线服务或批量服务,同时支持使用CPU、GPU或Ascend 310进行推理。

物体检测的评估手段一般使用COCO Detection Evaluation指标。

一般情况采用:

精准率 = Average Precision (AP) @[ IoU=0.50 | area=all | maxDets=100 ]

召回率 = Average Recall (AR) @[ IoU=0.50:0.95 | area=all | maxDets=100 ]

单击此处订阅算法。

训练

  • 算法基本信息
    • 适用场景:物体检测
    • 支持的框架引擎:Tensorflow-1.13.1-python3.6
    • 算法输入:
      • ModelArts数据管理平台发布的数据集(数据集必须设置“训练验证比例”),建议用户以8:2或9:1的比例进行切分,即“训练验证比例”设置为0.8或0.9。
      • VOC07预训练模型,在VOC07上mAP为83.15%(mAP)。
    • 算法输出:
      • 用于TF-Serving推理的saved_model模型,P4推理速度为“112ms/pic”
      • 用于转换Ascend格式模型的Frozen_PB模型,Ascend-310推理速度为“170ms/pic”
  • 训练参数说明

    名称

    默认值

    类型

    是否必填

    是否可修改

    描述

    task_type

    object_detection_v2

    string

    适用场景。

    do_train

    TRUE

    bool

    是否做训练,默认训练。

    do_eval_along_train

    TRUE

    bool

    是否边训练边验证,默认值为True,表示边训练边验证。

    variable_update

    parameter_server

    string

    参数更新方式, 默认parameter_server。

    learning_rate_strategy

    0.001

    string

    训练的学习率策略。"10:0.001,20:0.0001"代表0-10个epoch学习率0.001,10-20epoch学习率0.0001。如果不指定epoch,会根据验证精度情况自动调整学习率,并当精度没有明显提升时,训练停止。

    batch_size

    16

    int

    每步训练的图片数量(单卡)。

    eval_batch_size

    1

    int

    每步验证的图片数量(单卡)。

    evaluate_every_n_epochs

    1

    float

    每训练n个epoch做一次验证。

    save_model_secs

    60

    int

    保存模型的频率(单位:s)。

    save_summary_steps

    10

    int

    保存summary的频率(单位:步)。

    log_every_n_steps

    10

    int

    打印日志的频率(单位:步)。

    do_data_cleaning

    TRUE

    bool

    是否做数据清洗,数据格式异常会导致训练失败,建议开启,保证训练稳定性。数据量过大时,数据清洗可能耗时较久,可自行线下清洗(支持BMP、JPEG、PNG格式,RGB三通道)。建议用JPEG格式数据。默认开启,设置为False表示关闭。

    use_fp16

    TRUE

    bool

    是否使用混合精度, 混合精度可以加速训练,但是可能会造成一点精度损失,若对精度无极严格的要求,建议开启。默认启用,设置为False表示关闭。

    best_model

    TRUE

    bool

    是否在训练过程中保存并使用精度最高的模型,而不是最新的模型。默认值True,保存最优模型。在一定误差范围内,最优模型会保存最新的高精度模型。

    export_om_model

    TRUE

    bool

    是否导出用于Ascend推理的模型。

  • 训练输出文件

    训练完成后的输出文件如下。

    |- om    
      |- model      
        |- index      
          |- customize_service_d310.py  
    |- model    
      |- variables      
        |- variables.data-00000-of-00001      
        |- variables.index    
      |- customize_service.py    
      |- index    
      |- config.json    
      |- saved_model.pb  
    |- frozen_graph    
      |- insert_op_conf.cfg    
      |- model.pb  
    |- checkpoint  
    |- model.ckpt-xxx  
    |- ...  
    |- best_checkpoint  
    |- best_model.ckpt-xxx  
    |- ...  
    |- events...  
    |- graph.pbtxt

Ascend 310推理

  • 模型转换
    • 转换模板:TF-FrozenGraph-To-Ascend-C32
    • 转换输入目录:选择“训练输出目录”中的frozen_graph
    • 转换输出目录:选择“训练输出目录”中的om/model
    • 输入张量形状:images:1,640,640,3
    • 输入数据格式:NHWC

    其他参数均使用默认值。

  • 模型导入
    • 从模板中选择:ARM-Ascend模板
    • 模型目录:选择“训练输出目录”中的om/model
    • 输入输出模式:预置图像处理模式

GPU/CPU推理

“元模型来源”选择“从训练中选择”,选择训练作业及版本。

推理配置文件“model/config.json”,默认使用CPU推理镜像(runtime:tf1.xx-python3.x-cpu)。若使用GPU推理,导入模型之前需修改“model/config.json”文件,将runtime字段修改为“tf1.xx-python3.x-gpu”

案例指导

GPU训练+Ascend 310推理,可参考图像分类案例

分享:

    相关文档

    相关产品