社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

【深度学习】揭秘2021抖音和快手APP图像修复背后的核心技术,毫无ps痕迹

机器学习初学者 • 4 年前 • 582 次点击  
作者 | 对白
出品 | 对白的算法屋
编者寄语:

本文看完,相信你会对抖音和快手APP中使用的图像修复技术有一番了解和掌握。


大家好,我是对白。
由于CNN、GAN、Transformer等模型在CV与NLP领域都实现了很好的跨界,最近非常火热的Prompt也开始在多模态领域中有所应用了,因此我们有必要借鉴一些CV领域中Paper的idea,以拓宽自己的视野,那么今天就给大家分享一下图像修复(Image Inpainting)领域中值得一读的六篇顶会论文,希望能给大家带来一些不一样的灵感。




图像修复算法合集








图像修复经典算法对比









图像修复经典论文




论文 1. Partial-conv


P-conv:Image Inpainting for Irregular Holes Using Partial Convolutions
Authors:NVIDIA Corporation ECCV 2018

优点:
1. 可以很好地处理任何形状、大小、位置或距离图像边界任何距离的空白。
2. 以前的深度学习方法主要集中在位于图像中心附近的矩形区域,并且通常需要依赖成本很高的后期处理。
3. 此模型能够很好地处理越来越大的空白区域。

解决问题:artifacts、color discrepancy、blurriness.

适用于:irregular masks、rectangular masks.

解决办法:有效元素(unmask pixels)和缺失像素(mask pixels)区别对待,卷积层仅对满足条件有效像素进行卷积和规范操作,然后在根据Mask更新规则对Mask进行自动更新,直至 Mask中所有值均为 1。

网络结构:
输入大小:512×512 image + 512×512 mask
采用 U-net 的网络结构( 《 Globally and locally consistent image completion 》 ),将所有的卷积层替换为部分卷积层( partial convolutional layers ), 同时在decoder 部分上采样使用 nearest neighbor up-sampling,采用Skips links 连接encoder 中的feature map。在最后一个部分卷积层将输入图像(带缺失部分)和网络生成的图像结合,将网络生成的图像非缺失部分全部替换为输入图像的非缺失部分。

Partial Convolutional Layer (部分卷积):
1. Partial convolution operation
令 W 为卷积核的权重,X为当前卷积(滑动)窗口对应的特征(像素)值,M 为X相对应的二进制Mask。b为相对应的偏置值。在图像每个位置部分卷积。通过Mask和re-normalization 来保证卷积操作仅针对有效像素。


2. Mask update function
在进行部分卷积之后,进行Mask 的更新。
更新规则为:如果卷积(滑动)窗口对应的 Mask 值至少有一个对应的1,那么就更新卷积后对应 位置 Mask 为 1
mask 更新规则:

待解决的问题:
1.Mask 更新策略为 hard-attention
2.无法解决user-guided image 问题(加入scratch)
3.invalid pixels 随着网络深度增加disappear
4.Channel 共享,可以看做 un-learnable single-channel feature hard-gating


论文 2. Deepfill V1


Deepfill V1:Generative Image Inpainting with Contextual Attention 

Authors:JiaHui Yu CVPR 2018


Coarse network:一个编码器与解码器,在中间层运用了空洞卷积增大感受野

论文 3. Deepfill V2- Gated Conv


Deepfill V2: Free-Form Image Inpainting with Gated Convolution 

Authors:Jiahui Yu, Zhe Lin, Jimei Yang, Xiaohui Shen, Xin Lu, Thomas Huang, ICCV 2019


Insight Partial Conv 回顾:


Partial Conv 缺点: 

P-Conv 中Mask 更新的不合理:无论像素多少,只要存在至少一个,就将mask 设置为1;没有满足用户的意愿来进行修复(也就是没有使用 guidance);部分卷积网络的mask 在较深的层逐渐消失,并且消失的规则为只要存在一个像素为有效像素,则设置当前所对应的Mask 为1。


适用于:

irregular masks、rectangular masks、user sketch guidance.


解决办法:

提出gated convolution 来解决将所有元素都视为有效像素这一问题,通过在所有层的每个空间位置为每个通道提供一个可学习的动态特征选择机制,来扩展部分卷积。

Gated convolution :

门控卷积不是采用 hard-gating mask 的 Mask 更新规则,而是采用可学习的soft mask 更新规则。


Gated convolution (门控卷积)

学习了每个通道和每个空间位置的动态特征选择机制。中间门控值的可视化显示,它不仅能根据背景、mask 、草图来选择特征,还能考虑到某些通道的语义分割 。即使在深层,门控卷积也会学习在不同的通道中示突出显示 mask区域和草图信息,以更好地生成修复结果。




网络结构:

  • 采用了简单的encoder-decoder network,而不是采用类似 partial conv 的U-net 结构。并且作者发现partial conv 中使用的skip connections 对于本论文提出的方法并没有帮助。这主要是因为对于Mask 区域的中心,这些跳跃连接的输入几乎为零,因此无法将详细的颜色或纹理信息传播到该区域的解码器。对于Hole 边界,由于编码器结构配备了门控卷积,足以产生无缝的结果。

  • 作者将所有的门控卷积替代了传统的卷积。这一做法存在的问题就是引入了额外的参数,为了保持与baseline model 相同的效率,作者将模型的宽度缩小了 25%,在数量和质量上都没有发现明显的性能下降。



论文4. Generative Image Inpainting with Adversarial Edge Learning


源码:

https://github.com/knazeri/edge-connect


创新点:

1.一种边缘生成器,给定已知的边缘和图像的灰度像素值,能够在缺失区域产生边缘。

2.一个图像补全网络,将缺失区域的边缘与剩余图像的颜色和纹理信息结合起来,以填充缺失区

域。

3.一个端到端可训练的网络,结合了边缘生成和图像补全,以填补缺失区域的细节。

边缘生成网络 + 图像补全网


网络结构:

Edge generator 边缘生成网络:GAN 根据各种信息生成具有指导作用的 EdgeMap

结果:

能够进行图像拼接、移除和编辑。

‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍论文5. TTA-Net - Texture Transform Attention for Realistic Image Inpainting‍‍‍‍‍‍‍‍‍‍‍‍‍‍


根据纹理特征和语义特征的相似度计算attention weight,作用到纹理特征上,生成一个reassembled 的纹理。生成的纹理细节非常好。


提出了一种新的网络,利用U-Net 结构,通过在已经验证过的编码解码图像修复网络中添加跳跃连接,直接将编码的纹理传输到解码器。

  • 为了更有效的纹理转移,我们提出了纹理转换注意力模块(TTA),搜索最相似的patch。TTA 模块查找patch 的索引和相似度权重,并将纹理进行相应的重组,并将其传递给解码器。

  • TTA-Net 可以使用特征合成模块,通过深层和浅层纹理的迭代应用来合成纹理更细的图像。

  • 这个前向生成网络在各种数据集上实现了高质量的修复结果,包括 CelebA faces ,CelebA- hq faces, DTD textures 和Places2。


TTA 模块:


首先,将上下文特征(contextual feature Q)和精细纹理特征(Fine texture feature P)展开到相同大小,计算相似度权重(作为卷积过滤器)。将所有patch 的相似度权重按通道进行比较,找出最相似的patch 的索引和权重。然后根据索引图折叠纹理特征,生成重构的纹理图(Reassembled texture map T)。纹理图和权重图会送到特征合成模块,与上下文特征融合,最终生成Fusion ration map R。


结论:

确实在纹理细节上面,生成的细节非常丰富 。实验也证明了加入正则化能够有效的减少斑驳的棋盘状伪影。


论文 6. VQ - GAN:Taming Transformers for High-Resolution Image Synthesis


源码:

https://github.com/CompVis/taming-transformers

项目主页:

https://compvis.github.io/taming-transformers/


是基于Transformer 的高分辨率图像合成方法。解决了之前 Transformer 局限于低分辨率图像的基本挑战。VQ-GAN 将图像表示为感知上丰富的图像成分的合成形式,避免了直接在像素空间对图像建模的二次复杂度。用CNN 架构对合成成分进行建模,用Transformer 架构对成分进行合成,充分挖掘了二者的互补潜力。


Inpainting 常用损失函数:


Inpainting 量化评价指标:



Video Inpainting 数据集:



往期精彩回顾




本站qq群851320808,加入微信群请扫码:
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/120348