Jetson Xavier NX使用yolov5+deepsort实现CSI摄像头的目标跟踪
文章目录
- 安装过程
- 运行效果
- 用python代码来打开CSI摄像头
- 实现CSI摄像头目标跟踪
- 报错: AttributeError: 'NoneType' object has no attribute 'shape'
- 运行效果
参考文章: 基于YOLOv5和DeepSort的目标跟踪
安装过程
- 下载安装包:
git clone https://github.com/mikel-brostrom/Yolov5_DeepSort_Pytorch.git
- 由于在上一篇文章Jetson Xavier NX使用Yolov5+DeepStream+TensorRT实现CSI摄像头的目标识别及采坑记录中, 已经安装过了torch和torchvision, 因此, 只要下载权重文件即可运行
- 参考这一篇文章: 基于YOLOv5和DeepSort的目标跟踪, 下载deepsort的权重文件ckpt.t7, 并放置在deep_sort/deep/checkpoint文件夹下, 而yolov5的权重文件放置在yolov5/weights文件夹下
- 下载图示的文件, 然后解压到yolov5的文件夹下即可 (这个可以自动下载yolov5的权重文件)
运行效果
运行指令:
python3 track.py --source /opt/nvidia/deepstream/deepstream-5.0/samples/streams/sample_1080p_h264.mp4 --show-vid
说明: 在Jetson Xavier NX下, 运行的速度大概在每帧图片0.05秒的样子, 速度还是比较快的
用python代码来打开CSI摄像头
新建一个
test_csi.py
文件, 然后使用python3 test_csi.py
来运行下面的程序, 启动CSI摄像头
# coding=utf-8
import cv2def show_camera():cap = cv2.VideoCapture("nvarguscamerasrc ! video/x-raw(memory:NVMM), width=1280, height=720, format=(string)NV12, framerate=(fraction)60/1 ! nvvidconv flip-method=0 ! video/x-raw, width=1280, height=720, format=(string)BGRx ! videoconvert ! video/x-raw, format=(string)BGR ! appsink", cv2.CAP_GSTREAMER)while cap.isOpened():flag, img = cap.read()cv2.imshow("CSI Camera", img)kk = cv2.waitKey(1)if kk == ord('q'): breakcap.release()cv2.destroyAllWindows()if __name__ == "__main__":show_camera()
问题: 程序运行之后不报错, 但是没有打开摄像头的界面, 且没有任何输出;
解决方案:
- 先查看python3对应的opencv版本:
python3 -c "import cv2; print(cv2.__version__)"
- 我一开始的版本是4.5.3, 改为3.3.1的版本就可以了
- 因此: 用
python3 -c "import cv2; print(cv2.__file__)"
查看4.5.3的安装路径, 然后直接删除即可 (需确保已经安装过3.3.1版本)
实现CSI摄像头目标跟踪
当用上面的程序可以正常地打开摄像头后, 为了用CSI摄像头实现目标跟踪, 需要将
yolov5/utils/dataset.py
文件进行更改, 主要就是将cv2.VideoCapture(0)改为:
cap = cv2.VideoCapture("nvarguscamerasrc ! video/x-raw(memory:NVMM), width=1280, height=720, format=(string)NV12, framerate=(fraction)60/1 ! nvvidconv flip-method=0 ! video/x-raw, width=1280, height=720, format=(string)BGRx ! videoconvert ! video/x-raw, format=(string)BGR ! appsink", cv2.CAP_GSTREAMER)
这里为了方便, 给出修改的部分
dataset.py
文件
for i, s in enumerate(sources): # index, source# Start thread to read frames from video streamprint(f'{i + 1}/{n}: {s}... ', end='')if 'youtube.com/' in s or 'youtu.be/' in s: # if source is YouTube videocheck_requirements(('pafy', 'youtube_dl'))import pafys = pafy.new(s).getbest(preftype="mp4").url # YouTube URLs = eval(s) if s.isnumeric() else s # i.e. s = '0' local webcamif s == 0:print('\nthis is a CSI camera')cap = cv2.VideoCapture("nvarguscamerasrc ! video/x-raw(memory:NVMM), width=1280, height=720, format=(string)NV12, framerate=(fraction)60/1 ! nvvidconv flip-method=0 ! video/x-raw, width=1280, height=720, format=(string)BGRx ! videoconvert ! video/x-raw, format=(string)BGR ! appsink", cv2.CAP_GSTREAMER)else:cap = cv2.VideoCapture(s)assert cap.isOpened(), f'Failed to open {s}'
报错: AttributeError: ‘NoneType’ object has no attribute ‘shape’
参考文章: https://blog.csdn.net/weixin_42899627/article/details/115129085
解决方案: 重启 nvargus-daemon
sudo systemctl restart nvargus-daemon
运行效果
由于模型推理速度和准确性之间存在影响, 为了满足推理速度和准确性的需求, 可以选择 Yolov5 合适的模型进行自动下载
执行指令:
python3 track.py --source 0 --yolo_weights yolov5s.pt --img 640 --show-vid
(最小的模型)
python3 track.py --source 0 --yolo_weights yolov5x6.pt --img 1280 --show-vid
(最大的模型)
说明一下:
- 用yolov5s.pt的话 (最小14.8MB) 大约为20帧每秒
- 使用yolov5x.pt (178.5MB) 大约9~10帧每秒
- 而使用yolov5x6.pt (284.5MB) 大约就只有3~4帧每秒了, 且运行比较卡顿
- 下面的图片, 我采用的是yolov5s.pt这个权重文件
- 另外, 用CSI摄像头检测的效果没有检测mp4文件的效果好
上一篇文章: Jetson Xavier NX使用Yolov5+DeepStream+TensorRT实现CSI摄像头的目标识别及采坑记录
Jetson Xavier NX使用yolov5+deepsort实现CSI摄像头的目标跟踪相关推荐
- 19、Jetson Xavier NX使用yolov5对比GPU模型下的pt、onnx、engine 、 DeepStream 加速性能
基本思想:手中有块Jetson Xavier NX开发板,难得对比一下yolov5在相同模型下,不同形式下的加速性能 一.在ubuntu20.04的基础上,简单做一下对比实验,然后在使用 Jetson ...
- Jetson Xavier NX部署Yolov5(GPU版)
根据我自身的成功部署经验进行了总结,首先希望可以帮助到有需要的朋友们. 一.前期准备: 1.硬件准备: Jetson Xavier NX开发板(带128g内存条的EMMC版).跳线帽(杜邦线).mic ...
- 【模型部署】Jetson Xavier NX(eMMC)部署YOLOv5-5.0
文章目录 前言 NVIDIA Jetson Jetson Xavier NX 版本区别(SD | eMMC) 规格参数 Jetpack4.6.1环境搭建 烧录系统(OS) SSD启动 SSD分区 设置 ...
- Jetson Xavier NX学习笔记(三)系统烧录+开机教程+YOLOv7环境搭建+错误总结(详细版)
Jetson Xavier NX 系统烧录+开机教程+YOLOv7环境搭建+错误总结(详细版) 文章目录 Jetson Xavier NX 系统烧录+开机教程+YOLOv7环境搭建+错误总结(详细版) ...
- Jetson Xavier NX (11) -- NX介绍与系统烧录
目录 1. Jetson Xavier NX介绍 1.1 NX 性能 1.2 硬件总览 1.3 相关资料 2. 系统烧录 2.1 下载官方镜像 2.2 格式化SD卡 2.3 烧录系统 3 测试 1 ...
- 玩转NVIDIA Jetson Xavier NX
最近入手了一块NVIDIA Jetson Xavier NX的板子,在此记录一下相关的记录 一.基础命令 基础信息查看 jetson_release 查看状态:sudo jtop 二.安装Tensor ...
- 使用Jetson Xavier NX 打开树莓派摄像头
使用Jetson Xavier NX 打开树莓派摄像头Pi cam Nvidia推出的Jetson系列是将现代AI计算能力与嵌入式系统完美结合的产品,虽然只是体积很小的arm架构的开发板,却有着跟PC ...
- 沥拓科技 Jetson产品系列Jetson Xavier NX
欢迎大家来到AI的世界,在这里呢,小编来给大家介绍一款JETSON系列的新产品吧, 体型超小的模组系统 (SOM),适用于嵌入式系统和边缘系统,可为边缘系统提供超级计算机性能,可以并行运行现代神经网络 ...
- NVIDIA英伟达jetson xavier nx核心板模块如何组装散热组件
NVIDIA英伟达jetson xavier nx核心板模块 XAVIER 的性能.NANO 的大小. Jetson Xavier NX 只有 70 毫米 x 45 毫米,可以将 NVIDIA Xav ...
最新文章
- Javascript中的陷阱大集合【译】
- python字符串应用
- 点击编辑框全选内容java_Android 中使用EditText 点击全选再次点击取消全选功能
- 分享一个数据产品经理的PRD
- python之OrderedDict
- 达观杯文本智能处理(6)
- 局域网屏幕共享_我把手机、平板、笔记本,变成了电脑的第二屏幕。
- 基于TencentOS-tiny实现甲醛传感器(英国达特 WZ-S)数据解析思路及实现
- 快速上手ECharts,让你的数据不再冷冰!
- Java bean中字段命名潜规则,前两个字母要么都大写,要么都小写
- 广州某IT公司HR招开发:“不加班的都是垃圾 ”
- 杨绛十句话,最好背下来
- 脱颖而出 你凭什么得到一份好工作
- 917. 仅仅反转字母
- Good Luck!(kmp算法)
- 解决U盘变为2m大小的问题
- 大学四年因为知道了这30个超强Java自学网站,毕业直接让我月薪过万!
- 汇编语言 VSCode编辑器的下载、安装与配置使用
- Python 图片2
- NOIP信息学奥赛_普及组第一课--我是谁