Uber AI Labs介绍了一种制作神经网络的方法,该方法通过破解libjpeg并利用JPEG表示来更快,更准确的完成图像处理的任务。本文来自Uber Engineering博客,LiveVideoStack进行了翻译。
文 / Lionel Gueguen, Alex Sergeev, Rosanne Liu, & Jason Yosinski
译 / 元宝
原文 https://eng.uber.com/neural-networks-jpeg/
神经网络是处理各种行业数据的重要工具,在过去几年里从一个学术研究领域发展成为行业的基石。卷积神经网络(CNN)对于从图像中提取信息特别有用,无论是对图像进行分类,识别人脸还是评估围棋棋局的位置。
在Uber,我们将CNNs用于各种用途,从检测物体和预测其运动到处理街道级别和卫星图像的千兆字节,以改善我们的地图。在使用CNN时,我们关心它完成任务的准确程度,在很多情况下,我们也关心它的速度。在这两个示例中,一个是网速是原来的两倍的网络可以实现实时检测而不是离线检测,或者能够在一周的数据中心时间而不是两周内处理庞大的数据集。
在本文中,我们描述了在NeurIPS 2018上提出的一种方法,通过破解libjpeg并利用JPEG(流行的图像格式)已经使用的内部图像表示,同时使CNNs更小、更快、更准确。这项工作的早期版本于2018年6月作为ICLR研讨会海报提出。本文还将讨论与网络架构设计相关的频率空间和颜色信息的惊人见解。
为了理解这种方法,首先让我们看一下JPEG编解码器的工作原理。一旦我们理解了JPEG,我们就可以很自然地应用CNN。
JPEG的工作原理
JPEG是一种旧格式,在2017年庆祝了它诞生25周年,并且它仍然是最广泛使用的图像格式之一。在其常见配置中,JPEG编码器执行图1中的步骤,如下所示,从右到左:
图1. JPEG编码过程包含几个阶段,此处从右到左显示。
从图像的RGB表示开始(如右图所示),图像被转换为表示亮度(亮度)的YCbCr颜色空间-Y,以及表示色度(色调)的Cb和Cr通道。然后,通过预定因子(通常是两个或三个)对Cb和Cr通道进行下采样(在我们的工作中,我们使用两个因子)。这种下采样是压缩的第一阶段:信息丢失的第一阶段。然后,将该表示中的每个信道分成8×8块并通过离散余弦变换(DCT),变换到类似于傅立叶变换的频率空间。DCT本身是无损且可逆的,将8×8空间块转换为64个通道。
然后量化系数,这是一个有损的过程,包含第二压缩阶段。量化由JPEG质量参数控制,质量设置越低,压缩越严重,文件越小。量化阈值是特定于每个空间频率,并且经过精心设计的:对低频的压缩比高频率更少,因为人眼对宽频区域上的细微误差比对高频信号幅度的变化更敏感。然后,通过霍夫曼编码的变体无损地压缩量化的DCT系数(整数)并将其存储在JPEG文件中,如上面图1中所示的image.jpg。
JPEG解码过程与JPEG编码过程完全相反。所有可逆步骤都被精确地反转,两个有损步骤——量化和下采样——近似反转以产生RGB图像。对于上下文,此过程可能已运行十次,只是为了解码和显示此网页上显示的图像!