GLCIC:全局和局部一致的图像补全

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

在这里插入图片描述

在这里插入图片描述

前言

相关介绍

在这里插入图片描述
GLCIC (Globally and Locally Consistent Image Completion) 是一种图像补全技术,主要用于恢复图像中缺失的部分。这项技术结合了全局一致性和局部一致性两个概念来提高图像补全的质量。下面是对 GLCIC 的详细介绍及其优缺点。

GLCIC 的工作原理

核心思想

GLCIC 的主要目标是填充图像中缺失或损坏的部分,使之看起来自然并与周围环境协调一致。该方法通过使用卷积神经网络 (CNN) 结构来完成这一任务。

主要组件
  • 编码器:用于提取图像的特征。
  • 解码器:基于编码器提取的特征重建图像。
  • 注意力机制:帮助模型关注于图像中需要补全的部分。
训练目标
  • 像素损失:确保生成的图像像素值接近真实图像。
  • 感知损失:通过预训练的深度网络(例如 VGG 网络)来评估生成图像与真实图像之间的视觉相似性。
  • 对抗损失:使用生成对抗网络 (GAN) 的结构来使生成的图像更加逼真。

优点

  1. 高质量的补全效果:GLCIC 能够生成高质量的图像补全结果,使补全区域与周围环境协调一致。
  2. 全局一致性:通过全局一致性保证了补全区域在整个图像中的合理性。
  3. 局部一致性:确保补全区域的细节与相邻区域匹配,增强了补全的真实感。
  4. 端到端训练:模型可以端到端地进行训练,简化了模型设计和训练流程。
  5. 适应性强:可以应用于多种类型的图像补全任务,包括人脸补全、物体移除等场景。

缺点

  1. 训练时间和资源:GLCIC 需要大量的计算资源和较长时间来进行训练。
  2. 数据依赖性:模型的性能很大程度上依赖于训练数据集的质量和多样性。
  3. 过拟合风险:在没有足够数据的情况下,模型可能会出现过拟合现象。
  4. 边界问题:在某些情况下,补全区域的边缘可能会出现明显的边界痕迹,影响整体视觉效果。
  5. 细节缺失:虽然能较好地处理局部一致性,但在某些情况下可能无法完全恢复复杂的纹理和细节。

总结

GLCIC 是一种高效的图像补全方法,能够有效地填补图像中的空洞或缺失部分,同时保持图像的整体和局部一致性。这种技术在计算机视觉领域有着广泛的应用前景,特别是在图像修复、视频编辑等领域。然而,像大多数深度学习模型一样,GLCIC 也有其局限性,尤其是在计算资源的需求和对高质量训练数据的依赖方面。

实验环境

python=3.8.19
torch=1.9.0
torchaudio=0.9.0
torchvision=0.10.0
opencv-python==4.1.2.30 
scikit-image==0.16.2
pillow==7.0.0 
scipy==1.2.1 
tqdm==4.43.0 

项目地址

Linux

git clone https://github.com/otenim/GLCIC-PyTorch.git
cd GLCIC-PyTorch-master

Windows

请到https://github.com/otenim/GLCIC-PyTorch.git网站下载源代码zip压缩包。

cd GLCIC-PyTorch-master

项目结构

GLCIC-PyTorch-master
├─datasets
│  └─img_align_celeba
│      ├─test
│      └─train
├─images
├─results
│  └─demo
│      ├─phase_1
│      ├─phase_2
│      └─phase_3
└─__pycache__

具体用法

准备数据集

    |____train/ # used for training
    |       |____XXXX.jpg # .png format is also acceptable.
    |       |____OOOO.jpg
    |       |____....
    |____test/  # used for test
            |____oooo.jpg
            |____xxxx.jpg  
            |____.... ```

在这里插入图片描述

进行训练

python train.py datasets/dataset/ results/result/ [--data_parallel (store true)] [--cn_input_size (int)] [--ld_input_size (int)] [--init_model_cn (str)] [--init_model_cd (str)] [--steps_1 (int)] [--steps_2 (int)] [--steps_3 (int)] [--snaperiod_1 (int)] [--snaperiod_2 (int)] [--snaperiod_3 (int)] [--bsize (int)] [--bdivs (int)]


optional arguments:

<dataset> (required): path to the dataset directory.
<result> (required): path to the result directory.
[--data_parallel (store true)]: when this flag is enabled, models are trained in data-parallel way. If N gpus are available, N gpus are used during training (default: disabled).
[--cn_input_size (int)]: input size of generator (completion network). All input images are rescalled so that the minimum side is equal to cn_input_size then randomly cropped into cn_input_size x cn_input_size (default: 160).
[--ld_input_size (int)]: input size of local discriminator (default: 96). Input size of global discriminator is the same as [--cn_input_size].
[--init_model_cn (str)]: path to a pretrained generator, used as its initial weights (default: None).
[--init_model_cd (str)]: path to a pretrained discriminator, used as its initial weights (default: None).
[--steps_1 (int)]: training steps during phase 1 (default: 90,000).
[--steps_2 (int)]: training steps during phase 2 (default: 10,000).
[--steps_3 (int)]: training steps during phase 3 (default: 400,000).
[--snaperiod_1 (int)]: snapshot period during phase 1 (default: 10,000).
[--snaperiod_2 (int)]: snapshot period during phase 2 (default: 2,000).
[--snaperiod_3 (int)]: snapshot period during phase 3 (default: 10,000).
[--max_holes (int)]: maximum number of holes randomly generated and applied to each input image (default: 1).
[--hole_min_w (int)]: minimum width of a hole (default: 48).
[--hole_max_w (int)]: maximum width of a hole (default: 96).
[--hole_min_h (int)]: minimum height of a hole (default: 48).
[--hole_max_h (int)]: maximum height of a hole (default: 96).
[--bsize (int)]: batch size (default: 16). bsize >= 96 is strongly recommended.
[--bdivs (int)]: divide a single training step of batch size = bsize into bdivs steps of batch size = bsize/bdivs, which produces the same training results as when bdivs = 1 but uses smaller gpu memory space at the cost of speed. This option can be used together with data_parallel (default: 1).

# 示例:如果您使用 data_parallel 选项训练批量大小为 24 的模型并将其他设置保留为默认值,可以运行以下命令。
python train.py datasets/dataset results/result --data_parallel --bsize 24
python train.py datasets/img_align_celeba results/demo/

训练结果(模型和测试修复输出)将保存在 results/demo/ 中。

训练过程包括以下三个阶段。

  • Phase 1: trains only generator.
  • Phase 2: trains only discriminator, while generator is frozen.
  • Phase 3: both generator and discriminator are jointly trained.

train.py 的默认设置除批量大小外,均基于原始论文。如果需要重现论文结果,请在训练时添加 --data_parallel --bsize 96

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

进行测试

在这里插入图片描述

python predict.py results/result/phase_3/model_cn_step<step-number> results/result/config.json <input_img> <output_img> [--max_holes (int)] [--img_size (int)] [--hole_min_w (int)] [--hole_max_w (int)] [--hole_min_h (int)] [--hole_max_h (int)]

optional arguments:

<input_img> (required): path to an input image.
<output_img> (required): path to an output image.
[--img_size (int)]: input size of generator. Input images are rescalled so that the minimum side = img_size then randomly cropped into img_size x img_size (default: 160).
[--max_holes (int)]: maximum number of holes to be randomly generated (default: 5).
[--hole_min_w (int)]: minimum width of a hole (default: 24).
[--hole_max_w (int)]: maximum width of a hole (default: 48).
[--hole_min_h (int)]: minimum height of a hole (default: 24).
[--hole_max_h (int)]: maximum height of a hole (default: 48).

# 示例:如果您使用输入图像 <path-to-this-repo>/input.jpg 进行推理并将输出图像保存为 <path-to-this-repo>/output.jpg,可以运行以下命令
python predict.py results/result/phase_3/model_cn_step{step_number} results/result/config.json input.jpg output.jpg

python predict.py results/demo/phase_3/model_cn_step400000 results/demo/config.json images/test.jpg test_res.jpg

在这里插入图片描述

在这里插入图片描述

参考文献

[1] GLCIC 源代码地址:https://github.com/otenim/GLCIC-PyTorch.git
[2] GLCIC 论文地址:http://hi.cs.waseda.ac.jp/~iizuka/projects/completion/data/completion_sig2017.pdf

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FriendshipT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值