# 自定义算法运行失败原因?

  1. 检查引擎版本

    自定义算法包中的自定义算法及其相关脚本文件,均需基于Tensorflow或PyTorch引擎框架编写。

  2. 检查目录结构

    算法文件“.zip”目录结构可参考如下,需要包括启动文件“Train.py”(启动文件名可自定义),以及一些必要的训练文件。若除了使用到Tensorflow或PyTorch原生的算法,还使用了第三方的库,则需要添加相应的依赖到算法文件中。

    .
     ├─ xxx                      #算法名
         ├─ 算法文件             #包含用户编写的一些算法文件(必选)
         ├─ Train.py             #启动文件(必选,名称可自定义)
         ├─ requirements.txt     #pip类依赖(可选)
         ├─ 可编译依赖1          #需要编译的依赖1(可选)
         ├─ 可编译依赖2          #需要编译的依赖2(可选)
         ├─ Model_file                    #模型包文件(名称可自定义)
             ├─ customer_auto_label.py    #“自动标注”启动文件(如该模型用于自动标注,则必选,名称固定) 
             ├─ customer_inference.py     #“模型评估”启动文件(如该模型用于模型评估,则必选,名称固定)
             ├─ customer_package          #自定义库(可选,名称可自定义)
                 ├─ __init__.py               #自定义库 -> python库
                 ├─ tensor_define.py          #自定义库 -> python库文件
             ├─ customer_utils.py         #自定义脚本1(可选,名称可自定义)
             ├─ customer_script2.sh       #自定义脚本2(可选,名称可自定义)
             ├─ sub_directory             #子文件夹
                 ├─ customer_operation.so     #自定义算子库(可选,名称可自定义)
         └─ ...
    
  3. 检查启动文件

    Octopus平台使用的数据集为“VOC格式”,在启动文件“xxx.py”中需指定数据集格式、路径等相关参数。Octopus平台生成的数据集包含以下文件:

    .
     ├─ data_file        #数据集包
         ├─ JPEGImages   #该数据集包含的JPEG格式图片
         ├─ Annotations  #该数据集包含的标注文件
             ├─ ImageSets
                 ├─ Main
                     ├─ train.txt   #图片文件名分隔符-训练
                     ├─ val.txt     #图片文件名分隔符-验证
         └─ classes.txt             #标注类型
    

    针对以上数据集信息,算法启动文件“xxx.py”中必须包含与数据集相关的配置项,因此启动文件中必须包含如下字段:

    # 下载数据平台数据用于训练
    import moxing as mox          # 导入下载数据平台数据依赖
    data_url = os.getenv('DLS_DATA_URL')  # 获取数据平数据地址
    
    # 将data_url 数据下载到data_file中,即数据集包文件中,包名称可自定义
    mox.file.copy_parallel(data_url, data_file) 
    # 将算法训练结果封装成模型用于模型评估与自动标注
    # 输出的模型需要包含的内容见模型文件部分,模型输出的地址必须是/home/cache
    
    # 添加自定义算法参数
    import argparse               # 导入添加算法参数依赖
    parser = argparse.ArgumentParser()
    
    #将total_epoches添加为自定义算法参数,类型、缺省值、帮助信息等可自定义
    parser.add_argument("--total_epoches", type=int, default=3,
                            help="The value of total epoches.")
    
    args = parser.parse_args()
    

    说明:

    • 从Octopus平台下载数据集,只要图片上包含您需要的类别,就会被下载,该图片上可能会同时存在其他类别标签。因此,如果您只是想训练特定类别,需要筛选。

    关于自定义算法文件的更多详细说明,请参见“算法文件说明”。

上次更新: 5/6/2021, 7:57:44 PM