Atlas深度学习模型转换及运行
转换方法
有两个主流的方法
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深度学习模型转换及运行相关推荐
- Jetson Xavier、Jetson TX2、 1080(Ti)、2080显卡运行深度学习模型性能对比(英伟达开发平台VS常用显卡)
前言: 英伟达的Jetson TX2使得很多人认为深度学习模型终于可以像嵌入式开发平台那样做到小型化了,不用再跑在高配计算机或者服务器上面了,但是实际上Jetson TX2开发板的性能 ...
- 网页版深度学习模型编辑器,搭建运行样样都行,还能3D可视化
最近,一款网页版深度学习模型编辑器面世了. 不用下载任何客户端应用.不用装任何插件.甚至连数据集都不用下载,直接在网页端就可以搭建.训练.运行神经网络,甚至还是3D可视的. 直接选择你需要的数据集,加 ...
- 深度学习模型中颜色空间转换
目录 背景 方法 结论 背景 情况是这样的,我训练一个深度学习模型,用于图片的处理,读取图片时使用的是skimage包,然后进行一系列常见的处理变为tensor类型送入模型中进行训练.这个模型为我自己 ...
- 在服务器上运行论文中的深度学习模型
前言 首先需要在服务器上搭建运行环境,参见上一篇博客:[服务器上搭建深度学习模型运行环境:ubuntu] 本文主要讲在搭建好运行环境的情况下如何跑开源模型,以Inf-Net: Automatic CO ...
- CUDA上深度学习模型量化的自动化优化
CUDA上深度学习模型量化的自动化优化 深度学习已成功应用于各种任务.在诸如自动驾驶汽车推理之类的实时场景中,模型的推理速度至关重要.网络量化是加速深度学习模型的有效方法.在量化模型中,数据和模型参数 ...
- CUDA上的量化深度学习模型的自动化优化
CUDA上的量化深度学习模型的自动化优化 深度学习已成功应用于各种任务.在诸如自动驾驶汽车推理之类的实时场景中,模型的推理速度至关重要.网络量化是加速深度学习模型的有效方法.在量化模型中,数据和模型参 ...
- C++调用Python文件,TensorFlow和PyTorch构建的深度学习模型,无法使用GPU的情况分析。
C++调用Python深度学习模型,包含TensorFlow和PyTorch等构造的模型,然后使用GPU出现问题.包含C++调用Python函数,C++加载模型到GPU,GPU内存占用过大,计算完毕内 ...
- 实战 | 深度学习轻松学:如何用可视化界面来部署深度学习模型
翻译 | AI科技大本营 参与 | 王赫 上个月,我有幸结识了 DeepCognition.ai 的创始人. Deep Cognition (深度认知) 建立的深度学习工作室,为很多准备部署深度学习框 ...
- 实践教程 | TensorRT部署深度学习模型
作者 | ltpyuanshuai@知乎 来源 | https://zhuanlan.zhihu.com/p/84125533 编辑 | 极市平台 本文仅作学术分享,版权归原作者所有,如有侵权请联系删 ...
最新文章
- MySQL 批量插入:如何不插入重复数据?
- html post 发送两次,JS发送跨域Post请求出现两次请求的解决办法
- Qt中使用多线程的一些心得(一)——继承QThread的多线程使用方法
- 如何配置jdk环境变量
- 23种设计模式[5]:原型模式
- Chrome 过滤广告插件暂替办法
- python 输入正方形_Python打印正方形
- 二隐层的神经网络实现MNIST数据集分类
- java计算器问题反馈,Java开发网 - 求教计算器问题(急~~~)
- AI何时能懂环境会沟通?别急,这个“你说我画”小游戏开了个好头 | 论文
- 使用Prometheus监控kubernetes集群
- 第六章 实验报告 (函数与宏定义)
- matlab qpsk调制程序,qpsk调制与解调系统的matlab实现
- 量子计算(三):有哪些机构或公司参与量子计算的研发
- 跨境电商shopee这个平台怎么样?百万shopee卖家笑了,不要再犹豫了
- 人员基础信息一体化采集仪_重要!包头退休人员注意!涉及信息采集(附操作步骤)...
- LA 5713 Qin Shi Huang's National Road System 最小生成树
- PTA 硬币找钱问题
- CSS之display用法
- 看完就学会系列,小小一篇文章教会你利用Python网络爬虫抓取王者荣耀图片(建议收藏)