多媒体
文章平均质量分 71
papaofdoudou
我的藏经阁.
展开
-
一种多媒体框架中的零buffer拷贝实现机制
BUFFER管理是多媒体框架设计实现中的核心任务,在常见的多媒体框架,比如FFMPEG,GST等中,BUFFER管理的代码实现都是复杂且代码量非常大的部分。从某种意义上说,多媒体应用的核心在于BUFFER管理,一个高效易用的BUFFER管理框架不但可以提供友好的开发模型,而且还可以最大限度的挖掘VPU的计算能力,提高多媒体应用的效率。为什么可以通过零拷贝来优化多媒体框架?原创 2022-08-13 15:40:59 · 823 阅读 · 1 评论 -
AMD HSA 异构计算架构和AMD-KFD内核驱动&NVIDIA内核驱动
AMD好像全部都开源了,听在AMD工作过的朋友讲,AMD为了开源,几乎将整个KMD代码全部重写,从这个角度看,AMD的开源热情甩NVIDIA几条街。原创 2022-11-12 11:35:19 · 1372 阅读 · 1 评论 -
基于ubuntu18.04.6的gstreamer-plugin开发环境搭建
开发环境下载压缩包,我们使用1.21.1版本的插件和gstearmer核心软件包。安装依赖GSL和GMP库需要从源码开始编译安装,按照./configure && make && make install 三部操作即可安装。原创 2022-10-23 00:28:06 · 1815 阅读 · 1 评论 -
DeadLock(死锁)问题的可视化分析方法
预防死锁的规则,给定所有互斥操作一个全序(至于什么是全序可以去查看集合论教材),用人话说就是所有的锁按照一个类似于自然数那样的严格顺序去获取。这样的获取方式就是安全的。扩展到三个执行流的情况,执行流超过三个涉及到高维空间就很难想象了,就以三个执行流1把锁为例说明问题,它的禁止区域是一个长方体。程序按照执行流的多寡可以按照如下图进行划分:给与多个独立的硬件执行流,有些并发程序可以变成并行程序,但并不是所有的并发程序都可以变成并行程序。原创 2022-07-22 18:08:51 · 1066 阅读 · 0 评论 -
OPENCV图像直方图以及均值化
直方图是我们在照片中使用来查看图像中每个值有多少像素,照片中的每个像素的值都从0(黑色)到255(白色),图的左侧代表音阶的暗色调,右侧代表较亮的色调。在彩色摄影中,每个像素对于每种颜色都有其自己的值(0-255)。图片中的直方图显示了每种颜色(红色,蓝色和绿色)的像素值分布.图像直方图,也叫灰度直方图,反映了图像像素分布的统计特征,是图像处理中简单有效的工具,图像直方图广泛地应用于图像处理的各个领域,如:特征提取,图像匹配,灰度图像的阈值分割,基于颜色的图像检索以及图像分类。图像的直方图的形态很大原创 2022-05-29 10:15:11 · 1482 阅读 · 0 评论 -
YOLOV3输出tensor的解读
用过YOLOV3模型的人都知道,YOLOV3网络有3个输出tensor,他分别是对输入RGB三通道图像的32倍,16倍以及8倍的下采样,YOLOV3支持三种尺寸的图像输入,分别是320x320,416x416以及608x608,我们以416X416为例,输入和输出示意图如下:对于如上的tensor输出,它的维度顺序是怎样的呢?在百思不得其解的情况下,就需要看代码来解惑了。我们找到darknet的代码后处理实现部分,关键流程在函数forward_yolo_layer中:我们关注entry_in原创 2022-03-18 15:25:20 · 3829 阅读 · 1 评论 -
GDB 命令脚本的编写以及调试技巧汇总
在GDB调试程序的时候,如果程序带有很长的参数列表,或者调试命令本身很长,需要频繁启动调试会话时,频繁输入参数或者命令严重拖慢调试节奏,这里记录一个GDB非常有用的参数-x,可以将调试参数和调试命令以调试脚本的形式提供给GDB调试会话,这样就不用频繁输入调试命令和参数了。Linux上,万事不决问"男人","man"就是这个男人(还好是单数,如果是men就有点儿邪恶了), 我们先man一把gdb,看官方文档对 "-x"选项的解释。原创 2022-03-18 12:28:01 · 4850 阅读 · 1 评论 -
激活函数:Sigmod&tanh&Softplus&Relu详解
什么是激活函数?激活函数(Activation functions)对于人工神经网络模型去学习、理解非常复杂和非线性的函数来说具有十分重要的作用。它们将非线性特性引入到我们的网络中。其主要目的是将A-NN模型中一个节点的输入信号转换成一个输出信号。该输出信号现在被用作堆叠中下一个层的输入。如果我们不运用激活函数的话,则输出信号将仅仅是一个简单的线性函数。线性函数一个一级多项式。现如今,线性方程是很容易解决的,但是它们的复杂性有限,并且从数据中学习复杂函数映射的能力更小。一个没有激活函数的..转载 2022-03-16 18:40:11 · 1285 阅读 · 0 评论 -
Chromium Browser Evaluation
Introduction Browsers are the killer applications that many network device manufacturers need to embed in their products.More and more terminal devicespresentstheir contents by web-based applications, benfits from the technology, users can easi...原创 2022-02-12 19:27:27 · 397 阅读 · 0 评论 -
越界侦测和区域入侵侦测,你真的分清楚了么?
越界侦测?区域入侵?你真的分的清吗?今天就给大家详细讲解一下越界侦测和区域入侵两个侦测功能的不同之处以及设置方法。越界侦测VS区域入侵通过上面的对比,我们能看出,越界侦测侦测的是画面是否有物体“越界”,而区域入侵侦测的是是否有物体“入侵”我们设置的区域。越界侦测红色的线是我们画的界限,那么我们在设越界侦测时还可以设置侦测的方向。例如:设置从A→B报警,而从B→A不报警。PS:越界行为是一种动态行为,表达正在越界,越界正在发生。区域入侵蓝色的区域是我们画的侦测区域,当有任何物体从任何方向进入该区域,设备都会报转载 2022-02-09 15:59:47 · 7231 阅读 · 1 评论 -
Darknet CUDA/CUDANN环境的快速安装
在具备GPU显卡且主持CUDA的纯净的UBUNTU18.04系统上,按照如下指导文档安装 Nvidia 显卡驱动。Ubuntu18.04安装CUDA深度学习环境_tugouxp的专栏-CSDN博客之后,下载darknetgit clone https://github.com/AlexeyAB/darknet.git进入darknet/scripts,执行命令:sudo ./scripts/setup.sh --InstallCUDA最后输出pwsh的错误貌似没有太大影响。.原创 2022-01-31 10:42:14 · 4177 阅读 · 1 评论 -
开源深度学习加速器(NPU)NVDLA介绍
看来NPU的做法和思路和CPU不同,CPU设计上无论冯诺伊曼还是哈弗架构,都有统一而且标准的设计规范,并且ISA和微架构之间可以分开设计。NPU则不同,它的ISA和微架构没有分开,绑的比较紧,个人认为这种状态并非出于技术上的原因,而且因为为了符合各个vendor的设计思想和优化策略,NPU的ISA设计和微架构设计通常都是私有,并由一家独立完成,这样做虽然给厂商以性能优化的名义逐代提升性能提供了很好的理由,但是带来的生态隔离,模型不兼容也是产业界的一大痛点。NPU也是一个处理器,但是没有统一的设计标准的。原创 2022-01-25 14:43:50 · 9655 阅读 · 0 评论 -
2022届安防展观展所感所悟
非常感谢公司提供的机会,让我能够有这样的机会参观这场技术和产品的饕餮盛宴。半天多的时间,能够非常近距离接触友商,客户,以及处于产业链不同环节的公司和它们的产品,让我获益良多。这里对我个人的观展记录进行总结和分享。我观展的主题围绕AI在产品中的应用落地进行,下面分别从AI的应用场景,芯片算法,软件技术栈几个维度来总结分享。1.场景挖掘应用场景方面,AI应用场景定义越来越细腻,AI是一项相对碎片化的技术,很难作为主体功能定义产品,这决定了它必须落地到具体的场景中,才能实现它的价值。过去几年,行业逐渐原创 2021-12-29 13:00:26 · 4380 阅读 · 0 评论 -
Open-C906 RTL仿真环境搭建
10 月 19 日,2021 云栖大会现场,阿里云智能总裁张建锋宣布,平头哥开源玄铁 RISC-V 系列处理器,并开放系列工具及系统软件。此次开源的 OpenXuantie 系列 RISC-V 处理器,包括玄铁 E902、E906、C906、C910 等 4 款量产处理器,以及基于 OpenXuantie 的多操作系统(AliOS、FreeRTOS、RT-Thread、Linux、Android 等)的全栈软件及工具。开发者可通过平头哥的 Github 和芯片开放社区(Open Chip Community原创 2021-12-18 14:13:27 · 1251 阅读 · 0 评论 -
RTT开发者大会学习
异构多核,M,R,A,DSP,NPU,GPU,VPU,DPU .........1.脚本化语言,开发前端化。2.工具链碎片化。3.开源如水,已然分不开。4.靠爱发电,靠爱作社区不行阿。5.用RTT在高校开课。6.低代码编程。结束!...原创 2021-12-18 09:48:14 · 760 阅读 · 0 评论 -
RK开发者大会直播收看总结
思必驰,思必驰也是主要做语音的,主要介绍了语音方案在智慧驾驶,智慧座舱中的应用情况,在分享中,思必驰的专家分享了一段视频,全场景车载语音场景落地。无需要用手,只需要语音就能实现和车载电子以及控制的交互,还分享了另外一段视频,关于智能收音机的,收音机在现在的车型中属于比较小众的搭配了,几种在低端车型,5万以下的车当中,但是经过智能化改造之后,应用还是非常的击中痛点的,尤其对于带小孩的家庭祝福来说,不用腾出手专门操作电子设备了,这点比较重要,毕竟,驾驶是对女人和车辆的双重伤害,复杂的电子设备就不要横插一杠了。原创 2021-12-17 11:38:18 · 3889 阅读 · 0 评论 -
UML类图符号 各种关系说明以及举例
结束转载 2021-12-16 09:30:26 · 153 阅读 · 0 评论 -
改变图像分辨率的几种方法
发现做深度学习的图像推理的时候,经常会需要对图像做scale操作,这里总结几种常用的方法。1.FFMPEG方法ffmpeg -i dog.jpg -vf scale=416:416 output_416x416.pngffmpeg -i dog.jpg -vf scale=416:416 output_416x416.jpg2.python方法:from PIL import Imageimport osimport sysimport cv2if __name__ =原创 2021-11-19 18:29:31 · 6172 阅读 · 0 评论 -
Pytorch线性回归测试
Pytorch开发环境搭建清参考这篇文章:FairMOT Cuda环境搭建并进行推理_tugouxp的专栏-CSDN博客环境准备1.PC Host Ubuntu 18.04.6,Linux Kernel 5.4,内核版本关系不大,记录下来备查。2.安装基础工具,比如GCC,CMAKE,VIM,GIT等等,工具尽量完备, 如果做不到,遇到问题临时下载也可。3.安装python3发行版,我用的是anaconda发行版,具体版本是 Anaconda3-2020.11-Linux-x86_64.sh下载地址在如原创 2021-11-11 20:47:59 · 919 阅读 · 0 评论 -
mish算子
在看YOLOV4的网络结构的时候遇到了一个之前未曾遇到过的名为MISH的算子,MISH算子在YOLOV4网络中使用非常频繁,值得记录一下。首先看一下原版的darknet yolov3.cfg网络结构:从算子位置上看,它属于每层网络的末端处理,位置上属于激活函数的的范围,事实上它却是也是一个激活函数。经过VIP工具转换后的JSON格式的YOLOV4网络结构如下,可以看到MIST算子被独立了出来:结束!...原创 2021-11-10 20:14:06 · 2750 阅读 · 0 评论 -
Cuda环境搭建并部署多目标跟踪模型FairMOT推理验证
环境准备1.PC Host Ubuntu 18.04.6,Linux Kernel 5.4,内核版本关系不大,记录下来备查。2.安装基础工具,比如GCC,CMAKE,VIM,GIT等等,工具尽量完备, 如果做不到,遇到问题临时下载也可。3.安装python3发行版,我用的是anaconda发行版,具体版本是 Anaconda3-2020.11-Linux-x86_64.sh下载地址在如下链接,选择对应的版本即可。https://repo.anaco......原创 2021-11-10 19:42:36 · 4570 阅读 · 2 评论 -
Darknet框架解读
1.test_detector的调用路径:这里重点介绍load_alphabet函数:根据代码,这里是从data/labels/目录装载png图片,图片有8*95=760这些图片都是ASCII码,比如我们打开编号为65和97的PNG图片,看以下内容,分别是A和a.怀疑最后绘框上面的Label字母就是来源于这里,这样就不依赖于系统字库了,我们确认一下,用反证法。如果我们将所有b的图片替换成a的图片,那么bicycle应该能变成aicycle的,我们测试一下:我们..原创 2021-10-24 21:18:43 · 3659 阅读 · 0 评论 -
代码里的世界观之数据和代码的关系
每个程序的运行过程,都可以比喻成弹珠穿越迷宫的游戏.有一个竖直方向的复杂迷宫,上面有若干入口,底下有若干出口,里面的路径连接很复杂.我们让众多大小不一,形状各异的弹珠从迷宫上面的入口顺着迷宫管道往下落,直到出口。弹珠从入口跑到出口的过程,就相当于程序运行的过程。实际上,真实模型会更复杂一些。入口并不是弹珠的唯一来源,有的管道自己会产生弹珠往下落,此外,在运行过程中,有的弹珠会消失在管道里,永远不在出来。如果要对应多线程,迷宫模型也要相应的扩展,在前后叠加多个迷宫,由平面变成立体,迷宫相互之间还有桥梁原创 2021-10-24 18:11:07 · 2472 阅读 · 1 评论 -
UVC设备端驱动的实现原理分析
UVC相关说明可以参考:关于UVC设备拥有两个/dev/video*节点的原因以及来历?_tugouxp的专栏-CSDN博客在ubuntu18.04/ubuntu16.04系统上,插入UVC设备,你会发现V4L2框架替它创建了两个video设备节点,分别是 /dev/video0, /dev/video1:https://blog.csdn.net/tugouxp/article/details/119946023USB Video Class及其实现_tugouxp的专栏-CSDN博客1 Video原创 2021-10-15 08:50:04 · 3171 阅读 · 0 评论 -
如何确定经过层层扒皮(求导)之后,一个函数的是否丧失可导性?
越是高阶可导函数曲线越是光滑,可导都光滑,这是对可导的感性认知,有些函数,无论你对它求导多少次,它永远都是可导的,比如它的函数图象是:还有些函数,它不是无穷次可导的,而是经过有限次求导之后,变为了常数,比如幂函数经过有限次球导函数之后,函数变成了直线,再求导的话就变成了0。还有另外一些函数,经过经过有限次球导函数之后,变成了带有尖峰或者间断点的函数,这个时候就不简单了,它变成了不可导函数,比如下面这个:经过多次求导之后,变成了绝对值函数它在原点处存在尖峰,是.原创 2021-09-30 17:00:10 · 619 阅读 · 0 评论 -
神经网络参数统计方法
一个全连接的神经网络统计方法:结束!原创 2021-09-27 18:56:14 · 406 阅读 · 0 评论 -
Sunxi Framebuffer框架
Framebuffer的总体架构如下图所示:在V833 Tina SDK上,framebuffer的实现基于Display Engine的channel 2 的第 0 个图层.在framebuffer架构的实现中,struct fb_info *info中的成员info->screen_base起者至关重要的作用,它即是framebuffer,也是DE中对应的图层,所对应的真实的内核虚拟地址,显示的最终目的,就是将这片的buffer在DE中生效.info->screen_原创 2021-09-22 19:16:10 · 1106 阅读 · 3 评论 -
基于Melis4.0的爱键智能视频门铃体验
近年来,家庭视频监控产品已经成为智能家居领域炙手可热的突破口,智能摄像头不仅让用户可以随时知道并查看家里的异常情况,还极大的丰富了人们的视觉交互。门铃是一件大家每天都要使用熟悉到不能再熟悉的产品了,也正是因为我们对它太过于熟悉了,所以往往才忽略了它的存在。而IOT为门铃引入了新的功能元素,门铃武装上摄像头,并经过线上化之后,变得生动活泼起来,好像成为了一款更像是具有独立生命体的个体。这篇文章试图对爱健的一款智能视频门铃的使用进行详细拆解,介绍其安装,使用的方法。值得一提的是爱键的这款摄像头使用了全志原创 2021-09-18 19:25:37 · 981 阅读 · 0 评论 -
如何统计V4L2吐帧的帧率?
项目中遇到一个问题,需要得到V4L2 Sensor前端吐帧的帧率,有同学说直接看sensor配置参数不久可以了吗?可是作为一个严谨的工程师怎么可以做这么不靠谱的事情呢?耳听为虚,眼见为实,只有看到实实在在的统计信息,才能相信数据是正确的。那么该怎么做到呢? V4L2框架的架构如下图所示,从图中我们可以看到,视频设备在抓取到视频图像后,会调用vb2_buffer_done回调函数将帧上报给v4l2 核心层函数,其中vb2_buffer_done是核心层实现的回调函数。如果在这里实现信息统计,无疑得原创 2021-09-18 15:36:35 · 1792 阅读 · 0 评论 -
基于Ubuntu下Qt creator的littleVGL开发环境搭建
1.安装QT Creatorsudo apt-get install qt5-default qtcreator安装完毕后就可以看到QTCReator了2. 安装SDL2sudo apt install libsdl2-dev libsdl2-ttf-dev3.配置QTCreator打开后的界面是下面这个样子:然后我们打开Tools->Options:然后我们找到构建和运行->编译器->Add->GCC->C++,添...原创 2021-09-16 23:50:07 · 454 阅读 · 0 评论 -
V833/V831目标检测demo方案开发
项目需要在V833平台上开发一个人形检测的功能用例, 大概框架如下:一路sensor图像经过四路VIPP缩放操作后,送给四个不同应用,分别是H265编码存盘,LCD预览以及以及NPU人形检测,还有一路照片抓拍。NPU人形检测原理如下:NPU线程抓取352*198(VIPP支持的输出大小)像素,格式为NV21的YUV原始帧数据,喂给人形检测算法网络,得到类别和坐标数据后,反馈给VIPP1 预览通道画框。这样的设计方案包含一个问题,NPU这边获得帧并进行网络推理得到坐标结果并反馈给VI.原创 2021-09-16 15:38:00 · 3183 阅读 · 1 评论 -
利用FFMPEG对H264码流进行分析
H264码流文件格式如下图所示:通过MediaInfo工具,可以得到如下的分析结果:我们使用FFMPEG对码流进行分析,首先按照这篇博客介绍的步骤从源码编译安装FFMPEG:ubuntu18.04编译FFMPEG_tugouxp的专栏-CSDN博客然后看一下媒体信息:这里产生了一个疑问,我们的媒体文件除了头部的SPS,PPS信息之外,其余的都是NALU单元,NALU单元是纯粹编码的图像数据,那么,解析到的图像分辨率信息,像素格式信息,Profile信息等从那里来的呢?..原创 2021-09-15 22:38:25 · 1384 阅读 · 0 评论 -
利用ffmpeg对视频文件进行分析几例
将视频文件转换为jpg图片文件序列:ffmpeg -i /home/czl/WorkSpace/ffmpeg/H264_REC.raw -r 1 -q:v 2 -f image2 pic-%03d.jpeg-q:v 2表示输出的图片质量,一般是1到5之间(1 为质量最高)-r:图片采样率,帧率,表示每秒钟产生多少张.jpeg图片da'fdafczl@czl-VirtualBox:~/WorkSpace/ffmpeg/r1$ ffmpeg -i /home/czl/WorkSpace/ff原创 2021-09-14 10:16:22 · 2077 阅读 · 1 评论 -
H264 编码RawBitstream 格式分析以及SPS&PPS数据分析
基于MPP框架开发了demo展示应用,方案数据流如下图所示,简单说明一下.1.支持一路sensor输入,四路输出.2.第一路VIPP0输出YUV大小为1920*1080. 编码为H264main profile大小的压缩BitStream存盘。3.第二路预览,源分辨率1920*1080,目标分辨率640*480,中间经过一次VIPP1的 scale down.4.第三路提供供NPU做人形识别的图像,源分辨率1920*1080,目标分辨率352*198.5.第四路用于抓怕jpg格式的照片。原创 2021-09-13 19:35:44 · 751 阅读 · 0 评论 -
H.264编码中,Profile和Level的含义
好雪片片,不落别处H.264有四种画质级别,分别是baseline, extended, main, high: 1、Baseline Profile:基本画质。支持I/P 帧,只支持无交错(Progressive)和CAVLC; 2、Extended profile:进阶画质。支持I/P/B/SP/SI 帧,只支持无交错(Progressive)和CAVLC;(用的少) 3、Main profile:主流画质。提供I/P/B 帧,支持无交错(Progressive)和交错(Inter...原创 2021-09-13 12:23:38 · 8035 阅读 · 3 评论 -
不同函数的梯度图像
1. 函数图像为:梯度图像:2.三维图像:梯度图像:3.z=x+y三维图像梯度图像:3.梯度图结束!原创 2021-08-29 09:30:17 · 14651 阅读 · 0 评论 -
DirctectFB架构分析
DirectFB (Direct Frame Buffer)是一组建立在Linux framebuffer 设备(fbdev)抽象层之上实现的图形api。DirectFB运行在Frame Buffer Device (/dev/fb)之上,并利用芯片组驱动程序的硬件加速,实现对图形图像的高效处理。它的架构如下图所示:注意图中的蓝色箭头,它是实现硬件加速的关键,我们以代码为例,分析一下DirectFB硬件加速的实现原理。获取代码:DirectFB的源很多,随便在gitee上找到一个仓库..原创 2021-08-27 19:09:27 · 1034 阅读 · 1 评论 -
关于UVC设备拥有两个/dev/video*节点的原因以及来历?
在ubuntu18.04/ubuntu16.04系统上,插入UVC设备,你会发现V4L2框架替它创建了两个video设备节点,分别是 /dev/video0, /dev/video1:原创 2021-08-27 12:59:10 · 6798 阅读 · 1 评论 -
VirtualBox安装OpenEuler操作系统
OpenEuler 也就是宇宙第一华为服务器操作系统 EulerOS,开源后命名为 openEuler。openEuler 面向企业级通用服务器架构平台,基于 Linux 稳定系统内核,支持鲲鹏处理器和容器虚拟化技术,特性包括系统高可靠、高安全以及高保障。openEuler 拥有三级智能调度,可以将多进程并发时延缩短 60%,而且还可以智能自动有规划,可将 Web 服务器性能提升 137%。下载地址:https://repo.openeuler.org/openEuler-20.03-LTS/ISO..原创 2021-08-26 23:06:35 · 2474 阅读 · 6 评论 -
Tina V833 UVC设备的支持
之后烧录。原创 2021-08-24 12:21:00 · 1679 阅读 · 3 评论