共计 5145 个字符,预计需要花费 13 分钟才能阅读完成。
编者按: AI 技术的落地是慢慢地从服务器端、云端落地,逐渐到挪动端及边缘设施上。这些年随着 AI 技术的提高,轻量级算法模型开始在挪动端实时跑起来,并且挪动端算法也在一直进行迭代和欠缺,而对于实时直播场景,也有越来越多的 AI 算法落地。ZEGO 即构科技提出了一套极轻量级 AI 算法模型,联合挪动端硬件个性,差异化优化前馈推理库,让算法模型、推理库、硬件成为一体,使得视频云转码挪动端化成为可能。LiveVideoStackCon 2022 音视频技术大会上海站邀请到了即构科技的李凯老师,为咱们分享产品架构、挪动端视频转码、挪动端智能视频解决、四位一体网络模型设计以及具体实施 Demo。
文 / 李凯
整顿 /LiveVideoStack
这是我第二次在 LiveVideoStackCon 分享,第一次时自己肚子还没有这么大,疫情三年肚子长大了,但咱们的模型会变得越来越小、越来越快、成果越来越好,这就是“更快、更好、更低、更广”。
快 —— 速度越来越快,好 —— 成果越来越好,低 —— 消耗很低的码率,广 —— 尽可能笼罩更多的机型。已经在云端转码遇到大批量的工作,本次探讨在挪动端如何解决,分享内容更偏重在挪动端如何把工作疾速跑起来,把服务器端的事件放在手机端做,对 ToB 厂商的用户来说是十分开心的。
本次分享按以下方向逐个开展:一是 ZEGO 产品概貌;二是要在挪动端去做的理由,这是帮忙解决客户提出的需要问题;三是在挪动端能够做到哪种水平,能不能面对用户提出的刻薄需要,解决客户问题;四是如何解决行业内难题,这是任何一个做音视频厂商、做视频前后解决都手不释卷谋求的问题;五是简略试验后果分享。
1、产品架构
产品利用方面,会议端的小艺帮次要针对考试类的利用;直播类有游戏直播,KTV 唱歌等;计划有社交娱乐、泛娱乐、以及这几年很火的在线教育。目前也会给小艺帮考试类的做利用,不限于在线教育的计划。咱们同时会提供根底技术服务,比方视频转码、画质加强、美颜特效、Avatar 元宇宙底层技术、背景宰割等。
1.1 视频解决
本次分享的重点是视频解决。上图是咱们很直观的数据。
在 iPhoneXR 这样的中端机型上,超分辨率 640480 两倍率做 AI 超分到 1280960,21ms 能够搞定。同时也测试了安卓机型,大略能够笼罩 2500 款,1000 元以上机型根本可能笼罩。如果机型好一点,超分到 1080p 没有问题,但国家政策激励出海去东南亚、印度、非洲。这些国家市场十分大,但最大的现状为使用者大多为千元机以下,这就面临一个很大的难题,千元机难做超分。
去编码速度比超分速度快很多,超分人造的数据量很大,不能把图片放大,将图片原始分辨率不做改变的状况下放大。去编码效应的劣势在原始分辨率上做,处理速度比超分快很多,根本可笼罩千元机。而在印度、东南亚、非洲这些带宽很低的中央,这时做去编码效应比超分,更具理论价值。
最难的点是视频插帧,两帧插一帧,根底数据是在 IPhoneXR 上 960*540,32ms,这一部分仍然面临难笼罩千元机,也是咱们始终去谋求的点,后续能够演示插帧在挪动端上手机具体成果。
随后也会与大家分享如何实现低照度加强,大家也能够跟着这个思路复现低照度加强,速度能够笼罩到 2ms,很低端的机型例如 2015 年的机型小米 2S,2ms 能够实现。情理很简略,就是 3D 或 2D 查找表,十分快,成果在最初一部分演示。但低照度会有个问题,这也是业界难题,在极度暗的状况下呈现噪点放大。那咱们为什么走低照度加强?
给大家讲个小故事,咱们有一个东南亚客户之前提出需要,“须要 1280720 的分辨率,要求 30 帧率不能降落、灯全关掉、手机屏幕亮度调到最低,但对方能够清晰看到我的脸”。在与客户沟通时,问能不能把屏幕亮度调亮一点点,对方不乐意,他就须要这个成果,但咱们致力帮忙其解决问题他还是很开心的,尽管不能否定会给他带来噪点问题,但亮度调高一点点,噪点问题将被适度放大。如果应用长曝光 1280720,帧率很低,长曝光只能 10 帧,用户做很多动作想要 30 帧,也会不开心。
1.2 其余 AI 技术产品
技术人员要常常与销售打交道,面对一线用户,技术人员就能理解是否要解决此问题,晓得需要在哪儿,做的技术有无价值。当然咱们也会做其余的利用。一是抠图,其中有隐衷反向打码,例如小米摄像头监控性能,老人在家监控但不释怀,就能够把老人反向打码,将老人虚化而背景不虚化,或只虚化老人身材的一部分,反向抠图,要害看你怎么去做去用。二是小指标检测,已经有用户给一个条件:小分辨率在 640*360,只有 10 像素的手机,考场监控场景下,看拿手机舞弊的小动作是否被检测出。这样的难题是理论中碰到过的很多根底利用。
2、挪动端视频转码
第二局部是挪动端视频转码。
2.1 挪动端转码
对于挪动端视频转码,也有一个来自于实在用户提出的需要:为什么要将视频上传至云服务,云服务下载后又要转一遍,用户本人拍的视频或是转的视频不违心上传至服务器,那么挪动端是否能将视频修复呢?
视频修复须要做很多工作,首先要从云转码角度剖析是什么场景下的视频,游戏、体育或是日常生活,品质如何、块的效应如何、编码状态如何。一个视频块很多,但兴许是录屏的,初步剖析后思考是否要做超分、做编码块效应、做降噪,那这一整套能不能在手机端做到?用户提出此问题后,如果能够解决用户就违心付费,但用户不想放在云端,ToB 公司不乐意放在云端为单个服务器付费,在用户的手机将事件落地对于 ToB 公司来说是乐意付费的。所以咱们很多的技术实现都是源自于具体生存。到底能不能实现,实现到什么水平,前面会分享具体一些数据,看是否撑持是否做到。
2.2 挪动端 AI 技术性能一览
在上图的超分性能数据中能够看到,咱们能够笼罩 2500 款机型,业界能敢喊出这个数字的不多,这是公开的,能给到厂商实测。最难的是挪动端实时视频插帧,须要解决人物不扭曲、大静止不虚、字幕不花等场景,并且机型笼罩水平仍在致力中,不会停下脚步。方才提到的低照度加强,晋升通道通透性指的是视频进入编码之后,会有朦朦一层,没有深度错落,将其解决,使之纵深变强,立体感更强,而不是像有一层雾,当然也能够用去雾通道解决此问题。在降噪方面,咱们自身也在做各种优化。抠图和小指标检测在前文中也有提到,咱们次要做安卓端,IOS 端有 MPU 和 ANE 会好做很多。
3、挪动端智能视频解决
第三局部是挪动端智能视频解决。
3.1 全链路自研可控
上图中是咱们公司大型团队端到端做的事件。我所负责的是与视频相干的业务,包含视频前后解决局部、麦克风采集、波及端到端的网络,以及局部编解码。我置信这个流程每个做 RTC 的技术人员都能画得出,搞技术的即便是做视频前解决也要会画,这是整个公司每个共事负责盯在哪一块的概貌。
3.2 挪动端视频解决
上图是自己整个职业生涯所要做的事件,当然也不仅仅只有这些。当初也做对于教育的货色,技术是相通的,整个数据流是这样走的,外围重点还是在视频后处理或视频前解决上,包含前端推理库的优化,后续会讲到前端推理库的一部分优化和网络模型如何设计得更加小型化。
3.3 挪动端超分辨率
再看一下挪动端超分辨率具体技术细节。
- 超分辨率 - 性能 PK
超分是咱们去年上半年做的事件,与行业内进行 PK,在上图数据上做测试,越向左模型越小越好,越往上成果越好,左下角都是一些小模型的成果。上图中 PAN 在 2020 年模型参数量最小,成果排第二。RFDN 在 2020 年成果第一,与之作初步比照,大模型的地位如图,但理论笼罩大略 2500 款机型应用不同的模型。
- 超分辨率网络模型 - 设计
上图是超分很简略的网络模型设计,起初花了很多心理精力浏览大量文章加上本人的奇思妙想、痴心妄想,咱们做了一些通道处的解决,包含通道注意力机制,但最终发现流程越多,模型减速可能性越低。起初回到初衷,原始设计进去的模型,最初还是这样的,这样做减速会非常容易。如果模型成果好但没法减速也不行,构造比较复杂。这一部分咱们也发了一篇文章,影响因子 5.9(https://doi.org/10.1016/j.neu…)。模型怎么训练,其中就有一些弯弯绕绕,波及到后续会对立提到的技术点。
3.4 挪动端低照度
- 低照度设计
低照度方面,第一版是用 2D 查找表形式,发现其维度不够,后改用 3D 查找表,用网络模型训练失去查找表自身,而不是模型,后续将推理库丢掉,只有进来数据,有三个维度别离是图像输出的原始像素点、以后像素点四周邻域的均值、依据本人定义例如以后像素点 Y 通道的亮度与周边像素点亮度差别值,在 0-1 之间。将其变成 0-255,此表最大为 255255255,最终后果是几毫秒。
- 网络模型 - 设计领导方向
回到视频超分辨率的问题,如何将视频超分辨率模型变小,能够做常识蒸馏;重参数,这在最近几年很火,咱们用在很多畛域,还会放在指标检测中,美团的 YOLOv6 就用了重参数、台湾的 YOLOv7 同样应用重参数,重参数同样变成了在 CV 根底业务畛域的骨干网络,重参数的意思是训练中模型十分大,推理模型十分小,但训练模型和推理模型是等价的,最终成果一样,推理速度更快,根据这个能够看更多的论文。
还有就是做量化 PQT 和 QAT,训练前和训练后量化会带来不同成果,后续会提到一个模型的设计是否能够转换成量化,是否适宜,精度是否降落,模型自身与推理库是否严密耦合,模型在硬件上借助推理库是否达到最佳,这是个考验人的事件。对所有底层计算机视觉视频加强工作大部分能够用查找表来做,例如锐化,二维三维都能够实现,对照度、对比度加强,甚至做得好能够做 8bit 到 10bit 转换,速度性能十分快。这里仅仅是给了大抵的方向。
4、四位一体网络模型设计
第四局部比拟要害,四位一体网络模型设计。
四位一体网络模型设计,尽管是四个,但上图中只有三个,大家能够猜一下还有哪一个。
第一维度是模型设计;第二维度是模型推理引擎,例如 TNN、NCNN、MNN 等很多,基于他人的推理引擎去改和优化,推理引擎与网络模型是否能很好联合,模型自身在不同的推理引擎上速度差异大,模型在 iPhone 上是跑在 CPU 还是 GPU 还是 NPU 上,iPhone 的 Core ML 是个黑盒子,如果 OPS 不适宜在 NPU 上跑,数据就有可能一会儿在 GPU,一会儿在 NPU,模型效率低;第三维度是 Peak,意思是须要去度量模型,操作算子在指定硬件上,例如指定的硬件如高通、联发科、华为芯片上,它的性能到底如何,一个模型在同一时代的机型上跑出的数据效率不同,最重要的是要将 roofline 模型图画出,反向领导咱们设计模型。
还差一个维度是什么?咱们做所有的事件所要实现的指标就是快和成果,我认为第四个维度是数据,我始终认为基于业务做需要,数据占了效用的 60%。举个例子,超分能够刷榜刷得很厉害,但到理论场景就成果不好,肯定是要依据业务指定场景强相干。咱们做了一个测试,所有货色从零开始,用自定义数据集,标注好的 3 万张图片,将所有 YOLO 系列的模型参数全副设置在差不多的数量级,初始化一样,训练后果发现 YOLOv5 执行度较高。但在 YOLOv7 文章中单刀直入示意从零开始间接训练比屡次训练成果好,这表明可能是在特定场景成果好,但在另外场景下是不肯定的。
这里更粗疏地讲一下在推理引擎端,模型设计尽可能使用到硬件算力自身,尽可能将其施展进去。推理引擎、模型设计大家应该不会疏忽,置信大家做多了也晓得如何并行、状态信息化。上图右下角相对会被疏忽,这是三个部门做的事件,看似毫不相干,但每个人做的应该与其余两个相干。晚期 CL、Peak 和 RAMMER 做了硬件 CPU、GPU 在挪动端 NPU 的性能度量,还有旷视的 MegPeak 也在 6 月刚好做了同一件事件,都在做阐明这个方向是对的。
我认为数据是最重要的,数据不稳固,模型基本不必去想设计。数据要保障百分之百精确,比方做指标检测的标注,首先使用大模型预标注,人工筛检,再训练,再预标注,重复几次。标注的时候只标注一类,比方生成部署标注十类,实际上做的时候一类一类标注,这样就保障每一类精度十分高,但没人违心标注,感觉是细活脏活,但这是把数值刷最高最无效间接疾速的办法,丢给外包品质不好,包含算法共事标注品质也差。所以要想出各种方法通过算法自身将数据筛选进去做更多的事件,达到效率晋升。
下面分享的效率、速度须要同时回升,主观感触品质不能降落,但模型能够裁剪。
5、演示 Demo
低照度加强示例
上述视频是低照度加强示例,视频前后别离为原始视频和突变解决后的视频。明暗水平能够在查找表中动静调整,实例中达到突变成果,网络生成进去的模型调整水平是固定的。这里没有用噪点视频,不可否认在低照度加强中会把噪点放大。
以上是我的全副分享,谢谢!