Jetson Xavier NX使用yolov5+deepsort实现CSI摄像头的目标跟踪

2023-05-16

文章目录

  • 安装过程
  • 运行效果
  • 用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 cv2
 

def 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'):  
            break
 
    cap.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 stream
    print(f'{i + 1}/{n}: {s}... ', end='')
    if 'youtube.com/' in s or 'youtu.be/' in s:  # if source is YouTube video
        check_requirements(('pafy', 'youtube_dl'))
        import pafy
        s = pafy.new(s).getbest(preftype="mp4").url  # YouTube URL
    s = eval(s) if s.isnumeric() else s  # i.e. s = '0' local webcam
    
    if 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摄像头的目标识别及采坑记录

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jetson Xavier NX使用yolov5+deepsort实现CSI摄像头的目标跟踪 的相关文章

  • Jetson Xavier NX使用yolov5+deepsort实现CSI摄像头的目标跟踪

    文章目录 安装过程运行效果用python代码来打开CSI摄像头实现CSI摄像头目标跟踪报错 AttributeError 39 NoneType 39 object has no attribute 39 shape 39 运行效果 参考文
  • Jetson Nano 4GB 要怎么供电? Jetson Nano 2GB呢?

    Jetson Nano 4GB 常使用的电源连接方式有两种 xff1a 1 DC Power Jack 5 5 2 1mm 5V 4A xff0c 需使用跳帽将脚位 J48 短路 图一红框处 xff0c 电源连接方式请参照图一蓝框处 若一切
  • jetson xavier nx安装ROS Melodic

    1 前期准备 打开系统设置 软件和更新 xff0c 确保图示的选项已选中 点击close xff0c 选择reload 在不同的教程里搜到的这一步都不同 xff0c 似乎没什么影响 xff0c 就很迷 2 设置你的源文件列表 设置计算机以接
  • NVIDIA Jetson NX使用教程3配置pytorch环境

    本节主要记录 xff0c 安装pytorch及torch vision 1 下载Pytorch 因为jetson属于arm架构的机器 xff0c 所以需要去nvidia的官网下载对应的安装包而不是pytroch的官网 官网链接 xff0c
  • Jetson TX2 入门 ——介绍

    暑假留校 xff0c 老师给我们拿了两块开发板 xff0c 一个是英伟达的Jetson TX2 xff0c 一个是up squared xff0c 让我们先熟悉开发板 xff0c 为明年的比赛做准备 这两个板子是前几届学长做比赛用过的 自己
  • 在Jetson Nano上编译FastDeploy

    1 C 43 43 库的编译 span class token function git span clone https github com PaddlePaddle FastDeploy git span class token bu
  • YoloV5 train.py 如何使用

    parser 参数详解 1 weights 初始化模型 有yolov5m yolov5s yolov5x yolov5l 如果为设置为空就是没有任何与训练模型 2 config 训练配置文件 yaml 文件 与预训练模型相对应 3 data
  • YOLOv5区域入侵检测【附完整代码以及视频演示】

    一 前期准备 首先你需要有一份yolov5的官方源码 并且能够找到其中的detect py文件即可 在检测过程中 有些项目不需要我们检测所有的区域 比如禁止区域的入侵检测 只需要检测制定规划出来的区域就可以 例如下图所示这样 在网上随便找的
  • Jetson AGX Xavier踩坑记录

    1 联网后 升级所有安装包 并且更新了一下系统 sudo apt get update 2 安装中文输入法 sudo apt get install fcitx googlepinyin 3 安装nano文本编辑器 比较喜欢这个文本编辑器
  • yolov5如何开启和关闭mosaic(马赛克)增强

    总结 将 hyp scratch yaml中的mosaic设置为0 表示关闭马赛克增强
  • 解决Xavier编译ROS工程中cv_bridge找不到的问题

    0 背景 Jetson 系列Xavier 系统18 04 刷机自带opencv4 1 1版本 普通机器安装18 04系统后会自带opencv3 2版本 ROS自18 04 Melodic 不再自带opencv 依赖系统opencv 因此ro
  • 通过Vitis Ai 3.0平台量化yolov5模型并部署到ZCU102板卡上相关问题求解!

    通过Vitis Ai 3 0平台量化yolov5模型并部署到ZCU102板卡上相关问题求解 这些天再通过Vitis Ai 3 0平台来量化yolov5模型的并且部署到zcu102板子上的时候一直遇到检测结果比较离谱的问题 因此想要发个贴请教
  • Yolov5训练自己的数据集

    本文介绍了如果通过Yolov5框架训练自己的数据集 主要内容包括数据集格式 数据集拆分方法 描述文件修改以及训练和测试方法 还没有搭建Yolov5环境的可以参考我上一篇博文 Yolov5目标检测环境搭建过程 Cuda Pytorch Yol
  • YOLOV5摔倒检测识别

    一 摔倒检测的实际意义 摔倒检测是一种人工智能技术 可用于监测和识别可能发生在老年人 幼儿 体育运动员等群体中的摔倒事件 在实际应用中 摔倒检测技术可以帮助本文 及时发现摔倒事件 通过监测设备和传感器 及时发现摔倒事件 可以避免因为无人发现
  • Ubuntu使用darknet实现YOLOv4-tiny预训练模型测试+训练自己的数据集+评估自己的模型

    文章目录 1 使用YOLOv4 tiny预训练模型 2 训练自己的数据集 2 1 建立yolov4 tiny数据格式 2 2 开始训练 2 3 多GPU训练 3 评估自己的模型 参考博客 YOLOv4 tiny的原理本文不做讲解 只有应用方
  • 基于Yolov5目标检测的物体分类识别及定位(一) -- 数据集原图获取与标注

    从本篇博客正式开始深度学习项目的记录 实例代码只会放通用的代码 数据集和训练数据也是不会全部放出 系列文章 基于Yolov5目标检测的物体分类识别及定位 一 数据集原图获取与标注 基于Yolov5目标检测的物体分类识别及定位 二 yolov
  • 基于 PyTorch实现YOLOv5

    目录 The First Article 前言 实现环境 基本流程 数据准备 建立模型 训练模型 模型评估 图片预测 视频预测 The First Article 前言 本文记录基于PyTorch实现Github作者ultralytics的
  • YOLOv5小目标检测(方法与评价)

    问题 当我们在对小目标数据集进行检测时 发现无论如何都有一些漏检的 其中我们也添加一些模块 以及其他的一些改进方法 如注意力 激活函数等等 结果始终不会令人满意 map也没有丝毫的提升 目的 增加对小目标的检测能力 不能产生漏检 自述 许多
  • yolov5量化部署(基于openvino和tensorrt)

    yolov5 openvino量化部署 首先 下载YOLOv5源码 安装YOLOv5和OpenVINO的python依赖 git clone https github com ultralytics yolov5 git pip insta
  • 有谁知道如何将 tkinter 网络摄像头连接到 Yolov5?

    现在我正在使用 Yolov5 进行我的小项目 我想将相机界面更改为 tkinter 网络摄像头打开 进行设计 带有本地相机代码的 tkinter 是 from tkinter import Tk Label Image import cv2

随机推荐

  • java的几种IO

    Java IO方式大体上可以分为三类 xff0c 基于不同的io模型可以简单分为同步阻塞的BIO 同步非阻塞的NIO和异步非阻塞的AIO IO又主要可以分为文件IO和网络IO 针对Java的网络IO模型 xff0c 可以看网络IO模型 xf
  • 哈希冲突和一致性哈希

    文章目录 哈希冲突处理哈希冲突1 开放地址法2 再散列法3 链地址法4 建立一个公共溢出区 一致性哈希普通 hash算法普通 hash 算法的缺陷 一致性哈希算法一致性 hash 算法的优点hash 环的倾斜与虚拟节点 哈希冲突 哈希函数又
  • Redis IO多路复用理解

    IO多路复用在Redis中的应用 Redis 服务器是一个事件驱动程序 xff0c 服务器处理的事件分为时间事件和文件事件两类 文件事件 xff1a Redis主进程中 xff0c 主要处理客户端的连接请求与相应 时间事件 xff1a fo
  • 分布式理论CAP,BASE

    什么是CAP理论 xff1f CAP理论指的是一个分布式系统最多只能同时满足一致性 xff08 Consistency xff09 可用性 xff08 Availability xff09 和分区容错性 xff08 Partition to
  • javaEE接收request参数以及输出结果到html页面

    1 引入需要的类 这里需要注意 xff0c servlet类不是jre自带的 xff0c 需要自己添加 添加相关类主要有以下两种方式 xff1a 下载servlet api jar xff08 tomcat自带 xff09 然后添加到cla
  • 西门子博途数据块(DB块)快速导入导出

    有些人可能会想用查表法计算CRC校验码 查表法效率和速度都很高 但是空间换时间 让你用几秒钟时间 把一张完整的表存入博途里 就算了你单身20年的手速估计也完成不了 想要几秒钟完成也不是不可以 就是导入别人的源文件 拿来主义当然块 继续上图
  • opencv4.0学习笔记

    目录 课程来源 xff1a 哔哩哔哩大学 第一节课 显示第一张图片 环境配置了一个早上 xff0c 到10 48分配置完毕 xff0c 有点难受 还好最后显示出第一张图片 include span class token operator
  • 程序人生

    http zhan renren com itonline from 61 template amp checked 61 true
  • 传感器的使用(一)-火焰传感器

    火焰传感器的介绍 1 工作电压 xff1a DC 3 3V 5V 2 灵敏度可调 xff08 可调电位器 xff09 3 工作温度 xff1a xff0d 10 xff0b 50 4 设有固定螺铨孔 xff0c 方便安装 5 探测角度 60
  • 传感器的使用(二)-温湿度传感器DHT11(HAL库实现)

    温湿度传感器的介绍 DHT11技术性能特征 工作电压范围 xff1a 3 3V 5 5V 工作电流 xff1a 平均0 5mA 输出 xff1a 单总线数字信号 测量范围 xff1a 湿度20 90 xff05 RH xff0c 温度0 5
  • Makefile详解及使用

    内容来自大丙老师的blog Makefile简介 linux环境下 xff0c 当用户编译文件过多的时候 xff0c 使用makefile可以帮助模块化编译文件 xff0c makefile是一个脚本文件 xff0c 根据规则 xff0c
  • QT绘制实时动态曲线——qcustomplot使用(二)

    在QT绘制实时动态曲线 qcustomplot使用 xff08 一 xff09 中 xff0c 介绍使用官方的demo实现动态实时曲线 官方代码移植 针对动态显示数据项目要求 xff0c 移植官方代码demo 开启绘图的函数 span cl
  • QT的多种功能使用记录

    设置控件的边角为圆角 xff1a border top left radius 设置左上角圆角 border top right radius 设置右上角圆角 border bottom left radius 设置左下角圆角 border
  • MYSQL之视图的使用

    视图的使用 使用视图的好处 1 简化select的字段 xff0c 方便管理 2 可以针对不同用户 xff0c 对视图进行不同的查看 也就是说可以做权限管理 3 视图的语法 CREATE VIEW MYTEST AS select 列车号
  • 模糊PID之matlab模糊控制器配置

    前言 使用模糊PID时 xff0c 需要对工具库进行配置 xff0c 模糊PID是由2个输入个3个输出组成 xff0c 输出是E和Ec xff0c 输出是Kp Ki和Kd 打开matlab后 xff0c 需要配置 MATLAB模糊配置 1
  • java url后面带sessionid_url中jsessionid的理解

    1 这是一个保险措施 因为Session默认是需要Cookie支持的 但有些客户浏览器是关闭Cookie的 这个时候就需要在URL中指定服务器上的session标识 也就是5F4771183629C9834F8382E23BE13C4C 用
  • stm32简介+gpio的C语言封装

  • 一些post请求和get请求的调用例子

    目录 post请求 1 http请求 无请求参数 请求包格式为application json 请求包包含若干字段 get请求 1 http请求 响应类型application zip 请求结果为下载一个zip的压缩文件 解压下载的压缩包
  • 80个Python经典资料(教程+源码+工具)汇总——下载目录

    大家好 xff0c 51CTO下载中心根据资料的热度和好评度收集了80个Python资料 xff0c 分享给Python开发的同学 内容包括1个Python专题 66个学习资料 7套Python源码和6个相关软件 附件较多 xff0c 无法
  • Jetson Xavier NX使用yolov5+deepsort实现CSI摄像头的目标跟踪

    文章目录 安装过程运行效果用python代码来打开CSI摄像头实现CSI摄像头目标跟踪报错 AttributeError 39 NoneType 39 object has no attribute 39 shape 39 运行效果 参考文