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

news2024/11/24 3:23:40

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

  • 前言
  • 相关介绍
      • GLCIC 的工作原理
        • 核心思想
        • 主要组件
        • 训练目标
      • 优点
      • 缺点
      • 总结
  • 实验环境
  • 项目地址
    • Linux
    • Windows
  • 项目结构
  • 具体用法
    • 准备数据集
    • 进行训练
    • 进行测试
  • 参考文献

在这里插入图片描述

在这里插入图片描述

前言

  • 由于本人水平有限,难免出现错漏,敬请批评改正。
  • 更多精彩内容,可点击进入Python日常小操作专栏、OpenCV-Python小应用专栏、YOLO系列专栏、自然语言处理专栏或我的个人主页查看
  • 基于DETR的人脸伪装检测
  • YOLOv7训练自己的数据集(口罩检测)
  • YOLOv8训练自己的数据集(足球检测)
  • YOLOv10训练自己的数据集(交通标志检测)
  • YOLOv5:TensorRT加速YOLOv5模型推理
  • YOLOv5:IoU、GIoU、DIoU、CIoU、EIoU
  • 玩转Jetson Nano(五):TensorRT加速YOLOv5目标检测
  • YOLOv5:添加SE、CBAM、CoordAtt、ECA注意力机制
  • YOLOv5:yolov5s.yaml配置文件解读、增加小目标检测层
  • Python将COCO格式实例分割数据集转换为YOLO格式实例分割数据集
  • YOLOv5:使用7.0版本训练自己的实例分割模型(车辆、行人、路标、车道线等实例分割)
  • 使用Kaggle GPU资源免费体验Stable Diffusion开源项目

相关介绍

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

在这里插入图片描述
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 

项目地址

  • GLCIC 源代码地址:https://github.com/otenim/GLCIC-PyTorch.git

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__

具体用法

准备数据集

  • 使用 CelebA 数据集作为示例训练 glcic 模型
  • GLCIC 源代码地址也提供了训练、测试所需数据集的下载地址。
    在这里插入图片描述
  • 数据集格式如下:
    |____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

  • 由于本人水平有限,难免出现错漏,敬请批评改正。
  • 更多精彩内容,可点击进入Python日常小操作专栏、OpenCV-Python小应用专栏、YOLO系列专栏、自然语言处理专栏或我的个人主页查看
  • 基于DETR的人脸伪装检测
  • YOLOv7训练自己的数据集(口罩检测)
  • YOLOv8训练自己的数据集(足球检测)
  • YOLOv10训练自己的数据集(交通标志检测)
  • YOLOv5:TensorRT加速YOLOv5模型推理
  • YOLOv5:IoU、GIoU、DIoU、CIoU、EIoU
  • 玩转Jetson Nano(五):TensorRT加速YOLOv5目标检测
  • YOLOv5:添加SE、CBAM、CoordAtt、ECA注意力机制
  • YOLOv5:yolov5s.yaml配置文件解读、增加小目标检测层
  • Python将COCO格式实例分割数据集转换为YOLO格式实例分割数据集
  • YOLOv5:使用7.0版本训练自己的实例分割模型(车辆、行人、路标、车道线等实例分割)
  • 使用Kaggle GPU资源免费体验Stable Diffusion开源项目

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

四十一、大数据技术之Kafka3.x(4)

&#x1f33b;&#x1f33b; 目录 一、Kafka 消费者1.1 Kafka 消费方式1.2 Kafka 消费者工作流程1.2.1 消费者总体工作流程1.2.2 消费者组原理1.2.3 消费者重要参数 1.3 消费者 API1.3.1 独立消费者案例&#xff08;订阅主题&#xff09;1.3.2 独立消费者案例&#xff08;订阅分…

基于SpringBoot+Vue框架的租车管理系统

文章目录 一、项目介绍二、项目类型三、技术栈介绍1.客户端技术栈2.服务端技术栈 四、项目创新点五、项目功能介绍1.客户端功能2.服务端功能 六、项目的主要截图页面如下展示1.客户端展示2.服务端展示 七、项目源码 一、项目介绍 ​大家好&#xff0c;我是执手天涯&#xff0c;…

找出字符串中第一个匹配项的下标 | LeetCode-28 | KMP算法 | next数组 | Java详细注释

&#x1f64b;大家好&#xff01;我是毛毛张! &#x1f308;个人首页&#xff1a; 神马都会亿点点的毛毛张 &#x1f579;️KMP算法练习题 LeetCode链接&#xff1a;28. 找出字符串中第一个匹配项的下标 文章目录 1.题目描述&#x1f347;2.题解&#x1f349;2.1 暴力解法&a…

【树的遍历】

题目 代码 #include<bits/stdc.h> using namespace std;const int N 40;int in[N], pos[N]; //中序、后序 int idx[N]; //中序的值->索引 unordered_map<int, int> l, r; //根节点的左、右树根节点 int n; int build(int il, int ir, int pl, int pr) {int ro…

【2】MySQL相关概念

一.数据库相关概念 二.MySQL数据库

软件接口测试有多重要?专业软件测试公司接口测试流程分享

在当今软件开发的各个阶段&#xff0c;软件接口测试无疑是一个极其重要的环节。接口测试主要针对软件系统与外部环境之间的交互部分&#xff0c;包括API、Web服务、中间件等。在现代软件架构中&#xff0c;接口的稳定性和一致性直接关系到系统的整体性能和用户体验。因此&#…

掌握电容器:详解其工作原理、分类、应用及测试技巧

电容器是一种不可或缺的基础元件。它们广泛应用于各种电路设计中&#xff0c;从简单的滤波电路到复杂的电源管理系统&#xff0c;无处不在。在此&#xff0c;道合顺将一一阐述其基本原理、分类、应用以及测试好坏方法&#xff0c;帮助读者们更清楚了解这一重要组件。 1、电容器…

如何利用YOLOv8训练自己的数据集 3种加载模型场景讲解

文章目录 前言1、环境搭建2、YOLOv8训练3、官网训练文档3.1、官网示例3.2、三种加载模型场景3.2.1、从YAML文件构建新模型3.2.2、从预训练权重构建模型3.2.3、从YAML文件构建新模型&#xff0c;并将预训练权重转移到新模型 4、总结5、目标检测系列文章 前言 本文主要介绍一下如…

linux 文件编程

标准IO和文件IO是计算机编程中用于处理输入/输出&#xff08;Input/Output&#xff0c;简称IO&#xff09;操作的两种不同方式&#xff0c;它们各自具有不同的特点和使用场景。 一、定义与特点 标准IO&#xff1a; 定义&#xff1a;标准IO通常指的是C语言提供的标准库中的IO…

第八季完美童模全球总冠军·韩嘉潞 破浪扬帆写就传奇

梦想的舞台上&#xff0c;星光璀璨&#xff0c;每一步都闪耀着坚持与努力的光芒。在这个盛夏&#xff0c;我们共同见证了一个关于勇气、才华与梦想的辉煌篇章——星光女孩韩嘉潞&#xff0c;在第八季完美童模的璀璨舞台上&#xff0c;以非凡的魅力与不懈的努力&#xff0c;勇夺…

奥运冠军郑钦文:荣耀与激励!

&#x1f396;️巴黎奥运的荣耀时刻&#xff0c;属于郑钦文&#xff01; 在巴黎奥运会的赛场上&#xff0c;郑钦文以无比的坚韧和卓越的技艺&#xff0c;一路过关斩将&#xff0c;最终登上了冠军的宝座&#xff01; 我们借助以下图片中的方法&#xff0c;将她在赛后视频发言中…

音频转换软件哪个好?试试这5款

潍坊新青年音乐节燃爆现场&#xff0c;音符跳跃间&#xff0c;想不想把最爱的现场Live一键转成手机铃声&#xff1f;别急&#xff0c;寻找免费电脑音频转换软件的你来对地方了&#xff01; 告别繁琐&#xff0c;5款专业级利器大放送&#xff0c;今天我来告诉你们&#xff1a;电…

阿里云-java调用短信服务,第三方接口的开启(傻瓜式教程)

第一步&#xff1a;在浏览器中&#xff0c;搜索阿里云 第二步&#xff1a;打开aly的主页 第三步&#xff1a;在最上方的导航栏中&#xff0c;找到云市场&#xff0c;注意不要点击&#xff0c;会自动有触发悬浮框出现&#xff0c;在悬浮框中找到 短信 第四步&#xff1a;点击 短…

Secure Coding in C and C ++ (三)关于语法与指针的感悟

上一篇文章中&#xff0c;我们讲了一些关于编译和链接以及基础的C知识。详情请见文章 SecureCoding in C and C&#xff08;二&#xff09; 本篇文章将从循环开始写起 1 循环 1. 1 for 先来个简单的例子&#xff1a; 打印hello world 五次&#xff1a; 很简单的吧 for循环的…

echarts学习:绘制地图

前言 经过之前一段时间的磨砺&#xff0c;我具备了基本的使用echarts绘制图表的能力。但是在最近这几个月里我接连遇到了几个棘手的任务&#xff0c;这大大的提升了我的echarts水平。其中我遇到的第一个高难度任务就是使用echarts绘制如下的地图&#xff1a; 简单的分析一下&a…

批量查询全国快递单号:高效追踪物流信息

在日常生活和工作中&#xff0c;我们经常会遇到需要查询多个快递单号物流信息的情况。如果手动逐一查询&#xff0c;不仅效率低下&#xff0c;而且容易出错。为了解决这个问题&#xff0c;我们可以借助固乔科技推出的【固乔快递查询助手】软件&#xff0c;轻松实现全国快递的批…

yolov5详解(一):网络结构

1. 完整的网络结构 以下是参考b站上作者以及yolov5官方代码画出的yolov5l v6.0版本的模型结构&#xff0c;v6.0版本的模型结构是目前yolov5版本的稳定版本&#xff0c;想必以后也不会有什么改变。l,m,n,s,x只是有些层以及输出通道数变化&#xff0c;整体架构是完全一样的&…

vue 项目中 使用vxe-grid 表格中给表格的表头设置特殊的格式 , 并且给指定的列文字设置颜色

项目场景&#xff1a; 相关背景&#xff1a; vue 项目中 使用vxe-grid 表格中给表格的表头设置特殊的格式&#xff0c;并为指定的列文字设置颜色 实现方案&#xff1a; 具体实现方法及步骤&#xff1a; 一、给表格的表头设置特殊的格式 实现方式一&#xff1a; :header-row-s…

WebDeveloper靶机复现

靶机设置 设置靶机为NAT模式 靶机IP发现 nmap 192.168.112.0/24 靶机ip为192.168.112.137 目录扫描 开放80端口&#xff0c;进行目录扫描 dirb 192.168.112.137 访问浏览器 目录拼接 拼接/ipdata 发现了一个流量包 在wireshark里面查看&#xff0c;发现wordpress的账户…

python提取b站视频的音频(提供源码

如果我想开一家咖啡厅&#xff0c;那么咖啡厅的音乐可得精挑细选&#xff01;又假设我非常喜欢o叔&#xff0c;而o叔只在b站弹钢琴&#xff0c;那这时候我就得想方设法把b站的视频转为音频咯&#xff01; 一、首先打开网页版bilibili&#xff0c;按F12&#xff1a; 二、刷新页面…