论文阅读: Disentangled lmage Colorization via Global Anchors

news/2024/4/28 11:33:30/文章来源:https://blog.csdn.net/u011426016/article/details/128048395

Disentangled lmage Colorization via Global Anchors发表于SIGGRAPH ASIA 2022,是一篇基于深度学习的图像彩色化的工作,简单介绍一下。之前曾分享过一篇彩色化的经典论文:经典论文回顾: Colorization using Optimization。 作者认为图像彩色化是一个多模态的问题,也就是同一个物体可以被着色成多种颜色,只要合理即可。现有基于深度学习的算法存在一个很严重的问题就是颜色不一致,如下的teaser所示, 注意其它几个算法在公交车上以及男士的衣服上的着色效果,可以看出一致性较差。
在这里插入图片描述
之所以容易出现这种颜色不一致的问题,主要的原因就是之前的方法独立的预测每一个像素的颜色,没有考虑像素间的相似性。为此本文将彩色化的问题分为两个阶段,首先预测图像中的锚点(color anchors)的颜色,然后将锚点的颜色传播到图像的其他区域。

一、网络结构

本文的网络如下所示, 网络工作在LAB颜色空间,是一个有监督学习,输入是彩色图像的灰度图(L通道),需要预测图像的颜色(ab通道),最后合成彩色图像(Lab = 输入的L + 预测的ab)。网络分为三个模块:

  • 为了降低复杂度,先使用SpixNet对输入图像进行超像素分割;
  • 使用transformer网络预测超像素的颜色分布,使用聚类的算法提取代表性的超像素作为锚点,保留锚点颜色,mask掉非锚点的超像素;
  • 使用transformer,根据锚点颜色预测其它超像素的颜色,并通过超像素的颜色恢复出图像逐像素的颜色,得到输出的彩色图。
    在这里插入图片描述

二、超像素分割

作者认为图像包含大量像素且像素间存在高度相关性,为了降低计算复杂度以及提升后续的着色一致性,可以先将图像进行超像素分割。本文使用的SpixNet来自于 SpixNet: Yang et al. Superpixel Segmentation With Fully Convolutional Networks, CVPR 2020. 输出为一个Soft association map:
A∈RH×W×∣Np∣\mathbf{A} \in \mathbb{R}^{H \times W \times\left|\mathcal{N}_{p}\right|}ARH×W×Np
即输出每个像素属于周围 Np=9\mathcal{N}_{p}=9Np=9 个超像素的可能性,且 ∑s∈NpA(p,s)=1\sum_{\mathrm{s} \in \mathcal{N}_{p}} \mathrm{~A}(\mathrm{p}, \mathrm{s})=1sNp A(p,s)=1

  • SP-Pooling

基于此,对于每一个超像素 sss, 可以统计有多少像素对其有贡献(即A(p,s)>0A(p,s)>0A(p,s)>0), 并计算超像素 sss 中心的特征和位置。这个过程称为SP-Pooling,输入是SpixNet输出的Soft association map AAA 以及 通过CNN 提取到的图像特征 FFF. SP-Pooling 定义为:
vs=∑p∈PsF(p)⋅A(p,s)∑p∈PsA(p,s),ls=∑p∈Psp⋅A(p,s)∑p∈PsA(p,s)(1)\mathbf{v}_{s}=\frac{\sum_{\mathbf{p} \in \mathcal{P}_{s}} \mathbf{F}(\mathbf{p}) \cdot \mathbf{A}(\mathbf{p}, \mathbf{s})}{\sum_{\mathbf{p} \in \mathcal{P}_{s}} \mathbf{A}(\mathbf{p}, \mathbf{s})}, \quad \mathbf{l}_{s}=\frac{\sum_{\mathbf{p} \in \mathcal{P}_{s}} \mathbf{p} \cdot \mathbf{A}(\mathbf{p}, \mathbf{s})}{\sum_{\mathbf{p} \in \mathcal{P}_{s}} \mathbf{A}(\mathbf{p}, \mathbf{s}) \tag1} vs=pPsA(p,s)pPsF(p)A(p,s),ls=pPsA(p,s)pPspA(p,s)(1)

  • SP-Diffusion

反过来,如果已知每个超像素的中心特征和位置 以及 Soft association map AAA , 也可以恢复出每个像素的特征(比如颜色)和位置,这个过程称为SP-Diffusion, 定义为:
F~(p)=∑s∈NpvS⋅A(p,s),p~(p)=∑s∈Npls⋅A(p,s)(2)\tilde{\mathbf{F}}(\mathbf{p})=\sum_{\mathbf{s} \in \mathcal{N}_{p}} \mathbf{v}_{S} \cdot \mathbf{A}(\mathbf{p}, \mathbf{s}), \quad \tilde{\mathbf{p}}(\mathbf{p})=\sum_{\mathbf{s} \in \mathcal{N}_{p}} \mathbf{l}_{s} \cdot \mathbf{A}(\mathbf{p}, \mathbf{s} \tag2) F~(p)=sNpvSA(p,s),p~(p)=sNplsA(p,s)(2)

之后就是预测出每个超像素中心的颜色,然后通过上述公式恢复出图像中其他像素的颜色。

这部分是预先预先训练的,所以一并给出其损失函数:
Laggr=1N∑p∥Cgt(p)−C~gt(p)∥2+αS∥p−p~∥2(3)\mathcal{L}_{aggr}=\frac{1}{N} \sum_{\mathbf{p}}\left\|\mathbf{C}^{g t}(\mathbf{p})-\tilde{\mathbf{C}}^{g t}(\mathbf{p})\right\|_{2}+\frac{\alpha}{S}\|\mathbf{p}-\tilde{\mathbf{p}}\|_{2} \tag3 Laggr=N1pCgt(p)C~gt(p)2+Sαpp~2(3)

其中,Cgt\mathbf{C}^{g t}Cgtp\mathbf{p}p 表示graound truth图像每个像素的颜色 和 位置。Cgt(p)\mathbf{C}^{g t}(\mathbf{p})Cgt(p)p~\tilde{\mathbf{p}}p~ 表示根据 Soft association map AAA 和 超像素中心的真实颜色和位置恢复出的逐像素的颜色和位置。上述loss主要考虑这两方面的误差,期望获得更准确的超像素分割,完美的重建图像。

三、锚点颜色预测

通过transformer模型 Probabilistic Color Modeler 生成所有超像素可能的颜色的概率分布,输出是:

Ps∈RH~×W~×313\mathbf{P}_{s} \in \mathbb{R}^{\tilde{H} \times \tilde{W} \times 313}PsRH~×W~×313

即每个超像素最多只有313种可能的颜色(将ab通道量化为313种颜色),这里给出每个超像素属于这313种颜色的概率分布。比如人脸属于黄色,黑色,白色的可能性大一些,而属于绿色,蓝色可能性为0.

接下来对这些超像素进行聚类,将每个簇中尺寸最大的超像素作为该簇的锚点, 然后mask掉所有非锚点的超像素。
Pa=Ps⊙Ms(4)\mathbf{P}_{a}=\mathbf{P}_{s} \odot \mathbf{M}_{s}\tag4Pa=PsMs(4)

接下来通过采样或认为指定的方式采样每一个锚点超像素的颜色 CsaC^a_sCsa。下一步的工作就是根据锚点超像素预测哪些被mask掉的超像素的颜色。

为什么要这么做呢?为什么不是直接在所有的超像素上采样颜色,而只是在部分锚点超像素上采样颜色,再到下一步预测别的超像素的颜色?其中一个主要的原因就是直接在超像素上采样颜色的话很可能造成颜色不一致,也就是说属于同一个object的超像素很可能采样到不同或者差异很大的颜色。

这一部分的损失函数主要度量 Probabilistic Color Modeler 预测的超像素的颜色的好坏:
Ldist=1N~∑s−Psgt(s)log⁡Ps(s)(5)\mathcal{L}_{d i s t}=\frac{1}{\tilde{N}} \sum_{\mathbf{s}}-\mathbf{P}_{s}^{g t}(\mathbf{s}) \log \mathbf{P}_{s}(\mathbf{s})\tag5Ldist=N~1sPsgt(s)logPs(s)(5)
其中,Ps\mathbf{P}_{s}Ps 表示预测的某个超像素的颜色分布(313维的向量),Psgt\mathbf{P}_{s}^{g t}Psgt 表示将 GT经过SpixNet后,每一个超像素的中心的真实颜色转换成one-hot向量的结果。 这里是一个交叉熵损失,主要度量超像素预测的颜色是或合理,比如人脸上的超像素预测黄色、白色、黑色概率大是合理的,但如果预测数来红色概率大,那就不合理了。

四、彩色图像生成

最后一部分通过Color Generator模型生成所有超像素中心的颜色,这也是一个transformer的模型,优点自然是可以考虑超像素间的相似性,将锚点超像素的颜色传播到其他mask掉的超像素。然后通过公式(2)所示的SP-Diffusion操作,反算出图像逐像素的颜色(注意这里输出的是ab通道),然后将输入图像的L通道 + 此处预测出的ab通道,合成一张彩色图像。最后,使用RefineNet对图像进行简单优化得到最终结果。

这一部分损失函数如下所示,需要注意的是,因为彩色化是一个一对多的问题,没有正确答案,因此只是度量感知距离,而非生成结果跟GT图像的视觉差异。详细参见论文。
Lcolor =1N~∑s−Psgt(s)log⁡Ps′(s)+β∑lωl∥Φl(Cgt)−Φl(C)∥1(6)\mathcal{L}_{\text {color }}=\frac{1}{\tilde{N}} \sum_{s}-\mathbf{P}_{s}^{g t}(\mathbf{s}) \log \mathbf{P}_{s}^{\prime}(\mathbf{s})+\beta \sum_{l} \omega_{l}\left\|\Phi_{l}\left(\mathbf{C}^{g t}\right)-\Phi_{l}(\mathbf{C})\right\|_{1}\tag6 Lcolor =N~1sPsgt(s)logPs(s)+βlωlΦl(Cgt)Φl(C)1(6)

网络是在IMAGENET上训练,每张图像既有灰度图又有彩色图。训练过程中,先训练SpixNet,然后固定之,端到端训练网络中另外两个model。

五、实验结果

定性分析:本文结果好很多,但细节仍有待改进。
在这里插入图片描述
定量分析:只需关注FID,Colorfulness两个指标,这是度量感知距离的,其余指标不太具有参考性。
在这里插入图片描述

六、简单总结

  • 本文将彩色化问题分解为两个阶段:代表性锚点超像素颜色预测 和 图像其他超像素颜色预测,实现了较好的一致性。
  • 缺点是锚点数量固定,使得object较多的图像比如毕业照或人群图像,彩色化结果颜色会比较单调。

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Cloud OpenFeign - 日志配置

项目源码地址:https://download.csdn.net/download/weixin_42950079/87168704 OpenFeign 有 4 种日志级别: NONE: 不记录任何日志,是OpenFeign默认日志级别(性能最佳,适用于生产环境)。BASIC: 仅记录请求方…

【机器学习入门项目10例】(八):贝叶斯网络-拼写检查器

💥 项目专栏:【机器学习入门项目10例】 文章目录 一、贝叶斯网络-拼写检查器二、数据集介绍三、导包四、读取数据集五、构建拼写检查器5.1 分词操作5.2 计算词频5.3 计算概率5.4 调用入口5.5 贝叶斯网络模型类六、模型测试一、贝叶斯网络-拼写检查器 1)建立一个足够大的文本…

让学前端不再害怕英语单词(四)

|| 欢迎关注csdn前端领域博主: 前端小王hs || email: 337674757qq.com || 前端交流群: 598778642前三章直通车↓↓↓ 让学前端不再害怕英语单词(一) 让学前端不再害怕英语单词(二) 让学前端不再害怕英语单词&#xff0…

Java - 利用Nacos做一个动态开关配置功能

Java - 利用Nacos做一个动态开关配置功能前言一. Nacos配置类编写二. 测试三. 展望前言 我公司里有一个Config配置功能(我相信这是很普遍的一个功能)。简单来说就是: 将相关的键值对放到这个Config配置系统里面。代码里通过这个Config配置系…

【C++中预处理语句 include、define、if】

1.预处理阶段 预处理阶段,在实际发生编译之前就根据对应的预处理语句进行操作,等到预处理阶段完成之后才进行编译阶段 。 2.预处理语句 预处理语句主要有include、define、if 和 program。利用 # 进行标记 2.1 include语句 include语句就是将所包含的…

【点云处理】点云法向量估计及其加速(4)

上篇文章【点云处理】点云法向量估计及其加速(3)介绍了如何使用pcl提供的gpu版本法向量计算接口对点云发向量计算进行加速。不足之处在于点云k近邻查找依然比较耗时,成为影响整体计算性能的瓶颈。这篇文章就如何优化点云K近邻查找效率进行实验。上一篇文章的示例代码…

想要精通算法和SQL的成长之路 - 无重叠区间

想要精通算法和SQL的成长之路 - 无重叠区间前言一. 无重叠区间前言 想要精通算法和SQL的成长之路 - 系列导航 一. 无重叠区间 原题链接 给定一个区间的集合 intervals ,其中 intervals[i] [starti, endi] 。返回 需要移除区间的最小数量,使剩余区间互…

谷粒学苑_第十天

第十天 视频删除 后端 相关sdk在阿里云视频点播文档的服务端SDK–>Java SDK–>媒资管理–>删除视频 复制前面的InitObject到utils里 删除的方法 DeleteMapping("{id}")public R removeAliyunVideo(PathVariable String id){try{DefaultAcsClient defau…

1000套web前端期末大作业 HTML+CSS+JavaScript网页设计实例 企业网站制作【建议收藏】

一、1000套HTML期末学生结课大作业作品(HTMLCSSJS) 这8年来做了1000多套(HTMLCSSJS)网页设计的学生期末大作业,都是给学生定制的都符合学校或者学生考试期末作业的水平,都是divcss框架原创代码写的,有的有js,有的视频音乐flash的…

Mongodb操作基础 分片

Mongodb分片 MongoDB分片是MongoDB支持的另一种集群形式,它可以满足MongoDB数据量呈爆发式增长的需求。当MongoDB存储海量的数据时,一台机器可能无法满足数据存储的需求,也可能无法提供可接受的读写吞吐量,这时,我们就…

【算法】2022第五届“传智杯”全国大学生计算机大赛(练习赛)

【参考:第五届“传智杯”全国大学生计算机大赛(练习赛) - 洛谷 | 计算机科学教育新生态】 练习赛满分程序(多语言):https://www.luogu.com.cn/paste/fi60s4yu CPU一秒大概运行 10810^8108 次,…

ASEMI肖特基二极管MBR40200PT参数,MBR40200PT规格

编辑-Z ASEMI肖特基二极管MBR40200PT参数: 型号:MBR40200PT 最大重复峰值反向电压(VRRM):200V 最大平均正向整流输出电流(IF):40A 峰值正向浪涌电流(IFSM&#xff0…

imx6ull pro BSP 工具链

BSP,Board Support Package,指板级支持包,是构建嵌入式操作系统所 需的引导程序(Bootload)、内核(Kernel)、根文件系统(Rootfs)和工具链 (Toolchain)。 每种开发板的 BSP 都不一样,并且这些源码都非常庞大。我们把这些源码都 放在…

自动化运维CICD

目录 概述 为什么持续集成和发布可以提高效率 如何实现 1、在linux服务器安装部署代码仓库 2、安装jenkins 使用shell脚本实现CICD 使用pipeline实现CICD 使用Blue Ocean实现CICD 概述 持续集成(Continuous Integration,CI)和持续发布&#xff0…

二、进程管理(四)经典同步互斥问题

目录 4.1生产者-消费者问题 4.1.1单类生产者-单类消费者问题 4.1.2多类生产者-多类消费者问题 4.1.3吸烟者问题 4.2读者-写者问题 4.3哲学家进餐问题 分析进程同步和互斥问题的三步: 关系分析:分析问题中的同步(前驱关系)、…

【网络】tcpdump、Wireshark 案例超详细介绍

文章目录网络分层应用层找到服务器的 IP查接口、对象的耗时删除指定网站的Cookie表示层、会话层tcpdump、wireshard传输层telnet: 路径可达性测试nc: 路径可达性测试netstat:查看当前连接状态iftop:查看当前连接的传输速率netstat -s: 查看丢包和乱序的统…

数据结构(5)树形结构——二叉搜索树(JAVA代码实现)

5.1.概述 二叉搜索树,也叫二叉查找树、二叉排序树,顾名思义,这种二叉树是专门用来进行数据查找的二叉树。二叉搜索树的查找其实就是二分查找。 二叉搜索树的定义: 二叉搜索树可以为空如果二叉搜索树不为空,那么每个…

Visual C++ 2010开发的程序在其它电脑上运行提示“找不到MSVCR100D.dll”原因及解决

Visual C 2010开发的程序在其它电脑上运行提示“找不到MSVCR100D.dll”原因及解决 Microsoft Visual C(简称Visual C、MSVC、VS或VC)2010是微软公司的免费C开发工具,具有集成开发环境,可提供编辑C语言,C以及C/CLI等编程…

Java项目:JSP手机商城管理系统包含前台

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目分为前后台,分为管理员与普通用户两种角色,管理员登录后台,普通用户登录前台; 管理员角色…

大数据_什么是数据中台?

目录 一、数据中台的定义 二、数据中台必备的是个核心能力 三、数据中台VS业务中台 四、数据中台VS数据仓库 五、数据中台VS现有信息架构 六、数据中台的业务价值与技术价值 一、数据中台的定义 数据中台是一套可持续“让企业的数据用起来”的机制,是一种战略…