• 【ModelArts系列】华为ModelArts训练yolov3模型(训练管理)


    一、参考资料

    华为ModelArts Notebook训练yolov3模型

    二、相关介绍

    在ModelArts的 训练任务 中运行ModelZoo中模型,以yolov3为例,训练集为 COCO2014。

    运行环境

    运行环境:ModelArts notebook
    模型:ModelZoo,yolov3
    数据集:COCO2014
    AI引擎:Ascend-Powered-Engine | tensorflow_1.15-cann_5.0.3-py_3.7-euler_2.8.3-aarch64
    规格:Ascend: 1*Ascend-910(32GB) | ARM: 24 核 96GB
    
    • 1
    • 2
    • 3
    • 4
    • 5

    三、关键步骤

    关键步骤,请参考官方教程:YOLOv3

    博主复现的过程中,仅记录一些容易出错的步骤。

    3.1 下载源代码

    官方仓库:YOLOv3

    博主的仓库:modelarts-yolov3
    在这里插入图片描述

    3.2 准备数据集

    1. 下载COCO2014数据集,下载地址:

      链接:https://pan.baidu.com/s/16sxIpFs-hd-6FzN2rSHgqA
      提取码:1234

    2. 数据集上传到obs;

    用obs-browser客户端上传COCO2014数据集到OBS。
    在这里插入图片描述

    3.3 准备预训练模型

    在这里插入图片描述

    预训练模型下载之后,放入 YoloV3_for_TensorFlow_1.6_code/data/darknet_weights 路径。

    +--- data
    |   +--- coco2014_minival.txt
    |   +--- coco2014_trainval.txt
    |   +--- darknet_weights  # 预训练模型所在路径
    |   |   +--- checkpoint
    |   |   +--- darknet53.ckpt.data-00000-of-00001
    |   |   +--- darknet53.ckpt.index
    |   |   +--- darknet53.ckpt.meta
    |   |   +--- readme
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    3.4 准备源码

    准备txt标注文件

    根据COCO2014数据集的实际路径使用 coco_trainval_anns.pycoco_minival_anns.py 分别生成 训练和验证样本标注文件 coco2014_trainval.txtcoco2014_minival.txt ,并放置于 YoloV3_for_TensorFlow_1.6_code/data 录下。

    # 1. 修改源码中的路径
    
    # 2. 执行 coco_trainval_anns.py
    python coco_trainval_anns.py
    
    # 3. 执行 coco_minival_anns.py
    python coco_minival_anns.py
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    train.py

    参数基本上默认即可。
    在这里插入图片描述

    args_modelarts_single.py

    参数基本上默认即可。
    在这里插入图片描述
    在这里插入图片描述

    上传源码

    准备好源码之后,上传到obs中。
    在这里插入图片描述

    3.5 创建算法

    算法管理 ---》创建
    
    • 1
    名称:自定义
    描述:自定义
    创建方式:自定义脚本
    	---》AI引擎:Ascend-Powered-Engine,tensorflow_1.15-cann_5.0.3-py_3.7-euler_2.8.3-aarch64
    	---》代码目录:liulingjun-demo/yolov3/code
    	启动文件:liulingjun-demo/yolov3/code/train.py
    输入数据配置:data_url
    输出数据配置:train_url
    超参:
    	---》model,String,
    	---》batch_size,Integer
    	---》total_epoches,Integer
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    代码目录
    在这里插入图片描述

    输入输出数据配置
    在这里插入图片描述

    超参
    在这里插入图片描述
    创建算法
    在这里插入图片描述

    3.6 创建训练作业

    训练管理 ---》训练作业
    
    • 1
    名称:自定义
    描述:自定义
    算法:刚创建的算法
    训练输入:/liulingjun-demo/yolov3/dataset/
    训练输出:/liulingjun-demo/yolov3/output/
    超参:默认即可
    资源池:公共资源池、专属资源池
    规格:根据实际情况选择
    计算节点个数:根据实际情况选择
    作业日志路径:/liulingjun-demo/yolov3/logs/
    其他参数:默认即可
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述

    增加超参数

    单击“增加超参”,手动增加超参。配置 代码中的命令行参数值,请根据您编写的算法代码逻辑进行填写,确保参数名称和代码的参数名称保持一致。可填写多个参数。
    在这里插入图片描述

    参数名称类型默认值是否必填描述
    modeStringmodelarts_singleYOLOv3训练场景分为单尺度和多尺度。单尺度为modelarts_single多尺度为modelarts_multi
    batch_sizeInteger32一次训练所抓取的数据样本数量。单尺度训练建议值为32,多尺度训练建议值为16。
    total_epochesInteger200训练总轮数。

    设置mode模式为:modelarts_single
    在这里插入图片描述

    提交训练作业

    训练作业一般需要运行一段时间,根据您选择的数据量资源不同,训练时间将耗时几分钟到几十分钟不等。在ModelArts中创建训练任务,训练脚本会自动将obs中的数据集拷贝到ModelArts容器中,数据集越大耗费时间越长。

    训练作业的状态

    训练作业的状态有:等待中,运行中,运行失败,已完成,终止中,已终止。
    在这里插入图片描述

    3.7 资源占用情况

    npu资源占用情况
    在这里插入图片描述
    在这里插入图片描述

    资源监控
    在这里插入图片描述

    3.8 yolov4与yolov5

    yolov4、yolov5与yolov3操作步骤类似,结合ModelZoo的操作说明进行复现。

    yolov4

    官方仓库:YOLOv4

    博主的仓库:modelarts-yolov4

    在这里插入图片描述
    在这里插入图片描述

    yolov5

    官方仓库:YOLOv5

    博主的仓库:modelarts-yolov5

    在这里插入图片描述

    四、FAQ

    Q:数据集路径错误

    2022-07-28 16:09:09.053230: W tensorflow/core/framework/op_kernel.cc:1639] Unknown: AttributeError: 'NoneType' object has no attribute 'shape'
    Traceback (most recent call last):
    
      File "/home/ma-user/anaconda/lib/python3.7/site-packages/tensorflow_core/python/ops/script_ops.py", line 235, in __call__
        ret = func(*args)
    
      File "/home/ma-user/modelarts/user-job-dir/code/utils/data_utils.py", line 306, in get_batch_data
        multi_scale)
    
      File "/home/ma-user/modelarts/user-job-dir/code/utils/data_utils.py", line 216, in parse_data
        img, boxes = random_resize(img, boxes, min_ratio=0.25, max_ratio=2, jitter=0.3)
    
      File "/home/ma-user/modelarts/user-job-dir/code/utils/data_aug.py", line 429, in random_resize
        h,w,c = img.shape
    
    AttributeError: 'NoneType' object has no attribute 'shape'
    
    
    2022-07-28 16:09:09.053445: W tensorflow/core/framework/op_kernel.cc:1639] Unknown: AttributeError: 'NoneType' object has no attribute 'shape'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    错误原因:
    以下两个标注文件中的数据集路径不正确,找不到图片路径,导致opencv读取图片失败
    coco2014_trainval_modelarts.txt
    coco2014_minival_modelarts.txt
    
    解决办法:
    根据数据集的真实路径,修改txt文件中的路径
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    Q: 容量不足,训练作业终止

    在这里插入图片描述

    Q:训练作业一直等待中

    在这里插入图片描述

    错误原因:
    资源不够
    
    解决办法:
    停止不用的notebook,重新启动
    
    • 1
    • 2
    • 3
    • 4
    • 5

    Q: 找不到txt标注文件

    在这里插入图片描述

    错误原因:
    找不到txt标注文件
    
    解决办法:
    准备txt标注文件,参考上文【准备源码】
    
    • 1
    • 2
    • 3
    • 4
    • 5

    Q: 找不到darknet53.ckpt

    在这里插入图片描述

    错误原因:
    找不到预训练模型
    
    解决办法:
    参考上文【准备预训练模型】
    将 `YOLOv3_TensorFlow_1.6_model/single/ckpt` 路径下的模型文件拷贝到 `YoloV3_for_TensorFlow_1.6_code/data/darknet_weights`,并重命名为 `darknet53.ckpt`;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  • 相关阅读:
    CPU、MPU、MCU、SOC的理解
    牛客网刷题-(6)
    华为云新用户云服务器优惠价格表
    Vue3简单使用(一) --- 环境搭建
    《治安疏》——海瑞
    springboot+maven大学校友活动风采展示管理信息系统
    nginx连接前后端分离项目 或 负载均衡映射多个服务器
    PDBADMIN 的作用,命名,重建 以及能否DROP
    [操作系统] FIFO 与 LRU 替换算法一样的条件的重新表述
    lio-sam框架:回环检测及位姿计算
  • 原文地址:https://blog.csdn.net/m0_37605642/article/details/126046640