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

本文涉及的产品
视觉智能开放平台,图像通用资源包5000点
视觉智能开放平台,视频通用资源包5000点
视觉智能开放平台,分割抠图1万点
简介: 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# 深度优先搜索算法的局域网集中管理软件技术剖析
现代化办公环境中,局域网集中管理软件是保障企业网络高效运行、实现资源合理分配以及强化信息安全管控的核心工具。此类软件需应对复杂的网络拓扑结构、海量的设备信息及多样化的用户操作,而数据结构与算法正是支撑其强大功能的基石。本文将深入剖析深度优先搜索(Depth-First Search,DFS)算法,并结合 C# 语言特性,详细阐述其在局域网集中管理软件中的应用与实现。
58 3
|
1月前
|
机器学习/深度学习 存储 算法
18个常用的强化学习算法整理:从基础方法到高级模型的理论技术与代码实现
本文系统讲解从基本强化学习方法到高级技术(如PPO、A3C、PlaNet等)的实现原理与编码过程,旨在通过理论结合代码的方式,构建对强化学习算法的全面理解。
79 10
18个常用的强化学习算法整理:从基础方法到高级模型的理论技术与代码实现
|
29天前
|
存储 监控 算法
基于 Python 哈希表算法的局域网网络监控工具:实现高效数据管理的核心技术
在当下数字化办公的环境中,局域网网络监控工具已成为保障企业网络安全、确保其高效运行的核心手段。此类工具通过对网络数据的收集、分析与管理,赋予企业实时洞察网络活动的能力。而在其运行机制背后,数据结构与算法发挥着关键作用。本文聚焦于 PHP 语言中的哈希表算法,深入探究其在局域网网络监控工具中的应用方式及所具备的优势。
66 7
|
1月前
|
运维 监控 算法
基于 Python 迪杰斯特拉算法的局域网计算机监控技术探究
信息技术高速演进的当下,局域网计算机监控对于保障企业网络安全、优化资源配置以及提升整体运行效能具有关键意义。通过实时监测网络状态、追踪计算机活动,企业得以及时察觉潜在风险并采取相应举措。在这一复杂的监控体系背后,数据结构与算法发挥着不可或缺的作用。本文将聚焦于迪杰斯特拉(Dijkstra)算法,深入探究其在局域网计算机监控中的应用,并借助 Python 代码示例予以详细阐释。
53 6
|
22天前
|
存储 算法 物联网
解析局域网内控制电脑机制:基于 Go 语言链表算法的隐秘通信技术探究
数字化办公与物联网蓬勃发展的时代背景下,局域网内计算机控制已成为提升工作效率、达成设备协同管理的重要途径。无论是企业远程办公时的设备统一调度,还是智能家居系统中多设备间的联动控制,高效的数据传输与管理机制均构成实现局域网内计算机控制功能的核心要素。本文将深入探究 Go 语言中的链表数据结构,剖析其在局域网内计算机控制过程中,如何达成数据的有序存储与高效传输,并通过完整的 Go 语言代码示例展示其应用流程。
35 0
|
2月前
|
人工智能 监控 算法
Python下的毫秒级延迟RTSP|RTMP播放器技术探究和AI视觉算法对接
本文深入解析了基于Python实现的RTSP/RTMP播放器,探讨其代码结构、实现原理及优化策略。播放器通过大牛直播SDK提供的接口,支持低延迟播放,适用于实时监控、视频会议和智能分析等场景。文章详细介绍了播放控制、硬件解码、录像与截图功能,并分析了回调机制和UI设计。此外,还讨论了性能优化方法(如硬件加速、异步处理)和功能扩展(如音量调节、多格式支持)。针对AI视觉算法对接,文章提供了YUV/RGB数据处理示例,便于开发者在Python环境下进行算法集成。最终,播放器凭借低延迟、高兼容性和灵活扩展性,为实时交互场景提供了高效解决方案。
146 4
|
2月前
|
缓存 监控 算法
基于 C# 网络套接字算法的局域网实时监控技术探究
在数字化办公与网络安全需求增长的背景下,局域网实时监控成为企业管理和安全防护的关键。本文介绍C#网络套接字算法在局域网实时监控中的应用,涵盖套接字创建、绑定监听、连接建立和数据传输等操作,并通过代码示例展示其实现方式。服务端和客户端通过套接字进行屏幕截图等数据的实时传输,保障网络稳定与信息安全。同时,文章探讨了算法的优缺点及优化方向,如异步编程、数据压缩与缓存、错误处理与重传机制,以提升系统性能。
56 2
|
2月前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【害虫识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
害虫识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了12种常见的害虫种类数据集【"蚂蚁(ants)", "蜜蜂(bees)", "甲虫(beetle)", "毛虫(catterpillar)", "蚯蚓(earthworms)", "蜚蠊(earwig)", "蚱蜢(grasshopper)", "飞蛾(moth)", "鼻涕虫(slug)", "蜗牛(snail)", "黄蜂(wasp)", "象鼻虫(weevil)"】 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Djan
160 1
基于Python深度学习的【害虫识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
|
3月前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【蘑菇识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
蘑菇识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了9种常见的蘑菇种类数据集【"香菇(Agaricus)", "毒鹅膏菌(Amanita)", "牛肝菌(Boletus)", "网状菌(Cortinarius)", "毒镰孢(Entoloma)", "湿孢菌(Hygrocybe)", "乳菇(Lactarius)", "红菇(Russula)", "松茸(Suillus)"】 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,
199 11
基于Python深度学习的【蘑菇识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
|
5月前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
323 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别

相关产品

  • 视觉智能开放平台