【YOLO】如何将Keras训练的模型用于OpenCV中(.h5文件转换成.weights文件)

文章目录

  • 前言
  • 操作步骤
  • 验证

前言

模型训练时采用TensorFlow + Keras框架,其参数模型输出为.h5文件,其中包含了yolo训练结果中的卷积层和池化层参数。
OpenCV库,其中深度神经网络(dnn)模块采用了DarkNet框架,该框架导入的模型为.weights文件,并依赖于.cfg文件所定义的架构。所以,如果想将前面的框架训练的模型用于OpenCV中,就需要将yolo.h5文件转换为yolo.weights文件
【YOLO】如何将Keras训练的模型用于OpenCV中(.h5文件转换成.weights文件)_第1张图片
关于Keras训练YOLO模型的方法,可参考:https://blog.csdn.net/qinchang1/article/details/89608058

关于采用OpenCV进行YOLO检测的方法,可参考:https://blog.csdn.net/qinchang1/article/details/89435023

操作步骤

程序代码可以通过下面的链接下载:

百度云链接:https://pan.baidu.com/s/1-yX67ArLq9cFwCYGLTkPHg 提取码:dhvw
CSDN下载:https://download.csdn.net/download/qinchang1/12365046

首先,在解压的文件夹中放入Keras训练的yolo.h5文件
【YOLO】如何将Keras训练的模型用于OpenCV中(.h5文件转换成.weights文件)_第2张图片
coco_classes.txtvoc_classes.txt文件中的识别对象类型改为训练中标记的对象。
例如:本文训练了3个对象,twistlock、switch1、switch2。
【YOLO】如何将Keras训练的模型用于OpenCV中(.h5文件转换成.weights文件)_第3张图片
打开yolov3.cfg,在里面查找 yolo(注意有3处),需要修改的地方处:
1.filters = 3 * ( 5 + classes)
2.classes = n (这个是你要训练的类的数量)
例如:本文这里有3个类,所以filters=24,classes=3。
【YOLO】如何将Keras训练的模型用于OpenCV中(.h5文件转换成.weights文件)_第4张图片
运行check_weight.py程序,就可以生成yolov3.weights文件了。

【YOLO】如何将Keras训练的模型用于OpenCV中(.h5文件转换成.weights文件)_第5张图片

验证

这里可以参考我另一篇博客:https://blog.csdn.net/qinchang1/article/details/89435023

将其中的yolov3.cfgyolov3.weights文件替换成新的。
并且coco.names中对象类型改为新的。
在这里插入图片描述
其他步骤包括代码和那篇博客中的一样。检测效果如下:

你可能感兴趣的:(YOLO,OpenCV)