Taming Lookup Tables for Efficient Image Retouching

news2024/12/23 9:27:29

Abstract

高清屏幕在终端用户相机、智能手机和电视等边缘设备中的广泛使用,刺激了对图像增强的巨大需求。现有的增强模型通常针对高性能进行优化,但不能减少硬件推断时间和功耗,尤其是在计算和存储资源受限的边缘设备上。为此,我们提出了一种图像颜色增强查找表(ICELUT),它采用查找表(LUT)进行非常有效的边缘推断,而不需要任何卷积神经网络(CNN)。在训练过程中,我们利用逐点(1 × 1)卷积提取颜色信息,同时利用分割的完全连接层来合并全局信息。然后,将这两个组件无缝地转换为LUT,以实现与硬件无关的部署。ICELUT实现了接近最先进的性能和极低的功耗。我们观察到,逐点网络结构表现出鲁棒的可扩展性,即使对于大量下采样的32×32输入图像也能保持性能。这使得第一个纯基于LUT的图像增强器ICELUT在GPU上达到了前所未有的0.4ms速度,在CPU上达到了7ms速度,比任何CNN解决方案都快至少一个数量级。有关代码,请访问https://github.com/Stephen0808/ICELUT获取。

1 Introduction

在数码相机成像中,不利的拍摄条件和有限的计算能力会导致图像质量下降。为了满足审美偏好,传统的增强过程涉及使用专家设计的级联模块进行曝光补偿、饱和度调整和色调映射。然而,这些费力且不灵活的调整往往会导致图像不令人满意。为了克服这一点,深度学习方法在自动修饰图像方面越来越受欢迎。

现有的工作可以分为两类:1)图像到图像网络,其直接将输入图像变换为其增强版本,以及2)预测3D查找表(LUT)以映射输入像素(即,RGB值)转换为增强的对应值。在第一类中,应用卷积核来处理整个图像像素。在该流水线中,由于涉及内核内的所有像素,因此计算负担很高。为了克服这一障碍,[23]提出了一种基于3D LUT的方法,该方法将像素预测网络转换为权重预测网络,该权重预测网络被训练来预测用于对一系列基本3D LUT进行加权的权重张量。由于权重对应于图像的亮度、颜色和色调,因此网络仅需要以显著减少的计算来处理下采样图像。这为实现实时图像推理迈出了重要的一步。然而,大多数边缘或便携式设备具有有限的计算或功率预算,使得其需要为每个图像推断执行资源密集型计算。如图1所示,像素预测和权重预测网络由于它们的卷积神经网络(CNN)性质而表现出高浮点运算(FLOP)。相比之下,LUT方法构成了成本有效且硬件友好的数据结构,其仅需要位置索引来直接检索输出。尽管如此,虽然LUT对于推理是有效的,但是在它们的表示能力和存储要求之间存在折衷。具体地,较大的特征向量(用作地址索引)增强了表示,但这导致LUT大小的指数增长,这通常是禁止的。一个很自然的问题出现了:我们是否可以将神经网络转换为大小合理的LUT,以节省FLOP并减少延迟,同时不影响图像质量?幸运的是,这项工作,第一次,提供了一个肯定的答案,纯粹的基于LUT的图像增强器。

由于LUT大小与输入维度呈指数关系[9,12,15],因此我们首先研究了感受野大小(空间)和输入通道数量(深度)对性能的影响。为此,我们发现即使接受野很小,该模型也可以实现高性能,但三个RGB通道的缺失严重阻碍了性能。因此,在训练过程中,我们提出了一个具有全逐点卷积层的网络来进行特征提取,其中感受野大小保持在1 × 1。具有三个通道的每个输入像素可以通过LUT唯一地映射到输出。为了有效地处理8位(INT 8)彩色图像,我们采用两个并行分支来分别处理4个最高有效位(MSB)(表示为IMSB)和4个最低有效位(LSB)(表示为ILSB)。它将LUT地址(即输入索引)从2563减少到2 × 163。此外,全逐点网络的特征输出被池化并输入到全连接(FC)层以集成全局信息。然而,典型的FC输入特征尺寸不可避免地大到实际大小的LUT的地址索引。为了克服这种维数灾难,我们提出了一个分裂的FC层,将其输入功能分成小长度的组,并为每组使用单独的FC层。它将存储器从(V)C减少到L ×(V)K,其中V、C、L和K分别代表可能的输入值、通道数、组长度和组数,C = L×K。将所有输出相加以获得权重向量,该权重向量用于将基础LUT线性组合成3D LUT以用于最终的表查找和内插。在训练之后,我们将这样的CNN+FC骨干转移到LUT中,从而在推理期间仅使用具有最小FLOP的表查找操作。

输入分辨率对于图像处理中的延迟和FLOP至关重要。传统的3D LUT方法将图像降采样到256 × 256,以实现更快的实时推理。通常,较小的分辨率会导致较低的延迟和FLOP。我们提出的架构探讨了输入分辨率和感受野,发现逐点感受野即使在显着下采样图像的情况下也能最大限度地降低性能损失。这使我们的网络能够使用32 × 32下采样输入,同时保持与原始分辨率相似的性能。本文的主要贡献有三个方面:

1.我们发现通道数对于图像修饰是至关重要的,设计一个具有全逐点卷积核的网络有利于LUT转换。

2.我们揭示了一个小的感受野灌输鲁棒性低分辨率输入的训练和推理。我们的网络中使用了前所未有的32×32下采样图像,以实现极高的速度和最小的性能下降。

3.我们的纯LUT方案在GPU(CPU)上实现了惊人的0.4ms(7ms),具有接近最先进的性能,并将功耗降低到与CNN方案相比可以忽略不计的水平。

2 Related works

2.1 Learning-based image enhancement

自从引入了包含输入和专家修改的图像对的大规模数据集MIT-Adobe FiveK [3]以来,已经出现了许多基于学习的增强算法来推动该领域的发展。一般来说,基于学习的方法可以分为两类:图像到图像的转换和基于物理学的建模。

第一类将此任务视为图像到图像的转换,直接学习输入与其增强图像之间的端到端映射,而无需显式建模中间参数。[1]和[11]都使用UNetlike网络来预测增强的结果,而[4]利用双向生成对抗网络(GAN),使用未配对的修饰数据进行训练,以减少专家修饰的数据收集。为了进一步补充特征提取,[19]探索了照明与此任务的联系,并设计了一个基于编码器-解码器的网络用于图像增强。

在第二类中,领域先验知识被用作模型设计的指导信息,因为预测从输入到输出的转换通常比直接预测输出更简单[18]。通过将增强过程视为非线性变换,[1]预测多项式映射函数,而一维RGB曲线在[10,16]中近似。为了进一步加速推理,HDRNet [5]在输入的低分辨率副本上执行大部分推理,并使用神经网络应用双边滤波器,实现1080p分辨率图像的毫秒级处理。然而,通常需要的额外参数(例如,3 × 3卷积)不是专门用于图像增强的,这导致了大量的实现冗余。在这一点上,[6]使用了一个轻量级的主干来进行像素处理,并设计了一个用于全局特征提取和合并的块,这比其他方法小了几个数量级。最近,[17]采用区域映射和人类可理解的过滤参数来实现细粒度增强。

2.2 3D LUT-based image enhancement

第一个基于3D LUT的方法在[23]中提出,它将像素级预测转换为系数预测。受益于正则化LUT,轻量级网络仅预测用于对可训练LUT进行加权的一组系数。3D LUT沿着这条线扩展到其他任务和场景。通过分析通道相干性,CLUT [24]应用变换矩阵来自适应地压缩LUT。[20]将像素类别信息嵌入到多个LUT的组合中,而[22]将单个颜色变换分离为分别实例化为1D和3D LUT的分量独立和分量相关子变换的级联。最近,[14]利用4D LUT来实现内容相关增强。

2.3 Replacing CNN with LUT

虽然基于3D LUT的方法可以实现显著的效率,但与表查找相比,CNN系数预测网络仍然消耗大量的计算资源。最近,一些工作已经深入研究了将神经网络转换为LUT以绕过计算。[9]首先将具有有限感受野的CNN转换为LUT以实现超分辨率。在此范例中,网络接收受限像素(例如,2×2)并在训练过程中预测相应的超分辨率像素。然后,通过遍历感受野中输入值的所有可能组合,将CNN转换为LUT。在推断期间,高分辨率像素通过用作LUT的地址索引的输入像素值来检索。随后的工作[8,12,15]采用串行LUT来扩大感受野,并实现了较大的PSNR改善。为了充分利用空间像素同时避免LUT大小的指数膨胀,这些方法仅为单个输入通道构建独立的LUT,即,一致地处理RGB通道。然而,与侧重于利用空间信息恢复高频细节的超分辨率不同,图像颜色增强由于通道相互作用而需要保留颜色信息。因此,上述信道不可知LUT对于图像增强是不可行的。

3 Method

3.1 3D LUT preliminaries

3D LUT是一种高效的实时图像增强工具,它通过将非线性3D颜色变换稀疏采样到离散化的3D网格中来建模。先前的方法已经尝试设计用于学习图像自适应3D LUT的模型,利用轻量级CNN主干来预测用于融合一系列基础3D LUT的权重以形成图像相关3D晶格V = {(Vr,(i,j,k),Vg,(i,j,k),Vb,(i,j,k))}i,j,k= 0,1,.,M-1,其中M是每个颜色通道中的箱数。每个元素V(i,j,k)定义索引RGB颜色{rI(i,j,k),gI(i,j,k),bI(i,j,k)}和对应的经变换的输出RGB颜色{rO(i,j,k),gO(i,j,k),bO(i,j,k)}。一旦对3D点阵进行采样,输入像素就会根据其颜色查找其最近的索引点,并通过三线性插值计算其映射输出。

然而,CNN中的繁重计算仍然是边缘设备上推理的负担。在这里,我们使用非常轻量级的方法CLUT [24]作为例子。如表1所示,我们观察到CNN前向传递中的35倍延迟和15倍FLOP与随后的3D LUT映射(即插值和表查找)相比,这表明表查找的效率要高得多。问题如下:有没有可能将CNN转换成一个纯粹基于LUT的模型,具有快速的推理速度,成本效益和高性能?理想情况下,增强的图像可以只通过查表生成,而无需任何神经网络计算。

将神经网络中的计算转换为LUT是不平凡的。一方面,完整的LUT必须存储输入像素值的所有可能组合,而输入像素的数量与LUT大小之间的指数关系是明显的。这意味着必须限制输入像素的数量。另一方面,每个输入组合对应于唯一的输出,这意味着网络的感受野大小与LUT的输入维度相等。表2示出了LUT尺寸和存储之间的关系。

为了利用LUT的潜力,我们进行了初步的消融实验,以评估感受野和通道深度的重要性。参考表3,我们观察到,与空间维度的增加相比,通道的扩展导致PSNR的显著改善。这表明,通道的相互依赖的信息是至关重要的图像增强,而附近的像素的贡献是有限的。例如,诸如天空或海滩的平滑区域通常具有空间一致性的相似像素,但是具有不同的信道信息。有鉴于此,我们设计了一个具有两个关键属性的超轻量级网络:1)能够捕获基本图像信息以生成高质量增强图像,2)转换为LUT的效率,从而实现加速推理。

3.2 Training network

所提出的图像颜色增强LUT(ICELUT)网络如图2所示。它在训练期间由两个CNN和一个分离的FC层组成。8位输入像素被分成两个映射,具有4个MSB的IMSB和具有4个LSB的ILSB,并被馈送到两个并行CNN分支中。

CNN backbone

由于输入像素的数量决定了LUT的大小,而通道深度主要影响网络性能,因此我们将卷积核形状限制为非常小的空间大小和完整的通道深度。我们采用六个1 × 1卷积层,然后激活ReLU。卷积核的深度设置为3,用于处理所有RGB通道。由于重复的1 × 1卷积层的感受野(RF)仍然是1 × 1,因此我们使用自适应平均池化层来聚合空间特征并将特征图压缩为1×1。该池化模块在融合全局信息方面发挥了重要作用,补充了前1 × 1卷积层提取的有限局部信息。

Split fully connected layer

简单地通过合并特征图来预测权重导致次优结果。自适应平均池是一个非学习模块,它通过对特征图进行粗压缩来将全局信息融合到特征图中。对于丰富的表示,我们使用FC层来将特征映射到权重。FC层的输入对应于CNN主干的输出信道C的数量.通常,更多的输出通道表示更丰富的表示。然而,LUT大小与通道号C成指数关系:

其中S是LUT的大小,V表示维度中的可能值,并且N是输出维度。当C > 4,V = 64,N = 20时,LUT一般超过1GB。为了避免大量的内存消耗,我们设计了分离全连接(SFC)层。首先,我们将输入张量分成K个组,每个组包含来自通道特征的L个值。然后,我们应用vanilla FC层将每个2D特征映射到长度为N的权重。这些预测的权重在最后被添加,用于对基础LUT进行加权以构建3D加权LUT。当我们设置L = 2和K = C/2时,这种操作将内存从(V)C ×N减少到(C/2)×(V)2 ×N。随后,当C = 10,V = 64和N = 20时,LUT大小等于400 KB,这比vanilla FC层小。

3.3 Transferring to LUT

上述网络设计为向LUT的转换铺平了道路。对于CNN骨干,我们为三个通道构建了一个3D LUT,而由于逐点卷积层,RF大小为1。由于通道LUT的大小非常小,因此我们不再对输出进行缩放。对于SFC层,我们为特征映射构建K个2D LUT,称为权重LUT。输入值用于索引LUT,相应的输出值存储在该地址。注意,通道LUT和权重LUT中存储的输出值的格式分别为FP 32和INT 8。

3.4 Speeding up inference

我们的主要目标是预测一组权重,用于对基础LUT进行加权,以生成最终的3D LUT。CNN权重预测器旨在理解全局上下文,例如图像的亮度,颜色和色调,以输出与内容相关的权重。因此,它只需要在下采样的输入图像上工作,以大大降低计算成本[23]。给定任何分辨率的输入图像,之前的作品简单地使用双线性插值将其下采样至256 x 256以提高效率。然而,随着输入大小的增加,网络的计算工作量或表查找操作也会升级。因此,图像分辨率的降低可以直接加速推断并提供成本节约。随后,我们比较了我们的和现有的方法的性能。所有方法都在256 × 256分辨率下训练,并针对各种下采样尺度进行测试。CLUT的结果如图3所示。

我们观察到,在高分辨率下,不同的模型始终表现良好。然而,随着分辨率的降低,使用大RF的模型(即3D LUT和CLUT)的性能急剧下降,而ICELUT(具有1×1 RF)保持高水平的性能。

为了进一步验证性能下降的原因,我们将CNN骨干的第一层替换为3 × 3,7 × 7和11 × 11卷积核,以扩大RF,并固定其他设置。图4所示的结果清楚地表明,具有较大RF的网络遭受更严重的性能下降。

4 Experiments

4.1 Datasets

我们使用两个公共数据集评估了拟议的ICELUT:MIT-Adobe FiveK [3]和PPR 10 K [13]。MIT-Adobe FiveK数据集是一个著名的照片修饰数据集,包含5,000张RAW图像。我们遵循最近作品[23,24]中建立的常见做法,选择专家C修饰的版本作为基本事实。我们将这个数据集分为4,500个图像对用于训练,500个用于测试。为了加快训练过程,我们将图像缩小到480 p分辨率,其中较短的一面被调整为480像素。PPR 10 K数据集包含11,161张高质量RAW肖像照片的广泛集合。在我们的实验中,我们在三个独立的实验中使用所有三个修饰过的版本作为基础事实。遵循[13]中的官方数据集分割,我们将数据集分为8,875对用于训练,2,286对用于测试。PSNR / dB为了提高效率,并且由于磁盘空间有限,我们使用360 p版本的数据集执行这些实验。请注意,[13]中的性能数据在讨论运行时间和FLOP时并不公平,因为[13]中训练的3D LUT使用了更大的主干ResNet 18 [7](约11 M)。在这一点上,我们已经使用[23]中的原始微小主干重新训练了3D LUT。

5 Conclusion

本文提出了第一个完全基于LUT的图像增强器ICELUT,用于极低成本和高速的图像修图。我们揭示了输入RGB通道对性能至关重要,并采用了有利于训练后后续LUT转换的完全逐点卷积核。设计了一种新颖的分离式全连接层,达到在不折损性能的情况下有效地抑制LUT的大小。在这些新颖设计的共同努力下,我们的纯LUT方案在接近最新性能的GPU(CPU)上实现了显著的0.4ms(7ms),并且与所有其他CNN方案相比将功耗降低到了可以忽略的水平。

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

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

相关文章

等保2.0与安全编程:携手共筑网络安全防线

一、基本概念 等保2.0(网络安全等级保护2.0):作为我国网络安全领域的基本国策和制度,等保2.0是对原有信息安全等级保护(等保1.0)的全面升级。它于2019年正式实施,旨在应对云计算、大数据、物联网…

基于SSM的停车场管理系统 毕业设计-附源码42934

目 录 摘要 1 绪论 1.1 研究背景 1.2 研究意义 1.3研究方案 1.4论文章节安排 2相关技术介绍 2.1 B/S结构 2.2 SSM框架 2.3 Java语言 2.4 MySQL数据库 3系统分析 3.1 可行性分析 3.2 系统功能性分析 3.3.非功能性分析 3.4 系统用例分析 3.5系统流程分析 3.5.1…

JAVA基础 - 反射

目录 一. 简介 二. java.lang.Class类 三. java.lang.reflect包 四. 创建对象 五. 调用方法 六. 调用成员变量 一. 简介 反射是 Java 语言中的一种强大机制,允许程序在运行时动态地获取类的信息、访问类的成员(包括字段、方法和构造函数&#xff…

fal.ai发布超分辨率模型——AuraSR V2

今天,我们发布了单步 GAN 升频器的第二个版本: AuraSR。 我们在上个月发布了 AuraSR v1,社区的反响让我们深受鼓舞,因此我们立即开始了新版本的训练。 AuraSR 基于 Adobe Gigagan 论文,以 lucidrain 的实现为起点。Gi…

Off-by-One Error: 编码中的常见陷阱 ⚠️

Off-by-One Error: 编码中的常见陷阱 ⚠️ Off-by-One Error: 编码中的常见陷阱 ⚠️摘要引言正文内容1. 什么是 Off-by-One 错误?Off-by-One 错误的示例 2. 如何识别 Off-by-One 错误?2.1 使用调试器2.2 单元测试 3. 如何预防 Off-by-One 错误&#xff…

Python酷库之旅-第三方库Pandas(059)

目录 一、用法精讲 226、pandas.Series.pad方法 226-1、语法 226-2、参数 226-3、功能 226-4、返回值 226-5、说明 226-6、用法 226-6-1、数据准备 226-6-2、代码示例 226-6-3、结果输出 227、pandas.Series.replace方法 227-1、语法 227-2、参数 227-3、功能 …

【Python机器学习】Logistic回归——从疝气病症预测病马的死亡率

用Logistic回归来预测患有疝病的马的存活问题。这里的数据包括368个样本和28个特征。疝病是描述马肠胃痛的术语,这种病并不一定源自马的肠胃问题。 该数据集中包含了医院检测马疝病的一些指标,有些指标比较主观,有的指标难以测量&#xff0c…

docker部署elasticsearch和Kibana

部署elasticsearch 通过下面的Docker命令即可安装单机版本的elasticsearch: docker run -d \--name es \-e "ES_JAVA_OPTS-Xms512m -Xmx512m" \-e "discovery.typesingle-node" \-v es-data:/usr/share/elasticsearch/data \-v es-plugins:/u…

【STC32G12K128开发板】第3-9讲:手势识别(基于PAJ7620U2)

第3-9讲:手势识别(基于PAJ7620U2) 学习目的了解IK-PAJ7620U2手势识别传感器模块的功能。掌握IK-PAJ7620U2的I2C协议、操作流程,并编程实现配置IK-PAJ7620U2工作于接近检测和手势识别模式以及读取检测结果。 PAJ7620手势识别模块 产…

灰狼优化算法(GWO)的详细解读

一、引言 在优化问题中,我们常常需要寻找一个最优解,使得某个目标函数达到最小或最大值。为了高效地解决这类问题,研究者们从自然界中的生物行为汲取灵感,提出了多种群智能优化算法。灰狼优化算法(Grey Wolf Optimize…

行为验证码的介绍

1.什么是行为验证码 行为式验证码是一种较为流行的验证码。从字面来理解,就是通过用户的操作行为来完成验证,而无需去读懂扭曲的图片文字。常见的有两种:拖动式与点触式。 2.行为验证码的概念 行为式验证的核心思想是利用用户的“行为特征”…

单火供电零线发生器 单火变零火线开关面板零火开关老房改造必备

创作 史新华 零线发生器套件与单火线供电套件,作为现代智能家居解决方案中的创新之作,它们犹如智能电气领域的魔术师,巧妙地解决了传统智能开关在单火线路环境中因无零线而难以应用的难题。这些套件,如同智能电气世界的桥梁&…

SQLite库笔记:命令行shell

SQLite项目提供了一个简单的命令行程序sqlite3,它允许用户对SQLite数据库手动输入和执行SQL语句。更多详情可参考官网(https://www.sqlite.org/cli.html)。 help SQLite shell命令的help信息如下: .auth ON|OFF Sho…

卷积神经网络 - 动机(Motivation)篇

序言 在深度学习的浩瀚星空中,卷积神经网络( Convolutional Neural Networks, CNNs \text{Convolutional Neural Networks, CNNs} Convolutional Neural Networks, CNNs)无疑是最为璀璨的一颗星,其诞生与崛起深刻改变了图像识别、…

线程池的优势与应用

线程池的优势与应用 1、线程池的优势2、应用场景 💖The Begin💖点点关注,收藏不迷路💖 1、线程池的优势 资源复用:减少线程创建和销毁的开销,通过重用已存在的线程来提高效率。控制并发:有效管…

Solana公链

Solana 链的优势 Solana之所以能够实现高性能,主要是因为它采用了多种创新的技术和设计决策。下面是Solana能够达到高吞吐量、低延迟和低成本的一些关键因素: 1. 历史证明 (Proof of History, PoH): Solana引入了一种独特的共识机制&#…

【C++题解】1022. 百钱百鸡问题

欢迎关注本专栏《C从零基础到信奥赛入门级(CSP-J)》 问题:1022. 百钱百鸡问题 类型:嵌套穷举 题目描述: 用 100 元钱买 100 只鸡,公鸡,母鸡,小鸡都要有。 公鸡 5 元 1 只&#x…

【Kubernetes】kubeadmu快速部署k8s集群

目录 一.组件部署 二.环境初始化 三.所有节点部署docker,以及指定版本的kubeadm 四.所有节点安装kubeadm,kubelet和kubectl 五.高可用配置 六.部署K8S集群 1.master01 节点操作 2.master02、master03节点 3.master01 节点 4.master02、master…

酒店管理小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,酒店管理员管理,房间类型管理,房间信息管理,订单信息管理,系统管理 微信端账号功能包括:系统首页,房间信息…

29-《夹竹桃》

夹竹桃 夹竹桃(学名:Nerium indicum Mill.)夹竹桃族夹竹桃属常绿直立大灌木,高可达5米,枝条灰绿色,嫩枝条具棱,被微毛,老时毛脱落。叶3-4枚轮生,叶面深绿,叶背…