野生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

版权声明:本文为CSDN博主「djh_hai」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_45013882/article/details/122584549

djh_hai

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐