基于YOLOv3与码率重分配的视频直播系统

2021-07-31 10:52林鹏程
物联网技术 2021年7期
关键词:宏块处理速度码率

林鹏程

(厦门大学嘉庚学院 信息科学与技术学院,福建 漳州 363105)

0 引 言

视频流是直播行业的主要载体,其传输质量影响着最终的呈现效果以及用户体验。然而受限于带宽和资源,视频在传输过程中常采用低码率压缩[1]。这意味着压缩后的视频会丢失重要的细节,比如人物主播脸部的细节、美食外观纹理等,诸如此类都是用户的感兴趣区域[2](Regions of Interest,ROI)。提高ROI的码率可提高区域的视频流质量与用户的观看体验。最重要的是,在带宽一定的情况下,提高ROI码率的同时降低背景码率能够保证整体码率处于稳定状态,解决直播服务中带宽的限制问题。

目前,已有诸多文献做过相关研究。文献[3]利用图像小波变化得到图像的ROI,再进行区分编码;文献[4]利用支持向量机检测出图片的ROI区域并在JPEG2000的基础上进行分区域压缩,结果表明,ROI压缩方式能得到区域清晰的图片;文献[5]基于压缩感知提取ROI区域并编码,提供了一种可行的ROI图像编码方法。之后,研究者把目光转向视频压缩领域[6]。文献[7]根据图像复杂度和能量设定不同的权重因子,以此重新分配码率;文献[8]分别对时空域λ和QP值进行调整限制;文献[9]在率失真理论基础上,对ROI失真估计进行缩放,以提高ROI码率及优先权。但上述研究还存在一些问题:研究停留在仿真层面,未在实际系统中实现,尤其在对算法实时性要求高的场景。本文在直播系统的基础上设计了一种基于YOLOv3与码率分配的ROI编码方法。在提取阶段,使用YOLOv3对视频进行ROI提取,同时采用TensorRT加速模型;在编码阶段通过复杂度评估重新分配码率。实验数据表明,本文方法在改善ROI视频质量的同时,能满足直播对压缩速度的要求。

1 系统结构与处理流程

本文结构将作为在Nginx直播平台的插件运行,系统框架如图1所示。

图1 系统框架

当用户端把需要直播的音视频流推送到服务端的Nginx时,Nginx将数据传送到本文结构,经过ROI检测并进行码率重分配、编码后,重新生成压缩的数据回传至Nginx,由此,服务端便可为用户提供高质量的音视频流服务。

本文结构对ROI处理的主要流程如图2所示。当接收到Nginx传来的视频帧数据时,先解压视频帧数据,得到原始YUV视频数据,接着进行如下操作:

图2 系统处理过程

(1)初步处理:将视频YUV数据转化为模型推流所需的RGB格式数据,并进行归一化处理;

(2)模型推理:将视频数据输入YOLOv3模型,检测ROI。推理时采用基于GPU加速的TensorRT框架加速模型推理,运用多线程进行多流水线同时推理,提高推理速度;

(3)后处理:模型推理得到的数据是关于ROI位置的概率矩阵—box信息,因此需要对概率排序、筛选,最终确定是否为ROI。若为ROI,则需激活box信息。系统选用ReLU函数作为激活函数,得到当前视频帧ROI的位置坐标;

(4)box信息传递:ROI的位置坐标用于编码,因此需要将该信息传入libx264编码库。本系统采用FFmpeg中预留的libx264接口将信息传入底层libx264;

(5)码率重分配:在编码之前,根据对帧内各宏块复杂度的估计,重新分配各宏块的码率,分配不同的QP值对帧内宏块进行调整编码;

(6)封装视频流:重新压缩后的视频数据可使用FFMpeg封装成易于网络传输的MP4、FLV格式,供用户观看。

2 码率分配原理

原始的分配方式可分为帧间分配和帧内分配。前者根据设定的码率分配缓冲区,编码前根据每个帧的复杂度、剩余缓冲区给每个帧分配对应的码率,并通过线性关系转化为QP值[10];后者根据帧内每个宏块的复杂度,将前者分配的码率按权重分配给各宏块,并转化为各宏块的QP值偏置量。最后,在编码阶段,编码器将根据QP值与偏置量对每个宏块进行量化。该码率分配方式较均匀,本文在帧内编码阶段将背景区域的码率转化为ROI的码率,以此提高ROI的质量。若一帧的码率为Rf,ROI的码率为Rr,背景的码率为Rb,三者关系如下:

将ROI的Rb缩减设定的比例系数为β,重分配后的码率调整为:

重新分配背景与ROI码率后,将新码率分配给各宏块,背景宏块码率和ROI宏块码率分别乘以系数α、β,以保证帧总体码率不变。根据率失真模型,每个宏块的码率与复杂度存在线性关系,可据此建立复杂度Mco与码率间的关系:

3 实验结果

实验条件见表1所列。

表1 实验条件参数表

实验分为算法速度测试与视频质量变化测试。在算法速度方面,对不同的视频进行处理,并采用处理过程中的FPS作为评价标准,结果见表2所列。

表2 算法速度测试结果 FPS

从结果可以看出,本文算法在TensorRT加速、单线程情况下达到约25 FPS的处理速度,增加加速线程后,处理速度约为40 FPS,基本满足直播平台对处理速度的要求。经过大量测试表明,当线程数为10时,对大部分1 080P视频的处理速度达到最佳,为50 FPS。

在视频质量测试方面,将视频分别转成5种码率进行对比。将每段视频抽取编号1,10,50,70,100,125作为代表进行比较。如图3所示,第一行图片代表原始视频,第二行图片代表实验组视频,第三行图片代表对照组视频,从图片可以直观看出,对照组存在马赛克,质量较实验组差,实验组较接近原始视频质量。

图3 实验结果对比

为了进一步说明本文方法的有效性,采用PSNR作为评价标准。以视频5组实验数据为例,结果见表3所列。

表3 码率结果(无量纲)

通过表3可以看出,本文方法能有效提高ROI码率,实验组相比对照组PSNR提高约10%。

4 结 语

本文提出的基于YOLOv3与码率重分配的视频直播系统与其他文献相比,具有以下创新点:

(1)采用TensorRT加速YOLOv3推理,并在推理中使用多线程加速;

(2)在帧内分配码率时,通过2个因子α、β将码率重新分配给ROI与背景。

实验结果表明,本文方法能够提高ROI编码质量,同时,TensorRT与多线程加速后,处理速度达到40 FPS,完全可满足在直播场景的应用要求。

猜你喜欢
宏块处理速度码率
大数据视角下信息管理与信息系统专业建设分析
大数据视角下信息管理与信息系统专业建设分析
基于状态机的视频码率自适应算法
基于场景突变的码率控制算法
基于选择特征宏块的快速视频稳像
X264多线程下码率控制算法的优化
多光谱图像压缩的联合码率分配—码率控制方法
基于宏块合并的H.264模式选择算法
一种适合硬件实现的低复杂度MAD预测算法
一种支持H.264与AVS的高效环路滤波器设计