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