- 博客(113)
- 收藏
- 关注
原创 【论文#目标检测】YOLOv4: Optimal Speed and Accuracy of Object Detection
据说有许多特性可以提高卷积神经网络(CNN)的准确性。需要在大型数据集上对这些特性的组合进行实际测试,并对结果进行理论论证。有些特性仅适用于某些特定的模型、特定的问题,或者仅适用于小规模数据集;而另一些特性,如批量归一化和残差连接,适用于大多数模型、任务和数据集。我们假设,此类通用特性还包括加权残差连接(WRC)、跨阶段部分连接(CSP)、跨小批量归一化(CmBN)、自对抗训练(SAT)和Mish激活。
2025-04-03 09:43:39
734
原创 【论文#目标检测】YOLOv3: An Incremental Improvement
我们对YOLO进行了一些更新!我们做了一系列小的设计改动来使其变得更好。我们还训练了一个新的网络,效果相当不错。这个网络比上一次的稍微大一点,但更准确。不过别担心,它仍然很快。在320×320的分辨率下,YOLOv3的运行时间为22毫秒,平均精度均值(mAP)为28.2,与SSD一样准确,但速度是SSD的三倍。当我们查看旧的0.5 IOU平均精度均值(mAP)检测指标时,YOLOv3表现相当出色。
2025-03-26 09:23:22
1040
原创 【论文#目标检测】YOLO9000: Better, Faster, Stronger
我们介绍了YOLO9000,这是一个最先进的实时目标检测系统,能够检测超过9000个目标类别。首先,我们提出了对YOLO检测方法的各种改进,这些改进既包括创新性的,也包括借鉴以往工作的。改进后的模型YOLOv2在标准检测任务(如PASCAL VOC和COCO)上达到了最先进的水平。通过一种新颖的多尺度训练方法,同一个YOLOv2模型可以在不同尺寸下运行,从而在速度和准确性之间提供了一个便捷的权衡。在67帧/秒(FPS)时,YOLOv2在VOC 2007上达到了76.8%的平均精度均值(mAP)。
2025-03-24 16:10:37
934
原创 【论文#目标检测】You Only Look Once: Unified, Real-Time Object Detection
我们提出了YOLO,这是一种新的目标检测方法。以往的目标检测工作是将分类器重新用于检测任务。而我们则将目标检测定义为一个回归问题,即预测空间上分离的边界框以及相关的类别概率。YOLO使用一个单一的神经网络,直接从完整图像中预测边界框和类别概率,仅需一次评估即可完成。由于整个检测流程是一个单一的网络,因此可以直接针对检测性能进行端到端优化。我们的统一架构极其快速。我们的基础YOLO模型能够以每秒45帧的速度实时处理图像。
2025-03-20 15:53:14
1154
原创 【GStreamer】基于gst和gtk的简单videoplayer
在ubuntu上做了一个简单的video player的demo,参考了很多其他人的代码,修修改改调试了一下,能够从web端或者本地读取视频,按下play video按钮就可以实现播放/暂停的效果,不过工具栏还没有实现。代码主要使用了gtk的UI设置,以及如何与gst的输出链接起来,gst使用了简单的uridecodebin和glimagesink模块,整体比较简单,放在了。两个较为重要的地方,一个是按钮的回调,另一个是glimagesink与gtk widget的连接。
2025-03-05 17:16:44
301
原创 【GStreamer】GstDevice和GstPlugin的简单分析
GstDevice用于设备管理,这些设备可以是物理设备(摄像头,麦克风),也可以是虚拟设备(虚拟音频源),device提供了一种统一的方式来描述和访问这些设备
2025-02-22 08:49:58
284
原创 【GStreamer】GstBus和GstMessage的简单分析
GstBus用于在应用程序和管道pipeline之间传递消息,允许应用程序异步地接收来自管道或元素的通知、错误、警告和状态变化等消息。由元素运行时生成的消息,会被发布到与管道关联的bus中,应用程序可以通过轮询或信号机制从bus中获取消息,这些消息可以是同步的或异步的,之后根据消息类型执行相应的操作
2025-02-20 19:45:36
948
原创 【GStreamer】GstElement的简单分析
GstElement是GStreamer中最核心的构建块,代表一个功能单元,用于处理多媒体数据流。每个元素都有特定的功能,例如source elements用于生成数据(摄像头读取视频)、filter elements用于处理数据(编解码、格式转换等)、sink elements用于接收数据(视频渲染到屏幕),GStreamer通过组合不同的GstElement来构建复杂的多媒体处理流程
2025-02-17 11:51:45
673
原创 【GStreamer】GstPad的简单分析
GstPad用于在pipeline中连接不同的元素(GstElement),可以将pad理解为一个元素的连接点或者端口,数据通过这些连接点在元素之间流动。pad的核心作用是,数据流动的接口,可以是某一个元素的数据接收端口,也可以是某一个元素的数据发送端口。使用capabilities(Caps)描述pad可以处理的数据类型(如视频、音频、具体的编码格式等),必须确保两个pad的caps可以兼容。
2025-02-11 17:53:20
689
原创 【GStreamer】GstBuffer的简单分析
GstBuffer用于封装和管理多媒体数据(如视频、音频等),提供了一种灵活的方式来存储和操作数据,同时支持多种内存管理机制。GstBuffer的声明和定义位于gstreamer/subprojects/gstreamer/gst/gstbuffer.h和gstreamer/subprojects/gstreamer/gst/gstbuffer.c中。
2025-01-29 11:07:55
1031
原创 【GStreamer】GstMemory的简单分析
GstMemory的主要作用是封装内存分配和管理的相关信息,继承自GstMiniObject,所以GstMemory是一个计数对象。定义位于gstreamer/subprojects/gstreamer/gst/gstmemory.h。对内存进行封装,比较好的地方在于:(a)抽象化无需关心底层使用何种内存类型,上层统一接口调度(b)易于管理GstMemory继承自GstMiniObject,可以进行引用计数,这样在多个组件之间共享时不会被提前释放,避免内存泄漏。此外,GstMemory允许创建内存的
2025-01-26 10:22:02
549
原创 【GStreamer】GstAllocator的简单分析
在GStreamer中,GstAllocator用于管理和分配内存,创建和管理的对象是GstMemory,GstMemory是一个引用计数对象,对一块内存区域进行了封装。GstAllocator实现的功能类似于malloc和free,只是底层调用的是GLib中的内存分配函数g_malloc和g_free
2025-01-25 14:10:08
771
原创 【V4L2】ioctl调用v4l2函数的简单分析(采集、编码)
在Linux中,ioctl(输入/输出控制)是一个系统调用,用于执行设备驱动程序提供的各种设备特定操作,使用ioctl()可以实现V4L2设备的控制
2025-01-18 10:14:55
456
原创 【GStreamer】基于gstreamer实现h264的软编
本文记录如何简单使用gstreamer命令行和代码的方式实现yuv文件编码成为h264格式的文件。
2024-12-28 14:15:06
560
原创 【GStreamer】gstreamer在linux下的简单使用
对于Ubuntu系统,使用如下命令可以下载gstreamer([Installing on Linux](https://gstreamer.freedesktop.org/documentation/installing/on-linux.html?gi-language=c))
2024-12-16 22:34:03
2409
原创 【GStreamer】gst_element_factory_make函数
gst_element_factory_make()主要的功能是创建了一个工厂类型,并且在这个工厂类型中查找一个元素,返回这个元素。这包括了两个步骤:(1)创建工厂类型;(2)在工厂类型中查找属性。实际上,上面2个步骤分别对应着2个独立的函数:(1)创建工厂类型:gst_element_factory_find();(2)在工厂类型中查找属性:gst_element_factory_create();不同的是,在这里需要处理的是批量属性,需要用到va_list。
2024-12-04 17:43:10
945
原创 【GStreamer】gst_init函数
GStreamer是Linux下最常用的音视频编解码框架,在音视频芯片中应用广泛(如MTK、AML等),也是嵌入式平台(如汽车、无人机、机器人等)音视频技术发展重要的技术。在使用GStreamer过程中,首先需要对GStreamer框架进行初始化,会使用gst_init()函数,下面简单记录这个函数的实现流程。
2024-11-27 10:18:43
1105
原创 【论文#Overview】An Overview of Core Coding Tools in the AV1 Video Codec
AV1是一个新兴的开源且免版税的视频压缩格式,由开放媒体联盟(AOMedia)行业联盟于2018年初共同开发并最终确定。AV1开发的主要目标是在保持实际的解码复杂性和硬件可行性的同时,实现比现有最先进的编解码器更显著的压缩增益。本文提供了AV1中关键编码技术的简要技术概览,以及与VP9和HEVC的初步压缩性能比较。过去十年间,视频应用在互联网上变得无处不在,现代设备推动了高分辨率、高质量内容消费的快速增长。
2024-11-20 19:32:26
764
原创 【WebRTC】视频发送链路中类的简单分析(下)
在前一部分当中,记录视频流已经传输到RTPSender当中的paced_sender_->EnqueuePackets(),这个函数会逐渐向底层深入,发送RTP数据包,下面记录后一部分的传输流程。
2024-11-13 22:52:27
1323
原创 【WebRTC】视频发送链路中类的简单分析(上)
视频流在采集编码之后,需要通过RTP协议进行发送,下面记录与视频流发送相关的一些类的声明,梳理视频流发送过程中,不同类的继承关系。
2024-11-12 10:02:16
1450
原创 【WebRTC】视频编码链路中各个类的简单分析——VideoEncoder
VideoEncoder是执行具体编码任务的上层控制器,这个类可以被其他具体编码器的类,如VP8,VP9,H264和AV1继承。这个类当中主要的功能包括:(1)设置编码器信息(名称,handle,软编或硬编,SVC)(2)初始化编码器,注册编码结束后的回调对象,释放编码器,执行编码(3)根据QP阈值调控质量(4)码控参数(目标码率,码率,FPS)(5)码率调控(分辨率)(6)丢弃提示器(上一帧是否可解,上一帧时间戳等)(7)前向纠错控制(FecControl)(8)编码状态回调(丢包率变化,
2024-11-08 15:43:31
844
原创 【WebRTC】视频编码链路中各个类的简单分析——VideoStreamEncoder
VideoStreamEncoder是编码流程当中至关重要的一个类,它实现的功能包括:(1)开始编码器,暂停编码器,停止编码器(2)设置编码器(根据config)(3)调控编码参数,如码控参数,帧率等等(4)调控前向纠错器(5)视频帧的传输和接收(6)根据网络环境,调控丢帧(7)根据编码情况,调控屯帧(8)根据情况,调控编码质量(因为网络环境,编码器情况,可能会调整编码策略,影响编码质量)(9)对已编码图像进行后处理(10)统计编码信息
2024-11-07 20:22:29
1276
原创 【WebRTC】视频采集模块中各个类的简单分析
WebRTC主体是基于C++实现的框架,有必要分析其中各个类之间的继承关系。视频采集模块的代码在modules/video_capture中,其中有很多个文件,逐一分析。需要说明的是,采集模块与使用的平台强相关,不同的操作系统会使用不同的采集方式,在这里我记录的是Windows平台。因为RTC场景下Android平台和Windows平台使用量比较多,但是Android平台还涉及到JNI这一层,比Windows更复杂一些。
2024-11-06 21:41:46
1370
原创 【WebRTC】视频采集模块流程的简单分析
本文记录在Windows平台下,从摄像头采集信息的主要流程,其中Windows平台使用的是DirectShow框架。
2024-11-06 14:53:38
1217
原创 【论文#码率控制】Rate Control for H.264 Video With Enhanced Rate and Distortion Models
这项工作提出了一种新的H.264视频编码的速率控制方案,该方案增强了速率和失真模型。与现有的H.264速率控制方案相比,我们的方案提供了几个新特性。首先,通过量化参数估计和更新,解决了H.264中速率失真优化(RDO)和速率控制之间的相互依赖性。其次,由于头部信息的比特可能占据总比特预算的较大部分,特别是在低比特率编码时,这一点尤其正确,因此开发了一个用于头部信息的速率模型,以更准确地估计头部比特。头部比特的数量被建模为非零运动向量(MV)元素数量和MV数量的函数。
2024-11-02 09:50:05
1244
原创 【论文#码率控制】A Novel Rate Control Scheme for Low Delay Video Communication of H.264/AVC Standard
本文提出了一种适用于H.264/AVC标准低延迟视频通信的新型速率控制方案。引入了一种切换均值绝对差(MAD)预测方案,以增强传统的时域MAD预测模型,后者不适合预测突变的MAD波动。我们的新模型最多可将MAD预测误差减少69%。此外,还制定了一个准确的线性比特率-量化参数(R-Q)模型,用于描述纹理和非纹理信息的总比特数与量化参数(QP)之间的关系,从而消除了非纹理比特估计不准确带来的负面影响。通过探索峰值信噪比(PSNR)与QP值之间的关系,所提出的线性R-Q模型可以在宏块级别进一步优化QP的计算。
2024-10-26 16:31:13
825
原创 【x264】x264编码器工具性能的简单测试
本文简单记录了x264编码器当中一些工具带来的性能增益,使用了3种不同分辨率的测试序列,并使用x264中默认的量化参数。(1)第一,测试了不同profile之间性能的差异,发现high profile相对于main和baseline而言,有着显著的码率下降和编码质量提升的效果,码率至多下降-26.35%,PSNR至多提升0.435dB,并将此作为后续测试的anchor。
2024-10-24 22:29:04
1166
原创 【论文#快速算法】Region-of-Interest Based Resource Allocation for Conversational Video Communication of H.26
由于H.264/AVC的复杂性,将其应用于设计会话视频通信系统非常具有挑战性。本文通过使用基于感兴趣区域(ROI)的比特分配和计算资源分配方案解决了这一问题。在我们的系统中,首先通过直接帧差和肤色信息检测ROI。随后,根据每个宏块(MB)的相对重要性,自适应调整多个编码参数,包括量化参数、模式决策的候选模式、参考帧的数量、运动矢量的精度以及运动估计的搜索范围。这样,编码器可以根据ROI分配更多的资源,如比特和计算能力。
2024-10-23 11:03:30
1011
原创 【视频编码】BD-BR和BD-PSNR
在视频编码标准中,常使用BD-BR来描述一个算法的优劣性。在评估新的算法时,需要测试4个码率点,获得对应的4个PSNR点,这样能够在R-D平面获取一条R-D曲线。同样地,基于前面4个码率点,在原始编码器中也能够找到4个PSNR点,形成一条原始R-D曲线。两条R-D曲线下方的面积差异就是两个算法优劣的差异程度。
2024-10-22 16:34:45
1034
原创 【质量评价】空间和时间信息测量
在视频图像处理相关领域,质量评价一个重要的组成部分,用于评估视频或者图像的优劣,包括客观的评价指标如PSNR和SSIM,还有主观的评价指标如MOS分数。它通常高于空间上更为复杂的场景,不是一种信息熵测量方法,也与通信理论中定义的信息无关。同时,作为广泛使用的评价指标,其计算的原理和方式非常简单。(3)对当前序列的所有帧都执行这样的操作,获得一系列的标准差。(3)对当前序列所有帧都执行这样的操作,获得一系列的标准差。(4)取最大的标准差作为当前序列的空间感知内容。(2)计算残差图像的标准差。
2024-10-22 15:05:14
594
原创 【视频编码】视频编码中拉格朗日乘子法的简单理解
在视频编码器中,有些工具用来优化编码质量,而有些工具用于提升编码速度。在相同的码率(Bitrate)下,每增加一项工具都会对编码器的编码质量(PSNR)产生影响。minDBB∈SstRBRc(1)B∈SminDBstRBRc1其中,D表示编码损失distortion,B表示使用的工具情况(或者说编码模式),R表示码率,RcR_cRc表示限制的码率。我们的目的是,给定码率,找到一个最优的BBB,使得DBD(B)DB。
2024-10-22 11:34:38
1148
原创 【论文#快速算法】Fast Intermode Decision in H.264/AVC Video Coding
新的视频编码标准H.264/MPEG-4 AVC在帧间编码中使用了从4x4到16x16的可变块大小。这一新特性相比使用固定块大小对宏块(MB)进行编码,实现了显著的编码增益。然而,当使用暴力率失真优化(RDO)算法时,这一特性会导致极高的计算复杂度。本文提出了一种快速帧间模式决策算法,用于决定帧间编码的最佳模式。该算法利用了视频对象的空间同质性和时间平稳性特征。具体而言,宏块的空间同质性是基于宏块的边缘强度来决定的,而时间平稳性则是通过当前宏块与其在参考帧中对应位置的宏块之间的差异来决定的。
2024-10-21 09:21:10
1332
原创 【论文#快速算法】Fast Mode Decision Algorithm for Intraprediction in H.264/AVC Video Coding
H.264/AVC 视频编码标准旨在相比所有现有的视频编码标准实现显著提升的压缩性能。为了达到这一目标,采用了一种稳健的率失真优化(RDO)技术来为每个宏块选择最佳的编码模式和参考帧。因此,复杂性和计算负载大幅增加。本文提出了一种基于局部边缘信息的快速H.264/AVC 内预测模式决策算法。在内预测之前,创建了一个边缘图,并为每个子块建立了局部边缘方向直方图。根据边缘方向直方图的分布,仅选择一小部分内预测模式进行RDO计算。
2024-10-17 17:12:07
1066
原创 【论文#性能对比】Video coding with H.264/AVC: Tools, Performance, and Complexity
H.264/AVC 是国际标准化组织/国际电工委员会移动图像专家组(ISO/IEC Moving Picture Experts Group)和国际电信联盟电信标准分局视频编码专家组(ITU-T Video Coding Experts Group)合作的最新成果,是视频编码的最新标准。该标准的目标是提高压缩效率,提供适合交互式(视频电话)和非交互式应用(广播、流媒体、存储、视频点播)的网络友好型视频表示。**与之前的标准相比,H.264/AVC 在广泛的比特率和视频分辨率下提供了高达50%的压缩效率提升。
2024-10-11 14:38:22
1241
原创 【论文#码率控制】ADAPTIVE RATE CONTROL FOR H.264
本文提出了一种针对H.264的码率控制方案,通过引入基本单元和线性预测模型的概念。基本单元可以是宏块(MB)、切片或帧。它可以用于在整体编码效率和比特波动之间取得平衡。线性模型用于解决H.264码率控制中存在的“先有鸡还是先有蛋”的困境。本文研究了恒定比特率(CBR)和可变比特率(VBR)两种情况。我们的方案已被H.264采纳
2024-10-10 09:55:53
861
原创 【论文#性能对比】Compression Performance Comparison of x264, x265, libvpx and aomenc for On-Demand Adaptive
视频压缩标准H.264/AVC于2003年发布,在过去的十年里一直主导着这个行业。在过去几年中,推出了许多下一代标准/格式,如VP9 (2012), H.265/HEVC(2013)和AV1(2018),都声称有重大改进AVC / h。在本文中,我们提出了我们的性能评估这些压缩标准。我们的评估使用这些标准的开源编码器实现进行,x264(用于H.264/AVC), x265(用于H.265/HEVC), libvpx(用于VP9)和aomenc(用于AV1)。
2024-09-23 14:29:17
992
原创 【论文#性能对比】 Future Video Coding Technologies: A performance Evaluation of AV1, JEM, VP9, and HM
本文提出并讨论了下一代视频编码方案的两条发展路线的客观性能与评估:开放媒体联盟(AOM)的AV1和联合视频探索团队(JEVT)的JEM。它们已经建立的前身,即AV1的VP9和JEM的高效视频编码标准(HEVC)作为此次评估过程的参考。使用了28个不同内容、不同分辨率和不同帧率的视频序列组成的大型测试集作为共同的数据基础。对于每个序列和每个测试候选,生成了四个不同的比特率点,与不同的重建质量相关联。
2024-09-23 12:10:29
1029
原创 【x265】码率控制模块的简单分析—帧级码控模式(CQP、CRF和ABR)
X265_RC_ABR:表示使用平均码率进行编码X265_RC_CQP:表示使用固定的量化参数进行编码X265_RC_CRF:表示使用固定的质量因子进行编码上述三种模式为最基础的模式,其余的模式例如CBR、2pass等模式都是基于这几种模式演化而来的。与x264类似,x265当中的码率控制主要思想是基于一种假设$$bits * qscale ∝ complexity$$其中,bits表示编码比特,qscale表示量化参数,complexity表示纹理复杂度。这里表示的含义是:(1)如果希望
2024-09-20 15:46:57
1890
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人