ffmpeg tensorrt c++多拉流硬解码yolov5 yolov7 bytetrack 人流追踪统计 硬件编码推流直播

这篇具有很好参考价值的文章主要介绍了ffmpeg tensorrt c++多拉流硬解码yolov5 yolov7 bytetrack 人流追踪统计 硬件编码推流直播。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ffmpeg拉流硬解码yolov5 bytetrack 人流追踪统计 硬件编码推流直播
编程语言C++,所以环境搭建可能比较复杂,需要有耐心。

我的机器配置

CPU:I5 12490F
GPU:RTX2060 6GB
RAM:16x2 GB双通道
我测试运行可以25路(很极限了),20路比较稳,不会爆显存。
多路编码推流有个问题,就是NVIDIA对消费级显卡编码有限制一般是3路吧,但是这个可以破解的,很简单。照着readme做就好了。
https://github.com/keylase/nvidia-patch

效果

榨干显卡
..ny,.,nx,c++,计算机视觉,目标跟踪,深度学习,人工智能
如果不推流的话3080TI可以跑60路。
..ny,.,nx,c++,计算机视觉,目标跟踪,深度学习,人工智能
..ny,.,nx,c++,计算机视觉,目标跟踪,深度学习,人工智能
..ny,.,nx,c++,计算机视觉,目标跟踪,深度学习,人工智能

环境变量大家参考一下

..ny,.,nx,c++,计算机视觉,目标跟踪,深度学习,人工智能
PS:cuda\bin 是cudnn的目录。

重要的事情说三遍

感谢杜老
感谢杜老
感谢杜老

一:整体架构:

(1) ffmpeg拉流RTSP,RTMP,硬解码,如果有nvidia显卡会根据流的编码格式选择对应的硬件解码器。
(2)推理框架使用的TensorRT8,所以第一次使用的时候,程序会building 模型,因为TensorRT的模型是一卡一模型的。
(3)ffmpeg推流,拿到推理和追踪之后的结果,opencv画框,然后丢给ffmpeg来找对应的编码器编码推流出去。
(4)Nginx服务器配置和flv.js插件。

二:所需的环境及对应库的版本

(1)系统Windows 11,显卡RTX 2060 6GB显存,驱动版本 471.11 cuda版本 11.4 ,VS2022(这里其实建议安装19,22的话nvidia的tenosrrt不支持22,所以到时候需要改一下nvidia对vs的版本判断,都是小问题)。PS:(先装vs再装cuda)
(2)
OpenCV 4.6.0(这个其实问题不大)
TensorRT 8.2.4 (这个很重要 自己看着来吧)
Protobuf 3.11.4 (严格一致)
eigen 3.4.0 (尽量一样)
ffmpeg 4.4 (最好保持一致。不要用5.0以上的API已经变了)

PS:其实Protobuf ,如果你装有Python的TensorFlow会自带Protobuf 的库,这个时候避免冲突你可以把Protobuf 3.11.4的库在环境变量里面提前一点

四:Nginx

代码目录压缩包解压运行即可。
推拉流的地址,但是这个地址不能用浏览器直接播放,可以用VLC media player,PotPlayer(这个更强大) 等软件验证框架是否搭建成功。
rtmp://你本机的IP:1936/live/home
这里说一下为什么用1936 本来rtmp默认是1935但是拉流也是rtmp使用1935,为避免端口堵塞,改用1936。
如果手头没有摄像头流的话 安卓手机可以下载一个APP IP摄像头可以来充当摄像头流测试

五:yolov5 6.0模型导出修改

line 55 forward function in yolov5/models/yolo.py

bs, _, ny, nx = x[i].shape # x(bs,255,20,20) to x(bs,3,20,20,85)

x[i] = x[i].view(bs, self.na, self.no, ny, nx).permute(0, 1, 3, 4, 2).contiguous()

modified into:

bs, _, ny, nx = x[i].shape # x(bs,255,20,20) to x(bs,3,20,20,85)
bs = -1
ny = int(ny)
nx = int(nx)
x[i] = x[i].view(bs, self.na, self.no, ny, nx).permute(0, 1, 3, 4, 2).contiguous()

line 70 in yolov5/models/yolo.py

z.append(y.view(bs, -1, self.no))

modified into:

z.append(y.view(bs, self.na * ny * nx, self.no))

############# for yolov5-6.0 #####################

line 65 in yolov5/models/yolo.py

if self.grid[i].shape[2:4] != x[i].shape[2:4] or self.onnx_dynamic:

self.grid[i], self.anchor_grid[i] = self._make_grid(nx, ny, i)

modified into:

if self.grid[i].shape[2:4] != x[i].shape[2:4] or self.onnx_dynamic:
self.grid[i], self.anchor_grid[i] = self._make_grid(nx, ny, i)

disconnect for pytorch trace

anchor_grid = (self.anchors[i].clone() * self.stride[i]).view(1, -1, 1, 1, 2)

line 70 in yolov5/models/yolo.py

y[…, 2:4] = (y[…, 2:4] * 2) ** 2 * self.anchor_grid[i] # wh

modified into:

y[…, 2:4] = (y[…, 2:4] * 2) ** 2 * anchor_grid # wh

line 73 in yolov5/models/yolo.py

wh = (y[…, 2:4] * 2) ** 2 * self.anchor_grid[i] # wh

modified into:

wh = (y[…, 2:4] * 2) ** 2 * anchor_grid # wh
############# for yolov5-6.0 #####################

line 52 in yolov5/export.py

torch.onnx.export(dynamic_axes={‘images’: {0: ‘batch’, 2: ‘height’, 3: ‘width’}, # shape(1,3,640,640)

‘output’: {0: ‘batch’, 1: ‘anchors’} # shape(1,25200,85) 修改为

modified into:

torch.onnx.export(dynamic_axes={‘images’: {0: ‘batch’}, # shape(1,3,640,640)
‘output’: {0: ‘batch’} # shape(1,25200,85)

浏览器直接播放的插件:

https://github.com/bilibili/flv.js文章来源地址https://www.toymoban.com/news/detail-630361.html

到了这里,关于ffmpeg tensorrt c++多拉流硬解码yolov5 yolov7 bytetrack 人流追踪统计 硬件编码推流直播的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • TensorRT量化实战课YOLOv7量化:YOLOv7-PTQ量化(一)

    新增手动插入 QDQ 节点以及手动 initialize 手写 AI 推出的全新 TensorRT 模型量化实战课程,链接。记录下个人学习笔记,仅供自己参考。 该实战课程主要基于手写 AI 的 Latte 老师所出的 TensorRT下的模型量化,在其课程的基础上,所整理出的一些实战应用。 本次课程为 YOLOv7 量化实

    2024年02月08日
    浏览(43)
  • TensorRT量化实战课YOLOv7量化:pytorch_quantization介绍

    手写 AI 推出的全新 TensorRT 模型量化实战课程,链接。记录下个人学习笔记,仅供自己参考。 该实战课程主要基于手写 AI 的 Latte 老师所出的 TensorRT下的模型量化,在其课程的基础上,所整理出的一些实战应用。 本次课程为 YOLOv7 量化实战第一课,主要介绍 TensorRT 量化工具箱

    2024年02月07日
    浏览(49)
  • 【YOLOv5】LabVIEW+TensorRT的yolov5部署实战(含源码)

    ‍‍🏡博客主页: virobotics的CSDN博客:LabVIEW深度学习、人工智能博主 🎄所属专栏:『LabVIEW深度学习实战』 🍻上期文章: 手把手教你使用LabVIEW TensorRT实现图像分类实战(含源码) 📰如觉得博主文章写的不错或对你有所帮助的话,还望大家多多支持呀! 欢迎大家✌关注、

    2024年02月14日
    浏览(35)
  • YOLOv5 Tensorrt Python/C++部署

    https://www.bilibili.com/video/BV113411J7nk?p=1 https://github.com/Monday-Leo/Yolov5_Tensorrt_Win10 基于 Tensorrt 加速 Yolov5 6.0 支持 Windows10 支持 Python/C++ Tensorrt 8.2.1.8 Cuda 10.2 Cudnn 8.2.1( 特别注意需安装两个cuda10.2补丁 ) Opencv 3.4.6 Cmake 3.17.1 VS 2017 GTX1650 从yolov5 release v6.0下载.pt模型,这里以yolov5s.pt为例。

    2024年01月21日
    浏览(50)
  • 【TensorRT】基于C#调用TensorRT 部署Yolov5模型 - 上篇:构建TensorRTSharp

      NVIDIA TensorRT™ 是用于高性能深度学习推理的 SDK,可为深度学习推理应用提供低延迟和高吞吐量。详细安装方式参考以下博客: NVIDIA TensorRT 安装 (Windows C++)   前文中已经介绍了在C++中利用TensorRT 部署Yolov5模型,但在实际应用中,经常会出现在C#中部署模型的需求,目前T

    2023年04月24日
    浏览(52)
  • 【目标检测】YOLOv5推理加速实验:TensorRT加速

    前两篇博文分别讨论了YOLOv5检测算法的两种加速思路:采用多进程或批量检测,不过效果均收效甚微。本问将讨论使用TensorRT加速以及半精度推理/模型量化等优化策略对检测加速的实际影响。 测试图片分辨率:13400x9528 GPU:RTX4090 Cuda:11.7 YOLOv5版本:最新版(v7.0+) 检测策略:将

    2024年02月05日
    浏览(57)
  • 改进的yolov5目标检测-yolov5替换骨干网络-yolo剪枝(TensorRT及NCNN部署)

    2022.10.30 复现TPH-YOLOv5 2022.10.31 完成替换backbone为Ghostnet 2022.11.02 完成替换backbone为Shufflenetv2 2022.11.05 完成替换backbone为Mobilenetv3Small 2022.11.10 完成EagleEye对YOLOv5系列剪枝支持 2022.11.14 完成MQBench对YOLOv5系列量化支持 2022.11.16 完成替换backbone为EfficientNetLite-0 2022.11.26 完成替换backbone为

    2024年01月17日
    浏览(71)
  • 跑通官方的yolov7-tiny实验记录(yolov7-tiny可作为yolov5s的对比实验网络)

    官方YOLOv7 项目地址:https://github.com/WongKinYiu/yolov7 如果想设置早停机制,可以参考这个链接:yolov7自动停止(设置patience)且输出最优模型时的PR图(test best.py) 学习 train.py 中的参数含义,可参考手把手调参最新 YOLOv7 模型 训练部分 - 最新版本(二) 学习 detect.py 中的参数含

    2023年04月18日
    浏览(45)
  • 【DL系列】YOLOv5、YOLOv7断点续训

    前言 模型训练过程中可能由于网络问题、或者服务器断开等问题导致模型训练意外出现中断,或者是由于自己主动中断训练等各种情况。 这时候就需要断点续训,即接着之前已经训练好的weights.pt和epochs重新开始训练。还需要训练日志也重新续接上,好在wandb等训练可视化的

    2024年02月05日
    浏览(42)
  • 利用python版tensorRT进行推理【以yolov5为例】

    上一篇文章中已经详细叙述了如何用tensorRT将onnx转为engine【利用python版tensorRT导出engine【以yolov5为例】_爱吃肉的鹏的博客-CSDN博客】。 本篇文章将继续讲解trt的推理部分。 与之前一样,在讲解之前需要先介绍一些专业术语,让大家看看这些内置函数都有什么功能。 1.Binding含

    2024年02月12日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包