使用 AI 过度压缩图像

使用 AI 过度压缩图像
神经网络等数据驱动算法席卷全球。 它们的发展有几个原因,包括廉价而强大的设备和海量数据。 神经网络目前处于与“认知”任务相关的所有事物的前沿,例如图像识别、自然语言理解等。 但它们不应仅限于此类任务。 本文讨论如何使用神经网络压缩图像,使用残差学习。 本文中介绍的方法比标准编解码器更快更好。 方案、方程式,当然还有下切测试的表格。

本文基于 工作。 假定您熟悉神经网络及其概念。 卷积 и 损失函数.

什么是图像压缩及其工作原理?

图像压缩是转换图像以使其占用更少空间的过程。 简单地存储图像会占用大量空间,这就是为什么有 JPEG 和 PNG 等旨在减少原始图像大小的编解码器的原因。

如您所知,有两种类型的图像压缩: 无损的 и 有损失. 顾名思义,无损压缩可以保留原始图像数据,而有损压缩会在压缩过程中丢失部分数据。 例如,JPG 是有损算法 [大约。 翻译。 - 基本上,我们也不要忘记无损 JPEG],而 PNG 是一种无损算法。

使用 AI 过度压缩图像
无损和有损压缩的比较

请注意,右侧图像中有很多块状伪像。 这是丢失的信息。 相似颜色的相邻像素被压缩为一个区域以节省空间,但有关实际像素的信息丢失了。 当然,JPEG、PNG 等编解码器中使用的算法要复杂得多,但这是有损压缩的一个很好的直观示例。 无损压缩固然好,但无损压缩文件占用磁盘空间大。 有更好的方法可以在不丢失大量信息的情况下压缩图像,但它们非常慢并且许多使用迭代方法。 这意味着它们不能在多个 CPU 或 GPU 内核上并行运行。 这种限制使它们在日常使用中完全不切实际。

卷积神经网络输入

如果需要计算某些东西并且计算可以是近似的,请添加 神经网络. 作者使用相当标准的卷积神经网络来改进图像压缩。 所提出的方法不仅与最佳解决方案性能相当(如果不是更好的话),它还可以使用并行计算,从而显着提高速度。 原因是卷积神经网络 (CNN) 非常擅长从图像中提取空间信息,然后以更紧凑的形式呈现(例如,仅保留图像的“重要”位)。 作者希望使用这种 CNN 功能来更好地表示图像。

建筑

作者提出了一个双网络。 第一个网络将图像作为输入并生成紧凑表示 (ComCNN)。 该网络的输出随后由标准编解码器(例如 JPEG)处理。 在经过编解码器处理后,图像被传递到第二个网络,该网络“修复”来自编解码器的图像以尝试返回原始图像。 作者将这个网络命名为 Reconstructive CNN (RecCNN)。 与 GAN 一样,这两个网络都是迭代训练的。

使用 AI 过度压缩图像
ComCNN 紧凑表示传递给标准编解码器

使用 AI 过度压缩图像
RecCNN。 ComCNN 输出按比例放大并馈送到 RecCNN,后者将尝试学习剩余部分

编解码器输出按比例放大,然后传递给 RecCNN。 RecCNN 将尝试渲染尽可能接近原始图像的图像。

使用 AI 过度压缩图像
端到端图像压缩框架。 Co(.) 是一种图像压缩算法。 作者使用了 JPEG、JPEG2000 和 BPG

什么是余数?

其余部分可以被认为是“改进”编解码器正在解码的图像的后处理步骤。 拥有大量关于世界的“信息”,神经网络可以做出关于修复什么的认知决策。 这个想法是基于 残差学习,阅读您可以了解的详细信息 这里.

损失函数

使用两个损失函数是因为我们有两个神经网络。 其中第一个是 ComCNN,标记为 L1,定义如下:

使用 AI 过度压缩图像
ComCNN 的损失函数

说明

这个方程看似复杂,其实是标准的(均方根误差) MSE. ||² 表示它们所包围的向量的范数。

使用 AI 过度压缩图像
公式 1.1

Cr 表示 ComCNN 的输出。 θ表示ComCNN参数的可学习性,XK是输入图像

使用 AI 过度压缩图像
公式 1.2

Re() 代表 RecCNN。 这个等式简单地将等式1.1的意思传达给RecCNN。 θ 表示 RecCNN 可训练参数(顶上的帽子表示参数是固定的)。

直观定义

方程 1.0 将导致 ComCNN 改变其权重,以便在使用 RecCNN 重新创建时,最终图像看起来与输入图像尽可能相似。 第二个 RecCNN 损失函数定义如下:

使用 AI 过度压缩图像
公式 2.0

说明

同样,该函数可能看起来很复杂,但这在很大程度上是一个标准的神经网络损失函数 (MSE)。

使用 AI 过度压缩图像
公式 2.1

Co() 表示编解码器输出,顶部带帽子的 x 表示 ComCNN 输出。 θ2 是 RecCNN 可训练参数, res() 只是 RecCNN 的残差输出。 值得注意的是,RecCNN 是在 Co() 和输入图像之间的差异上训练的,而不是在输入图像上训练的。

直观定义

方程式 2.0 将导致 RecCNN 改变其权重,以便输出看起来与输入图像尽可能相似。

培训计划

模型是迭代训练的,比如 . 第一个模型的权重是固定的,而第二个模型的权重正在更新,然后第二个模型的权重是固定的,同时第一个模型正在被训练。

测试

作者将他们的方法与现有方法(包括简单的编解码器)进行了比较。 他们的方法比其他方法执行得更好,同时在适当的硬件上保持高速。 此外,作者尝试仅使用两个网络中的一个并注意到性能下降。

使用 AI 过度压缩图像
结构相似性指数比较 (SSIM)。 高值表示与原件更相似。 粗体表示作者的工作结果

结论

我们研究了一种将深度学习应用于图像压缩的新方法,并讨论了在图像分类和语言处理等“一般”任务之外的任务中使用神经网络的可能性。 这种方法不仅不逊色于现代要求,而且可以让您更快地处理图像。

学习神经网络变得更加容易,因为我们专门为 Habravchan 制作了促销代码 哈勃, 在横幅上显示的折扣基础上额外提供 10% 的折扣。

使用 AI 过度压缩图像

更多课程

推荐文章

来源: habr.com

添加评论