Jetson TX2刷机及安装的软件包版本如下
整个过程中遇到最多的就是不同tf、keras版本之间导致的问题 所以部署环境的时候千万注意各种包的依赖关系 我因为兼容性问题走了不少弯路。
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视频进行检测成功了
需要安装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) #一定要延时 否则不能正常显示



