人工智能在视频应用领域的探索

本文涉及的产品
云备份 Cloud Backup,100GB 3个月
简介: 人工智能热度很高,但泡沫也很大。

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1


人工智能热度很高,但泡沫也很大。人工智能在视频领域的应用已经走入寻常人的生活,人脸识别,视频自动抠像技术已经比较成熟。除此之外,人工智能还能为视频应用带来哪些变化呢?鲍金龙撰文,描述了人工智能在视频应用中的实践探索,涉及编解码器、超分辨率等。如果你在某一领域有深入探索与洞察,欢迎联contribute@livevideostack.com。


文 / 鲍金龙


序:人工智能来生今世


人工智能是一个非常广泛的领域,当前人工智能涵盖很多大的学科,大致归纳为六个:


  1.  计算机视觉(暂且把模式识别,图像处理等问题归入其中);

  2.  自然语言理解与交流(暂且把语音识别、合成归入其中,包括对话);

  3.  认知与推理(包含各种物理和社会常识);

  4.  机器人学(机械、控制、设计、运动规划、任务规划等);

  5.  博弈与伦理(多代理人agents的交互、对抗与合作,机器人与社会融合等议题);

  6.  机器学习(各种统计的建模、分析工具和计算的方法)。


这里值得强调几点:


第一) 目前的人工智能都是属于弱人工智能的范围,在某一个专业领域内作为被人类使用的工具存在。 目前还不存在离开人类主体自行运行的人工智能,更不存在可以开发人工智能自我迭代进化的强人工智能。


第二) 机器学习在近几年取得了很大进展,有些人直接把机器学习当成了人工智能的代名词。这是不准确的。举例来说,不可否认机器学习在计算机视觉领域发挥着越来越大的作用,但是传统意义上,通过人工建模,分析取得的模式识别,图像识别,图像增强仍旧是很成功的人工智能技术,并且也是机器学习进一步发展的基础。


第三) 统计分析方法在1990年代就出现并在一定领域内使用了。统计分析方法也多种多样的,根据实际需要产生过很多成功的案例,不一定采用目前标准的建模和分析方法。这里面举个典型的例子,在1997年Intel推出mmx技术之前,程序员中流传着一个非常著名的查表IDCT(反余弦变换),实际上就是对MPEG1编解码过程的IDCT变换,做了统计分析后发现的,超过之前所有快速算法的实战案例。具体细节请点击『阅读原文』下载IDCT 8x8.DOC。


第四)机器学习有这几个比较明显的缺陷,想要在实战中取得良好的效果,就必须做出合理的取舍和优化。这几个缺陷是:


  1. 严重依赖数据,训练方法和训练量非常关键。

  2. 计算量偏高。

  3. 虽然有时候取得了良好的效果,但是机器学习本身并不能理解这个过程,也不能给出合理的解释。

  4. 涉及自然科学常识和社会科学常识的问题,目前机器学习还不能在开放领域内取得良好的效果。


(一)人工智能对视频应用的渗透


传统视频应用的流程:


0?wx_fmt=png


前面我们说过,目前的人工智能还处于工具阶段,也就是说还没有人工智能开发出来的任何的超越时代的编码方法、传输协议、解码、交互技术存在。目前人工智能渗透包括预处理和后处理,超分辨率,机器视觉等等,人们在这些过程中使用人工智能工具来提升开发效率或者处理效果。而编解码技术,则属于人类专家技术团队才能解决的问题,目前的人工智能还很难介入。


0?wx_fmt=png


近年来网络直播应用的兴起,出现了跟以往广播电视编解码不太一样的需求。那就是:


  1. 编码端,保证编码实时性和码率的要求的同时,保证尽量高的图像质量。

  2. 发送,传输,缓冲,延时尽量小。

  3. 解码器尽量能输出最好的质量,最好能超分辨率。


这两年我一直在努力把人工智能(主要是机器学习)技术跟编解码做更深的融合,用来解决传统方法一直很难解决的这几个问题。


编码器遇到的问题:硬件编码器性能好,但是图像质量差,码率高。软件编码器效率较低,遇到复杂视频,比如物体繁多,较大运动,闪光,旋转,既不能满足实时编码的需求,同时输出码率也出现较大抖动。对于网络应用来说是很大的障碍。


解码器需要增强的点:大家都在构想能不能应用超分辨率技术,把较低分辨率的视频的播放质量提升一大块。目前有很多算法显示出巨大的潜力,比如谷歌的RAISR,处理图像时候效果很好。能不能实时用到视频上,或者硬件化,或者采用更快的能实时运行的算法。我们在后面会讨论一种折中方案,在牺牲一点质量的前提下,能够实时运行的超分辨率算法。


0?wx_fmt=png


(二)人工智能增强的编码器


(2.1)动态编码器


不同场景下编码保持恒定质量的码率:

 

0?wx_fmt=png


编码时间和码率是正相关的,在码率暴涨的同时,编码时间也剧烈延长。对于低延时需求强烈的直播应用,会造成严重的卡顿。


一般就只好使用绝对不变码率ABR. 不同场景下ABR的图像质量:


0?wx_fmt=png


这样带来的结果就是图像质量不稳定。


我们希望是下图这样的曲线:


0?wx_fmt=png


这就需要编码器能够提前判定大码率场景出现的可能性。需要判定的几种情况:


  1. 物体繁多且有摄像机运动。

  2. 背景不动但是有大量物体的大范围运动,包括快速运动,旋转,仿射,蠕变等。

  3. 出现闪光,风沙,粒子系统。


这就需要开发一种适用于高清晰度直播应用的面向场景的智能编码技术。该技术通过监督学习将常见视频编码卡顿场景分类并快速识别,提前预判视频场景的编码复杂度和码率抖动,使用动态参数配置来编码,保证编码的实时性和限定码率下最好的图像质量。


(2.2)内容自动植入


0?wx_fmt=jpeg


这里讨论广告的自动植入问题。一种是在编码前合成到视频里面,这个过程跟编码关系不大。但是直接合成到视频之后,所有的观众看到的内容就都一样。


要做到个性化,精准的广告投放,就只有在播放端解码后合成。要做到这点,服务器不仅要发送原始视频流,还要发送后期合成物体的定位方法和图像数据,以便客户端按照需求进行动态合成。


首先,自动植入的广告跟前贴片比起来优势很明显,可以植入的广告数量非常巨大,效果也更自然,用户也不会产生明显的反感。


其次,个性化精准投放,又进一步扩大了广告投放的总容量和效率。


(2.3)交互式视频

 

0?wx_fmt=jpeg


目前基本做法是图像识别后,与搜索引擎连接,产生一个内容链接。


0?wx_fmt=jpeg


(三)人工智能增强的解码器


(3.1)单个图像的超分辨率


自然图像基本上是平坦的纹理填充和显著的边缘(线条)组合形成的。


常规拉伸算法有双线性插值和双三次样条曲线差值。一般说来,三次曲线要比线性插值效果好。


然而在 15 年前,我在金山做 DVD 播放器的时候,正在研究去隔行技术。

0?wx_fmt=jpeg

如上图所示,第一排和第三排是原图数据,第二排是需要插入的数据。普通的插值方法是在 B 方向上做一个三次插值。但是我这次计算了 A,B,C 三个方向的梯度,取方向梯度最小,像素梯度和最大的方向做简单的线性插值。


这时候我有一个惊奇的发现,简单的双线性插值的目视效果居然要好过三次曲线。这是为什么呢?


图像模糊的原因有以下几个:


  1. 低分辨率下线条会变得模糊。

  2. 低分辨率图像在拉伸到高分辨率时候会在线条上引入额外的模糊。

  3. 噪音的存在。


对于第2点我们具体说明:比如B样条,三次样条曲线有一个应用条件,那就是样本数据本身应该是光滑的,至少是分段光滑。但是在图像里面,物体的边界和背景的结合处,就不满足这个条件了。普通的三次样条曲线插值并没有考虑图像内部各个物体的不同,简单的把整个图像作为一个整体来计算。这样必然就在边界处引入了严重的模糊。


因此超分辨率主要从以上几个方面进行处理。噪音的处理技术已经比较成熟了。今天我们就不讨轮了。


第一个讨论点,如何降低线条的拉伸效应,也就是线条的锐度保持。


比如一个4x4的像素块,比较常见的是如下的形态:


0?wx_fmt=png


普通的三次b样条的滤波器参数矩阵为:


0?wx_fmt=png


比如我们打算在4x4像素块中心插入一个点:


  • 第一种情况,插入点在边界上。


0?wx_fmt=png


使用标准滤波器:


0?wx_fmt=png


使用改进滤波器:


0?wx_fmt=png


0?wx_fmt=png


  • 第二种情况,插入点在边界内:


0?wx_fmt=png


标准滤波:

 

0?wx_fmt=png


效果可以接受。


  • 第三种情况,插入点在边界外:


0?wx_fmt=png


使用标准滤波器:


0?wx_fmt=png


使用改进滤波器:


0?wx_fmt=png


0?wx_fmt=png


第三种情况实际上和第一种是一样的。所以我们只要考虑插入点在边界上的情况就可以了。


考虑到每个像素实际是8位的,一个4x4像素块的可能的组合基本就是128位整数。这是一个极其巨大的数字。然而实际上经常出现的可能远远少于理论上限,基本上考虑几千种组合就够用了。这种情况下需要使用统计方法,或者说是机器学习的办法来获得一个比较好的滤波器参数表。这是一个很稀疏的分布,需要设计比较好hash方法来构造和查找。


一般的机器学习过程都是类似的:准备一些原始 HR 图象(2x2)和从采样生成的 LR(1x1)图象,作为配对数据。然后采用了几个优化操作:


  • 第一步,将复杂 4x4 梯度图象点阵处理成为简单的码本图象(HASH)。

  • 第二步,针对这个码本图象,使用考虑临近像素梯度权重的方法重构B样条滤波器参数,每次都和原始的 2x2 倍图象进行 SAD (COST函数)计算,寻找最接近的拟合曲线参数(下山法)。

  • 第三步,对上一步获得的大量参数计算概率分布,取最大概率的参数作为该码本的最优解。

  • 第四步,对近似的码本进行合并处理,以减小码本的数量。


还有一个讨论点,就是低分图像对边界造成的模糊,有没有办法来去除。有人提出了一个梯度变换的方法:

0?wx_fmt=png


这种算法的思路就是计算出梯度的分布,然后适当把梯度收窄。不考虑实现速度的话,这个方法取得效果也是很惊人的。


0?wx_fmt=png


这个算法的运算量太大了。我们只能是想办法把这个过程融合到寻找滤波器参数矩阵的过程中来。


在实际处理过程中,我们就使用上面过程获得的进行超分辨率计算。那么我们可以估计这样算法的大致运算量:4x4矩阵配准,查找滤波器,然后每个点16次乘加法。整个过程预估相当于40次乘法运算。因此以现在的cpu性能,使用avx256/512或者hvx充分优化,完全有可能实现1080p到4k的超分辨率上达到实时30fps。


这样某些时候得到的图象目视效果甚至要超过原始输入图象。


0?wx_fmt=jpeg


(3.2)视频的超分辨率


上面是单个图像的超分辨率。视频的超分辨率和单个图像是不同的。单个图像的超分辨率算法可以融合到视频超分辨率里面来。


视频的超分辨率基本思路是从连续的视频序列来重建高分辨率的图像,涉及到图像配准和子像素提取。研究方法和评价方法也存在很大差异。有些人用图像的超分辨率方法来套用的话就会出现一些疑惑:


首先视频编码是一个有损压缩过程,不同分辨率的序列压缩退化过程是不同的,因此找不到合适的HR/LR配对。视频质量的评估也是远比图像质量评估要复杂。因此目视质量是一个比较简易的评估标准。当然寻找一个HR/LR配对来计算PSNR也是可以的,但是说服力远不如图像配对的情况。


评估模型:


0?wx_fmt=png


比如这个过程,由于未经压缩的视频图像体积巨大,所以HR(0)不适合用来做原始分辨率参照。我们可以选取HR(1)和HSR来比较获取一个PSNR(0), 然后选取HR(1)和普通拉伸获得的HBR来比比较获取一个PSNR(1). 如果PSNR(0)比PSNR(1)要高的话,就说明超分辨取得了效果。


普通的视频序列物体配准和子像素提取是非常慢的。为了加快速度,我们把这个过程简化了一下,省去配准和空间预测的过程,参照解码生成分数运动向量,直接在解码过程中完成一部分像素块的子像素提取工作。


为了进一步提高处理速度,这里面的还采用了一些优化措施:


实验发现,在一个视频播放序列中,如果每间隔2帧清晰度稍差的图像,加入一帧相对高质量图像,和逐帧高质量图像对比起来,人眼的感觉不会造成太多差异。


因此在视频SR过程中,可以每隔两帧用普通 b 样条+降噪生成的基础图象HBR+,做一次HSR处理:


[HSR] ,[HBR+] ,[HBR+], [HSR], [HBR+], [HBR+], [HSR], [HBR+], [HBR+]


这个视频上面的快速超分辨率过程SR详细过程可以描述为:


0?wx_fmt=png


预估整个超分辨率过程输出的HSR视频图像质量提升1个dB左右。

相关实践学习
利用HBR实现文件存储NAS备份
当您使用云上NAS存储共享ECS,容器,K8s等计算设备的数据时,数据可能因病毒勒索,误删除而丢失。本场景主要介绍如何使用HBR为云上文件存储NAS进行备份,进而保证数据安全。
相关文章
|
8天前
|
机器学习/深度学习 人工智能 物联网
通义灵码在人工智能与机器学习领域的应用
通义灵码不仅在物联网领域表现出色,还在人工智能、机器学习、金融、医疗和教育等领域展现出广泛应用前景。本文探讨了其在这些领域的具体应用,如模型训练、风险评估、医疗影像诊断等,并总结了其提高开发效率、降低门槛、促进合作和推动创新的优势。
通义灵码在人工智能与机器学习领域的应用
|
9天前
|
人工智能 算法 安全
人工智能在医疗诊断中的应用与前景####
本文旨在探讨人工智能(AI)技术在医疗诊断领域的应用现状、面临的挑战以及未来的发展趋势。随着科技的不断进步,AI技术正逐步渗透到医疗行业的各个环节,尤其在提高诊断准确性和效率方面展现出巨大潜力。通过分析当前AI在医学影像分析、疾病预测、个性化治疗方案制定等方面的实际应用案例,我们可以预见到一个更加智能化、精准化的医疗服务体系正在形成。然而,数据隐私保护、算法透明度及伦理问题仍是制约其进一步发展的关键因素。本文还将讨论这些挑战的可能解决方案,并对AI如何更好地服务于人类健康事业提出展望。 ####
|
8天前
|
机器学习/深度学习 人工智能 算法
人工智能在医疗诊断中的应用与挑战
本文探讨了人工智能(AI)在医疗诊断领域的应用及其面临的挑战。随着技术的不断进步,AI已经在医学影像分析、疾病预测和个性化治疗等方面展现出巨大潜力。然而,数据隐私、算法透明度以及临床整合等问题仍然是亟待解决的关键问题。本文旨在通过分析当前AI技术在医疗诊断中的具体应用案例,探讨其带来的优势和潜在风险,并提出相应的解决策略,以期为未来AI在医疗领域的深入应用提供参考。
41 3
|
8天前
|
机器学习/深度学习 人工智能 自然语言处理
探索人工智能在教育领域的应用与挑战
随着科技的不断进步,人工智能(AI)技术已经深入到社会的各个领域,其中教育领域尤为突出。本文旨在探讨人工智能在教育领域的应用现状、面临的挑战以及未来的发展趋势。通过分析AI技术如何改变传统教学模式,提高教育质量和效率,同时指出其在实际应用中可能遇到的问题和挑战,为未来教育的发展提供参考。
79 2
|
7天前
|
机器学习/深度学习 人工智能 自然语言处理
人工智能在医疗诊断中的应用与前景
人工智能在医疗诊断中的应用与前景
|
6天前
|
机器学习/深度学习 人工智能 搜索推荐
人工智能在医疗健康领域的革新应用
人工智能在医疗健康领域的革新应用
20 0
|
8天前
|
机器学习/深度学习 人工智能 自然语言处理
人工智能与模型知识库在移动医疗产品中的落地应用
在现代医疗体系中,通义千问大模型与MaxKB知识库的结合,为医生和患者提供了前所未有的支持与便利。该系统通过实时问答、临床决策辅助、个性化学习和患者教育等功能,显著提升了诊疗效率和患者满意度。实际应用如乐问医学APP展示了其强大优势,但数据隐私和安全问题仍需关注。
32 0
|
8天前
|
机器学习/深度学习 人工智能 自然语言处理
人工智能赋能个案管理服务的应用与实践
通义千问2.5作为新一代人工智能模型,正在为医疗健康领域的个案管理服务带来革命性变革。本文探讨了该技术在患者管理、MDT多学科协作、整体评估、电子病历管理、随访管理和复诊提醒等方面的应用,展示了其在提升医疗服务质量和管理效率方面的显著成效。
24 0
|
8天前
|
机器学习/深度学习 人工智能 算法
探索人工智能在医疗诊断中的最新应用
探索人工智能在医疗诊断中的最新应用
16 0
|
8天前
|
机器学习/深度学习 人工智能 算法
探索人工智能在医疗诊断中的最新应用
探索人工智能在医疗诊断中的最新应用

热门文章

最新文章