Jetson Xavier NX 配置(六)—— 连接CSI和USB摄像头进行Yolov5实时目标检测

【环境:Ubuntu18.04系统,python虚拟环境,vscode编写】

概要:
本文涉及以下多种方式的组合尝试:

  • CSI摄像头orUSB摄像头
  • 单个摄像头or多个摄像头
  • TensorRT加速or不加速

目录:

1、CSI摄像头连接

1.1 终端连接打开摄像头

1.2 代码读取帧

2、遇到的一些报错(python虚拟环境)

3、用摄像头视频流进行实时的Yolov5检测

4、用摄像头视频流进行实时的tensorrt加速的Yolov5检测

5、 同时调用多个usb摄像头进行YOLOv5实时检测


1、CSI摄像头连接

        第一次见到这种小的排线摄像头,怎么连到开发板上呢:接口轻轻往上拉开(建议用指甲),CSI摄像头扁扁的一端有银色裸露的部分,那部分对着接口里面有金属突出的那一面,插入接口以后把接口按下去关上。

1.1 终端连接打开摄像头

        检查摄像头是否已连接      : 

ls /dev/video* 

        已连接的话会返回"/dev/video0"或"/dev/video1"(0/1取决于摄像头连的哪一个接口)

        终端一行代码连接摄像头,显示于屏幕上:

nvgstcapture

1.2 代码读取帧

目的:为了之后对摄像头视频进行其它处理,需要能够读取到视频流的每一帧。

两种方式:cv2直接读取帧或者用jetcam模块(其实本质也是通过cv2.VideoCapture来读取,只不过封装好了而已,更便捷)

jetcam安装

git clone https://github.com/NVIDIA-AI-IOT/jetcam
cd jetcam
sudo python3 setup.py install

发现问题:安装完发现 vscode检测不到刚安装的模块

原因:默认安装在本地/usr/lib/python3.6/dist-packages目录下,所以进入python虚拟环境中import jetcam会失败

可能的解决方法1

        在settings.json中,添加模块安装的文件夹路径,例如:

{
    "python.autoComplete.extraPaths": ["/usr/lib/python3.6/dist-packages"]
}

可能的解决方法2:把安装到本地路径的文件拷贝到虚拟环境

        找到本地路径,复制jetcam相关的两个文件(一个文件夹,一个.egg文件)到python虚拟环境的site-packages下。本地路径下还有一个easy-install.pth路径,虚拟环境下也有一个同名的文件所以不能直接复制,把里面那一行复制进去即可。

2、遇到的一些报错(python虚拟环境)

无论是cv2方法还是jetcam方法,都在一开始无法捕捉到csi摄像头,即使在终端是可以打开摄像头的。

报错1jetcam could not initialize camera     

报错2error: (-215:Assertion failed) size.width>0 && size.height>0 in function ‘imshow‘  

还有一个size.width>0的报错,读本地的视频也会这样,查了好久,没有中文路径,反斜杠也没有问题。

        最后发现各种报错的根本原因是opencv的版本和设置问题, 因为不会源代码重新编译,所以最便捷的操作是,当初安装开发板系统的时候是默认在本地安装了opencv的,默认路径在/usr/lib/python3.6/dist-packages下,把cv2的文件夹复制到python虚拟环境的site-packages下(为了保险起见把几个包全都复制过去了,只要两个环境的python版本相同即可,没什么坏处)

3、用摄像头视频流进行实时的Yolov5检测

对于csi摄像头: 
        jetyolo项目
        直接使用参考博文的代码
参考:Yolov5-Serial-CSI_Demo · 语雀

对于usb摄像头:
        在运行yolo的detect.py时将source从原先的本地图片视频路径改成 0或者1或者2,对应摄像头序号,即可。

4、用摄像头视频流进行实时的tensorrt加速的Yolov5检测

对于csi摄像头:

        【暂未解决csi摄像头的tensorrt方式加速检测】

对于usb摄像头:

(文件目录:downloads/forYolo/tensorrtx/yolov5/下的yolo_trt_usb.py)

参考博文的代码修改之处:根据自己摄像头的序号修改:cap = cv2.VideoCapture(1)
# 此处我的0号是csi摄像头,1号是usb摄像头

优点:非常适合做实时的事情,帧率在30-60左右,很高;约有1s延迟

参考:【究极缝合】Jeston Nano环境配置+部署yolov5(master)+Tensorrt加速+usb摄像头测试_鱼鱼症患者的博客-CSDN博客

5、 同时调用多个usb摄像头进行YOLOv5实时检测

(文件目录:下载/yolov5master/下的最普通的detect.py)

方法:开启多个terminal同时运行两个detect.py,摄像头源source参数改一下即可:python3 detect.py --source 1

问题1:加到第3个摄像头时,终端运行卡顿直至死机

问题2:如果运行tensorrt加速的yolo检测,无法实现多个摄像头同时检测,打开另一个程序的同时会把上一个进程kill掉

未尝试:csi摄像头是否能和usb摄像头同时运行检测?

参考:

Jeston Nano打开CSI摄像头_哔哩哩哩的博客-CSDN博客

Jetson nano——使用jetcam官方库调用双CSI摄像机,JetsonNano,JetCam,摄像头

Jetson Nano 2GB 系列文章(7):通过 OpenCV 调用 CSI/USB 摄像头 - 知乎

Youtube上发现了个Jetson NX的视频,蛮不错的:

https://toptechboy.com/category/jetson-xavier-nx/#google_vignette

B站也能找到:https://www.bilibili.com/video/av328423873/

  • 3
    点赞
  • 84
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Jetson Xavier NX 是 NVIDIA 推出的一款 AI 开发板,搭载了 NVIDIA Xavier 处理器,可用于进行深度学习和计算机视觉任务。而 YOLOv5 是一种基于深度学习的目标检测算法,可用于在图像或视频中实时检测多个目标。 如果您想在 Jetson Xavier NX 上使用 YOLOv5 进行目标检测,可以按照以下步骤进行: 1. 安装 JetPack SDK。JetPack 是 NVIDIA 提供的一个软件开发套件,包含了操作系统、CUDA 工具包、cuDNN 库、TensorRT 库等组件,可以帮助您在 Jetson Xavier NX进行深度学习开发。您可以从 NVIDIA 官网下载并安装 JetPack SDK。 2. 下载 YOLOv5 源代码。您可以从 YOLOv5 的 GitHub 仓库下载最新的源代码。下载完成后,将源代码上传至 Jetson Xavier NX 上。 3. 安装依赖项。在 Jetson Xavier NX 上,您需要安装 Python 3、NumPy、PyTorch、OpenCV 等软件包。可以使用 pip 命令进行安装。例如,安装 PyTorch 可以使用以下命令: ``` pip install torch torchvision torchaudio ``` 4. 将 YOLOv5 模型转换为 TensorRT 格式。在 Jetson Xavier NX 上,可以使用 TensorRT 库对模型进行优化,从而提高推理速度。您需要使用 YOLOv5 源代码中提供的脚本将模型转换为 TensorRT 格式。例如,要将 YOLOv5s 模型转换为 TensorRT 格式,可以使用以下命令: ``` python3 models/export.py --weights yolov5s.pt --img 640 --batch 1 ``` 5. 运行目标检测程序。在 Jetson Xavier NX 上,可以使用 YOLOv5 源代码中提供的 detect.py 脚本运行目标检测程序。例如,要在图像中进行目标检测,可以使用以下命令: ``` python3 detect.py --weights yolov5s.torch --img 640 --conf 0.25 --source image.jpg ``` 其中,--weights 参数指定要加载的模型文件,--img 参数指定输入图像的大小,--conf 参数指定目标检测的置信度阈值,--source 参数指定输入图像的文件名。 希望这些步骤对您有所帮助! ### 回答2: Jetson Xavier NX是NVIDIA最新发布的低功耗高性能AI计算平台,被称为最强大的AI小型电脑,其搭载的芯片组拥有384个张量核心,达到了11TFlops的计算能力。YOLOv5是目前最先进的目标检测算法之一,能够在保持高准确率的同时实现快速的目标识别和定位。那么Jetson Xavier NXYOLOv5结合有哪些优势呢? 首先,Jetson Xavier NX的高性能和低功耗使得它非常适合运行YOLOv5算法,因为YOLOv5需要大量的计算资源和内存来进行目标检测和分类,而Jetson Xavier NX能够提供强大的AI计算能力和高速的数据传输,减少了运行YOLOv5算法时的时延。 其次,Jetson Xavier NX还具有较高的多任务处理能力和深度学习推理速度,使得它能够同时运行多个摄像头的视频流进行实时目标检测和追踪,而不需要降低图像处理的分辨率,从而更好地保持目标检测的准确率和实时性。 此外,Jetson Xavier NX还支持NVIDIA TensorRT和CUDA加速,这两种技术可以将训练好的神经网络的推理速度加速数倍,使得Jetson Xavier NX能够更快地处理复杂的目标检测任务和各种AI场景。 因此,Jetson Xavier NXYOLOv5的结合可以为安防、自动驾驶、智能交通等领域的应用提供更高效、更准确和更实时的解决方案。 ### 回答3: Jetson Xavier NX是英伟达推出的高性能边缘计算平台,搭载NVIDIA的Volta架构和Tensor Cores,支持AI推理、复杂的计算任务和图形渲染。而Yolov5是一种基于深度学习的目标检测算法。 Jetson Xavier NX搭载着NVIDIA的高效AI处理芯片,能够支持高效的AI推理,使得检测速度非常快,对于复杂的计算任务有着非常优秀的性能表现。而Yolov5则是基于深度学习算法的目标检测算法,相对于传统的算法有着更好的准确度和速度。 结合Jetson Xavier NXYolov5,我们可以使用Jetson Xavier NX作为高性能边缘计算平台进行目标检测应用的开发。使用Yolov5算法来进行目标检测,可以在保证准确度的前提下提高检测速度,达到更好的实时性能。 有些应用需要在机器上进行目标检测,但是机器的计算能力始终存在限制,这就需要像Jetson Xavier NX这样的高性能计算平台来支持更好的性能表现。使用Yolov5算法,可以在保证准确率的同时提高检测速度,让机器实现实时检测,以获得更好的应用体验。 总之,Jetson Xavier NXYolov5的结合可以在保证准确度的前提下提高目标检测的速度,使得应用具备更好的实时性能,具有非常广泛的应用价值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值