AI修复照片

一、前言

最近闲来无事,翻了翻以前的老照片,看着多年前的老照片,感慨万千,仿佛又回到了以前的青春岁月。
只可惜青春易逝,无法重来。意气风发,头角峥嵘的画面只能永远地留存在相片之中了。只叹当时没有多拍几张照片留作纪念,可惜当时设备也不好,照片效果不佳。留下遗憾。
最近学习了Python,发现可以通过Python使用AI来修复老旧照片,而且修复后的效果非常不错。
AI是一种人工智能技术,它可以用来处理图像和视频。在某些情况下,AI可以帮助修复照片中的瑕疵或缺陷,例如曝光不足、颜色失真等。这意味着,通过使用AI,我们可以更好地处理我们的照片,并确保其质量得到最大程度地修复提升。
要实现这一目标,首先需要对照片进行分析和检测,找出问题所在。然后,将相关信息输入到计算机中,利用深度学习技术进行自动化修复。通过本教程,可以快速有效地完成整个流程,从而为我们带来更加精美的照片。希望能帮到那些和笔者一样留有遗憾的读者们。

二、准备

2.1 前期准备

2.1.1 Python版本

必须高于3.7版本,笔者使用的是3.10

2.1.2 下载项目

https://github.com/TencentARC/GFPGAN.git

2.1.3 下载训练模型

https://github.com/TencentARC/GFPGAN/releases/download/v1.3.0/GFPGANv1.3.pth
将此训练模型保存在刚才下载的项目的experiments/pretrained_models文件夹中。

2.1.4 准备需要修复的老旧照片

image

image

(图片来源于网络,侵删。)

2.2 用到的库

basicsr:
基于PyTorch的开源图像视频复原工具箱, 比如超分辨率、去噪、去模糊等
facexlib:
提供实用的人脸相关功能的集合
realesrgan:
图像分辨率修复工具,可以提升照片分辨率

2.2.1 安装需要的库

pip install basicsr==1.4.2
PS:basicsr库安装可能会报错,如果一直报错,则先不管它,继续下面的操作。
pip install facexlib
pip install realesrgan

2.2.2 安装GFPGAN依赖包

pip install -r requirements.txt
Python setup.py develop

三、实操

3.1 操作步骤

1、将需要修复的老旧照片放到项目中的inputsmy_test_pics
2、打开终端,切换目录到项目根目录下
3、在终端中输入代码:
python inference_gfpgan.py -i inputs/my_test_pics -o results -s 2
说明:
inputs/my_test_pics:待修复照片所在目录
results:修复后的照片目录,会自动创建4个文件夹,其中:
cmp:存放了修复后的照片中所有人物头像的对比照
cropped_faces:存放了照片中所有的人物头像(未修复)
restored_faces:存放了照片中所有的人物头像(已修复)
restored_imgs:存放了已修复的整张照片
4、等待完成,此过程耗费时间取决于电脑配置。一般2-5分钟处理完一张照片。

3.1.1 属性对比

image

image

3.1.2 人像对比

image
image
image

3.1.3 修复后的完整图片

image
image

3.2 注意

1、待处理照片文件名必须为ASCII字符,不能包含中文或其他国家字符。
2、修复时会自动找寻照片中的人物头像进行修复,但也有可能会修复失败。
3、分辨率会提升至原来的4倍,即长和宽分别翻倍。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:AI修复照片 - Python技术站

(0)
上一篇 2023年4月2日
下一篇 2023年4月2日

相关文章

  • 列表(list)

    4.4 列表(list) 列表是Python中使用最频繁也是最重要最灵活的一种数据结构。Python列表中的元素类型可以不同,可以存放各种各样的数据,比如:数字、字符串、函数、类、字典等,甚至还可以嵌套存放列表。列表也是一种序列,可以通过索引获取列表中的元素。支持序列的各种操作。 4.4.1 列表的创建 4.4.1.1 通过列表标识符号创建 列表在创建的时候…

    Python开发 2023年4月2日
    00
  • 元组(tuple)

    4.5 元组(tuple) 元组这种数据类型和列表非常相似,也是一种序列。和列表的不同之处在于存放到元组内的数据不能直接修改。元组是一种可迭代对象。使用元组可以使程序运行性能提升,因为一般来说,创建元组类型tuple的变量比列表类型list要快,而且占用更小的存储空间。 4.5.1 元组的创建 4.5.1.1 通过逗号创建 >>> tup1…

    Python开发 2023年4月2日
    00
  • 可迭代对象

    4.9 可迭代对象 Python中有6种基本的数据类型,除了数字类型,其它5种类型都是可迭代对象。掌握可迭代对象的特性和方法是非常有必要的。 4.9.1 可迭代(iterable)、可迭代对象 4.9.1.1 相关概念 迭代(遍历)就是按照某种顺序逐个访问对象中的每一项。Python中有很多对象都是可以通过for语句来直接遍历的,例如list、string、…

    Python开发 2023年4月2日
    00
  • Python代码块及输入输出

    3.7 Python代码块及输入输出 3.7.1 Python代码块 前面分别介绍了关键字、运算符,由运算符和操作数组成了表达式。而语句由关键字、标识符、表达式组成。而代码块由若干条语句组成。通常Python中的代码块是通过缩进来创建的。在很多语言中,都使用一个特殊的单词或字符,比如begin或{来标识代码块的起始位置,并使用另一个特殊的单词或字符,如end…

    Python开发 2023年4月2日
    00
  • 包和库

    2.3 包和库 2.3.1 包的概念 包是在模块之上的概念,为了方便管理而将多个脚本文件(模块文件)进行打包。包是一种用点式模块名构造 Python 模块命名空间的方法。例如,模块名 A.B 表示包 A 中名为 B 的子模块。正如模块可以区分不同模块之间的全局变量名称一样,点式模块名可以区分 NumPy 或 Pillow 等不同多模块包之间的模块名称。包其实…

    2023年4月2日
    00
  • Python获取时光网电影数据

    Python获取时光网电影数据 一、前言 有时候觉得电影真是人类有史以来最伟大的发明,我喜欢看电影,看电影可以让我们增长见闻,学习知识。从某种角度上而言,电影凭借自身独有的魅力大大延长了人类的”寿命”。一部电影如同一本故事书,我可以沉迷到其中,来的一个新的世界,跟着电影主角去经历去感悟。而好的电影是需要慢慢品尝的,不仅提供了各种视觉刺激和情感体验,更能带来思…

    2023年4月2日
    00
  • Python变量

    4.10 Python变量 4.10.1 变量介绍 变量,顾名思义,就是可以变化的量。变量的概念基本上和初中代数的方程变量是一致的,只是在计算机程序中,变量不仅可以是数字,还可以是任意数据类型。Python中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在 Python中,变量就是变量,它没有类型,我们所说的类型是变量所指的内存…

    Python开发 2023年4月2日
    00
  • 数据类型前置知识

    4.1 数据类型前置知识 4.1.1 数据类型的概念 顾名思义,数据类型就是指数据的类型,计算机不像人,能够很好的分辨数据类型,比如10086,计算机就不知道这个数据到底是字符串还是数值。计算机在用这个数据进行计算时就会出现问题。为了避免这种情况,需要对数据贴一个标签,这个标签就是类型。告诉计算机遇到这种数据应该怎么处理。 4.1.2 哈希 哈希(Hash)…

    Python开发 2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部