文档首页 > > AI Gallery用户指南> 预置AI算法(官方发布)> 图像分类>

Res2Net_50(图像分类/TensorFlow)

Res2Net_50(图像分类/TensorFlow)

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

概述

该模型为新型Res2Net系列,深度为50层,此模型基于Res2Net: A New Multi-scale Backbone Architecture中提出的模型结构实现。可以用图像分类任务,比如猫狗分类、花卉分类等等。用户提供一系列带有标注的数据集,该算法会载入在ImageNet-1000上的预训练模型,在用户数据集上做迁移学习。训练后生成的模型可直接在ModelArts平台部署成在线服务,同时支持使用CPU和GPU规格进行推理。用户还可以将模型转换成Ascend类型,并在Ascend-310芯片上部署推理。

单击此处订阅算法。

训练

  • 算法基本信息
    • 适用场景:图像分类
    • 支持的框架引擎:Tensorflow-1.13.1-python3.6-horovod
    • 性能:

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

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

      64

      556

    • 算法输入:
      • ModelArts数据管理平台发布的“图像分类”数据集(数据集必须设置“训练验证比例”),建议用户以8:2或9:1的比例进行切分,即“训练验证比例”设置为0.8或0.9。
      • ImageNet预训练模型,在ImageNet上的top正确率为top-1: 78.73%, top-5: 94.32%。
    • 算法输出:
      • 用于TF-Serving推理的saved_model模型,CPU推理速度为“225.98 ms/pic”
      • 用于转换Ascend格式模型的Frozen_PB模型,Ascend-310推理速度为“27.8 ms/pic”
  • 训练参数说明

    名称

    默认值

    类型

    是否必填

    是否可修改

    描述

    task_type

    image_classification_v2

    string

    适用场景。

    model_name

    res2net_50

    string

    模型名称。

    do_train

    True

    bool

    是否做训练,默认训练。

    do_eval_along_train

    True

    bool

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

    variable_update

    horovod

    string

    参数更新方式,默认horovod。

    learning_rate_strategy

    0.002

    string

    训练的学习率策略。"10:0.001,20:0.0001"代表0-10个epoch学习率0.001,10-20epoch学习率0.0001。

    如果不指定epoch, 会根据验证精度情况自动调整学习率,并当精度没有明显提升时,训练停止。

    batch_size

    64

    int

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

    eval_batch_size

    64

    int

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

    evaluate_every_n_epochs

    1.0

    float

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

    save_model_secs

    180

    int

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

    save_summary_steps

    30

    int

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

    log_every_n_steps

    10

    int

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

    do_data_cleaning

    True

    bool

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

    use_fp16

    True

    bool

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

    xla_compile

    True

    bool

    是否开启xla编译,加速训练,默认启用,设置为False表示关闭。

    data_format

    NCHW

    string

    输入数据类型,NHWC表示channel在最后,NCHW表示channel在最前,默认值NCHW(速度有提升)。

    best_model

    True

    bool

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

    jpeg_preprocess

    True

    bool

    是否使用JPEG预处理加速算子(仅支持JPEG格式数据),可加速数据读取,提升性能,默认启用。若数据格式不是JPEG格式,开启数据清洗功能即可使用。设置为False表示关闭。

  • 训练输出文件
    训练完成后的输出文件如下所示。
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    |- 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,224,224,3
    • 输入数据格式:NHWC
    • 转换输出节点:logits:0

      其他参数均使用默认值。

  • 模型导入
    • 从模板中选择: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推理,可参考图像分类案例

分享:

    相关文档

    相关产品