AI开发平台ModelArtsAI开发平台ModelArts

文档首页> AI开发平台ModelArts> AI Gallery> 预置AI算法(官方发布)> 物体检测> YOLOv3_Darknet53(物体检测/TensorFlow训练)
更新时间:2021/10/14 GMT+08:00
分享

YOLOv3_Darknet53(物体检测/TensorFlow训练)

概述

该模型是基于YOLOv3: An Incremental Improvement中提出的模型结构实现。针对提供带有物体框标注的数据集,该算法会载入在COCO数据集上的预训练模型,训练后生成的模型可直接在ModelArts平台部署成在线服务,同时支持使用CPU和GPU规格进行推理。用户还可以将模型转换成Ascend类型,并在Ascend-310芯片上部署推理。

单击此处订阅算法。

训练

  • 算法基本信息
    • 适用场景:物体检测
    • 支持的框架引擎:Tensorflow-1.13.1-python3.6
    • 算法输入:
      • ModelArts数据管理平台发布的物体检测数据集。

        用户可选择性使用数据切分功能:如果选择未切分的数据集,算法将做纯训练场景;如果选择切分的数据集,算法将自动做边训练边验证的场景。

        建议用户以8:2或9:1的比例进行切分,即“训练验证比例”设置为0.8或0.9。

      • YOLOv3-Darknet53的COCO预训练模型。
    • 算法输出:
      • 用于转换Ascend格式模型的Frozen_PB模型,Ascend 310推理速度“17.8ms/pic”
      • 用于TF-Serving推理的saved_model模型,CPU(2核8GiB)推理速度:1300ms/pic左右,P4推理速度:50ms/pic左右。
    • 性能:

      每步训练的图片数量(batch_size)

      是否使用混合精度

      每秒处理的图片数量(fps)

      32

      49

      32

      79

  • 训练参数说明

    名称

    默认值

    类型

    是否必选

    是否可修改

    描述

    export_om_model

    True

    bool

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

    model_name

    darknet53

    string

    Backbone模型名称。

    input_shape

    416,416

    string

    输入图片的shape大小。

    batch_size

    32

    int

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

    eval_batch_size

    32

    int

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

    max_epochs

    200

    int

    训练的epochs数量。

    log_every_n_steps

    10

    int

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

    save_summary_steps

    10

    int

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

    save_interval_secs

    180

    int

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

    evaluate_every_n_epochs

    10.0

    float

    每训练n个epoch做一次验证。此参数只有在传入的数据是经过数据管理切分过才生效,即需要做边训练边验证的场景下生效。

    learning_rate

    0.001

    float

    训练的初始学习率。

    freeze_level

    0

    int

    在做迁移学习经常会使用冻结神经网络的操作,可选择0、1、2三个选项。

    • 0表示所有层都不冻结。
    • 1表示冻结Darknet53前24层。
    • 2表示冻结除FPN最后输出的三个分类层外所有层。

    推荐小数据集设置为1,大数据集设置为0。

    use_fp16

    False

    bool

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

    do_data_cleaning

    True

    bool

    是否做数据清洗。

    数据格式异常会导致训练失败,建议开启,保证训练稳定性。数据量过大时,数据清洗可能耗时较久,可自行线下清洗(支持BMP,JPEG,PNG格式,RGB三通道)。建议用JPEG格式数据。

  • 训练输出文件
      |- om    
        |- model      
          |- index      
          |- customize_service_d310.py  
      |- model    
        |- variables      
          |- variables.data-00000-of-00001      
          |- variables.index    
        |- saved_model.pb  
        |- config.json
        |- customize_service.py
        |- index
      |- frozen_graph    
        |- insert_op_conf.cfg    
        |- yolo3_darknet53.pb  
      |- checkpoint  
      |- model.ckpt-xxx  
      |- ...  
      |- events...  
      |- graph.pbtxt

Ascend310推理

  • 模型转换
    在模型管理侧选择压缩/转换,并创建任务,具体配置如下:
    • 输入框架:TensorFlow
    • 转换输入目录:选择训练输出目录中的frozen_graph
    • 输出框架:MindSpore
    • 转换输出目录:选择训练输出目录中的om/model
    • 转换模板:TF-FrozenGraph-To-Ascend-C32
    • 输入张量形状:images:1,416,416,3
    • 输入数据格式:NHWC

    剩余的参数均使用默认值

  • 模型导入
    模型转换成功后,在模型页面栏导入模型,具体配置如下:
    • 从模板中选择:ARM-Ascend模板
    • 模型目录:选择训练输出目录中的om/model
    • 输入输出模式:预置图像处理模式

GPU/CPU推理

基于训练完成的任务直接创建模型,其中在使用GPU推理时,导入模型前需要修改训练输出目录下的model/config.json文件,将runtime字段中tf1.13-python3.7-cpu改为tf1.13-python3.7-gpu。

案例指导

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

GPU训练+CPU/GPU推理,可参考[图像分类案例指导](https://support.huaweicloud.com/bestpractice-modelarts/modelarts_10_0025.html)

分享:

    相关文档

    相关产品