最先进的技术:基于 AI 的图像压缩

最先进的技术:基于 AI 的图像压缩

什么是图像压缩?
Image Compression

图像压缩包括压缩图像像素、尺寸或颜色组件,减小文件的大小,同时也减少了存储和处理负担(增强 Web 性能)先进的图像优化技术可以识别更重要的图像组件,同时删除不重要的部分。

图像压缩是数据压缩(Data Compression)的一种,因为图像压缩减少了编码图像所需的数据位,但同时又保留了图像细节。

图像压缩的应用包括:

  • 存储(Storage)——压缩后的数据占用的磁盘空间更少,这对于存档详细的图像(如医疗图像)非常有用。
  • 主成分分析 (Principal component analysis – PCA) — 图像压缩方法,用来提取图像中最重要的组件;用于提取或总结特征,并分析数据。
  • 标准化(Standardization)——在某些情况下,图像集必须符合标准尺寸和格式,要求将所有图像压缩成相同的尺寸、形状和分辨率。例如,安全和政府机构维护的记录要求标准化图像。

图像压缩与深度学习
Deep Learning

从20世纪80年代以来,深度学习 (DL) 一直被用于图像压缩,并且已经扩展至多层感知器、随机神经网络、卷积神经网络和生成对抗网络等技术。

多层感知器
Multi-Layer Perceptrons

多层感知器(MLPs)在输入神经元和输出神经元之间有一层或多层的隐藏层或神经元。从理论上来说,有多个隐藏层的 MLP 对于降维和数据压缩很有用。用 MLP 的图像压缩涉及到整个空间数据的单一变换。

最初用于图像压缩的MLP算法于1988年公开,并将传统的图像压缩机制,如空间变换网络(spatial domain transformation) 、二进制编码、和量化整合到一个综合优化任务中。该算法依靠分解神经网络,来识别压缩后的比特流输出中的最佳二进制码组合,但不能将神经网络的参数固定为可变的压缩比。

该算法进一步发展了基于周围像素的预测技术,从而估计每个像素的值。然后 ,MLP 算法使用反向传播最小化,来预测像素和原始像素之间的均方误差。

卷积神经网络
Convolutional Neural Networks

和传统的计算机视觉模型相比,卷积神经网络 (CNN) 减少了压缩伪影,并提高超分辨率性能。CNN 的卷积运算能够用于确定相邻像素的相关性。而级联卷积运算(Cascaded convolution operations)反映了复杂图像的特性。

然而,在整个图像压缩过程中,运用 CNN 模型是存在一定困难的,因为这个过程需要用到梯度下降算法以及反向传播,这在端到端图像压缩中具有挑战性。

2016年, CNN首次被用于图像压缩,其算法由分析模块和合成模块组成。分析模块由卷积、分裂和下采样归一化阶段组成。每个阶段都以仿射卷积开始,得到下采样输出结果,然后使用广义除法归一化 (GDN) 计算下采样信号。

基于 CNN 的图像压缩改进了 JPEG2000 指标,例如峰值信噪比 (PSNR) 和结构相似度 (SSIM)通过使用超先验(hyper priors)的尺度,该算法在熵预估方面得到进一步发展。这让图像压缩性能水平更加接近了高效视频编码 (HEVC) 等标准。

生成对抗网络
Generative Adversarial Networks

生成对抗网络 (GAN) 是由两个对立的生成网络模型组成的深度神经网络。第一个基于 GAN 的图像压缩算法于 2017 年问世。由该算法生成的压缩文件大小只有 WebP 的一半,比 JPEG 或 JPEG200 小 2.5 倍,比 BPG 小 1.7 倍。该算法还利用并行计算 GPU 内核实时运行。

GAN 图像压缩涉及了基于输入图像的特征,可在微小的特征空间中重建压缩图像。相对于CNN, GAN网络在图像压缩方面的主要优势是对抗损耗,从而提高输出图像的质量。同时训练对立网络,相互对抗,提高了图像生成模型的性能。

基于 AI 的图像压缩框架和库

从理论上讲,个人可以独立编写整个图像处理应用程序,但事实是,还需要利用其他人开发的内容,并根据自己的需要简单地调整或扩展现有软件。有很多现有的框架和库为图像处理提供图像处理的模型,其中大多数都是在大型数据集上预先训练的。

开放式CV
Open CV

开源计算机视觉 (OpenCV) 库提供数百种机器学习和计算机视觉算法,以及数千种函数支持来这些算法。很多人都会选择用这个库,因为它支持所有主流移动和桌面操作系统,还有 Java、Python 和 C++ 接口。

OpenCV 包含了大量用于图像压缩功能的模块,包括图像处理、对象检测、和机器学习模块。你可以用这个库获取图像数据,并对其进行提取、增强和压缩。

TensorFlow

TensorFlow 是来自谷歌的开源框架,支持机器学习以及深度学习。TensorFlow 可以帮你自定义构建并训练深度学习模型。TensorFlow包含许多库,其中一些库对计算机视觉应用程序和图像处理项目很有用。TensorFlow Compression (TFC) 库还提供数据压缩工具。

你可以使用 TFC 库,创建带有内置优化数据压缩功能的机器学习模型。你还可以用它识别存储效率高的数据表示形式,例如图像和特征,对模型性能的影响可以忽略不计。你还可以将浮点张量压缩成更小的位序列。

MATLAB 图像处理工具箱

矩阵实验室(Matrix Laboratory),又称 MATLAB ,是一种编程语言,也是一种主流的数学和科学问题解决平台。这个平台提供一个图像处理工具箱 (IPT),其中包含用于处理、分析和可视化图像的各种工作流应用程序和算法,同时还可用于开发算法。

MATLAB IPT 能够实现图像处理工作流程的自动化,应用范围从降噪和图像增强、到图像分割、和 3D 图像处理。IPT 函数一般支持生成 C/C++ 代码,对于部署嵌入式视觉系统或桌面原型设计非常有用。

尽管 MATLAB IPT 不是开源框架,但你可免费试用。

高保真生成图像压缩

高保真生成图像压缩(High-Fidelity Generative Image Compression)是一个 Github 项目,利用学习的压缩和 GAN 模型,创建有损压缩系统。很多编程爱好者对该项目非常感兴趣,因为他们可以在 Github 上试验 HiFiC 代码。这个模型在重建压缩图像中的详细纹理方面非常有效。

结论

本文主要讨论了基于深度学习的图像压缩算法的先进技术,包括多层感知器、卷积神经网络和生成对抗网络。本文还介绍了可用于构建基于 AI 的图像压缩应用程序的现成工具:

  • OpenCV——包括数百个机器学习模型,以及执行图像压缩的模块。
  • TensorFlow——可以帮助你构建并精细定制图像处理和压缩模型。
  • MATLAB Image Processing Toolbox — 帮助你构建图像处理工作流程和算法,包括图像分割和 3D 图像处理。
  • 高保真生成图像压缩——一个使用 GAN 模型执行有损压缩的开源项目。

如果你想了解更多数据分析相关内容,可以阅读以下这些文章:
Classification Algorithm 101: 一小时学会机器学习的分类算法
5种机器学习的分类器算法
Python机器学习库:pycarets新增时间序列模块
机器学习VS深度学习:有什么区别?

谢谢你的阅读!希望本文可以帮助你评估深度学习在图像压缩和优化项目中的使用!你还可以订阅我们的YouTube频道,观看大量数据科学相关公开课:https://www.youtube.com/channel/UCa8NLpvi70mHVsW4J_x9OeQ;在LinkedIn上关注我们,扩展你的人际网络!https://www.linkedin.com/company/dataapplab/

原文作者:Gilad David Maayan
翻译作者:Lia
美工编辑:过儿
校对审稿:Jiawei Tong
原文链接:https://towardsdatascience.com/ai-based-image-compression-the-state-of-the-art-fb5aa6042bfa