old photo老照片图像复原数据集

 来源

本来想拿DA-CLIP 训练一下old photo,训练代码没成功,毕设没时间就不研究了 

github搜old photo复原论文原作者好像没开源训练数据集,所以用了这个SynOld

训练集500对测试集200对

但是readme写的很差,其他什么也没交代

 

展示 

 

考证

拿GT图去Google搜图

搞了半天勉强搜上

与训练文件夹下第一张GT图相同

目测用的 PASCAL VOC

生成方法估计参考《Bringing Old Photos Back to Life》

分割代码 

第一次见这种保存数据集方式,我将它分割回更一般的 GT、LQ两个文件夹

import os
from PIL import Imagedef split_images(input_dir, output_dir):"""Split paired LQ and GT images into separate files.Args:input_dir (str): The path to the directory containing the paired images.output_dir (str): The path to the directory where the split images will be saved."""# Create LQ and GT subdirectories if they do not existlq_dir = os.path.join(output_dir, 'LQ')gt_dir = os.path.join(output_dir, 'GT')os.makedirs(lq_dir, exist_ok=True)os.makedirs(gt_dir, exist_ok=True)for filename in os.listdir(input_dir):if filename.endswith('.jpg'):image_path = os.path.join(input_dir, filename)with Image.open(image_path) as img:# Assuming the images are horizontally pairedwidth, height = img.sizeassert width % 2 == 0, "The width of the image is not even, cannot split into two equal parts."# Extract LQ image (left half)lq_img = img.crop((0, 0, width // 2, height))lq_output_path = os.path.join(lq_dir, os.path.splitext(filename)[0] + '_LQ.jpg')lq_img.save(lq_output_path)# Extract GT image (right half)gt_img = img.crop((width // 2, 0, width, height))gt_output_path = os.path.join(gt_dir, os.path.splitext(filename)[0] + '_GT.jpg')gt_img.save(gt_output_path)print(f"Saved split images: {lq_output_path} and {gt_output_path}")# Set the paths for input and output directories
input_directory = 'E:\\SynOld-main\\test'
output_directory = 'C:\\Users\\86136\\Desktop\\LQ_images\\old photo'# Call the function to split the paired images
split_images(input_directory, output_directory)

 只用两行地址

 input_directory = 'E:\\SynOld-main\\test'

这是要分割的图像所在文件夹地址,这里只分了test集


output_directory = 'C:\\Users\\86136\\Desktop\\LQ_images\\old photo'

这是我的结果保存路径

结果

 

 DA-CLIP自动检测复原结果

 很一般,没有inpainting那么惊艳,一般识别为snowy、shadow、JPEG压缩伪影啥的

只有少量小白点去除。

附复原了25张图的相关指标

PSNR: 21.679276 dB;

SSIM: 0.677668

 LPIPS    : 0.332356

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

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

相关文章

Centos-Linux安装部署MySQL-8.0

linux搭建mysql 1.使用系统的root账户 2.切换到 /usr/local 目录下 3.下载mysql wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.31-linux-glibc2.12-x86_64.tar.xz也可以直接在官方下载最新版本 官方下载 选择linux 4.解压mysql tar xvJf mysql-8.0.21-l…

【MySQL】MySQL事务的问题:脏读、幻读、不可重复读

MySQL事务的问题:脏读、幻读、不可重复读 在上一篇文章中,我们已经学习过了事务相关的基础知识,今天,我们继续学习事务有可能带来的一些问题。其实在一次请求和连接中,事务是不会出现什么问题的,毕竟在一个…

C易错注意之const修饰指针,含char类型计算,位段及相关经典易错例题

目录 前言 一:const修饰指针 1.const修饰变量 2.const 修饰指针 1.const int*p&m; 2. int* const p&m; 3. int const *p&m; 4. int const *const p&m; 5.总结 总之一句话为:左定值有定向 二:关于计算中char类型…

Windows创建远程线程学习

CreateRemoteThread是一个Windows API函数,它能够创建一个在其它进程地址空间中运行的线程; 下面来简单做一下,配合procexp工具; VC代码如下,我是写到一个菜单单击处理函数中, void CCrrmthView::OnMenuitem32771() {// TODO: Add your command handler code hereHAN…

C语言:动态内存管理(二)

目录 前言 1.3 realloc​编辑 3、常见动态内存管理错误 3.1 对空指针的解引用操作 3.2 对动态开辟的空间进行越界访问 3.3 对非动态开辟内存使用free释放 3.4 使用free释放一块动态内存开辟的一部分 3.5 对同一块空间的多次释放 3.6 动态内存开辟之后忘记释放 总结 前…

杨氏矩阵(C语言)

文章目录 问题技术名词解释思路关键代码运行代码 问题 有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的,请编写程序在这样的矩阵中查找某个数字是否存在。 要求:时间复杂度小于O(N); 技术名词解释 杨氏矩阵&…

自动化测试框架Robot Framework入门

什么是RF RF是一个基于 Python 的、可扩展的关键字驱动的自动化 验收测试框架、验收测试驱动开发 (ATDD)、 行为驱动开发 (BDD) 和机器人流程自动化 (RPA)。它 可用于分布式、异构环境,其中自动…

Spring Security——04,认证_校验

认证_校验 一、认证过滤器二、配置过滤器三、测试过滤器3.1 登录接口3.2 非登录接口3.3 结果 一键三连有没有捏~~ 一、认证过滤器 创建一个filter包,创建一个过滤器 代码如下: Component public class JwtAuthenticationTokenFilter extends OncePerR…

LeetCode | 数组 | 双指针法 | 27. 移除元素【C++】

题目链接 1. 题目描述 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑…

在集群中使用deepspeed如果端口被占用可以使用deepspeed参数更改

在集群中使用deepspeed如果端口被占用可以使用deepspeed参数更改 这一次G老师不好使了 在集群中使用deepspeed默认的端口号29500被占用,显示更改居然不起作用 G老师给的方法也不好使 #!/bin/bash MASTER_ADDRlocalhost MASTER_PORT29501 # 选择一个未被占用的端…

Android+OnnxRuntime+Opencv+Onnx模型操作图片擦除多余内容

今年来AI的发展非常迅速,在工业、医疗等等行业逐渐出现相应的解决方案,AI也逐渐成为各行业基础设施建设重要的一环,未来发展的大趋势,不过这也需要一个漫长的过程,需要很多技术型人才加入其中,除了工业设施的基础建设,在娱乐方向也有很多有趣的能力,不如图片/视频换背景…

mysql 运算符 语句 字符集 校队集

mysql 运算符 使用select语句可以输出运算的结果 mysql标识符不区分大小写 算数运算符 1./除法 得到的结果是一个小数 %是整数,省略小数 2、除以0不会报错,得到的结果是 null 3.数宇和字符串做加法运算,并不会拼接 比较运算符 1.mysql里面的=是比较运算符,而不是赋值运算…

lora pingpang系统 4

1 深入了解LoRa技术原理 1.1 LoRa扩频通信原理 1.1.1 模拟无线通信: 模拟无线通信是一种使用模拟信号传输数据的通信方式。这种通信方式已经被数字无线通信所取代,因为数字通信具有更高的效率和可靠性。 天线:从空中接收到的无线电波转换成…

数据结构——图的概念,图的存储结构,图的遍历(dfs,bfs)

目录 1.图的定义和术语 2.案例引入 1.六度空间理论 3.图的类型定义 4.图的存储结构 1.邻接矩阵 1.无向图的邻接矩阵表示法 2.有向图的邻接矩阵表示法 3.网(有权图)的邻接矩阵表示法 代码示例: 2.采用邻接矩阵表示法创建无向图…

每天学习一个Linux命令之mount

每天学习一个Linux命令之mount 在Linux系统中&#xff0c;mount命令是一个非常有用的命令&#xff0c;用于将文件系统挂载到特定的挂载点。本篇博客将详细介绍mount命令的用法以及常用选项。 语法 使用mount命令的基本语法如下&#xff1a; mount [选项] <设备或文件系统…

MySQL 表的增删改查

文章目录 一、什么是CRUD&#xff1f;二、新增&#xff08;Create&#xff09;1、单行数据 全列插入2、多行数据 指定列插入3、插入特殊类型 三、查询&#xff08;Retrieve&#xff09;1、全列查询2、指定列查询3、表达式查询4、指定别名5、去重6、排序7、条件查询基本查询&a…

java算法day44 | ● 完全背包 ● 518. 零钱兑换 II ● 377. 组合总和 Ⅳ

完全背包理论基础 完全背包和01背包问题唯一不同的地方就是&#xff0c;每种物品有无限件。 体现在代码中就是对背包的遍历顺序不同。01背包是逆序遍历背包&#xff0c;完全背包是顺序遍历背包。 518. 零钱兑换 II class Solution {public int change(int amount, int[] coin…

微信小程序登录流程

文章目录 1. 用户触发登录操作2. 获取临时登录凭证3. 发送登录凭证到服务器4. 后端使用 code 获取 session_key 和 openid5. 后端保存 session_key 和 openid 返回token6. 前端保存登录态 1. 用户触发登录操作 用户在小程序内部点击登录按钮或进行需要登录权限的操作&#xff…

IMAP的要点:旅行前需要了解的内容

你是否经常因会议而出差&#xff0c;需要在各种设备上灵活地访问你的电子邮件&#xff1f;如果是的话&#xff0c;你可能会想了解你的电子邮件系统是如何通过使用互联网消息访问协议&#xff08;IMAP&#xff09;来工作的&#xff0c;这样当你不在办公桌前时&#xff0c;你可以…

Java基础 - 代码练习

第一题&#xff1a;集合的运用&#xff08;幸存者&#xff09; public class demo1 {public static void main(String[] args) {ArrayList<Integer> array new ArrayList<>(); //一百个囚犯存放在array集合中Random r new Random();for (int i 0; i < 100; …