YOLO模型部署到神经棒二代上

YOLO模型部署到神经棒二代上

神经棒2019年出来的,说实话真的恶心。资料挺少的。我自己训练物体识别用的keras-yolo模型。但部署到树莓派上坑定运行不起来。所以将其部署到神经棒上。这个过程看似就几步,但是Python的环境稍微版本不一样,就会出现各种各样的错误,这个模型的转换足足恶心了我一星期多。
整个过程配置和转化的环境为:
在这里插入图片描述

以上环境的配置都是用Anaconda配置的虚拟环境,具体这个anaconda如何配置虚拟环境以及如何换源网上都有很详细的教程。这里就不在赘述

1:下载程序,将yolo生成的h5权重文件转化为权重文件(weight)

重要的事情说三遍:

1:Yolo训练的模型文件切记要用save方法去保存,否则就会之后读取不到权重网络,这个地方我会在另一篇Yolo模型训练的文章里面把这个地方详细说明,

Yolo训练的模型文件切记要用save方法去保存,否则就会之后读取不到权重网络,这个地方我会在另一篇Yolo模型训练的文章里面把这个地方详细说明,

Yolo训练的模型文件切记要用save方法去保存,否则就会之后读取不到权重网络,这个地方我会在另一篇Yolo模型训练的文章里面把这个地方详细说明,

2:不要直接用yolo生成的h5文件去转tensorflow的pb文件,然后再用Pb文件转XML和bin。这样会报错。

2:不要直接用yolo生成的h5文件去转tensorflow的pb文件,然后再用Pb文件转XML和bin。这样会报错。

2:不要直接用yolo生成的h5文件去转tensorflow的pb文件,然后再用Pb文件转XML和bin。这样会报错。

下载本步骤需要的代码:具体代码我已经上传到了蓝奏云上,下载完后解压可以看到以下文件结构,如下图所示:

在这里插入图片描述
记得这个工程的环境一定要和你yolo训练的模型所用的Python环境一样,否则就会报错,
在这里插入图片描述
把你的h5文件放到该文件夹中,并且里面的voc_classes.txt要与你的yolo训练模型中的类别一致,下图中红框的文件都要跟你keras-yolo中的文件保持一直保持一致,你可以把yolov3.cfg,yolo_anchors.txt,等文件直接复制过来:
在这里插入图片描述

之后要更改voc_classes.txt.这里面的类别也要保持一致。
我的训练的是俩类:bottle
spitball:
在这里插入图片描述
所以将其更改为bottle和spitball
运行check_weight.py,如果转换成功的话就可以出现下图:
在这里插入图片描述

2:将权重文件(weight)转化为tensorflow的pb文件:

下载程序,我已经上传到了蓝奏云上:下载完之后:命令行切到你程序所在的目录,在这里插入图片描述
目录中的文件也需要更改:在这里插入图片描述
将coco.name中的类更改为你训练的种类数,我这里训练的是2类,所以仍旧改为:bottle和spitball。
之后在命令行输入指令:

python convert_weights_pb.py --class_names coco.names --data_format NHWC --weights_file yolov3.weights

等待一会,可以看到命令行中出现下图,则证明转换成功:
在这里插入图片描述

下面就可以愉快地进行下一步转化了。
3:安装英特尔openvino2019进行转化的最后一步(终于最后一步了)。
我安装的openvino版本为:在这里插入图片描述
下载安装的过程不再说了,都是下载完后安装包默认安装即可。安装完后找到程序所在的文件夹:
我的文件夹是:C:\openvino_2019.1.087\deployment_tools\model_optimizer\install_prerequisite。
命令行依次输入:install_prerequisites.bat和install_prerequisites_tf.bat。输入完之后,进入文件夹下的这个路径:C:\openvino_2019.1.087\deployment_tools\model_optimizer\extensions\front\tf\yolo_v3.json
更改yolo_v3.json中的内容,如下图所示:在这里插入图片描述
将classes改为你训练的类别数即可,其余保持默认即可。
这一步只需更改该文件就可以,之后命令行输入指令:

 python mo_tf.py --input_model frozen_darknet_yolov3_model.pb --tensorflow_use_custom_operations_config C:\openvino_2019.1.087\deployment_tools\model_optimizer\extensions\front\tf\yolo_v3.json --batch 1

以上指令中的路径均为自己文件所在的路径,自己更改即可。输入指令回车,等待大概几十秒。如果转换成功的话贼会出现以下提示:
在这里插入图片描述
好几个success。看着就很舒服。到这一步的话自己yolo训练的模型就成功转化为神经棒所需要的的XML和Bin文件了。最后附上模型文件在树莓派上yolo跑起来的样子,害,别提有多舒服了。
在这里插入图片描述
在这里插入图片描述
下篇文章介绍树莓派3b上的部署以及自己训练yolo模型。在这里插入图片描述

posted @ 2020-11-14 22:33  Bathwind_W  阅读(3)  评论(0编辑  收藏  举报  来源