AI Image Codec技术落地实践

news2024/11/23 21:28:10

AI Codec自2016年首次提出以来,众多海内外高校、企业研究院等机构对此展开了广泛研究。6年时间里,AI Codec 的SOTA方案的压缩性能已经超越了H.266(最新的传统Codec标准),展现了强大的技术潜力。但受限于计算复杂度、非标等原因,AI Codec在应用落地方面的案例却屈指可数。LiveVideoStackCon2022北京站邀请了来自双深科技的田康为大家分享基于双深科技的AI Image Codec技术落地探索经验。

文/田康

编辑/LiveVideoStack

大家好,本次分享的主题为:AI Image Codec技术落地实践,主要将分三部分介绍我们在移动端方面取得的技术成果。第一部分介绍图像视频行业发展趋势和我们的理解;第二部分简单总结AI Codec发展;第三部分为重点,即AI Image Codec移动端落地实践。

-01-

图像视频行业发展趋势

c8fa5c1fc111f6ab619bbbb4dd740b89.png

首先介绍图像视频行业发展趋势,“我们身处图像数据大爆发的时代”可能已成为了一项行业共识。据我们从相关机构取得的调研数据显示,全球图片视频数据总量至2025年预计将超过140ZB,每年的数据复合增长率达到27%,这是一个很恐怖的数量级。随着近年来ChatGPT等技术的火爆,相信增长率还会进一步提升。

简单分析数据量迅速增长的原因:首先是在医疗、安防等应用场景下,影像数据按照国家政策要求需要长期或永久存储,导致数据积累量越来越大。第二是随着大众对高画质、高帧率等高质量视频需求的增长,导致数据密度提升。第三是随着视频数据在互联网、安防、无人机、云游戏(不同于传统游戏,过程中伴随着超大量视频传输)等等多种应用场景的拓展带来了数据量的巨量增长。

那么要高效运用这些数据必定伴随着压缩、传输和存储等底层技术的发展优化,我们认为压缩技术的提升是其中的关键,主要原因有三个:首先是带宽和存储的提升是有瓶颈的。其次针对野外巡检等特殊应用场景,增加带宽并不适用。第三是存储和带宽的提升并没有从根本解决传输数据量庞大这个问题。

a9fedf1859e19639d9378979c3cb2f5d.png

上图为我们设计的视觉AI应用链路图,首先通过摄像头或计算机生产影像内容,然后进行修复、剪辑或AI审核等处理,并将数据呈递给用户进行数据查看,过程中可能伴随着AI动作识别交互或超分,随后传递至存储设备进行数据存储。在应用前通过文本、图片、跨模态等检索方式查找所需的数据,最终可以对其进行结构化解析和隐私/分布式计算等应用。

可以看到整个流程都由编解码来进行衔接。同时在每个环节都可能存在AI的应用,这也是数据处理后续的发展趋势。

和传统编解码相比,AI端到端编解码在天然上更适应这种趋势。从算法层面来看,AI编解码以提取的图像特征直接进行下游应用,从而节约了下游特征提取计算量。从硬件层面来看,AI的大量应用使当下硬件都或多或少地带有AI算力,这同时为AI编解码的应用创造了条件。

-02-

AI Codec发展

0b8210ed0990b0a1d4da31dd46d4c555.png

接下来介绍AI Codec的发展,上图为传统和AI编解码发展历程的对比。可以看到,AI Codec压缩性能超越传统的H.264、H.265仅使用了传统方法1/6的发展时间。从1988年的H.261到2020年的H.266,相较于传统编解码器平均十年一次的迭代频率,AI编解码实现了飞速发展,从2016年端到端编码框架的提出到后续GAN、1857标准的应用,甚至是后续AIGC编码发展方向的出现,它在短时间内不断涌现可落地应用的各种新方法。

97dd6263c9ec838b7f87d9cadda5feec.png

另一方面是AI芯片行业的发展同时为AI编解码提供了落地土壤。近年来GPT-4、AIGC的大规模使用在侧面推动了AI芯片业整体的快速发展,随着行业利好,高通等著名边缘芯片企业也在逐步启动对AI芯片的开发研究。其次是存算一体、类脑芯片、量子计算等未来技术为芯片算力发展带来了更好前景。

-03-

AI Image Codec移动端落地实践

1a13bafc03c22508e25d2e1ba4c5f5c6.png

接下来介绍我们关于AI Image Codec在移动端的落地实践,以互联网移动端CDN图片分发场景为应用场景,首先解释采用该场景的原因。

第一,当下大量社交、内容社区、电商APP均涉及该场景,中心端以一对多方式进行图片的分发,即使是抖音这种小视频平台也会涉及很多图片内容。同时由于CDN 80%左右的运营成本为流量带宽费用,因此它有很大的图片压缩诉求,优化图片压缩技术可以有效节约成本。第三是该场景为闭环场景,可以解决目前AI Codec非标的问题。最后是移动端的AI算力相对于其他物联网设备较强,可以实现更好的编解码效果。

33e3f6b0637e62cf125f858d5a86645f.png

以上为我们自研的AI图像编解码模型框架,它被称为ANF。不同于传统编解码器通过分块预测处理来进行数据压缩,ANF编解码器在接收图片后,通过神经网络提取高层像素规律作为数据量化和辅助熵模型概率预估的依据。数据最终传递至传输端进行熵解码和像素重建,向用户呈现图片。

我们在整个流程中针对AI训练设置了两个约束,第一是R-Loss,它代表比特流和超先验的存储信息量;第二是D-Loss,它用于衡量输入和输出图片之间的质量差,以上两个指标都需要保持尽量小。

针对该模型我们也提出了一些优化策略,如在特征提取阶段采用Neighbor-patch-attention策略来参考周边信息,提取更深层次特征。其次是在熵模型概率预估阶段: 采用Space Shuffle策略,提升概率估计准确度。第三是在超先验阶段,将局部感受野扩展到全局感受野来提取更准确的辅助信息。

右图为测试结果,其中红线代表ANF模型数据,可以看到相比于VVC等传统编码器,它的测试结果要超出0.5~0.7dB左右。

5585940a9ea864a9a55ec477d37e2be5.png

由于ANF模型的架构比较复杂,为了更好的在移动端上进行应用,我们对它进行了轻量化处理,在量化和部署加速方面做了相当多的工作。在画质损失尽量小的前提下尽量获取加速收益。

61aa58da58575ee9d5accaed85fc83df.png

以上是轻量化后的ANF模型和其他编解码器使用LPIPS指标测试的对比结果,用于衡量ANF和其他编解码器之间的差距,该指标越小代表压缩后的图像和原图主观质量越接近。通过在多种场景下测试可以看到,ANF压缩的图片质量要明显优于其他编解码器。

9fe1292fc8c9672e69f4c6b1829280fd.png

在客观指标结果较好的基础上,我们组织对压缩图像进行了主观评测,选择了数十种不同场景,约两万张涵盖不同分辨率的图片作为数据集进行测试。以avif的压缩图像作为基准进行对比,按照三种不同比例将原始图片用ANF和avif编解码器进行压缩,将压缩后的图片从相同位置裁取100*100左右大小的块,与原图对应小块对比压缩画质,最后征集志愿者进行测评。

下表为评测结果,可以看到同体积下,主观选择ANF的比例(49.4%)明显高于AVIF(18.6%),说明ANF主观质量明显比AVIF好; 体积比为1:1.4时,结果与1:1时相同;体积比为1:2时,选择ANF和AVIF的次数相当,且有较大比例“不选择”,说明两者主观画质相当。

9526279d8f9a3737ae96607ec7f4a2e2.png

以上为同体积比下,两种编码器的测试效果图,可以看到ANF压缩图片的质量和原图更加接近。

dd3444fba4278b8cde34839d7c9dcb91.png

以上为体积比为1:1.5时,两种编码器的测试效果图。可以看到ANF的图像细节效果仍然不错。

ca112c5e9f99e47eeba8d5077f81e47b.png

接下来介绍ANF的解码速度,我们在骁龙8gen1平台上对解码速度进行了测试,使用自封SDK测试从图片载入到最终在移动端显示所需的时间。可以看到在1080P分辨率下,ANF的平均延迟可以达到29.4毫秒,这个量级是人眼感受不到的,可以满足应用需求。

e6bb2c681b511468f6849f559283b4f7.png

以上为编码吞吐对比结果,在同样的硬件条件下和传统编码器相比,ANF可获得10-30倍的编码加速。

c56d2ecc6d8410c500302c001906d3d8.png

以上为压缩对二次识别检测影响的测试结果,选取了精确率和召回率两个指标进行衡量。可以看到在低压缩比下,ANF压缩图片的检测精度略高于avif, 两项指标与原图相当;在高压缩比下,ANF压缩图片的检测精度明显高于avif, 与原图的差距保持在2-5%范围。

19b4b68914bad9784fcfd6b5c48cfa04.png

接下来进行总结,首先在当前的图像视频大爆发时代,我们认为编解码技术的提升迫在眉睫和势在必行的。第二是图像处理AI化的趋势明显,基于AI的编码方式从算法和硬件层面均能够更好地协同。第三是AI Codec的发展速度很快,未来发展前景光明;同时AI Codec的发展也顺应了AI芯片发展的趋势。最终我们基于AI Codec的主观优化,可以超过AVIF 30%以上,解码效率可在高端机型落地,编码效率显著优于传统Codec的CPU软编方案,具备在CDN图片场景落地的可行性。我的分享到此结束,谢谢大家!


0e0023e38c7d6e3464e5cd2a89d1929e.png

扫描图中二维码或点击“阅读原文 

查看更多LiveVideoStackCon 2023上海站精彩话题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/668788.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue中的JSX的特性

JSX简介 JSX是一种Javascript的语法扩展&#xff0c;即具备了Javascript的全部功能&#xff0c;同时又兼具html的语义化和直观性。它可以让我们在JS中写模板语法&#xff1a; const el <div>Vue 2</div>; 复制代码上面这段代码既不是 HTML 也不是字符串&#xf…

java阿里云sls基于LoghubAppender自定义日志上传

1、背景&#xff1a;阿里sls日志提供快捷日志平台&#xff0c;平替elk公司使用这个日志服务&#xff0c;需要对接写入日志 目前日志集成有3种 1&#xff09;基于封装manager手动写日志手动send 弊端&#xff1a;本地日志和阿里云日志共用日志代码很臃肿 2&#xff09;基于云服…

开启数字时代,分享电脑监控和录制工具

近年来&#xff0c;随着网络技术的快速发展和普及&#xff0c;电脑屏幕录制和监控越来越成为企业、学校、家庭等不可或缺的工具。无论是在线教学、远程工作&#xff0c;还是家长对孩子上网行为的关注&#xff0c;电脑屏幕录制和监控都具有极大的帮助和重要性。今天就给大家推荐…

【Visual Studio】使用 C++ 语言,配合 Qt,开发了一个串口通信界面

知识不是单独的&#xff0c;一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏&#xff1a;Visual Studio。 文章目录 1. 获取串口名字1.1 文件 GUI.ui1.2 文件 GUI.h1.3 文件 GUI.cpp 2. 配置串口连接2.1 文件 GUI.ui2.2 文件 GUI.h2.3 文件 GUI.cpp 3. 配置串口连接…

chatgpt赋能python:Python排错大全:10年经验总结,快速定位并解决问题!

Python排错大全&#xff1a;10年经验总结&#xff0c;快速定位并解决问题&#xff01; 作为一名有着10年Python编程经验的工程师&#xff0c;在这篇文章中&#xff0c;我将详细介绍常见的Python排错技巧&#xff0c;以及我在实际工作中使用的一些技巧和最佳实践。我们将学习如…

《网络安全0-100》安全策略制定

安全策略制定 安全策略制定是指制定一系列的规范、标准和 流程&#xff0c;以保护企业或组织的信息资源和业务活 动&#xff0c;确保其安全性和可靠性。安全策略制定通 常包括以下几个步骤&#xff1a; 风险评估&#xff1a;对企业或组织的信息系统进行全面 评估&#xff…

Electron 和 Angular 项目升级

Electron 和 Angular 项目升级: Angular4Electron1.7.8 升级到 Angular13Electron2 原项目 Angular 和 Electron 版本: angular/cli: 1.4.9angular/core: 4.4.6Electron: 1.7.8 升级后 Angular 和 Electron 版本: Angular: 13.3.1Electron: 21.2.1 流程: angular-electro…

一次服务器被入侵的处理过程分享

一、服务器入侵现象 近期有一个朋友的服务器(自己做了网站)好像遭遇了入侵&#xff0c;具体现象是&#xff1a; 服务器 CPU 资源长期 100%&#xff0c;负载较高。 服务器上面的服务不能正常提供服务。 ​ 朋友处理了一会没有解决&#xff0c;我开始想说我不是搞安全的&#xf…

【Visual Studio】报错 LNK2019,使用 C++ 语言,配合 Qt 开发串口通信界面

知识不是单独的&#xff0c;一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏&#xff1a;Visual Studio。 文章目录 问题解决方案Ref. 问题 使用 C 语言&#xff0c;配合 Qt 开发串口通信界面时&#xff0c;报错代码 LNK2019。 复制以下错误信息&#xff0c;方便别…

15、SQL注入之Oracel,MongoDB等注入

这里写目录标题 引言补充上篇文章Json注入案例分析 简要学习各种数据库的注入特点Access数据库Mssql数据库PostgreSQL数据库Oracle数据库MongoDB数据库 简要学习各种注入工具的使用指南 引言 mysql的注入方法跟其它的数据库注入方法是差不多的&#xff0c;是可以举一反三的&am…

【Pandas】pandas用法解析(下)

一、生成数据表 二、数据表信息查看 三、数据表清洗 四、数据预处理 ———————————————— 目录 五、数据提取 1.按索引提取单行的数值 2.按索引提取区域行数值 3.重设索引 4.设置日期为索引 5.提取4日之前的所有数据 6.使用iloc按位置区域提取数据 7…

elasticsearch8.5.2 报错(SearchPhaseExecutionException: all shards failed)

一、问题 logstash突然无法对elasticsearch服务进行读写操作了&#xff0c;提示elasticsearch的地址有问题&#xff0c;检测elasticsearch发现端口存在。查看日志发现有报错。 二、问题原因 有一些索引的数据损坏了 三、解决 官网文档&#xff1a;https://www.elastic.co/…

记录HBuilderX将uniapp项目运行到华为手机

解压并运行刚从官网下载的HBuilder X&#xff0c;新建一个项目 一、电脑下载【华为手机助手】并安装 下载地址&#xff1a; https://consumer.huawei.com/cn/support/hisuite/ 二、华为手机设置 1、手机准备&#xff1a;华为&#xff08;没有插入手机卡&#xff09;&#x…

《网络安全》0-100 零基础

网络安全基础 什么是网络安全 网络安全是指保护计算机网络不受未经授权的攻击、损伤、窃取或破坏的一系列措施。它包括保护计算机系统、网络和数据的完整性、可用性和保密性&#xff0c;以及防止未经授权的访问、使用、披露、破坏、修改、记录或丢失数据。 网络安全是保护信息…

探秘华为交换机:端口类型全解析

在下列情况下&#xff0c;判断的一般方法是什么&#xff1f; 1.交换机某个端口下的用户丢包。 2.交换机下的所有用户都在丢失数据包。 3、用户反映网速缓慢 检查网络电缆&#xff0c;重做水晶头&#xff0c;检查用户的计算机网卡&#xff0c;并重新启动交换机。 这几种做法都能…

在 PyTorch 中实现可解释的神经网络模型

动动发财的小手&#xff0c;点个赞吧&#xff01; 目的 深度学习系统缺乏可解释性对建立人类信任构成了重大挑战。这些模型的复杂性使人类几乎不可能理解其决策背后的根本原因。 ❝ 深度学习系统缺乏可解释性阻碍了人类的信任。 ❞ 为了解决这个问题&#xff0c;研究人员一直在…

chatgpt赋能python:Python中算法的几种描述方法

Python中算法的几种描述方法 在Python中&#xff0c;我们可以采用不同的方法来描述和实现不同的算法。本文将介绍三种常见的描述算法的方法&#xff0c;希望能够帮助读者更好地理解算法和Python编程。 方法一&#xff1a;自然语言描述 自然语言是我们最熟悉的方式来描述算法…

三层交换器与可配置的二层交换机通信配置(华为交换机)

#三层交换器与可配置的二层交换机通信配置 三层交换机配置 #进入系统视图 <Huawei>system-view #关闭系统提示信息 [Huawei]undo info-center enable #启动DHCP功能 [Huawei]dhcp enable #创建vlan 10 并配置 vlanif 地址 作为二层交换机默认网关 [Huawei]vlan 10 …

nodejs高版本降为低版本的详细解决方案

部分老旧项目需要使用低版本的node,网上很多是无效的,高版本无法直接安装低版本node,但是低版本nodejs可以安装部分高版本node,从而达到升级效果,下面这篇文章主要给大家介绍了关于nodejs高版本降为低版本的详细解决方案,需要的朋友可以参考下 1.首先通过控制面板应用卸载当前环…

如何使用 Swagger2 自动生成 RESTful API 文档

如何使用 Swagger2 自动生成 RESTful API 文档 在开发 RESTful API 的过程中&#xff0c;文档是非常重要的一部分。它可以帮助开发者了解 API 的功能和使用方法&#xff0c;同时也是接口设计和测试的重要依据。而手动编写 API 文档往往比较耗时且容易出错&#xff0c;这时候 S…