文章目录

  • 安装过程
  • 运行效果
  • 用python代码来打开CSI摄像头
  • 实现CSI摄像头目标跟踪
  • 报错: AttributeError: 'NoneType' object has no attribute 'shape'
  • 运行效果

参考文章: 基于YOLOv5和DeepSort的目标跟踪

安装过程

  1. 下载安装包: git clone https://github.com/mikel-brostrom/Yolov5_DeepSort_Pytorch.git
  2. 由于在上一篇文章Jetson Xavier NX使用Yolov5+DeepStream+TensorRT实现CSI摄像头的目标识别及采坑记录中, 已经安装过了torch和torchvision, 因此, 只要下载权重文件即可运行
  3. 参考这一篇文章: 基于YOLOv5和DeepSort的目标跟踪, 下载deepsort的权重文件ckpt.t7, 并放置在deep_sort/deep/checkpoint文件夹下, 而yolov5的权重文件放置在yolov5/weights文件夹下
  4. 下载图示的文件, 然后解压到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摄像头的目标跟踪相关推荐

  1. 19、Jetson Xavier NX使用yolov5对比GPU模型下的pt、onnx、engine 、 DeepStream 加速性能

    基本思想:手中有块Jetson Xavier NX开发板,难得对比一下yolov5在相同模型下,不同形式下的加速性能 一.在ubuntu20.04的基础上,简单做一下对比实验,然后在使用 Jetson ...

  2. Jetson Xavier NX部署Yolov5(GPU版)

    根据我自身的成功部署经验进行了总结,首先希望可以帮助到有需要的朋友们. 一.前期准备: 1.硬件准备: Jetson Xavier NX开发板(带128g内存条的EMMC版).跳线帽(杜邦线).mic ...

  3. 【模型部署】Jetson Xavier NX(eMMC)部署YOLOv5-5.0

    文章目录 前言 NVIDIA Jetson Jetson Xavier NX 版本区别(SD | eMMC) 规格参数 Jetpack4.6.1环境搭建 烧录系统(OS) SSD启动 SSD分区 设置 ...

  4. Jetson Xavier NX学习笔记(三)系统烧录+开机教程+YOLOv7环境搭建+错误总结(详细版)

    Jetson Xavier NX 系统烧录+开机教程+YOLOv7环境搭建+错误总结(详细版) 文章目录 Jetson Xavier NX 系统烧录+开机教程+YOLOv7环境搭建+错误总结(详细版) ...

  5. 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 ...

  6. 玩转NVIDIA Jetson Xavier NX

    最近入手了一块NVIDIA Jetson Xavier NX的板子,在此记录一下相关的记录 一.基础命令 基础信息查看 jetson_release 查看状态:sudo jtop 二.安装Tensor ...

  7. 使用Jetson Xavier NX 打开树莓派摄像头

    使用Jetson Xavier NX 打开树莓派摄像头Pi cam Nvidia推出的Jetson系列是将现代AI计算能力与嵌入式系统完美结合的产品,虽然只是体积很小的arm架构的开发板,却有着跟PC ...

  8. 沥拓科技 Jetson产品系列Jetson Xavier NX

    欢迎大家来到AI的世界,在这里呢,小编来给大家介绍一款JETSON系列的新产品吧, 体型超小的模组系统 (SOM),适用于嵌入式系统和边缘系统,可为边缘系统提供超级计算机性能,可以并行运行现代神经网络 ...

  9. NVIDIA英伟达jetson xavier nx核心板模块如何组装散热组件

    NVIDIA英伟达jetson xavier nx核心板模块 XAVIER 的性能.NANO 的大小. Jetson Xavier NX 只有 70 毫米 x 45 毫米,可以将 NVIDIA Xav ...

最新文章

  1. Javascript中的陷阱大集合【译】
  2. python字符串应用
  3. 点击编辑框全选内容java_Android 中使用EditText 点击全选再次点击取消全选功能
  4. 分享一个数据产品经理的PRD
  5. python之OrderedDict
  6. 达观杯文本智能处理(6)
  7. 局域网屏幕共享_我把手机、平板、笔记本,变成了电脑的第二屏幕。
  8. 基于TencentOS-tiny实现甲醛传感器(英国达特 WZ-S)数据解析思路及实现
  9. 快速上手ECharts,让你的数据不再冷冰!
  10. Java bean中字段命名潜规则,前两个字母要么都大写,要么都小写
  11. 广州某IT公司HR招开发:“不加班的都是垃圾 ”
  12. 杨绛十句话,最好背下来
  13. 脱颖而出 你凭什么得到一份好工作
  14. 917. 仅仅反转字母
  15. Good Luck!(kmp算法)
  16. 解决U盘变为2m大小的问题
  17. 大学四年因为知道了这30个超强Java自学网站,毕业直接让我月薪过万!
  18. 汇编语言 VSCode编辑器的下载、安装与配置使用
  19. Python 图片2
  20. NOIP信息学奥赛_普及组第一课--我是谁

热门文章

  1. ECharts教程(未完)
  2. 数字图像处理(MATLAB版)学习笔记(1)——第1章 绪言
  3. 计算机应用基础前言,大学计算机基础
  4. 小程序云开发实现微信支付完整代码
  5. 打开win7任务管理器的六种方法
  6. 软工1816 · 作业(九)团队现场编程实战
  7. 【Meetup讲师】您有一张社区认证讲师证书未领取,点击领取!
  8. Fate原理(面试必备)
  9. Yolov5训练模型没有框
  10. USACO-Preface Numbering