(二)videopipe的代码结构梳理

有以下几个C++的问题:

  1. 为什么使用多继承?多继承有什么好处?什么是多继承?

一、videopipe大纲

资料汇总:

  • 重点:
  • chap0:如何将图像算法应用到具体视频数据/视频业务上?视频结构化框架的工作原理和流程?视频结构化有哪些好处?有哪些应用场景?
    • 视频结构化有哪些技术栈?掌握分类/检测/特征编码等图像算法在视频结构化中的应用;
    • 如何开发行为分析类应用?如何开发检索比对类应用;掌握原型开发;掌握视频结构化框架的实现原理和使用方法。
  • chap1:结构化数据的特点:可以直接理解,可查询/对比/分类/计算等操作,如表格类数据;非结构化的数据无法查询/对比/分类/计算,如视频/语音/图片/文字
    • 现实世界大部分数据都是非结构化的:如视频网址/短视频平台/监控安防/直播/无人机/门禁系统/电子警察/车载系统
    • 视频结构化的好处:AI自动理解。CV+NLP算法实现视频结构化→结构化数据→行为分析;
      • 视频结构化的直接好处:重量级的非结构化数据→轻量级结构化数据
      • 视频结构化的终极好处:视频可以被查询/被比对/分类/被计算,进而被机器理解,减轻人工负担。
      • 视频结构化的应用场景:前述视频网址/短视频平台/监控安防/直播/无人机/门禁系统/电子警察/车载系统
      • 视频结构化应用的常见架构:软件层面→业务平台➕算法服务;硬件层面→后端智能分析/边缘智能分析/前端智能分析;视算力下沉的程度决定;服务器分析/边缘设备分析/板卡分析
  • chap2:视频结构化主要技术栈:视频接入、解码、推理、跟踪、数据中介、OSD叠加、视频编码、视频推流
    管道其实就是把这些环节穿起来;一个环节只负责感意见视频;这样的好处就是①职责单一,可以模块化/插件化,一个插件只做一个事情,把所有插件穿起来就是一个完整的流程。基本上视频结构化视频分析都是这样的框架/流模式。
    • 3.1 主要技术栈——视频接入src node:枪机/球机/NVR/sensor/file等;视频流接入:rtsp/私有协议/rtmp/取流模块;sensor是VI模块;未知视频流是socket模块
      NVR网络视频录像存视频,外加还有一个分发的能力——视频分发平台、视频存储平台、视频管控平台。
      • 前端智能、边缘智能、后端智能;前置和边缘/后端有点差异,技术栈是有差异的。
    • 3.2 视频解码:镜头感光→sensor光信号转电信号→主控板图片转视频流/压缩编码→网络传输→解码模块→显式;
      • 解码模块:ffmepg/gstreamer/nvidia video codec sdk等 硬件加速平台
      • 解码是一个相当耗时的操作,CPU上解码的话,性能跟不上。爱奇艺的CPU I9已经算好的了,解码那种高清的可能也就只能解记录;几十路这样数量级的高清视频流的解码,就必须要使用一些专门的赢家你加速,gpu npu,专门带有这种编解码的模块。
      • 为什么要将图片压缩成视频?压缩的主要功能一个是方便传输,第二个方便存储。图片是一个体积非常大的数据,把图片编码压缩成视频流后体积总体是小一些。
      • 常见的图像推理算法:分类、检测、特征编码/识别、分割、超分、换脸;算法的推理加速库如何工作?
    • 3.3 图像算法推理
      • 怎么提升推理环节的性能?——这个非常关键。推理显存GPU;CPU内存
        每次都是图像/视频流这样重量级的数据在GPU和CPU之间倒腾,copy to copy from来回折腾了三次。这个是非常抵消的一个操作;那怎么去提升性能呢
      • 只有跟踪在CPU上,跟踪的数据是结构化的数据,是轻量级的,无所谓。
      • 板卡GPU和CPU是独立的,内存和显存是独立的;中间是copy to copy from的操作,中间通过PCIE的这种插槽的方式去做数据传输;所以可能会有一些带宽的限制。
      • 还有一种像jetson这种板卡,它的物理显存和物理内存是统一的,就不涉及这种copy to copy from这种操作,直接是共享的;相当于物理层面就是共享的。需要注意。
    • 3.4 目标跟踪:跟踪算法效果好坏的主要指标是:ID switch
      还有就是算法速度/实时性也是指标。
    • 3.5 数据中介
    • 3.6 OSD叠加
      1. OSD叠加的主要目的是什么?方便调试;自然直观。检测框+跟踪框+行为分析等等。方便调试结果直观。
      2. OSD叠加可以叠加哪些信息?
      3. 怎么提升OSD的绘图性能?——GPU上完成绘图,整个流程只拷贝两次。性能提升非常快的。cuda opencv有自带加速版本的绘图,Nvidia的板子可以直接用。
        板卡有对应的加速绘图的API的;用对应的API加速就可以在显存里面画图了;绘图后就直接
        编码;编码完后再拷贝下来
    • 3.7 视频编码:图片往外推太大了;要把图片编码为视频流传出去;输出就是字节流/视频流。有一些对应的SDK工具,ffmpeg/gstreamer
      1. 编码比解码更消耗性能:例如单CPU可以解码10路,可能只能编码2路。大概是这样的一个比例。
      2. 编码控制:常见三种控制,分辨率、帧率、码率。
        1. 高清1080p,准高清720p;
        2. 帧率一般25fps;但是拍快速运动的物体,可能需要一些高帧率相机如60fps,120fps;高帧率相机不仅对硬件有要求,对算法也有要求。
        3. 码率:1s秒钟包含了多少数据;8M/4M/1M.512k/32k,32k可能视频就不是很清晰了。
        4. 高清视频-码率4M/8M
        5. 转码的流程:把一种分辨率的视频转为另一种分辨率;解码和编码的组合。——视频上云上,有这些转码的需求;博主上传高清视频,手机上看128k CIF分辨率就可以了。就是直播
    • 3.8 视频推流:
      1. 录像和预录像:
      2. 原始录像和OSD录像的差异:
        1. 原始录像几乎不消耗硬件性能。时钟技术——不精准。一般使用这个原始录像,不消耗硬件性能;同时录10路的话,基本上一般的硬件是扛不住的,CPU肯定更扛不住了;GPU也会影响一些环节;所以最好不要涉及到编码,涉及编码的环节最好避免。
        2. OSD录像:图片可能是压缩过的。需要再次编码,非常消耗性能。
  • chap3
  • chap4 主要硬件平台
    • 5.1 认识硬件加速平台:硬件解码、硬件编码、推理、OSD绘图叠加,都需要用到硬件加速。
      为什么需要硬件加速?加速卡有哪些?加速卡有自己的显存。
      • 英伟达的GPU显卡分两级:消费级2080ti和数据中心级算力卡T4。
      • NPU 神经网络加速处理单元
      • 谷歌的TPU:tensorr处理单元、张量处理。
      • 为什么CPU不够用?为什么深度学习AI模型推理时需要AI加速?编解码的时候为什么一定要用额外的硬件如GPU这种硬件来加速?
      • 数据在软硬设备中的交换的过程。99%的数据/程序都是在CPU软的这一侧。
    • 5.5 瑞芯微平台:与nvidia、华为、寒武纪有非常大的差异。硬件主要分为三大块:端侧、边缘侧、云端。
      • 瑞芯微没有云端的硬件产品;主要集中在消费级的设备、智能前端、边缘侧。
  • chap5 行为分析类应用
    • 5.4 目标停留/逗留
      • 什么时候需要判断目标停止/逗留?——违停、事故撞车导致停车、可疑人员逗留/闲逛。
      • 判断流程——
  • chap6 检索比对类应用
  • chap7 视频结构化技术应用难点
  • chap8 实战类准备
    • 生产者消费者模式
    • 维持框架持续运行的动力(泵结构)
    • 保证框架扩展的能力(接口和回调)
  • chap9 认识框架
  • chap10 使用框架

1. 为什么选择gstreamer不选择ffmpeg?

  • gst主要使用起来方便,但是二次开发难,尤其gst硬件加速的部分大部分人都搞不了;gst国内资料少,看官方文档也不知所以
  • gst的性能还可以;但opencv封装的gst后,性能变差;随便创建一个videocapture,open后什么都不敢,top看线程久涨了十几个。

  • 重写videocapture类后,每路流2个线程,CPU解码40路1080p视频,一共121个线程。(40*2+40*1消费线程+1主线程)——以后都将改为基于ffmpeg的了。

  • 为什么Deepstream和mxVision性能高一些,有什么特殊优化吗?——答:直接的数据搬运少了

  • 资源建议:b站北小才的视频智能检测,C++。

  • 硬件编码订阅rtmp流,卡顿。——答:看下pipeline管道图。

2. 关于trition是什么?

  • 21
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值