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

本文涉及的产品
云备份 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进行备份,进而保证数据安全。
相关文章
|
2天前
|
机器学习/深度学习 传感器 人工智能
AI与未来医疗:重塑健康管理新格局随着人工智能(AI)技术的飞速发展,医疗行业正迎来一场前所未有的变革。AI不仅在数据分析、诊断支持方面展现出巨大潜力,还在个性化治疗、远程医疗等多个领域实现了突破性进展。本文将探讨AI技术在医疗领域的具体应用及其对未来健康管理的影响。
人工智能(AI)正在彻底改变医疗行业的面貌。通过深度学习算法和大数据分析,AI能够迅速分析海量的医疗数据,提供精准的诊断和治疗建议。此外,AI在远程医疗、药物研发以及患者管理等方面也展现出了巨大的潜力。本文将详细探讨这些技术的应用实例,并展望其对健康管理的深远影响。
|
3天前
|
机器学习/深度学习 人工智能 自然语言处理
人工智能在教育中的创新应用:个性化学习的未来
【9月更文挑战第18天】人工智能在教育中的创新应用正在深刻改变着我们的教学方式和学习体验。从个性化学习方案的制定到智能化辅导与反馈,从多元化学习资源的推荐到自动化评分与智能考试系统,AI技术正在为教育领域带来前所未有的变革。面对这一变革,我们需要以开放和批判的态度拥抱它,共同探索AI时代教育的无限可能,为每一个学习者创造更美好的未来。
48 12
|
4天前
|
数据采集 人工智能 自然语言处理
探索软件测试中的人工智能应用
在当今快速发展的技术世界中,软件测试作为确保软件质量的关键环节,正经历着前所未有的变革。随着人工智能技术的不断成熟和应用,其在软件测试领域的潜力逐渐显现,为提升测试效率、准确性和自动化水平提供了新的可能性。本文将深入探讨人工智能在软件测试中的应用现状、面临的挑战以及未来的发展趋势,旨在为读者提供一个关于AI如何改变软件测试行业的全面视角。
|
1天前
|
机器学习/深度学习 人工智能 算法
软件测试中的人工智能应用与前景
随着技术的不断进步,人工智能(AI)在软件测试中的应用越来越广泛。本文将探讨AI在软件测试中的具体应用,包括自动化测试、缺陷预测及测试用例生成等方面的内容。同时,我们将讨论AI在软件测试中的优势和挑战,并展望未来的发展趋势。
|
3天前
|
机器学习/深度学习 存储 人工智能
深度学习中的模型压缩技术在人工智能领域,深度学习技术的迅猛发展带来了巨大的计算资源需求。为了解决这一问题,模型压缩技术应运而生。本文将介绍什么是模型压缩、常见的模型压缩方法以及其在实际应用中的意义。
随着深度学习技术的广泛应用,计算资源的需求也大幅增加。为减少资源消耗,提升模型效率,模型压缩技术成为研究热点。本文探讨了模型压缩的定义、主流方法和其重要性。通过量化、剪枝、知识蒸馏和轻量级架构等策略,模型得以在保持性能的同时减小体积,从而适用于资源受限的环境。这些技术不仅降低了计算成本,还推动了深度学习在移动设备和边缘计算等领域的应用,使AI技术更加普及和实用。总之,模型压缩在平衡模型性能与资源消耗之间发挥着关键作用,是未来AI发展的重要方向。
|
2天前
|
机器学习/深度学习 人工智能 自然语言处理
人工智能在医疗诊断中的应用与挑战##
本文探讨了人工智能(AI)在医疗诊断中的应用及其面临的主要挑战。通过分析AI在医学影像分析、电子病历处理和个性化治疗方案中的具体应用,揭示了AI技术如何提升诊断效率和准确性。然而,数据隐私、算法偏见和技术成本等问题仍然是AI在医疗领域广泛应用的主要障碍。 ##
|
4天前
|
机器学习/深度学习 人工智能 算法
软件测试中的人工智能应用
在当今快速发展的科技世界中,人工智能(AI)已经在各个领域中展现了其强大的影响力。软件测试作为软件开发过程中的关键步骤,也正在逐渐受到AI技术的深刻影响。本文将探讨AI在软件测试中的应用,分析其带来的优势与挑战,并提供一些实际案例来说明这些变化。通过深入理解AI在软件测试中的角色,我们可以预见一个更加高效、智能的软件测试未来。
29 0
|
4天前
|
机器学习/深度学习 人工智能 安全
探究人工智能在医疗影像诊断中的应用与挑战
人工智能(AI)技术在医疗影像诊断中的应用日益广泛,本文将探讨其应用前景与面临的主要挑战。通过分析现有技术的优势和不足,提出相应的改进建议,旨在为医疗行业提供更高效、准确的诊断解决方案。
14 0
|
6天前
|
机器学习/深度学习 人工智能 自然语言处理
软件测试中的人工智能应用
本文探讨了人工智能在软件测试中的应用,包括自动化测试、缺陷预测和测试用例生成等方面。通过实际案例分析,展示了如何利用AI技术提高软件测试的效率和准确性,并讨论了未来的发展趋势。
17 0
|
7天前
|
人工智能 算法 安全
人工智能在医疗诊断中的应用与挑战
在21世纪的科技浪潮中,人工智能(AI)以其强大的数据处理能力和学习能力,正在逐步改变各行各业。特别是在医疗领域,AI的介入不仅提高了诊断的准确性和效率,还为个性化治疗提供了可能性。然而,任何技术的发展都伴随着挑战,AI在医疗诊断中的应用也不例外。本文将深入探讨AI在医疗诊断中的具体应用、所面临的挑战以及未来的发展方向。
14 0