转换方法

有两个主流的方法

  • onnx->Caffe Model->om(最主流)

  • onnx->om
    使用第一种方法看似麻烦,多了一步,但其实这种转换方式的好处有很多

  • 可以通过修改prototxt的方式实现对网络结构的修改,可以添加一些本没有的算子,故可操作性高

  • Caffe支持的算子更多

  • 实现同样的功能,使用这种方式进行转换的效率会更高(因为我们可以通过编辑算子的方式来让网络进行某些循环操作,比起手写For循环肯定快得多)

  • 在使用昇腾硬件(例如Atlas200)进行模型推理的时候,首先需要使用ATC工具将原始模型转换为适合昇腾硬件的模型(.om),支持原始框架类型为Caffe、TensorFlow、MindSpore、ONNX的模型转换,其中ONNX可以看做是一个中间模型,如果其他模型可以转换为ONNX模型那么也可以在使用ATC进行模型转换,例如pytorch模型转换为ONNX模型,ONNX模型再转换为.om文件。

使用第一种方法转换过程(以YOLOv4为例)

首先,我们要有onnx模型,即PyTorch的训练模型以.pth的方式存储,先通过指令将其转为onnx,随后将onnx转为Caffe文件(使用convertCaffe.py文件,该文件在github上有)。随后对prototxt文件进行修改(添加一些layer层实现自定义算子的功能),随后使用如下指令进行转换

Caffe->om常用参数及指令解释

–model:原始模型文件路径与文件名

–weight:权重文件路径与文件名

–framework:原始模型框架:0是caffe,1是mindspore,3是tensorflow,5是onnx

–input_format:输入数据格式:Caffe默认为NCHW,TensorFlow默认为NHWC

–dynamic_image_size:设置输入图片的动态分辨率参数。适用于执行推理时,每次处理图片宽和高不固定的场景。

–output:存放转换后的离线模型的路径以及文件名

–soc_version:模型转换时指定芯片版本。

–insert_op_conf:插入算子的配置文件路径与文件名,例如aipp预处理算子(包含了图像预处理比如色域转换、减均值等)。

  • 例子:
atc --model=yolov5.prototxt --weight=yolov5.caffemodel --framework=0 --output=yolov5s_caffe2om --soc_version=Ascend310 --insert_op_conf=aipp_nv12.cfg

对模型yolov4.prototxt和权重yolov5.caffemodel的caffe原始模型进行转换,framework为0表示caffe,输出文件名字为yolov5s_caffe2om.om,推理芯片选择Ascend310,算子配置文件为aipp_nv12.cfg。

onnx->om指令

atc --model=yolov5.onnx --framework=5 --output=yolov5 --input_format=NCHW --log=info --soc_version=Ascend310 --input_shape="input:1,3,608,608" -out_nodes="feature_map_1;feature_map_2;feature_map_3"

对名为yolov5的模型进行转换,framework为5表示onnx,输出文件名字为yolov5.om,,日志等级为info,推理芯片选择Ascend310,输入和输出的格式如图所示。

运行过程

首先要搞清楚一点,Atlas开发板仅仅只是程序真正进行推理运行的环境,所以我们在开发板上唯一需要做的就是将在Linux环境下编译好的程序上传上去,然后执行脚本运行,为了方便我们就在官方demo给的文件夹下运行。

执行以下命令将转换好的模型复制到样例中model文件夹中。

 cp ./yolov5.om $HOME/samples/cplusplus/level2_simple_inference/2_object_detection/YOLOV3_coco_detection_picture/model/

执行以下命令,执行编译脚本,开始样例编译。

cd $HOME/samples/cplusplus/level2_simple_inference/2_object_detection/YOLOV3_coco_detection_picture/scripts
bash sample_build.sh

这里注意,这个build的脚本里有好多内容都是要改的,就比如运行文件名称、路径等。
运行build之后,会让填arm还是x86,我们填运行环境arm

Atlas深度学习模型转换及运行相关推荐

  1. Jetson Xavier、Jetson TX2、 1080(Ti)、2080显卡运行深度学习模型性能对比(英伟达开发平台VS常用显卡)

    前言:         英伟达的Jetson TX2使得很多人认为深度学习模型终于可以像嵌入式开发平台那样做到小型化了,不用再跑在高配计算机或者服务器上面了,但是实际上Jetson TX2开发板的性能 ...

  2. 网页版深度学习模型编辑器,搭建运行样样都行,还能3D可视化

    最近,一款网页版深度学习模型编辑器面世了. 不用下载任何客户端应用.不用装任何插件.甚至连数据集都不用下载,直接在网页端就可以搭建.训练.运行神经网络,甚至还是3D可视的. 直接选择你需要的数据集,加 ...

  3. 深度学习模型中颜色空间转换

    目录 背景 方法 结论 背景 情况是这样的,我训练一个深度学习模型,用于图片的处理,读取图片时使用的是skimage包,然后进行一系列常见的处理变为tensor类型送入模型中进行训练.这个模型为我自己 ...

  4. 在服务器上运行论文中的深度学习模型

    前言 首先需要在服务器上搭建运行环境,参见上一篇博客:[服务器上搭建深度学习模型运行环境:ubuntu] 本文主要讲在搭建好运行环境的情况下如何跑开源模型,以Inf-Net: Automatic CO ...

  5. CUDA上深度学习模型量化的自动化优化

    CUDA上深度学习模型量化的自动化优化 深度学习已成功应用于各种任务.在诸如自动驾驶汽车推理之类的实时场景中,模型的推理速度至关重要.网络量化是加速深度学习模型的有效方法.在量化模型中,数据和模型参数 ...

  6. CUDA上的量化深度学习模型的自动化优化

    CUDA上的量化深度学习模型的自动化优化 深度学习已成功应用于各种任务.在诸如自动驾驶汽车推理之类的实时场景中,模型的推理速度至关重要.网络量化是加速深度学习模型的有效方法.在量化模型中,数据和模型参 ...

  7. C++调用Python文件,TensorFlow和PyTorch构建的深度学习模型,无法使用GPU的情况分析。

    C++调用Python深度学习模型,包含TensorFlow和PyTorch等构造的模型,然后使用GPU出现问题.包含C++调用Python函数,C++加载模型到GPU,GPU内存占用过大,计算完毕内 ...

  8. 实战 | 深度学习轻松学:如何用可视化界面来部署深度学习模型

    翻译 | AI科技大本营 参与 | 王赫 上个月,我有幸结识了 DeepCognition.ai 的创始人. Deep Cognition (深度认知) 建立的深度学习工作室,为很多准备部署深度学习框 ...

  9. 实践教程 | TensorRT部署深度学习模型

    作者 | ltpyuanshuai@知乎 来源 | https://zhuanlan.zhihu.com/p/84125533 编辑 | 极市平台 本文仅作学术分享,版权归原作者所有,如有侵权请联系删 ...

最新文章

  1. R语言可视化散点图(scatter plot)图中的标签和数据点互相堆叠丑死了,ggrepel包来帮忙:文本标签(label)相互排斥,远离数据点,远离绘图区域的边缘。
  2. Matlab学习笔记——文件的打开与关闭
  3. 达特茅斯计算机专业师资力量如何,达特茅斯学院计算机科学computer science专业排名第126~150名(2020THE泰晤士高等教育世界大学排名)...
  4. Computer Science Theory for the Information Age-3: 高维空间中的高斯分布和随机投影
  5. 成功解决ValueError: could not convert string to float: ‘\\N‘
  6. 表的插入、更新、删除、合并操作_2_插入含自增列的记录
  7. LAMP环境安装1之php编译报错
  8. 重力加速度换算_中考物理重难点汇总——公式换算大全
  9. e5cc温控仪通讯参数设定_自动化工程师:施耐德 PLC常见两种编程通讯控制实例,收好不谢...
  10. C++ 数据抽象 封装 接口
  11. 一加8系列有望明年二季度发布:配备双曲面打孔屏
  12. 小学计算机教育实习教案,小学信息技术教师资格证面试教案模板:《漂亮的剪贴画》...
  13. 退出所有循环_探索未知种族之osg类生物---呼吸分解之事件循环三
  14. SaaS 真实的案例, DRP
  15. pragma once用法总结
  16. python数据库管理系统ess_【简说Python WEB】数据库
  17. UI网页设计制作思路
  18. 离散数学复习--集合的势证明
  19. 【榆钱】Cantor表C语言题解
  20. git push错误(fatal: The upstream branch of your current branch does not match)解决方案

热门文章

  1. 企业邮箱如何购买?企业邮箱费用哪家更划算?
  2. node12.16.0下载地址
  3. 幼儿家长老师都实用的100个不同阶段的亲子游戏(二)
  4. 一加手机再出新款,刘作虎公布外观,该品牌曾在国外被排队抢购
  5. 【Elasticsearch选主流程】
  6. python execl表格数据查询
  7. 什么是用户与计算机进行通话,1.手机与固定电话使人们生活中的信息交流更方便.快捷.通过学习有关知识.手机与固定电话分别是利用什么来传递声音信息的?...
  8. linux字符界面可以放大吗,linux字符界面的背景颜色和文字可以改么
  9. 什么是Linux文件系统
  10. 计算机专业技术考核表,专业技术人员量化考核计分表(3类).doc