Aplicación del algoritmo Superscore en la optimización de red débil de la transmisión de video HD WebRTC

Con el desarrollo y la aplicación de 5G, los requisitos de calidad de las personas para la comunicación de audio y video mejoran constantemente. Los usuarios que están acostumbrados al disfrute visual de alta definición obviamente no pueden aceptar volver a la "era del mosaico". Siga [Rongyun Global Internet Communication Cloud] para obtener más información

Sin embargo, en el servicio de nube de comunicación de Internet global, frente a la riqueza y complejidad de las redes y terminales, es inevitable encontrarse con la situación de ancho de banda de usuario insuficiente. Es muy importante utilizar medios técnicos para aumentar la resolución de imágenes y videos para que los usuarios aún puedan obtener imágenes y videos de mayor definición en anchos de banda más bajos.

Este artículo comparte la solución optimizada para implementar la transmisión de video de alta definición WebRTC con un ancho de banda limitado utilizando tecnología de superresolución de imagen.

Los principales factores que afectan la claridad del video en la codificación de video

En teoría, para el mismo codificador, bajo la premisa de la misma resolución, cuanto mayor sea la tasa de bits, mayor será la calidad del video. Pero desde un punto de vista visual, existe un valor óptimo para la tasa de bits para un codificador y una resolución específicos.

Por lo general, el esquema de compresión de video utilizado para videollamadas/conferencias es H264 o VP8. En la codificación H264, las tasas de bits de video recomendadas para 720P y 1080P son 3500Kbps y 8500Kbps respectivamente.

En dispositivos móviles, la tasa de bits recomendada del codificador H264 es la siguiente.

1280x720

1920x1080

Tasa de bits muy baja

500 kbps

1Mbps

tasa de bits baja

1Mbps

2Mbps

Tasa de bits media

2Mbps

4Mbps

Tasa de bits alta

4Mbps

8Mbps

Tasa de bits muy alta

8Mbps

16Mbps

(Tasas de bits recomendadas para diferentes resoluciones en el terminal móvil)

Como se puede ver en la tabla anterior, al realizar una videollamada en el marco de la solución técnica WebRTC, el codificador H264 se utiliza para comprimir video de alta definición de 1080 P. Si el video está configurado a una tasa de bits media, se requieren 4 Mbps. .

Para algunos usuarios finales con ancho de banda insuficiente, si el video de 1080P aún se reproduce, habrá una congelación. Bajo el marco técnico de WebRTC, la transmisión simultánea o SVC se puede utilizar para transmitir flujos de código de diferentes resoluciones o diferentes velocidades de cuadro a diferentes usuarios finales según sus propias características.

简单来说,若用户的网络环境不适合传输 1080P 的视频,则给用户发送 720P 的视频,所需码率为 1080P 的一半,可以最大限度保障有限带宽下的视频传输流畅性

高清已成趋势,在不改变编码器即 H264 或 VP8 的情况下,如何依然在终端上获得高清视频成为学术界和产业界需要共同研究和解决的课题。

图像超分辨率技术****在 WebRTC 中的应用

图像超分辨率技术(Super Resolution,SR)是计算机视觉中提高图像和视频分辨率的重要技术,可以将一幅低分辨率图像重建出高分辨率图像。

通俗地说,就是当我们放大一张尺寸较小的图像时,会出现模糊的现象,超分辨率重建就是将原图中一个像素对应的内容在放大之后的图中用更多的像素来表示,让图像尽可能地清晰。

随着深度学习的发展,目前图像超分辨率技术已经从传统的计算机视觉分析方法全面转向基于 CNN 和 Transformer 的方案。

将图像超分辨率技术应用于 WebRTC 的通常实现方式为:发送低分辨率的视频,在每一个终端显示的时候,采用超分辨率技术对图像进行放大。由于发送的视频为低分辨率的图像,可以在较低的传输视频数据量下获得较高的清晰度。

在 WebRTC 中,图像超分辨率算法需要同时满足实时超分清晰****效果的双重要求。通过对业界主流基于深度学习的超分算法进行广泛调研和实验,我们发现基于 ESPCN 进行优化可以满足要求

ESPCN 由 2016 年发表在 CVPR 上的论文“Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network”提出,实验结果如图所示,达到了速度和精度的平衡。

(各种算法的精度和速度对比)

ESPCN 模型实验

在此次实验中,我们用 Pytorch 进行 ESPCN 模型的搭建、训练和推理。训练的数据一般可以采用常见的图像数据库,比如 PASCAL VOC、COCO 等,当然也可以根据行业特点采集相应数据集,让模型推理更有针对性。

为了增大数据库,我们在训练时会采用一些数据库扩容操作,最有效的方法之一是图像随机裁剪。该方法不仅能够对数据库进行扩容,而且可以弱化数据噪声与提升模型稳定性。

在 WebRTC 视频传输中,在编码端对图像进行 1/2 下采样。比如,传输 1080P 视频,在编码端视频的下采样为 960×540。

根据本文前述分析及部分实验效果表明,传输 960×540 分辨率的视频相较传输 1080P 的视频,数据量可以减少一半以上。

在实际应用中,当终端用户由于带宽限制无法直接传输 1080P 的视频时,可以传输 960×540 的视频,再采用 ESPCN 模型对 960×540 的视频进行超分重建获得原始 1920×1080 的视频,从而满足用户对高清视频的要求。

终端部署 ESPCN 模型优化

一般而言,深度学习模型训练完成后,需要模型对不同终端进行针对性地部署。

首先,我们通过模型量化缩小模型大小,减少对终端存储的占用,提升计算速度,加速深度学习推理的优化。

在这方面,Pytorch 框架提供了相应的接口,可以对模型进行各种量化,我们采用的是 int8 量化。

通过 int8 量化,模型中的部分数据从 float 变成 int 型,采用 libtorch 集成到 WebRTC 中,训练好的模型会转换成 libtorch 可以读取的 pt 格式。

结果显示,未量化之前 ESPCN 模型大小为 95KB,量化之后为 27KB

其次,针对不同型号手机的推理优化,从 256*256 上采样到 512*152,该模型在华为 P10 等中高端手机上可以达到 30ms 的推理速度,在 Asus Fonepad 8、Samsung Galaxy M31 等终端上目前实时表现尚不理想。我们还将采用剪枝和各种量化手段持续优化模型,满足各类手机的要求。

ESPCN 模型实验结果

模型读取部分关键代码如下所示,其中 espcn.pt 为未量化之前的模型。

// Deserialize the ScriptModule from a file using torch::jit::load().auto  device = torch::kCUDA;
std::string
 str = "espcn.pt";

  try
{
    module = torch::jit::load(str, device);
}
catch (const c10::Error& e)
{
    std::cerr << "error loading the model\n" << e.what();
}

pmodule = &module;
复制代码

模型的推理如下代码所示,output 即为模型推理的输出。因为输出的数据为 0 到 1,需要对输出数据进行限定和转换。

需要注意的是,ESPCN 模型默认是针对 Y 通道的超分,对 UV 数据而言,直接进行双三次插值(bicubic),即完成了 YUV 三个通道的超分。

std::vector<torch::jit::IValue> inputs;
inputs.push_back((img_tensor1.cuda()));
at::Tensor output = pmodule->forward(inputs).toTensor();
output = output.mul(255).clamp(0, 255).to(torch::kU8);
复制代码

量化后的 ESPCN 模型效果

(原始图像)

将原始图像采用双三次插值(bicubic)放大成目标尺寸

通过 ESPCN 模型超分重建

从视觉效果来看,ESPCN 模型的效果要远好于 bicubic 插值的方法。

本文主要介绍了基于图像超分辨率技术进行 WebRTC 传输优化的方案,涉及模型选择、训练、量化等方面。

视频传输优化方案众多,图像超分辨率技术仅是其中之一。在实时音视频交互成为通信基本诉求的当下,融云会积极结合相关理论和成熟算法,研发新技术,对视频压缩和传输进行优化,满足遍布全球、需求各异的各类用户需求。

Supongo que te gusta

Origin juejin.im/post/7080442943802343454
Recomendado
Clasificación