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

简介: 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.

相关文章
|
1天前
|
算法 C语言 Ruby
分形逃逸时间算法中的 Normalized Iteration Count(NIC)技术 让颜色更柔和
Normalized Iteration Count (NIC) 技术是一种提升逃逸时间算法中分形图像质量的方法,它产生更平滑的颜色过渡。数学公式表示为:`mu = n + 1 - log(log(|Z(n)|)) / log(p)`,其中 `Z(n)` 是迭代次数,`|Z(n)|` 是复数模长,`p` 通常取2。示例代码提供了 Ruby, Maxima 和 C 语言的实现。
|
3天前
|
机器学习/深度学习 传感器 自动驾驶
作为自动驾驶技术的核心组成部分,图像识别技术对于车辆的环境感知、决策制定和路径规划等方面具有至关重要的作用
【6月更文挑战第10天】本文探讨了深度学习在自动驾驶图像识别中的应用,该技术通过模拟人脑认知处理大量标注数据,实现对图像内容的精准识别。深度学习在特征提取、泛化能力和持续优化上优于传统方法,为自动驾驶提供环境感知、障碍物检测及行为预测等功能。尽管面临数据需求、计算资源和泛化能力的挑战,但随着技术发展,深度学习将继续推动自动驾驶的进步,为未来出行创造更安全、高效的经历。
7 0
|
3天前
|
存储 自然语言处理 算法
编辑距离算法全解析:优化文本处理的关键技术
编辑距离算法全解析:优化文本处理的关键技术
|
6天前
|
存储 运维 算法
社交软件红包技术解密(十三):微信团队首次揭秘微信红包算法,为何你抢到的是0.01元
本文中,我们将介绍几种主流的IM红包分配算法,相信聪明的你一定能从中窥见微信红包技术实现的一些奥秘。
10 0
|
7天前
|
机器学习/深度学习 计算机视觉
基于深度学习的图像识别技术研究
【6月更文挑战第5天】本文主要探讨了基于深度学习的图像识别技术。首先,我们介绍了深度学习的基本概念和其在图像识别中的应用。然后,我们详细讨论了卷积神经网络(CNN)和循环神经网络(RNN)这两种主要的深度学习模型,并分析了它们在图像识别中的优势和局限性。最后,我们通过实验验证了深度学习在图像识别中的有效性。
|
9天前
|
存储 人工智能 算法
RAG技术的高级应用和算法
文章主要探讨了RAG技术的高级应用和算法,系统化地整理了各种方法。
|
9天前
|
机器学习/深度学习 数据采集 算法
基于机器学习的推荐算法构建技术详解
【6月更文挑战第4天】本文详述了构建基于机器学习的推荐算法,特别是协同过滤方法。从用户和物品相似性的角度,解释了用户-用户和物品-物品协同过滤的工作原理。涵盖了数据准备、预处理、特征工程、模型训练、评估优化及结果展示的构建流程。推荐算法在电商、视频和音乐平台广泛应用,未来将受益于大数据和AI技术的进步,提供更智能的推荐服务。
|
9天前
|
机器学习/深度学习 算法 TensorFlow
【图像识别】谷物识别系统Python+人工智能深度学习+TensorFlow+卷积算法网络模型+图像识别
谷物识别系统,本系统使用Python作为主要编程语言,通过TensorFlow搭建ResNet50卷积神经算法网络模型,通过对11种谷物图片数据集('大米', '小米', '燕麦', '玉米渣', '红豆', '绿豆', '花生仁', '荞麦', '黄豆', '黑米', '黑豆')进行训练,得到一个进度较高的H5格式的模型文件。然后使用Django框架搭建了一个Web网页端可视化操作界面。实现用户上传一张图片识别其名称。
44 0
【图像识别】谷物识别系统Python+人工智能深度学习+TensorFlow+卷积算法网络模型+图像识别
|
13天前
|
机器学习/深度学习 人工智能 自动驾驶
基于深度学习的图像识别在自动驾驶技术中的应用
【5月更文挑战第31天】 随着人工智能领域的迅猛发展,深度学习技术已成为推动自动驾驶汽车进步的关键力量。本文聚焦于探讨基于深度学习的图像识别系统如何革新自动驾驶技术,并分析其在实际道路环境中的表现和挑战。通过综合应用卷积神经网络(CNN)、递归神经网络(RNN)等先进算法,我们构建了一个高效的图像处理框架,该框架能够实时地从复杂场景中提取关键信息,实现对行人、车辆及其他障碍物的精确识别。文章进一步讨论了模型训练的策略、数据集的准备以及系统优化方法,旨在为未来自动驾驶系统的研究和开发提供参考。
|
13天前
|
机器学习/深度学习 传感器 自动驾驶
基于深度学习的图像识别技术在自动驾驶系统中的应用构建高效云原生应用:云平台的选择与实践
【5月更文挑战第31天】 随着人工智能技术的飞速发展,深度学习已经成为推动计算机视觉进步的关键力量。特别是在图像识别领域,通过模仿人脑处理信息的方式,深度学习模型能够从大量数据中学习并识别复杂的图像模式。本文将探讨深度学习技术在自动驾驶系统中图像识别方面的应用,重点分析卷积神经网络(CNN)的结构与优化策略,以及如何通过这些技术提高自动驾驶车辆的环境感知能力。此外,文章还将讨论目前所面临的挑战和未来的研究方向。

相关产品

  • 视觉智能开放平台