栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

TX2通过yolov4实现交通信号灯视频检测

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

TX2通过yolov4实现交通信号灯视频检测

环境部署

Jetson TX2刷机及安装的软件包版本如下
整个过程中遇到最多的就是不同tf、keras版本之间导致的问题 所以部署环境的时候千万注意各种包的依赖关系 我因为兼容性问题走了不少弯路。

环境版本Jetpack4.5Ubuntu18.04cuda10.2cudnn8.0.0opencv4.1.1Tensorflow2.5.0keras2.3.1python3.6.9

Tensorflow2 keras环境搭建见TX2安装keras tensorflow2

实现交通信号灯视频检测

直接将win10调通的代码放到TX2上运行。

windows传输文件到ubuntu见Windows传文件到ubuntu

结果报错 兼容性的问题。TX2上安装的tensorflow并不是真正的tf 而是Tensorflow Lite.还有tf2.5和keras的兼容问题。我不想重新安装环境了 先试着解决报错。

解决报错

1、importError: cannot import name ‘multi_gpu_model’
参考完美解决tensorflow-gpu2.4没有multi_gpu_model的问题
我不是这个问题 keras版本为2.3.1 multi_gpu_model()函数就在multi_gpu_utils.py文件中。
解决办法简单粗暴 直接注释掉相关语句了。

2、AttributeError: module ‘tensorflow.python.framework.ops’ has no attribute ‘_TensorLike’
原因是因为tensorflow和keras的版本不匹配 参考AttributeError: module ‘tensorflow.python.framework.ops‘ has no attribute ‘_TensorLike‘

目前keras最高对应tensorflow2.2 没辙了 卸载重装tensorflow吧。

# 卸载原有tf2.5.0
$ sudo pip3 uninstall tensorflow

重新安装tensorflow1.15.5 具体过程见上文链接。
降版本后不再报此错误。
调用demo视频进行检测成功了

调用TX2板载摄像头进行实时信号灯检测。

需要安装opencv 在win10下直接cv2.VideoCapture(0)打开笔记本自带摄像头。但是在TX2会报错。

解决报错

1、GStreamer: unable to start pipeline
参考TX2 调用 opencv出现 GStreamer: unable to start pipeline
即改为

cv2.VideoCapture( nvcamerasrc ! video/x-raw(memory:NVMM), width (int)640, height (int)480, format (string)I420, framerate (fraction)30/1 ! nvvidconv ! video/x-raw, format (string)BGRx ! videoconvert ! video/x-raw, format (string)BGR ! appsink )

可惜不好使。出现了其他报错。先换方法调用摄像头 不行再回来解决报错。

参考Opencv 4.1 打开Jetson TX 2 板载摄像头 好使

2、不报错了但是还是无法打开摄像头 因为超出内存了。
报错‘Resource exhausted: OOM when allocating tensor with shape[3,3,256,512] and type float on /job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc’

想通过nvidia-smi查看gpu使用情况结果报错找不到这个命令。
原来TX2没有这个命令 换sudo /tegrastats 我还是不行。
要查看GPU利用率参考NVIDIA TX2 目标检测——查看显卡使用状况

因为嫌麻烦就重启了一下重新运行 没想到运行成功了 怀疑之前有其他进程占用了内存。

待解决

目前这个程序能执行 但是无法看到摄像头实时画面 只能查看保存下来的检测结果视频。

实现实时显示检测结果

添加代码

cv2.imshow( output , image)
cv2.waitKey(1) #一定要延时 否则不能正常显示
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/266655.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号