【视觉智能开放平台】出品智能修图技术—智能转档算法

本文涉及的产品
视觉智能开放平台,视频资源包5000点
视觉智能开放平台,分割抠图1万点
视觉智能开放平台,图像资源包5000点
简介: RAW转档是专业级摄影后期修图的必备环节,旨在将拍摄的RAW图转化为细节丰富,色彩准确的JPG原片,方便修图师基于转档结果进行更为个性化和精细化的美化操作。由于对效果的精准要求和流程的把控需求,目前修图师主要利用专业软件进行人工转档操作。整个过程耗时又费力,极大降低了后期修图的交付效率。为了赋能修图师,提升他们的工作效率,本文提出了一种基于数据驱动,自动转档的技术方案,以实现人工RAW转档的替代。

一、前言

1.1 背景

RAW格式是什么?RAW格式是一种几乎没有经过加工处理过的,由相机感光文件生成的原始数据文件,记录了由相机拍摄所产生的一些元数据,如ISO的设置、快门速度、光圈值、白平衡等信息。也称为“数码底片”。常见的RAW格式有佳能的CR2、CR3文件,尼康的NEF文件,索尼的ARW文件等。

为什么要拍摄RAW图? JPEG格式是人们接触最多的一种图像格式。从成像质量的角度来看,RAW格式不仅能够还原JPEG的效果,而且还能够输出更高品质的照片画面。具体表现为1)RAW格式由于采用了12位、14位甚至 22位来记录信息。转换时可以转换为16位的TIFF输出,这意味着RGB单色最少有 65536 种色彩记录能力,相对于8位JPEG的256种是一个很大的优势。2)RAW格式中包含了感光器捕捉的实际数据,照片未经过相机预处理,在进行解读和转换时,可以对这些原始数据进行曝光补偿、色彩平衡等处理,而且进行这些后期处理对照片的画质是无损的。

什么是RAW转档? RAW转档是专业级摄影后期修图的必备环节,旨在将拍摄的RAW图转化为细节丰富,色彩准确的JPEG原片,方便修图师基于转档结果进行更为个性化和精细化的美化操作。由于转档这一过程对效果的精准要求和对流程的把控需求,目前修图师主要利用专业软件(如photoshop等)进行人工转档操作。人工转档的具体步骤为:1)对同一个拍摄场景的某张图像单独进行色彩和曝光方面的细致调整,得到一张转档后的标准原片,2)将调整参数批量应用到该组其他图像中,并逐一针对其中不一致的图像进行微调。可以看到整个过程耗时又费力,极大降低了后期修图的交付效率。因此,我们设计智能转档技术的目标是使用机器智能地完成转档这一流程,并在效果上达到替代人工的标准。

1.2 转档行业标准

由于摄影修图领域场景复杂多样,目前并没有绝对、可量化的标准,而是以专业修图人员的主观评价为主,这些主观评价又往往受到画面中的各种元素影响,如人物、服装颜色、服装⻛格、场景、天气、光线、 ⼈物情绪等。尽管如此,业界对转档还是有一套公认的标准总结如下。

  • 同场景下整体曝光统⼀
  • 同场景下色温色调⼀致
  • 确保⼈物曝光适中的同时,尽量保证服装、场景层次
  • 画面颜色、光线过度自然
  • ⾼光尽量不出现色彩溢出、阴影保证层次可见

基于该标准,我们可以定义智能转档技术的目标为:将曝光、⾊调不统一的影像,通过智能算法矫正到相对⼀致的范围内,并保证图像中层次信息得到最大保留,使得转档后的画面、颜色、光线过度自然。

二、算法

2.1 算法流程

上图展示的是我们智能转档技术的基础框架,输入的是用户上传的一批待处理的原始RAW图(CR2, NEF, ARW),输出是转档后的8bit JPEG图,其中蓝色框代表框架中涉及的模块,箭头传递的数据和信息流,其余图标表征的是整个流程中存储的中间结果。各模块解析如下:
1、缩略图提取模块:用于提取原始RAW图的缩略图(JPEG),缩略图是相机生成的小图,方便用户进行预览原始效果。

2、图像分组模块:仿照人工转档过程中对拍摄场景图像进行分组的方式,使用深度学习方法将输入的批量图像进行自动分组。该分组结果为了帮助矫正调色后同组个别图像存在的色彩曝光偏差问题。

3、场景分类模块:场景分类模块用于对图像按照色温(冷色系,暖色系,其他)进行分类,以更好地表达摄影师的拍摄意图。由于对不同色系图像的调整方式有明显的区分,为了得到更精细和丰富的色彩效果,最佳策略是按照色温的分类采用不同的调色模型。

4、RAW图解析模块:是将RAW格式图像转换到sRGB空间的图像。包括一系列处理流程,包括线性处理,白平衡矫正,去马赛克,色彩空间转换,亮度矫正与伽马矫正等。

5、调色模块:用于对RAW图解析后的16bit 图像进行色彩和曝光的调整,模块输入是RAW图解析后的16bit 图像, 输出是经过色彩和曝光调整处理后的16bit数据。此模块完成的工作对应人工转档流程中的步骤1)。

6、一致性后处理模块:实际后期工作中,人工RAW转档在批量对一组图像进行调整后,会针对个别不一致的图像进行单独调整,以保证一组图像在色彩和曝光上保持一致。基于此需求,一致性后处理模块用于矫正单图自动调色后可能出现的与该组其他图像不统一的问题。此模块完成的工作对应人工转档流程中的步骤2)。

下面我们进一步对其中的两个核心模块进行介绍。

2.2 转档调色模块

转档调色模块采用的是场景自适应的3DLUT方案,学习多个3DLUT对输入图像进行快速增强。每个3DLUT模型负责不同场景下的色彩曝光调整,一个轻量的CNN网络负责感知输入图像的场景,并对3DLUT调色后的结果进行自动加权融合。
训练损失包括三部分,分别是重建损失,平滑损失和单调性损失。
1)重建损失
重建损失定义为调色结果$Q_t$与目标图$Y_t$的逐像素$L_2$距离:
$$L_{mse} = ||Q_t-Y_t||^2$$
2)平滑损失
为确保3DLUT调色后的RGB预测值局部平滑,减少调色后图像产生突变的artifacts,定义3D维度的平滑损失为:
$$L_{tv} = \sum_{c \in \{r,g,b\}}\sum_{i,j,k}(\|c^O_{(i+1,j,k)}-c^O_{(i,j,k)}\|^2 + \|c^O_{(i,j+1,k)} \notag\\ -c^O_{(i,j,k)}\|^2+\|c^O_{(i,j,k+1)}-c^O_{(i,j,k)}\|^2).$$
同时CNN预测的权重信息是内容相关的,为了保证该权重与3DLUT融合时的平滑性,进一步对权重施加平滑约束,最终平滑损失$L_{s}$定义为:
$$L_{s} = L_{tv} + \sum_{n}\|w_{n}\|^2$$

3)单调性损失
除了平滑损失,单调性损失是使用3DLUT时一个不可或缺的约束,单调性损失能够确保图像亮度和饱和度在转换过程中与输入图像的相对关系保持一致,从而确保调色结果的自然真实感。单调损失$L_{m}$定义如下:
$$L_{m} = \sum_{c \in \{r,g,b\}}\sum_{i,j,k}[g(c^O_{(i,j,k)}-c^O_{(i+1,j,k)}) + g(c^O_{(i,j,k)} \notag\\ -c^O_{(i,j+1,k)}) + g(c^O_{(i,j,k)}-c^O_{(i,j,k+1)})]$$
其中$g(\cdot)$为RELU函数。

为了进一步在转档调色这个阶段就保证同场景内大部分的调色结果保持曝光和色彩的一致性,减轻后一阶段一致性修图模块的负担。我们基于上述框架,提出了一个组内一致性指标(Group-level Consistency Measure),用来约束组内图像的色彩和光线的变化方差。该指标针对的是一个场景的一致性,因此不仅需要准确感知图像间全局色彩的差异,还要对同一个场景内的内容有所感知。组内一致性指标定义如下:
$$M_{GLC} = \sum_{c} Var(\mu_{\hat{i}_{1}^{c}}, \mu_{\hat{i}_{2}^{c}}, \cdots, \mu_{\hat{i}_{m}^{c}})$$
其中$[\hat{i}_{1}, \hat{i}_{2},\cdots, \hat{i}_{m}]$是同场景内调色输出图像,[$\mu_{\hat{i}_{1}}, \mu_{\hat{i}_{2}}, \cdots, \mu_{\hat{i}_{m}}]$代表这些图像的对应色彩表征。其中c为颜色通道,可以是rgb通道,lab通道或者是两者的组合形式。


4)组内一致性损失
在实际训练过程中,为了简化,我们采用对单张图随机裁剪的方式模拟同场景内不同图的视角变化,并通过数据增强模拟同场景内曝光和色温的变化,应用在裁剪后的两个局部图像上,我们希望网络能够适应输入变化并保证调色后的结果保持一致,因此,定义组内一致性损失函数为对两张裁剪增强后图像的结果$I_{C1}$, $I_{C2}$进行调色得到的结果$\hat{I}_{C1}$, $\hat{I}_{C2}$求均方误差:
$$L_{glc} = ||\hat{I}_{C1}- \hat{I}_{C2}||_{2}^{2}$$

最终损失函数定义为:
$$L_{total} =\lambda_{mse} L_{mse} + \lambda_{tv} L_{tv}+ \lambda_{m} L_{m} +\lambda_{glc} L_{glc} $$

整个训练流程是端到端监督式学习,同时,通过使用三线性插值的方式,能够大幅提升对高清图像的处理速度,最终调色模型在处理4K分辨率图像的速度可以达到600FPS。

2.3 一致性修图模块

一致性修图模块的应用对象是同一组(场景)内的图像,其输入为一张经过调色但在曝光或色彩与同组内其他图像不一致图像A和该组中另一张调好色的标准图像R(又称参考图),输出为将图像A调整为与图像R在色彩和曝光表现一致的图像。通过该模块的处理,同组内的所有图像都保持了与该组参考图R一致的色彩和曝光效果,从而保证了一组图效果的统一性。
一致性修图模块主要框架为一个auto-encoder架构,通过互注意力网络,有效抓取两张图像深层特征之间的关联关系,并通过分块均值映射的思路,在LAB空间对图像块进行逐对映射,实现对任意分辨率进行色彩和曝光的一致性处理。
该模块的训练损失分为两部分:
$$L_{total} = \lambda_{rec}L_{rec} + \lambda_{pec}L_{pec} $$
其中$L_{rec}$为重建loss,定义为结果图Y和目标图$X_t$的逐像素$L1$距离:
$$L_{rec} = ||Y- X_t||_{1}$$
$L_{pec}$为风格感知损失,定义为结果图Y和目标图$X_t$的深层感知距离:
$$L_{rec} = ||\Phi(Y)- \Phi(X_t)||_{1}$$
其中$\Phi(\cdot)$为预训练的VGG19网络输出的中间结果。

三、效果


左:输入 中:基础版转档调色效果 右:最终版转档调色效果

四、参考

[1] Zeng H, Cai J, Li L, et al. Learning image-adaptive 3d lookup tables for high performance photo enhancement in real-time[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2020.
[2] Liang J, Zeng H, Cui M, et al. PPR10K: A Large-Scale Portrait Photo Retouching Dataset with Human-Region Mask and Group-Level Consistency[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2021: 653-661.

相关文章
|
7天前
|
机器学习/深度学习 算法 TensorFlow
深度学习中的图像识别技术
【9月更文挑战第3天】本文介绍了深度学习在图像识别领域的应用,包括卷积神经网络(CNN)的原理、实现和优化方法。通过代码示例展示了如何使用Python和TensorFlow库构建一个简单的CNN模型进行图像分类。
|
16天前
|
机器学习/深度学习 TensorFlow 算法框架/工具
深度学习中的图像识别技术
【8月更文挑战第27天】在本文中,我们将深入探讨深度学习在图像识别领域的应用。通过实例和代码示例,我们将揭示深度学习如何改变我们对图像数据的理解和应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供新的视角和深入的洞见。让我们一起探索深度学习的奥秘吧!
|
9天前
|
机器学习/深度学习 监控 自动驾驶
深度学习中的图像识别技术
【9月更文挑战第2天】本文将介绍深度学习在图像识别领域的应用。我们将探讨如何通过深度学习模型,特别是卷积神经网络(CNN)来识别图像中的对象。我们将看到,通过训练一个深度学习模型,我们可以实现对图像中对象的自动识别,这对于许多实际应用来说都是非常有用的。
|
16天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的图像识别技术深入理解Node.js事件循环及其在后端开发中的应用
【8月更文挑战第27天】本文将介绍深度学习中的图像识别技术,包括其原理、应用领域及未来发展。我们将探讨如何通过神经网络实现图像识别,并分析其在医疗、交通等领域的应用。最后,我们将展望图像识别技术的发展前景。
|
12天前
|
机器学习/深度学习 传感器 人工智能
基于深度学习的图像识别技术在自动驾驶系统中的应用
【8月更文挑战第30天】 随着人工智能的快速发展,特别是深度学习技术在图像处理和模式识别领域的突破进展,自动驾驶系统得以实现更为精准的环境感知与决策。本文深入探讨了基于深度学习的图像识别技术在自动驾驶系统中的应用,并分析了其对提高自动驾驶安全性和可靠性的重要性。通过综合运用卷积神经网络(CNN)、递归神经网络(RNN)等先进算法,我们能够使自动驾驶车辆更好地理解周围环境,从而进行有效的导航与避障。文章还指出了目前该领域面临的主要挑战及未来的发展方向。
|
14天前
|
机器学习/深度学习 人工智能 自动驾驶
深度学习中的图像识别技术及其应用
【8月更文挑战第28天】在人工智能的浪潮中,深度学习技术以其强大的数据处理能力成为焦点。特别是图像识别领域,深度学习不仅推动了技术的发展,也深刻影响了我们的生活和工作方式。本文将深入探讨深度学习在图像识别中的应用及其背后的技术原理,同时提供代码示例以加深理解。
|
2天前
|
机器学习/深度学习 算法 Python
群智能算法:深入解读人工水母算法:原理、实现与应用
近年来,受自然界生物行为启发的优化算法备受关注。人工水母算法(AJSA)模拟水母在海洋中寻找食物的行为,是一种新颖的优化技术。本文详细解读其原理及实现步骤,并提供代码示例,帮助读者理解这一算法。在多模态、非线性优化问题中,AJSA表现出色,具有广泛应用前景。
|
11天前
|
机器学习/深度学习 监控 自动驾驶
深度学习中的图像识别技术
【8月更文挑战第31天】本文将介绍深度学习在图像识别领域的应用。我们将从基础概念出发,逐步深入到模型构建、训练过程以及实际应用案例。通过代码示例,我们将展示如何利用深度学习框架实现图像识别任务。最后,我们将探讨未来发展趋势和可能的挑战。
|
11天前
|
机器学习/深度学习 人工智能 自动驾驶
深度学习中的图像识别技术与实践
【8月更文挑战第31天】 本文深入探索了深度学习在图像识别领域的应用,通过简明易懂的语言和实例,向读者展示了如何利用神经网络模型进行图像处理和分析。文章不仅介绍了理论基础,还提供了实用的代码示例,帮助初学者快速入门并实现自己的图像识别项目。
|
11天前
|
机器学习/深度学习 TensorFlow 算法框架/工具
深度学习中的图像识别技术及其应用
【8月更文挑战第31天】 在人工智能的浪潮中,深度学习已成为推动技术进步的核心力量。本文将深入探讨深度学习在图像识别领域的应用,揭示其背后的原理和实现方法。我们将从基础概念出发,逐步引入卷积神经网络(CNN)的结构和工作原理,并通过代码示例展示如何利用Python和TensorFlow框架进行图像识别任务。通过本文,读者将获得对深度学习在图像处理方面的基本认识,并能够理解如何构建和训练自己的图像识别模型。

相关产品

  • 视觉智能开放平台