Java教程

yolo实现交通信号灯视频流识别代码搬运及调试

本文主要是介绍yolo实现交通信号灯视频流识别代码搬运及调试,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

yolo实现交通信号灯视频流识别调试过程

所用代码:

基于YOLOv3的红绿灯检测识别(Python源码可直接运行)
原作者是tensorflow1,我的环境是tensorflow2,遇到一堆版本导致的问题。现在就是后悔,很后悔,十分后悔。
遇到报错就度娘,好在最终还是在tensorflow2下运行成功了。

报错

1、SystemError: unknown opcode
我的环境是python3.6,代码作者应该是python3.5(作者未说明)
解决:python3.5训练的模型不能直接用3.6跑
其实我没管这个报错,解决下面的报错后就没有这个报错了。

2、RuntimeError: set_session is not available when using TensorFlow 2.0.
作者tensorflow看来是1
解决:self.sess = tf.compat.v1.Session()
前面加上:
import tensorflow as tf

3、During handling of the above exception, another exception occurred:
ValueError: You are trying to load a weight file containing 45 layers into a model with 147 layers.
作者评论区很多说这个错的,模型不匹配的问题,原贴评论区有解决办法。
解决:
(1)“去官网下载个yolo.h5就可以了”
yolov3.h5下载
(2)“这个网盘里的yolo.h5不匹配,需要下载yolov3.weights,使用本项目中的yolov3.cfg,手动转换yolo.h5,亲测管用”
YOLOv3:将yolov3的.weights文件转换为keras、tensorflow等模型所需的.h5文件的图文教程,以及常见错误解决思路
在等方法(1)下载h5文件的时候试了方法(2),成功。

把“keras-yolo3-master\model_data”里新生成的yolo.h5文件复制到“YOLO-TrafficDetection-master\trafficlight\model_data”中。

4、TypeError: Tensor is unhashable if Tensor equality is enabled. Instead, use tensor.experimental_ref() as the key.
填坑!TypeError: Tensor is unhashable if Tensor equality is enabled. Instead, use tensor.experimental_r

5、解决上个报错后出现:
在这里插入图片描述
python调用cv2.findContours时报错:ValueError: not enough values to unpack (expected 3, got 2)
又是版本问题,这次是opencv版本过高,我的是opencv4.4,cv2.findContours()返回两个参数,旧版返回三个。
万幸返回的第一个参数没啥用,直接删掉就好。

img, cnts, hiera = cv2.findContours(binary.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

改为:

cnts, hiera = cv2.findContours(binary.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

至此程序调通,测试效果如图

在这里插入图片描述

这篇关于yolo实现交通信号灯视频流识别代码搬运及调试的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!