野生yolov3在atlas200dk的部署

1.训练官方yolov3代码
https://pjreddie.com/darknet/yolo/,进行训练
2.因官方yolov3代码由C和cuda写的,train不起来就参照此篇博主的博文
3.由训练得到的yolov3.weight,转成tensoflow的ckpt模型
具体代码在github中,参考其readme.md中的weight_convertion方法转成checkpoint file
注:应其用的tensorflow1.x写的weight_convertion.py,使用tensorflow2.x版本往上时,有些API不支持,可能会报以下错误AttributeError: module ‘tensorflow’ has no attribute ‘Variable’,则只需把tf.改为tf.compat.v1.就可以解决,,
4.运行以下代码,将ckpt模型转为pb固化模型,因为对于pb转om模型,官方对tensorflow1.14支持得比较好,可以降版本运行,如果要不降版本,就按照3.中的方法

#tensorflow 1.14
import tensorflow as tf
from tensorflow.python.framework import graph_util
from tensorflow.python.platform import gfile

def freeze_graph(input_path,output_path):
  output_node_names = "yolov3/yolov3_head/feature_map_1,yolov3/yolov3_head/feature_map_2,yolov3/yolov3_head/feature_map_3"
  saver = tf.train.import_meta_graph(input_path+".meta", clear_devices=True)
  graph = tf.get_default_graph()
  input_graph_def = graph.as_graph_def()

  with tf.Session() as sess:
    saver.restore(sess, input_path)
    output_graph_def = graph_util.convert_variables_to_constants(
      sess=sess,
      input_graph_def=input_graph_def,
      output_node_names=output_node_names.split(",")
    )
  
  with tf.io.gfile.GFile(output_path, 'wb') as fgraph:
    fgraph.write(output_graph_def.SerializeToString())

if __name__=="__main__":
  input_path = "/content/drive/Shareddrives/204880354@qq.com/yolov3-tf4/darknet/backup/yolov3.ckpt"
  output_path = "/content/drive/Shareddrives/204880354@qq.com/yolov3-tf4/darknet/backup/yolov3_416.pb"
  freeze_graph(input_path, output_path)

5.使用Mindstudio将pb模型转换为atlas200部署om模型

在转换时遇python3.7.5报错ModuleNotFoundError: No module named ‘_ctypes’
solution:
1)安装libffi-dev
2)重新编译python
实现:
一、
sudo apt-get install libffi-dev

二、
下载python3.7.5的包
解压,并进入解压目录,在该目录下打开终端
三、输入

./configure --prefix=/usr/local/python3 #后面接的是原python的安装路径

四、运行

nake && make install #编译

5.编写推理代码
可以从https://pan.baidu.com/s/1E86SFEYjmhaGoQVc6Y7gfg,提取码ok0l获取
在这里插入图片描述
之后将包含上述文件的文件夹拷贝到Atlas 200 DK上,在存放目录下执行命令

scp -r YOLOv3_COCO HwHiAiUser@192.168.1.2:/home/HwHiAiUser

使用scp命令在Atlas 200 DK和虚拟机之间传输文件(文件夹)

链接为 https://bbs.huaweicloud.com/blogs/168928
之后登陆开发板,执行命令即可。因为前面,我拷贝到了开发板的/home/HwHiAiUser目录下,所以直接登陆就能看到了,直接执行命令进入文件夹即可

cd YOLOv3_COCO
python3 main.py input_video/person.mp4
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

djh_hai

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值