Python 人工智能老照片修復(fù)算法學(xué)習(xí)
前言
老舊或者破損的照片如何修復(fù)呢?本文主要分享一個(gè)博主使用后非常不錯(cuò)的照片恢復(fù)開(kāi)源項(xiàng)目:Bringing-Old-Photos-Back-to-Life。
項(xiàng)目的Github地址:項(xiàng)目地址
我們先看看官方給出的效果圖:
就算現(xiàn)在看到這張圖,我仍然覺(jué)著非常驚艷。下面我會(huì)把項(xiàng)目環(huán)境安裝部署,到最后使用的效果做一個(gè)展示。
項(xiàng)目環(huán)境搭建
該項(xiàng)目的環(huán)境搭建有點(diǎn)復(fù)雜,我一點(diǎn)點(diǎn)說(shuō)。
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)起見(jiàn),還是去Pytorch官方網(wǎng)站上安裝一下。Pytorch官方地址:PyTorch
因?yàn)槲冶緳C(jī)沒(méi)插顯卡,安裝的cpu版本。
選擇對(duì)應(yīng)的命令安裝Pytorch庫(kù)。
Synchronized-BatchNorm-PyTorch repository安裝
官方給出的安裝說(shuō)明里面需要部署Synchronized-BatchNorm-PyTorch項(xiàng)目進(jìn)來(lái)。
這里注意一點(diǎn),需要把Synchronized-BatchNorm-PyTorch項(xiàng)目中的sync_batchnorm拷貝到上級(jí)目錄。完整的目錄接口參考下圖:
Global目錄Synchronized-BatchNorm-PyTorch項(xiàng)目部署
官方說(shuō)明里面也需要把Synchronized-BatchNorm-PyTorch項(xiàng)目部署到Global里面。
也是一樣要把sync_batchnorm拷貝到上級(jí)目錄。結(jié)構(gòu)如下:
檢測(cè)預(yù)處理模型下載
需要用到一個(gè)檢測(cè)預(yù)處理模型,主要是用來(lái)識(shí)別照片中的人臉部分的。
注意解壓后的位置,結(jié)構(gòu)如下:
下載臉部增強(qiáng)模型文件
官方說(shuō)明:
下載兩個(gè)模型zip解壓到對(duì)應(yīng)目錄下,結(jié)構(gòu)如下:
下載依賴
注意,我這里去掉了pytorch的依賴安裝,已經(jīng)已經(jīng)裝過(guò)了。
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)目使用
官方給到的圖,我就不用了,不能說(shuō)明問(wèn)題。我自己準(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è)出來(lái)的每個(gè)臉的處理前后效果。結(jié)果結(jié)構(gòu)如下:
驗(yàn)證一下
1、多人照片最終的效果驗(yàn)證,下面上圖是輸出結(jié)果圖,下圖是原始圖??梢钥闯鲇行﹦澓垡呀?jīng)消失,但是還是有一些,不過(guò)整體的任務(wù)更立體鮮明了。
2、單人照片最終效果驗(yàn)證,下面上圖為結(jié)果圖,下圖為原始圖。單人就很明顯了,不但劃痕都消除了,人也更清晰立體,效果是真不錯(cuò)。
3、模型也會(huì)把多人圖中的每張臉都識(shí)別出來(lái),并且跑出結(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)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python編程快速上手——Excel到CSV的轉(zhuǎn)換程序案例分析
這篇文章主要介紹了Python Excel到CSV的轉(zhuǎn)換程序,結(jié)合具體案例形式分析了Python操作Excel到CSV轉(zhuǎn)換的操作技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下2020-02-02python使用datetime.utcnow()問(wèn)題解析
這篇文章主要介紹了python使用datetime.utcnow()問(wèn)題解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07淺析Python中的getattr(),setattr(),delattr(),hasattr()
這篇文章主要介紹了Python中的getattr(),setattr(),delattr(),hasattr() 的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06python+opencv實(shí)現(xiàn)霍夫變換檢測(cè)直線
這篇文章主要為大家詳細(xì)介紹了python+opencv實(shí)現(xiàn)霍夫變換檢測(cè)直線,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12Python使用docx模塊實(shí)現(xiàn)刷題功能代碼
今天小編就為大家分享一篇Python使用docx模塊實(shí)現(xiàn)刷題功能代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02python語(yǔ)言中pandas字符串分割str.split()函數(shù)
分列在我們?nèi)粘9ぷ髦薪?jīng)常用到,從各種系統(tǒng)中導(dǎo)出的什么訂單號(hào)、名稱、日期很多都是復(fù)合組成的,這些列在匹配、合并時(shí)沒(méi)有辦法使用,我們經(jīng)常需要將她們分開(kāi),下面這篇文章主要給大家介紹了關(guān)于python語(yǔ)言中pandas字符串分割str.split()函數(shù)的相關(guān)資料,需要的朋友可以參考下2022-08-08