前言
老舊或者破損的照片如何修復呢?本文主要分享一個博主使用后非常不錯的照片恢復開源項目:Bringing-Old-Photos-Back-to-Life。
項目的Github地址:項目地址
我們先看看官方給出的效果圖:
就算現在看到這張圖,我仍然覺著非常驚艷。下面我會把項目環境安裝部署,到最后使用的效果做一個展示。
項目環境搭建
該項目的環境搭建有點復雜,我一點點說。
conda虛擬環境創建
在項目README.md文件中要求python版本在3.6以上。
我們用anaconda創建一個虛擬環境bobl
conda create -n bobl python=3.6
激活環境
conda activate bobl
在Pycharm項目中配置interpreter,設置到conda目錄envs下bobl環境的python。
Pytorch安裝
雖然項目官方給出的requirements.txt包含pytorch,為了保險起見,還是去Pytorch官方網站上安裝一下。Pytorch官方地址:PyTorch
因為我本機沒插顯卡,安裝的cpu版本。
選擇對應的命令安裝Pytorch庫。
Synchronized-BatchNorm-PyTorch repository安裝
官方給出的安裝說明里面需要部署Synchronized-BatchNorm-PyTorch項目進來。
這里注意一點,需要把Synchronized-BatchNorm-PyTorch項目中的sync_batchnorm拷貝到上級目錄。完整的目錄接口參考下圖:
Global目錄Synchronized-BatchNorm-PyTorch項目部署
官方說明里面也需要把Synchronized-BatchNorm-PyTorch項目部署到Global里面。
也是一樣要把sync_batchnorm拷貝到上級目錄。結構如下:
檢測預處理模型下載
需要用到一個檢測預處理模型,主要是用來識別照片中的人臉部分的。
注意解壓后的位置,結構如下:
下載臉部增強模型文件
官方說明:
下載兩個模型zip解壓到對應目錄下,結構如下:
下載依賴
注意,我這里去掉了pytorch的依賴安裝,已經已經裝過了。
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
完整部署后項目結構
完整的結構如下圖:
項目使用
官方給到的圖,我就不用了,不能說明問題。我自己準備了兩種圖,一張是一張人臉的,一張是多張人臉的。
先按照官方給出的命令跑跑看
我們直接使用最下面這個命令,包含劃痕去除與高度還原。看一下執行情況。
(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>
輸出的文件不但有最終的結果,也有檢測出來的每個臉的處理前后效果。結果結構如下:
驗證一下
1、多人照片最終的效果驗證,下面上圖是輸出結果圖,下圖是原始圖。可以看出有些劃痕已經消失,但是還是有一些,不過整體的任務更立體鮮明了。
2、單人照片最終效果驗證,下面上圖為結果圖,下圖為原始圖。單人就很明顯了,不但劃痕都消除了,人也更清晰立體,效果是真不錯。
3、模型也會把多人圖中的每張臉都識別出來,并且跑出結果,可以對比一下看看,細節還是修復的很好的。
總結
官方還給出了其他的命令,就不一一驗證了。整體的效果是非常好的,只是在多人圖的時候還有些瑕疵,瑕不掩瑜。
到此這篇關于Python 人工智能老照片修復算法學習的文章就介紹到這了,更多相關Python人工智能內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/zhiweihongyan1/article/details/121385975