当前位置: 首页 > news >正文

5 款 AI 老照片修复工具的横向比较

在大语言模型和各类 AI 应用日新月异的今天,我终于下定决心,趁着老照片们还没有完全发黄褪色、受潮粘连抑或损坏遗失,将上一代人实体相册里的纸质胶卷照片全部数字化,并进行一次彻底的 AI 修复,好让这些珍贵的记忆能更长久地保存下去。

数字化的方式是使用 Google 相册提供的「照片扫描仪」(Photoscan)应用,它能自动调整角度、裁剪边缘,消除眩光、阴影,并将原件和自动编辑过的图片同时保存在 iCloud 相册中。(条件允许的话,更建议使用扫描仪以得到最大的分辨率。)

接下来遇到的问题是如何挑选一款合适的 AI 修复工具。根据以往经验和近期热门,我挑选了 5 款候选。为了使修复效果达到最好,我把待修复的小几百张老照片,几乎每张都用全部工具试了一遍,也算是对这些工具进行了一次深度使用,因此下面就把体验分享给大家。

工具列表

工具平台价格模型
CodeFormer网页免费(开源)Codebook Lookup TransFormer (CodeFormer), 2022 年
RestorePhotos.io网页免费(开源)GFP-GAN, 2021 年
jpgHD.com网页 / iOS / Android / Mac / Windows收费,可免费试用 5 张未公开的 AI 超分模型,2021 年
你我当年iOS / Android收费,观看 20 秒广告可以处理 1 张未公开
老照片修复iOS / Android收费未公开

这里额外介绍一下两款开源工具:

  • CodeFormer (官方网站 | GitHub 项目地址):南洋理工大学周尚辰等人的作品,基于 Codebook Lookup TransFormer 模型实现。可以使用作者通过在线模型运行服务 Replicate 搭建的 demo 直接体验(受限于 Replicate 的免费额度,超出需要付费)。附我使用的参数供参考:fidelity = 0.8background_enhance = trueface_upsample = trueupscale = 2
  • RestorePhotos.io (官方网站 | GitHub 项目地址):基于腾讯 ARC 实验室 GFP-GAN 模型实现的老照片修复工具。官网每天可以免费使用 5 次,但也可以通过 Vercel 等方式一键部署,并填入自己的 Replicate API key,从而不受限制地使用。

注:由于可以理解的隐私原因,以下就不放我实际用来修复的照片了,我从公开渠道搜集了一些图片用于测试,以供大家辨别参考。

第一组测试图片:单人及双人(大头照)

测试 1-1 邓丽君

这是一张电视节目截图中的邓丽君。几乎所有工具都对这张图片进行了不错的还原,包括头发以及耳环(「CodeFormer」在牙齿的细节处理上存在一些瑕疵)。你觉得哪张图更像真实的邓丽君呢?

左:原图,右:CodeFormer

左:RestorePhotos.io,右:jpgHD.com

左:你我当年,右:老照片修复

测试 1-2 周杰伦

这张周杰伦童年照的原始图片比较模糊,且有很多噪点。从还原表现上来看「CodeFormer」、「你我当年」、「老照片修复」在背景降噪、衣服质感的还原上更加出色,但只有「jpgHD.com」准确还原出了周董的单眼皮以及内眼角细节,在我看来它是最像图片最初模样的。其他工具均适当发挥了「想象力」。

左:原图,右:CodeFormer

左:RestorePhotos.io,右:jpgHD.com

左:你我当年,右:老照片修复

测试 1-3 张国荣与张柏芝合影

一张模糊不清的合影,5 个工具的修复效果可谓齐轨连辔。

左:原图,右:CodeFormer

左:RestorePhotos.io,右:jpgHD.com

左:你我当年,右:老照片修复

测试 1-4 张学友与王祖贤合影

除「jpgHD.com」对王祖贤的皮肤处理比较粗糙以外,各家工具在这种单人及双人大头照的处理上几乎难分伯仲。注意所有工具均对耳坠进行了还原修复。

左:原图,右:CodeFormer

左:RestorePhotos.io,右:jpgHD.com

左:你我当年,右:老照片修复

测试 1-5 爱因斯坦

这里尝试对 1927 年第五次索尔维会议上的阿尔伯特·爱因斯坦、亨德里克·洛伦兹、居里夫人三位大神进行修复。原图为黑白,已经过人工上色处理,但并未对细节进行放大修复。可见「CodeFormer」对人脸、西装的修复效果都更好,且成功识别了后方只有半张脸的阿瑟·康普顿。

左:原图,右:CodeFormer

左:RestorePhotos.io,右:jpgHD.com

左:你我当年,右:老照片修复

测试 1-6 洛伦兹

注意「老照片修复」错误地生成了一个模糊不清的眼镜轮廓。

左:原图,右:CodeFormer

左:RestorePhotos.io,右:jpgHD.com

左:你我当年,右:老照片修复

测试 1-7 居里夫人

从皮肤质感上看「CodeFormer」的清晰程度领先于其他工具。

左:原图,右:CodeFormer

左:RestorePhotos.io,右:jpgHD.com

左:你我当年,右:老照片修复

第二组测试图片:多人(大合影)

测试 2-1:轻微模糊的多人合影

图片作者无考,原标题为「镜头下:80 年代的中国儿童」。(来源链接)

原图

CodeFormer

RestorePhotos.io

jpgHD.com

你我当年

老照片修复

测试 2-2:中度模糊的四人合影

图片来源:南京理工大学经济管理学院国贸双学位班学生校园随拍(1990 年夏,左起:韩梦玲、周详文、石英、吕虹)。(来源链接)

对这张图片的处理产生了比较明显的差异,「CodeFormer」面部较为自然,成功还原了左三女生的眼镜(但产生了毛刺),并对头发、衣物和建筑物修复得更为精确;「你我当年」的面部修复效果非常自然,「老照片修复」在建筑物修复上也表现得很不错。而「RestorePhotos.io」则在面部还原上出现了较大程度的扭曲,左三女生的眼镜并没有被成功修复。

原图

CodeFormer

RestorePhotos.io

jpgHD.com

你我当年

老照片修复

测试 2-3:高度模糊的多人合影

图片来源:中国科学院上海光学精密机械研究所 80 年代西楼小会堂前合影(左起,前排:王慧敏、张莲英、杨姮彩、于阿滨、顾德英、李爱莲,后排:林岳明、方祖捷、张位在、金志良、刘枝伍、胡衍芝)。(来源链接)

这张图的人脸出现了较大程度的模糊,各个工具均充分发挥了想象进行脑补。

从五官的自然和谐程度上来看,我会对修复效果这么排序:CodeFormer > 老照片修复 > jpgHD.com > 你我当年 > RestorePhotos.io。

从背景、衣物的修复效果上来看,我会对修复效果这么排序:CodeFormer = 老照片修复 > 你我当年 > RestorePhotos.io = jpgHD.com。

原图

CodeFormer

RestorePhotos.io

jpgHD.com

你我当年

老照片修复

测试结论

工具画质提升清晰程度准确程度修复速度
CodeFormer支持
可选提高画质(自定义倍率)
很高较高
对比原图准确性较高,但有可能出现少量不自然的细节
一般
从 6s 至 60s 不等
RestorePhotos.io不支持较低
生成出来的图片最大分辨率为 1200px
较低
对比原图「脑补想象」程度更大,在小头像上表现比较差,很容易出现扭曲变形
很快
通常都可以在 10s 内完成
jpgHD.com支持
可选提高画质(2x、4x)
中等很高
能还原出原始照片的真实细节
很慢
即便是小图片也可能耗时 3 至 5 分钟
你我当年支持
默认 2x
较高中等
对于小头像可能出现失真
很快
通常在 10s 左右
老照片修复支持
默认 2x
较高较高很快
通常在 10s 左右

综合来看,我更推荐免费且开源的「CodeFormer」,如果大家与我一样有同时修复几百张照片的需求,可以将「CodeFormer」搭建在本地,处理起来就省心多了。「你我当年」、「老照片修复」表现都还算稳定,但在小头像的表现上不如「CodeFormer」,且是收费软件。

除「RestorePhotos.io」以外的工具都支持老照片上色,本文未对该功能进行测试。「RestorePhotos.io」对于大头照,以及磨砂颗粒或干涉条纹较多的疑难图片处理有一定的优势,其他情况都不甚理想。

结语

因精力有限,本文仅对一些常见情况做了测试比较,希望能帮大家做出一个初步的选择判断。实际上在老照片修复过程中还会面临诸多疑难杂症,例如因磨砂处理产生的颗粒、因翻拍屏幕产生的干涉条纹,以及一些涂抹、折痕、撕裂、霉斑等问题。面对这些问题的时候,可以尝试不同的工具进行综合对比,甚至也需要更多的耐心人工介入,将不同修复工具的效果进行叠加处理。

对老照片进行初步修缮后,还可以尝试使用这些工具进行进一步无损放大,以及智能上色处理。也推荐动手能力强的朋友们对那些非常重要的珍贵照片进行人工调色、贴图等进一步的后期加工,毕竟尽管 AI 已经能帮我们很大程度上还原照片本来的模样,却不能 100% 准确再现历史。对于修复照片有极致要求的朋友们,建议你们联系一个叫「TR 美术」的团队,我会把他们手工修复曾国藩、左宗棠的对比图附在下面,供你们参考。

「TR 美术」对曾国藩及左宗棠肖像的修复

相关文章:

5 款 AI 老照片修复工具的横向比较

在大语言模型和各类 AI 应用日新月异的今天,我终于下定决心,趁着老照片们还没有完全发黄褪色、受潮粘连抑或损坏遗失,将上一代人实体相册里的纸质胶卷照片全部数字化,并进行一次彻底的 AI 修复,好让这些珍贵的记忆能更…...

2023企业服务的关键词:做强平台底座

作者 | 曾响铃 文 | 响铃说 4月下旬,软件行业相关的大会紧锣密鼓地开了好几场,不仅有政府主办的2023中国国际软件发展大会、中国软件创新发展大会,也有用友、浪潮等服务商举办的品牌活动,让软件业的话题一直保持热度。 以用友为…...

【Linux基本指令和权限(1)】

本文思维导图: 文章目录 一、Linux操作的特点二、使用指令从Xhell登录云服务器三、基本指令1.ls指令2. pwd指令:3.cd指令4. touch指令5. rm指令 写在最后 Linux是一个操作系统,操作系统是一款做软硬件管理的软件。 一、Linux操作的特点 Li…...

虹科新品 | 用于医疗应用的压力和气体流量传感器

ES Systems在创新MEMS方面拥有丰富的经验,设计了高质量和高性能的气体流量和压力传感器,由于其技术规格,出色的可靠性和有竞争力的价格,这些传感器在竞争产品中具有独特的品质。 Part.01 应用背景 众所周知,在医疗领域…...

原生小程序如何使用pdf.js实现查看pdf,以及关键词检索高亮

1.下载pdf.js库文件 前往 pdf.js 的 官网 下载库文件,下哪个版本都可以,后者适用于旧版浏览器,所以我下载的是后者 下载完成后,因为微信小程序打包的限制,我将库文件放到项目的后台系统了,在h5端处理会比在…...

「数据架构」MDM实现失败的主要原因

我经常参与一个组织的MDM程序,当他们在一个失败的项目之后向InfoTrellis请求帮助进行清理,或者开始尝试X,以实现对某些人来说非常困难的目标时。主数据管理实现失败的原因有很多,但是没有一个是由于在这些场景中使用的责备游戏的原…...

【Java基础 1】Java 环境搭建

🍊 欢迎加入社区,寒冬更应该抱团学习:Java社区 📆 最近更新:2023年4月22日 文章目录 1 java发展史及特点1.1 发展史1.2 Java 特点1.2.1 可以做什么?1.2.2 特性 2 Java 跨平台原理2.1 两种核心机制2.2 JVM…...

2023-4-26-C++11新特性之正则表达式

🍿*★,*:.☆( ̄▽ ̄)/$:*.★* 🍿 💥💥💥欢迎来到🤞汤姆🤞的csdn博文💥💥💥 💟💟喜欢的朋友可以关注一下&#xf…...

python接口自动化测试 requests库的基础使用

目录 简单介绍 Get请求 Post请求 其他类型请求 自定义headers和cookies SSL 证书验证 响应内容 获取header 获取cookies 简单介绍 requests库简单易用的HTTP库 Get请求 格式: requests.get(url) 注意:若需要传请求参数,可直接在 …...

Photon AI Translator 和做产品的一些思考

近 4 个月内我一直在做 Apple 平台的产品,虽然从使用量来说「简体中文」用户是占多数,但我一直有做多语言的支持:英语、简体中文和繁体中文。习惯上 Google 翻译的我,基本上在使用 Xcode 过程中也会一直在浏览器开着 Google Trans…...

IPTV系统架构的分析与研究

1 引言   IPTV业务是伴随着宽带互联网的飞速发展而兴起的一项新兴的互联网增值业务,它利用宽带互联网的基础设施,以家用电视机和电脑作为主要终端 ,利用网络机顶盒(STB,Set -TopBox) ,通过互联网协议来传送电视信号.提供包括 电视节 目在 内…...

workerman开发者必须知道的几个问题

1、windows环境限制 windows系统下workerman单个进程仅支持200个连接。 windows系统下无法使用count参数设置多进程。 windows系统下无法使用status、stop、reload、restart等命令。 windows系统下无法守护进程,cmd窗口关掉后服务即停止。 windows系统下无法在一个…...

golang Gin实现websocket

golang使用 Gin实现 websocket,这里笔者重新搭建一个项目 1、创建项目安装依赖 项目名为 go-gin-websocket 在指定文件夹下,新建项目文件夹 go-gin-websocket 进入项目文件夹,打开cmd窗口,在项目(go-gin-websocket&a…...

冯·诺依曼体系结构与初始操作系统

目录 冯诺依曼体系结构 冯诺依曼体系结构图 内存 外存 网卡和磁盘 结构之间运算速度的差异 缓冲区 初始操作系统 概念 操作系统上边与下边分别有什么 从上到下依次顺序解析 用户 用户操作接口 系统调用接口 操作系统四项管理 驱动 硬件 冯诺依曼体系结构 冯诺…...

软件测试之黑盒测试的具体方法详解

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一.基于需求的设计方法二.等价类三.边界值四.判定表4.1 **关系**4.2 如何设计测试用例4.3 实际案例第一步第二步第三步第四步 五.正交排列5.1 什么是正交表5.2 …...

图形编辑器:历史记录设计

大家好,我是前端西瓜哥。今天讲一下图形编辑器如何实现历史记录,做到撤销重做。 其实就是版本号的更替。每个版本保存一个状态。 数据结构 要记录图形编辑器的历史记录,支持撤销重做功能,需要两个栈:撤销&#xff0…...

ubuntu22.04下挂载第二块硬盘

文章目录 一、查看硬盘情况二、找到nvme1n1三、挂载四、修改分区文件 一、查看硬盘情况 首先要查看一下系统识别出来的设备。也就是说,我希望知道,ubuntu到底发现了几块硬盘。用命令:lsblk 显示结果如下: 有两块硬盘&#xff1a…...

举例说明.net中in与out的作用与区别

-----作用 在 .NET 中,in 和 out 是用于泛型类型参数的修饰符,它们用于指定参数类型的协变性和逆变性。 - in 修饰符:表示这个泛型类型参数是协变的。也就是说,in 类型参数可以从较特殊的类型隐式转换为较通用的类型。例如&…...

Java常见的100道面试题(内附答案及代码示例)持续更新

什么是Java程序? Java程序是一组可执行的代码,由Java编译器编译生成,可以在Java虚拟机(JVM)上运行。 public class HelloWorld {public static void main(String[] args) {System.out.println("Hello, World!&qu…...

策略设计模式知多少

目录 目标 概述 实现 目标 熟悉策略设计模式,了解策略设计模式的使用场景、具体实现。 概述 一、行为设计模式 行为设计模式是设计模式的一种类型。该类型的设计模式关注的重点在于对象的行为(通信和交互),而非对象的创建方…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...

Python如何给视频添加音频和字幕

在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...