《数据万象带你玩转视图场景》第三期:图片极智压缩

news2024/11/25 11:26:02

前言

在本系列的第一期我们介绍了图片 AVIF 压缩,作为最前沿的压缩技术,AVIF 确实有着无数的优点。但时代的进步是循序渐进的,在一些较老的终端或设备上,可能短时间内确实无法支持 AVIF 格式,那如何能让这部分业务享受到时代的红利?

对此,数据万象推出了基于最通用的jpg、png、gif等图片格式的压缩能力——图片极智压缩,可以在不改变图片格式的情况下,大幅减小图片大小,并保证图片视觉上的无损查看。

 图片压缩与主观视觉

最早期的时候,最先出现的图片压缩算法是无损压缩算法,这些无损压缩算法使用lz77系列的算法来对图像数据做压缩,因此压缩性能有限。

后来有心理视觉研究表示,人眼对图像的主观视觉存在大量的冗余,如果对图片中的一些数据进行改变,但控制信息损失的程度,可以使得人眼对图像的观感几乎不变,因此出现了有损压缩算法。

有损压缩算法,能在人眼主观视觉无损或者损失受控的前提下大幅压缩图片文件体积,主要是利用人眼对不同频率信号的敏感程度差异,通过损失高频信息来减少图片信息量,从而能将图片文件体积压缩到更小。

图1. 根据心理视觉研究得到的 CSF 函数坐标图:横轴表示空间频率,纵轴表示敏感度

可见,高频信息频率越高人眼的敏感程度越低。

以有损压缩中的关键步骤 DCT 变换 + 量化为例,将图片按 8x8 做切分并做 DCT 变换,保留不同长度的 DCT 系数再做还原的视觉效果如下:

图2. 最左侧为原图,8x8 的分块做 DCT 变换后共有64个频率系数表示从低频到高频的信息,中间和右图分别为保留低频部分10个系数和1个系数的效果

可见在只保留一个系数的情况下每个 8x8 的分块退化成了纯色块,而在保留10个系数的情况下图像和原图相当接近,可见在损失了大部分高频信息的情况下,图像的主体内容并没有受到大的影响。

人眼对色彩信息的感受存在很多冗余,例如人眼对叠加在黑色背景上的蓝色信号和叠加在黄色背景上面的蓝色信号(黄色+蓝色=白色)敏感度不同,如下图所示:

图3. 左右两边的形状,亮度值完全一致

可以看到,上面右边图的第三行字“你好!”几乎不可见,但对于图像编码中的计算而言两边是一致的,这些不被注意到的信息也会被编码到图像当中,占用文件的体积。因此可以通过滤除非敏感的信息来减少待编码的信息量,达到减小图片文件体积的目的。

图片压缩技术的出发点是降低主观视觉冗余和降低数据冗余,目前的压缩方式基本都会改变图片编码的方式,从而改变图片的格式,通过降低更多的数据冗余来提升压缩能力。

但是在一些较老的终端或设备上,可能短时间内无法支持前沿的图片格式,如何在不改版图片格式的前提下,通过降低主观视觉冗余,实现一定的图片体积节省,正是极智压缩的研究方向。

 图片的主观质量

在图像的有损编码中,质量参数控制的其实是图像信息的损失程度,但不同内容的图片在按相同的方式损失信息后的主观质量不同。

正常的编码算法依照质量参数的大小总是优先损失高频信息,而按照 CSF 函数人眼对高低频信息的敏感度并非是完全单调的,因此相同的质量参数无法保证一致的主观质量。

图4. 左右两张图片使用同样的 jpeg 编码质量,但内容简单的图像(右)主观质量更高

通常来说质量参数越高损失程度相对越小,因此为了保证不出现低主观质量的图片,需要对所有图片设置较高的编码质量参数,从而使得大量图片高于目标主观质量,导致图片文件大小产生了冗余。若能根据图片内容自适应编码质量参数,将能保证一致的主观质量的同时,控制图片文件的大小。

因此,通过前处理技术滤除人眼相对不敏感的信息,以及对不同内容图像自适应编码参数,可以有效地减小图片文件的体积。

 极智压缩技术原理

1、设计主观质量评价模型

极智压缩的开发需要依赖主观质量数据集,我们认为当前的公开数据集在数据规模和标注质量上均有较多改进空间,因此自建了大规模、高质量的主观质量数据集。总共采集100万条公开图像数据,并在色彩、纹理复杂度等客观维度上对数据做均衡,使多个客观维度上的数据分布尽量平坦,筛选后形成20万条待标注数据。在人工标注环节,通过控制标注硬件环境、让标注人员在标注前学习样例、连续标注一定量后强制休息来保证标注质量。并且在待标注数据中埋入测试数据桩,再对标注后的数据进行清洗,剔除掉异常的标注数据。最终形成超过500万人次标注记录的高质量人工标注数据集。

由于人眼主观视觉的复杂性,传统的单一维度质量指标难以与人工标注值相吻合。因此当前业界的方向是综合多个维度的指标来对人工标注值做拟合,或者直接使用深度学习的方法。深度学习方法理论上能拟合复杂的函数,适合用来模拟人眼对图像质量做打分。我们基于图像的分类模型,改进了数据预处理流程、视觉注意力机制和模型训练策略等,反复迭代后形成了主观质量评价模型。

为了考察自研模型的先进性,我们使用自研模型的网络在 KonIQ-10K 和 SPAQ 公开数据集上分别做训练并与多个公开方法做了比较,从结果来看自研模型的表现超越了公开的 SOTA 模型。

图5. 自研模型在 KonIQ-10K 和 SPAQ 公开数据集上的结果

在自建的人工标注主观质量数据集上训练后达到了0.939的PLCC。使用该模型制作主观质量评价工具来驱动极智压缩算法的设计开发,保证了极智压缩的效果。

图6. PLCC 0.939

2、  去噪、色彩量化等前处理技术

通过前处理技术滤除人眼主观不敏感的高、低频信息以及相对冗余的色彩信息,使得同样的编码质量参数下输出的图像体积减小,并且保持主观质量基本不变。即使对PNG/GIF这样的无损编码格式也能使用处理技术减少信息量,来降低图片文件体积。

例如 JPEG 等有损压缩格式,噪点水平会对文件大小造成很大影响,大多数时候噪点是图像中的干扰因素,并且人眼对噪点不敏感,因此可以对图像做适当的去噪处理,可以降低编码后的文件大小;而对于 GIF/PNG 这样的无损压缩格式,色彩数量对文件大小会造成很大影响,如果去除一些人眼相对不敏感的色彩则能大幅降低编码后的文件大小。

通过对处理前后的图像使用主观质量工具进行评分,控制评分的差异可以避免处理算法过度损伤主观质量。

如下所示,原图和处理后的图像相比,虽然色彩的数量大幅下降了99%,但在观感以及主观质量工具的评分上是非常接近的。

图7. 原图(左)包含46752种色彩,质量工具评分为6.17;处理后的图(右)只有256种色彩,质量工具评分为6.0

3、根据输入图像的主观质量智能选择编码参数

在有可靠的主观质量评分工具的情况下,可以使用搜索的方式,即先使用默认的编码参数做编码,再根据主观质量工具评分来调整编码参数,重复这个过程最终找到与预期质量对应的编码参数,但这样会做多次编码和评分,消耗大量的算力并且时延较大。所以最合理的方式是使用预测的方式,根据输入的图像直接得到合适的编码参数。这里我们设计算法分析输入图像的画面复杂度、编码损伤程度以及对图像做前面提到的主观质量评分,使用这些特征,通过深度网络学习到内容特征与合适编码参数间的关系,从而做到图像编码参数的智能选择。使用预测的参数编码图像的主观质量工具评分与预期分数的差异小于0.5的概率超过了95%。

图8. 编码参数自适应流程

 极智压缩图片效果对比

图9. jpg 原图(上)2.3MB;jpg 极智压缩图(下)1.2MB

图10. png 原图(左)1.4MB;png 极智压缩图(右)0.6MB

从上面的示例图可以看到,在经过压缩后,图片原有尺寸均不变的情况下,压缩后图片几乎可以跟原图无缝衔接,在体积均减小了约50%,压缩效果非常显著。

 数据万象图片极智压缩的使用方法

图片极智压缩与 COS 进行了深度的集成,可在服务开启后,直接访问原图链接,不加任务处理参数即可获取到压缩后图片。

使用前提条件

需要先开通数据万象图片极智压缩功能,您需要在已绑定数据万象服务的存储桶中,开启图片极智压缩功能。

注意事项:当前极智压缩仅支持在上海北京地域的存储桶开通使用。

操作指引

1.  登录对象存储控制台,选择指定存储桶(北京或上海地域的),然后选择界面左边红框内“数据处理”,再选择“图片处理”,找到图片极智压缩,然后点击编辑,开通后保存即可。

2. 选择该存储桶的一张图片,复制图片链接,比如:https://XXXXXXX-1250000000.cos.ap-shanghai.myqcloud.com/test.png

3. 直接访问图片链接,即可获取压缩后的图片。

 展望与总结

与先进的 AVIF 压缩相比,极智压缩解决了图片在较老终端访问的兼容性问题,除了提高图片传播下载的效率,还可以在保证极高压缩性能的基础上保留更多的图像细节,大大提升用户体验。

后续我们将进一步改进图像处理算法,挖掘更多视觉冗余,同时结合视觉 ROI 特性,通过适当抹除低关注区域的信息在同等主观质量下,使图片体积变得更小。

赶快来使用腾讯云吧,将图片存储在腾讯云 COS,通过数据万象将业务图片进行无感知的压缩!

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

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

相关文章

【毕业季征文】你们的未来可期

还有大约一个月即将又有一批大学的学弟学妹们离开学校,走向社会,走上工作岗位。你们是否是既兴奋又迷茫呢?,我相信更多的是憧憬吧。回想我大学毕业那是10年前的事情了,现在的感受是那么遥远,仿佛自己从来都没上过大学。可能是在大学期间过的太过艰苦,以至于不想保留那一…

TDengine客户端连接

目录 TDengine-clinet 下载网址 运行软件 连接默认TD 连接指定TD TDengineGUI 下载地址 使用 连接:端口默认是6041; sql查询时需要制定 库名 TDengine-clinet 下载网址 连接器 | TDengine 文档 | 涛思数据 默认安装即可; 运行软件 连接默认TD…

机器学习期末复习 线性模型

1.线性回归,对数几率回归,线性判别分析是分类还是回归任务?是有监督的学习还是无监督的学习? 有监督学习和无监督学习 解释: 线性模型要做的有两类任务:分类任务、回归任务 分类的核心就是求出一条直线w…

JavaScript之BOM(上)

Window对象 1.BOM(浏览器对象模型) 2.定时器-延时函数 3.JS执行机制 4.location对象 5.navigator对象 6.history对象 一.BOM(浏览器对象模型) 1.BOM(Browser Object Model)是浏览器对象模型 2.window对象是一个全局对象,也可以说是JavaScript中的顶级对象 3.像do…

Facebook速推帖子和Facebook广告有什么区别

Facebook速推帖子和Facebook广告是在Facebook平台上推广内容的两种不同方式。虽然它们都可以帮助我们增加品牌曝光和吸引目标受众,但它们在运作方式和效果上有一些区别。让我们来详细了解一下它们之间的差异。 1.内容形式和展示方式: Facebook速推帖子&…

基于北斗+LoRa的落水报警定位方案一 -实现无人区,弱信号地区人员 位置安全监控

人员安全一直是企业管理的重中之重。无人区工地是一个安全事故多发的地方,在施工环境复杂且危险的情况下,工地人员位置监控成为管理工作中的一个难点,一直以来采用粗放的方式,现有的工地项目存在施工人员实时督查难等问题&#xf…

【问题记录】postgreSQL使用默认密码导致kdevtmpfsi挖矿病毒注入

起因 postgreSQL我做错了这几件事情 开启了全部IP登陆权限postgreSQL用的是默认用户名和密码用户postgres也没有设置密码,直接用su - postgres就能登陆 不知道是什么原理,反正服务器被侵入,并且注入了病毒文件 1. 基本信息排查 linux服务器…

大麦链接源码 大麦一键生成订单页面

8.4最新版源码 更新了大麦模版链接 更新了大麦订单页面一键生成

《Web安全基础》01. 基础知识

基础 1:概念名词1.1:域名1.2:DNS1.3:网站开发语言1.4:后门1.5:Web1.6:Web 相关安全漏洞 2:数据包2.1:HTTP2.2:HTTPS2.3:请求数据包2.3.1&#xff…

Linux Centos7 jar包方式安装Jenkins服务

1、本文是在VM虚拟机下安装的Centos7,这一步不赘述,有很多教程。 2、配置好静态IP,可参考Linux配置静态IP地址_cylemon的博客-CSDN博客 3、本文是通过XShell连接linux来操作linux系统的。配置JDK1.8及以上环境。先查看一下当前环境是否已存…

三、JavaWeb从入门到熟练

一、JavaWeb概述 Java Web,是用Java技术来解决相关web互联网领域的技术栈。web包括:web服务端和web客户端两部分。Java在客户端的应用有Java Applet,不过使用得很少,Java在服务器端的应用非常的丰富,比如Servlet&…

chatgpt赋能python:Python做聊天程序:打造智能交流

Python 做聊天程序:打造智能交流 Python 是一种易于学习、灵活性强、最近几年得到广泛应用的编程语言。在当今数字化时代,即便是日常生活中我们都需要与人交流,但人们社交媒体的繁荣已经印证了人们对在线交流工具的需求。以下将对 Python 如…

澳洲学生用ChatGPT代写?澳洲多所高校使用全新反击工具检测

朋友们听句劝 ChatGPT可太危险了 ChatGPT有多火?据2月1日瑞银发布的一项研究报告显示,仅仅发布两个月,ChatGPT月活跃用户已达1亿,这是历史上增长速度最快的应用。要知道达成1亿用户的时间,Instagram用了2.5年&#xf…

【013】C++数组之一维数值数组和二维数值数组

一维数值数组和二维数值数组 引言一、一维数值数组1.1、概念1.2、一维数值数组的定义1.3、一维数值数组的初始化1.4、一维数值数组的元素操作1.5、使用示例 二、二维数值数组2.1、概述2.2、二维数值数组的初始化2.3、二维数值数组的元素操作2.4、使用示例 总结 引言 &#x1f4…

​LeetCode解法汇总1091. 二进制矩阵中的最短路径

目录链接: 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣 描述: 给你一个 n x n 的二进制矩阵 grid 中,返回矩阵中最短 畅通路径 的长…

修改优美移动端中间的老师的轮播图

副标题在高级内容那,如果缩略图上传不上去。那就是改一下图片名字,多刷新几次试试

Java程序设计入门教程--整数类型

举例 int x123; //指定变量x为int型,且赋初值为123 byte b8; //指定变量b为byte型,且赋初值为8 short s10; //指定变量s为short型,且赋初值为10 long y123L,z123l; //指定变量y,z为long型,且分别赋初值为123 示例代…

公文写作素材:为人处世类过渡句50例

1.身处逆境,敢于亮剑,坚毅前行,方能逆势突围;面对困难,坚定信心,敢拼敢闯,定能笑到最后。 2.没有海纳百川的胸怀,怎能容得下不同性格的人;没有从善如流的雅量&#xff0…

Python中处理无效数据的详细教程(附案例实战)

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

云原生之深入解析Kubernetes的网络模型

一、前言 Kubernetes 是为运行分布式集群而建立的,分布式系统的本质使得网络成为 Kubernetes 的核心和必要组成部分,了解 Kubernetes 网络模型可以使你能够正确运行、监控和排查应用程序故障。网络所涉及的内容很多,拥有许多成熟的技术。对于…