Python 人工智能老照片修復(fù)算法學(xué)習(xí)
前言
老舊或者破損的照片如何修復(fù)呢?本文主要分享一個(gè)博主使用后非常不錯(cuò)的照片恢復(fù)開源項(xiàng)目:Bringing-Old-Photos-Back-to-Life。
項(xiàng)目的Github地址:項(xiàng)目地址
我們先看看官方給出的效果圖:

就算現(xiàn)在看到這張圖,我仍然覺著非常驚艷。下面我會(huì)把項(xiàng)目環(huán)境安裝部署,到最后使用的效果做一個(gè)展示。
項(xiàng)目環(huán)境搭建
該項(xiàng)目的環(huán)境搭建有點(diǎn)復(fù)雜,我一點(diǎn)點(diǎn)說。
conda虛擬環(huán)境創(chuàng)建
在項(xiàng)目README.md文件中要求python版本在3.6以上。

我們用anaconda創(chuàng)建一個(gè)虛擬環(huán)境bobl
conda create -n bobl python=3.6
激活環(huán)境
conda activate bobl
在Pycharm項(xiàng)目中配置interpreter,設(shè)置到conda目錄envs下bobl環(huán)境的python。

Pytorch安裝
雖然項(xiàng)目官方給出的requirements.txt包含pytorch,為了保險(xiǎn)起見,還是去Pytorch官方網(wǎng)站上安裝一下。Pytorch官方地址:PyTorch

因?yàn)槲冶緳C(jī)沒插顯卡,安裝的cpu版本。
選擇對(duì)應(yīng)的命令安裝Pytorch庫。
Synchronized-BatchNorm-PyTorch repository安裝
官方給出的安裝說明里面需要部署Synchronized-BatchNorm-PyTorch項(xiàng)目進(jìn)來。

這里注意一點(diǎn),需要把Synchronized-BatchNorm-PyTorch項(xiàng)目中的sync_batchnorm拷貝到上級(jí)目錄。完整的目錄接口參考下圖:

Global目錄Synchronized-BatchNorm-PyTorch項(xiàng)目部署
官方說明里面也需要把Synchronized-BatchNorm-PyTorch項(xiàng)目部署到Global里面。

也是一樣要把sync_batchnorm拷貝到上級(jí)目錄。結(jié)構(gòu)如下:

檢測(cè)預(yù)處理模型下載
需要用到一個(gè)檢測(cè)預(yù)處理模型,主要是用來識(shí)別照片中的人臉部分的。

注意解壓后的位置,結(jié)構(gòu)如下:

下載臉部增強(qiáng)模型文件
官方說明:

下載兩個(gè)模型zip解壓到對(duì)應(yīng)目錄下,結(jié)構(gòu)如下:

下載依賴
注意,我這里去掉了pytorch的依賴安裝,已經(jīng)已經(jīng)裝過了。
dlib scikit-image easydict PyYAML dominate>=2.3.1 dill tensorboardX scipy opencv-python einops PySimpleGUI
安裝命令:
pip install -r requirements.txt -i https://pypi.douban.com/simple
完整部署后項(xiàng)目結(jié)構(gòu)
完整的結(jié)構(gòu)如下圖:

項(xiàng)目使用
官方給到的圖,我就不用了,不能說明問題。我自己準(zhǔn)備了兩種圖,一張是一張人臉的,一張是多張人臉的。


先按照官方給出的命令跑跑看

我們直接使用最下面這個(gè)命令,包含劃痕去除與高度還原??匆幌聢?zhí)行情況。
(bobl) D:\spyder\Bringing-Old-Photos-Back-to-Life>python run.py --input_folder E:\csdn\老照片 --output_folder result1/ --GPU -1 --with_scratch --HR Running Stage 1: Overall restoration initializing the dataloader model weights loaded directory of testing image: E:\csdn\老照片 processing 1.jpg processing 2.jpg Mapping: You are using multi-scale patch attention, conv combine + mask input Now you are processing 1.png C:\ProgramData\Anaconda3\envs\bobl\lib\site-packages\torch\nn\functional.py:3635: UserWarning: Default upsampling behavior when mode=bilinear is changed to align_corners=False since 0.4 .0. Please specify align_corners=True if the old behavior is desired. See the documentation of nn.Upsample for details. "See the documentation of nn.Upsample for details.".format(mode) Now you are processing 2.png Finish Stage 1 ... Running Stage 2: Face Detection 12 1 Finish Stage 2 ... Running Stage 3: Face Enhancement dataset [FaceTestDataset] of size 13 was created The size of the latent vector size is [16,16] Network [SPADEGenerator] was created. Total number of parameters: 92.1 million. To see the architecture, do print(network). hi :) Finish Stage 3 ... Running Stage 4: Blending Finish Stage 4 ... All the processing is done. Please check the results. (bobl) D:\spyder\Bringing-Old-Photos-Back-to-Life>
輸出的文件不但有最終的結(jié)果,也有檢測(cè)出來的每個(gè)臉的處理前后效果。結(jié)果結(jié)構(gòu)如下:

驗(yàn)證一下
1、多人照片最終的效果驗(yàn)證,下面上圖是輸出結(jié)果圖,下圖是原始圖??梢钥闯鲇行﹦澓垡呀?jīng)消失,但是還是有一些,不過整體的任務(wù)更立體鮮明了。


2、單人照片最終效果驗(yàn)證,下面上圖為結(jié)果圖,下圖為原始圖。單人就很明顯了,不但劃痕都消除了,人也更清晰立體,效果是真不錯(cuò)。


3、模型也會(huì)把多人圖中的每張臉都識(shí)別出來,并且跑出結(jié)果,可以對(duì)比一下看看,細(xì)節(jié)還是修復(fù)的很好的。



總結(jié)
官方還給出了其他的命令,就不一一驗(yàn)證了。整體的效果是非常好的,只是在多人圖的時(shí)候還有些瑕疵,瑕不掩瑜。
到此這篇關(guān)于Python 人工智能老照片修復(fù)算法學(xué)習(xí)的文章就介紹到這了,更多相關(guān)Python人工智能內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- python人工智能human?learn繪圖創(chuàng)建機(jī)器學(xué)習(xí)模型
- python人工智能深度學(xué)習(xí)算法優(yōu)化
- python人工智能深度學(xué)習(xí)入門邏輯回歸限制
- python深度學(xué)習(xí)人工智能BackPropagation鏈?zhǔn)椒▌t
- Python人工智能深度學(xué)習(xí)模型訓(xùn)練經(jīng)驗(yàn)總結(jié)
- Python人工智能深度學(xué)習(xí)RNN模型結(jié)構(gòu)流程
- Python人工智能深度學(xué)習(xí)CNN
- Python人工智能學(xué)習(xí)PyTorch實(shí)現(xiàn)WGAN示例詳解
- Python AI入門學(xué)習(xí):從Hello World到線性回歸、神經(jīng)網(wǎng)絡(luò)、圖像分類
相關(guān)文章
學(xué)習(xí)python需要有編程基礎(chǔ)嗎
在本篇文章里小編給大家分享的是一篇關(guān)于學(xué)習(xí)python有哪些必要條件,需要的朋友們可以學(xué)習(xí)下。2020-06-06
Python如何調(diào)用另一個(gè)類的方法和屬性
在Python面向?qū)ο缶幊讨?類與類之間的交互是非常常見的場(chǎng)景,本文將詳細(xì)介紹在Python中一個(gè)類如何調(diào)用另一個(gè)類的方法和屬性,大家可以根據(jù)需要進(jìn)行選擇2025-08-08
Python鍵鼠操作自動(dòng)化庫PyAutoGUI簡介(小結(jié))
這篇文章主要介紹了Python鍵鼠操作自動(dòng)化庫PyAutoGUI簡介,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05
Python學(xué)習(xí)筆記之集合的概念和簡單使用示例
這篇文章主要介紹了Python學(xué)習(xí)筆記之集合的概念和簡單使用,涉及Python集合的定義、查找、添加、刪除等相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2019-08-08
Python爬取用戶觀影數(shù)據(jù)并分析用戶與電影之間的隱藏信息!
看電影前很多人都喜歡去 『豆瓣』 看影評(píng),所以我爬取44130條 『豆瓣』 的用戶觀影數(shù)據(jù),分析用戶之間的關(guān)系,電影之間的聯(lián)系,以及用戶和電影之間的隱藏關(guān)系,需要的朋友可以參考下2021-06-06
django.db.utils.ProgrammingError: (1146, u“Table‘’ doesn’t e
這篇文章主要給大家介紹了關(guān)于執(zhí)行python manage.py migrate時(shí)報(bào)錯(cuò):django.db.utils.ProgrammingError: (1146, "Table 'test.model_student' doesn't exist" )問題的解決方法,文中將解決的方法介紹的非常詳細(xì),需要的朋友可以參考下2018-07-07
Python數(shù)據(jù)結(jié)構(gòu)與算法之跳表詳解
跳表是帶有附加指針的鏈表,使用這些附加指針可以跳過一些中間結(jié)點(diǎn),用以快速完成查找、插入和刪除等操作。本節(jié)將詳細(xì)介紹跳表的相關(guān)概念及其具體實(shí)現(xiàn),需要的可以參考一下2022-02-02
詳解Anconda環(huán)境下載python包的教程(圖形界面+命令行+pycharm安裝)
這篇文章主要介紹了Anconda環(huán)境下載python包的教程(圖形界面+命令行+pycharm安裝),這篇文章很適合小白入手級(jí)別的,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-11-11

