图像修复(Image Inpainting)任务中常用的掩码数据集


前言

在 Image Inpainting(图像修复) 任务中,需要使用掩码数据集在图像上人为添加缺陷区域,以便在设计的深度学习上进行训练学习。

mask数据集分类及介绍

  1. 目前图像修复任务中最长用的数据集是来自于 Liu 等人2018年发布的论文 Image Inpainting for Irregular Holes Using Partial Convolutions, 该论文中提出用部分卷积解决inpainting的任务的同时,也公布了一个大型的mask数据集,该数据集在之后的 Inpainting 任务中被大量使用。

数据集介绍:
作者对mask的孔洞大小进行了分类。具体而言,作者定义了6个比例范围:
( 0.01 , 0.1 ] , ( 0.1 , 0.2 ] , ( 0.2 , 0.3 ] , ( 0.3 , 0.4 ] , ( 0.4 , 0.5 ] , ( 0.5 , 0.6 ] 。
每个种类有孔洞靠近边界的mask和孔洞不靠近边界的mask各1000张。所以,一共有6 ∗ 2 ∗ 1000 = 12000 个mask。各种类的mask例子如下图所示,其中1,3,5是有边界约束的,2,4,6是没有边界约束的:
在这里插入图片描述
下载地址 :https://nv-adlr.github.io/publication/partialconv-inpainting
在这里插入图片描述
官网的下载界面上给了两个链接,第一个链接里面的数据集是训练mask数据集,第二个是测试mask数据集。
但是!!!,看下面重点
当下载到两个链接里的数据集之后,数据集里的数据长这样:

  • Traning Set
    在这里插入图片描述这些mask数据集是960 * 640,看着有点怪。
  • Testing Set

在这里插入图片描述
这一部分才是作者在论文中提到的那12000张mask数据集,大小为512 * 512。
因此我也比较迷糊第一部分的Traning Set是干嘛用的。也没见人使用第一部分的数据集进行训练,都是用第二部分的Testing Set进行的训练。
由于这部分数据集挺多的,12000张,可以训练可测试都用这个Testing Set。

  1. 快速绘制不规则掩码数据集

它的mask数据集是人工手动绘制的,长这个样子:
在这里插入图片描述
大小是512 * 512的。总数量很多,有很多个G。
下载地址:https://github.com/karfly/qd-imd

总结

本文介绍了Inpainting任务中常用的mask数据集,推荐使用第一种,只用那Testing Set中的数据,给它随机打乱分成训练集和测试集就可以了。一共有12000张,用来做mask完全够用了。
还有一个好出就是,它的大小是512 * 512的,如果你的图像数据集是256 * 256的,那只需要用 pytorch transforms 给它Resize()到256就可以了,也不会变形。比第一部分的好用!

### 使用扩散模型进行图像修复 #### 了解扩散模型的基础原理 扩散模型是一种强大的生成模型,其工作原理是在噪声数据和原始清晰数据之间建立映射关系。通过逐步去除添加到输入中的随机噪声来恢复目标特征,在这一过程中可以实现多种视觉任务,包括但不限于图像去噪、超分辨率重建以及图像修复等[^1]。 #### 准备环境与依赖库安装 为了能够顺利运行下面提到的相关代码片段,确保已经配置好Python开发环境,并且安装必要的第三方包如PyTorch, torchvision以及其他可能需要用到的支持库。 ```bash pip install torch torchvision torchaudio diffusers transformers accelerate safetensors ``` #### 加载预训练模型并设置参数 这里采用Hugging Face提供的`diffusers`库加载预先训练好的稳定扩散模型实例作为基础架构来进行后续操作: ```python from diffusers import StableDiffusionInpaintPipeline import torch device = "cuda" if torch.cuda.is_available() else "cpu" model_id_or_path = "runwayml/stable-diffusion-inpainting" pipe = StableDiffusionInpaintPipeline.from_pretrained(model_id_or_path).to(device) ``` #### 输入准备:损坏图片及掩码定义 对于要修复的破损区域,需要创建对应的二值化蒙版(mask),其中白色部分表示待填充区而黑色则代表保留不变之处;接着读取原图及其对应位置上的遮罩文件路径完成初始化处理。 ```python from PIL import Image import numpy as np image = Image.open("./example_image.png") # 原始受损图片路径 mask = Image.open("./example_mask.png").convert('L') # 掩码图片路径转换成灰度模式 init_image = image.resize((512, 512)) # 调整大小至适合网络输入尺寸 mask_image = mask.resize((512, 512)) ``` #### 执行修复过程 利用上述构建完毕的对象执行实际的修补流程,这一步骤会依据给定条件自动生成缺失内容填补进指定区域内形成完整的输出结果。 ```python prompt = "" # 可选提示词用于指导生成风格,默认为空字符串即不加任何额外指示 output = pipe(prompt=prompt, image=init_image, mask_image=mask_image).images[0] output.save("result.png") ``` 以上就是基于扩散模型实施简单版本的图像修复方案概述[^3]。值得注意的是,虽然这种方法能有效解决许多类型的损伤情况,但对于某些极端案例仍可能存在局限性,因此建议根据实际情况灵活调整策略以达到最佳效果。
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

半岛铁子_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值