時(shí)間過得是真快,離上次分享《用AI生成一堆漂亮且獨(dú)一無二的女朋友!》已經(jīng)快過去半個(gè)多月了。光分享效果,而不分享如何實(shí)現(xiàn),這不是我的風(fēng)格。所以從今天開始,我會帶大家一起玩轉(zhuǎn)這個(gè)強(qiáng)大的高清人臉生成項(xiàng)目(不懂開源項(xiàng)目的可以理解為軟件)。
目前規(guī)劃了幾個(gè)主題
1. 安裝并運(yùn)行
2. 虛擬人臉編輯,操控虛擬人物表情
3. 真實(shí)人臉編輯,操控任何人的表情。
4. 云端運(yùn)行。
今天就來介紹第一部分,詳細(xì)演示如何安裝這個(gè)并運(yùn)行這個(gè)項(xiàng)目,生成1024×1024的高清“虛擬”人臉。這個(gè)“虛擬”并不是指很假或者2d,3d動畫,而是指這個(gè)人在現(xiàn)實(shí)世界中不存在。AI通過學(xué)習(xí)現(xiàn)實(shí)世界中各種人臉的特征,然后重新生成一張逼真的人臉。
首先介紹一下官方的配置要求:
Both Linux and Windows are supported. Linux is recommended for performance and compatibility reasons.
64-bit Python 3.6 installation. We recommend Anaconda3 with numpy 1.14.3 or newer.
TensorFlow 1.14 or 1.15 with GPU support. The code does not support TensorFlow 2.0.
On Windows, you need to use TensorFlow 1.14 — TensorFlow 1.15 will not work.
One or more high-end NVIDIA GPUs, NVIDIA drivers, CUDA 10.0 toolkit and cuDNN 7.5. To reproduce the results reported in the paper, you need an NVIDIA GPU with at least 16 GB of DRAM.
Docker users: use the provided Dockerfile to build an image with the required library dependencies.
雖然有很多要求,但是這里最重要的一個(gè)要求是“高端顯卡”。我這里演示用的是RTX 2080ti (滴滴云的服務(wù)器,AI大師碼:8888) 。我也嘗試過用GTX 1070,可以跑起來。
除了硬件要求外,系統(tǒng)方面的話最好是win10。其他要求我會在后面步驟中說清楚。
下面就拎一下整體流程:
1. 安裝git軟件
2. 獲取Stylegan2源代碼
3. 安裝VS2017
4. 安裝Cuda和Cudnn
5. 安裝anconda
6. 安裝pip依賴
7. 修改部分源代碼
8. 運(yùn)行項(xiàng)目生成圖片
大概就是這些點(diǎn),雖然看起來步驟有點(diǎn),有點(diǎn)難……其實(shí)真的有點(diǎn)多,有點(diǎn)難!當(dāng)然,有人帶路的話肯定會好很多。(交流群:1129237074)
1. 安裝git
Git 是一個(gè)分布式版本控制軟件,與CVS、Subversion一類的集中式版本控制工具不同,它采用了分布式版本庫的做法,不需要服務(wù)器端軟件,就可以運(yùn)作版本控制,使得源代碼的發(fā)布和交流極其方便。
對于程序員來說應(yīng)該很熟悉,對于大眾來說也許有點(diǎn)深奧,但是今天我們需要用到的就一行命令,而且我會給出這條命令。
如果你電腦上還沒有這個(gè)軟件,需要先去官網(wǎng)下載:
Git - Downloads?git-scm.com

?
打開網(wǎng)址后,點(diǎn)擊Downloads下面的Window下載。

?
下載完后找到exe文件,直接雙擊打開,一路Next到底,就安裝成功了。然后按鍵盤上的快捷鍵Win+R 輸入cmd打開命令行。

?
然后,在命令行中輸入git,如果跳出類似的信息就證明已經(jīng)安裝成功。
2. 獲取源代碼
源代碼是這里最重要的部分,那些牛逼的效果都是由這部分控制。完成第一步后,這里就可以快速獲取源代碼了。我這里專門建了一個(gè)名為StyleGan2的文件夾來存放相關(guān)文件,文件夾的放在桌面上。
然后輸入命令:
#進(jìn)入目標(biāo)文件夾,每個(gè)人可能不一樣。
cd C:\Users\dc2-user\Desktop\StyleGan2
#獲取源代碼
git clone https://github.com/NVlabs/stylegan2.git
這個(gè)目標(biāo)文件夾每個(gè)人都可能不一樣,所以這個(gè)路徑也可能不一樣。獲取這個(gè)路徑的方式其實(shí)很簡單。假設(shè)我在桌面上創(chuàng)建了一個(gè)文件夾test。
?
我只要點(diǎn)擊一下上方的路徑導(dǎo)航右側(cè)空白區(qū)域,就可以看到這個(gè)文件夾的完整路徑,復(fù)制這個(gè)路徑就好了。
3. 安裝VS2017
安裝vs2017的目的主要是為了安裝C++的編譯器,因?yàn)檫@個(gè)項(xiàng)目中的一個(gè)步驟需要編譯。安裝vs2017的過程并不復(fù)雜,但是文件會比較大,C盤可能會有點(diǎn)心累。這里需要特別注意vs的版本,低于2015可能會出問題,而用高版本的2019我也遇到了問題。
VS2017 官方下載地址:
https://docs.microsoft.com/en-us/visualstudio/releasenotes/vs2017-relnotes

?
打開后點(diǎn)擊下載即可,此時(shí)需要你登陸,如果你有賬號直接登陸即可,如果沒有就注冊一個(gè)。

?
登陸成功之后,點(diǎn)擊箭頭處的Download

?
然后搜索2017,再點(diǎn)擊Downolad進(jìn)行下載。此時(shí)下載的并不是軟件本身,而是一個(gè)安裝器。玩過有些大型游戲的人,對于安裝器應(yīng)該不陌生。

?
打開這個(gè)安裝器,選擇 使用C++的桌面開發(fā),然后點(diǎn)擊安裝。安裝文件大概7G,安裝時(shí)間看你網(wǎng)絡(luò)情況,安裝過程無需人工干預(yù),很簡單。
4. 安裝Cuda和Cudnn
所有基于深度學(xué)習(xí)的軟件都需要這兩個(gè)東西,對于早期玩過AI換臉的朋友,安裝這兩個(gè)東西可以說是熟門熟路。DeepFaceLab其實(shí)也需要這個(gè),只是已經(jīng)集成在安裝包里了。這個(gè)安裝過程,我在deepfaker.xyz上有非常詳細(xì)的介紹,有需要的可以打開網(wǎng)址搜關(guān)鍵詞即可找到文章。為了照顧不太熟悉的朋友,我這里還是簡單演示下。
CUDA的下載比較簡單。只要打開網(wǎng)址:
https://developer.nvidia.com/cuda-10.0-download-archive
然后根據(jù)下圖箭頭選擇選項(xiàng)。Version這部分選擇10即可,我是Server版,所以選擇了Server2016


?
下載后,雙擊打開,默認(rèn)安裝即可。
Cudnn的安裝也并不復(fù)雜,只是又需要注冊一個(gè)賬號。
打開網(wǎng)址:
https://developer.nvidia.com/rdp/cudnn-archive
然后往下滾動,選擇到CuDNNv7.5.0? for CUDA10.0 。點(diǎn)擊一下,選擇Window10的版本。


?
下載完成后你會獲得一個(gè)壓縮包,里面包含了一些文件。只需要將這些文件拷貝到CUDA的同名目錄就好了。


?
上一步安裝的CUDA默認(rèn)應(yīng)該在C盤下面,大概的路徑如上圖。把Cudnn壓縮包中的文件拖動到這個(gè)目錄即可。
5. 安裝anconda
anconda是為了創(chuàng)建Python的虛擬環(huán)境,有了這個(gè)東西,我們就可以在同一臺電腦上搞多個(gè)深度學(xué)習(xí)的項(xiàng)目而互不影響。這一點(diǎn)非常有用。這個(gè)東西吧,版本非常講究,直接用最新版會出問題。
通過網(wǎng)址:
https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
找到紅色箭頭出的版本下載。
?

作為一個(gè)從坑里爬出來的人告訴你,這一點(diǎn)非常重要。其實(shí)這里就是為了拿到一個(gè)Python3.6的環(huán)境,按理說用最新版的anconda肯定也支持Python3.6。但是理論不等于實(shí)際。實(shí)際情況是你通過Anconda創(chuàng)建3.6的環(huán)境時(shí)無法使用pin安裝依賴,這個(gè)時(shí)候就會很崩潰,用conda命令安裝會慢到懷疑人生,國內(nèi)鏡像又不好弄(這段看不懂的不用管就對了。)

?
Anconda的安裝并也不復(fù)雜,也是雙擊打開,然后一路Next。
安裝完后會軟

?件會自動打開主界面,并且自帶一個(gè)base的環(huán)境,你也可以通過create創(chuàng)建一個(gè)新的環(huán)境。我就簡單粗暴直接用base這個(gè)環(huán)境了。點(diǎn)擊綠色播放按鈕可以打開命令行?;蛘甙聪聎in鍵,輸入“An”直接打開命令行。

???6. 安裝pip依賴
安裝依賴可以理解為使用python的前期準(zhǔn)備。不懂就不用管,跟著做就好了。根據(jù)官方要求,需要安裝Numpy 1.14.3 ,TensorFlow 1.14
安裝命令如下:
?pip install numpy==1.14.3

?
本來這是一個(gè)很簡單的事情,但是一報(bào)錯很多人就懵逼了。出現(xiàn)紅色錯誤提示說是缺少東西。缺啥補(bǔ)啥,立馬來一個(gè)命令:
pip install distributed==1.12.8
安裝完這個(gè)之后再執(zhí)行上面的命令,numpy就算安裝成功了。然后安裝深度學(xué)習(xí)框架TensorFlow
pin install tensorflow-gpu==1.14
由于特色國情,這個(gè)加載過程可能會非常慢,原因大家都懂得,所以給你們一條加速命令。
pip install tensorflow-gpu==1.14 -i https://mirrors.aliyun.com/pypi/simple
速度立馬從原始社會進(jìn)入信息時(shí)代,下載速度起碼能達(dá)到幾十兆每秒,你帶寬夠的情況下。
雖然速度問題解決了,但是很不幸,你還會遇到兩個(gè)問題。

?
一個(gè)問題是:
ERROR: tensorboard 1.14.0 has requirement setuptools>=41.0.0, but you'll have setuptools 39.1.0 which is incompatible.
另一個(gè)問題是:
ERROR: Cannot uninstall 'wrapt'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
解決方法為:
pip install --upgrade setuptools
pip install -U --ignore-installed wrapt enum34 simplejson netaddr
pin install tensorflow-gpu==1.14 -i https://mirrors.aliyun.com/pypi/simple
經(jīng)歷千辛萬苦,終于萬事俱備了。接下來就是幾行命令的事兒了。
#進(jìn)入目標(biāo)文件夾
cd C:\Users\dc2-user\Desktop\StyleGan2\stylegan2
#生成25張高清頭像
python run_generator.py generate-images --network=gdrive:networks/stylegan2-ffhq-config-f.pkl --seeds=6600-6625 --truncation-psi
從預(yù)期來說,此時(shí)就可以在stylegan2下面的results目錄中看到人臉圖片了。但是…..毫無意外又出問題了。
坑1 :找不到編譯器路徑。

?
我一直以為之前安裝了Vs2017路徑就自動識別了,沒想到直接報(bào)異常。懵逼三秒后通過提示推理出了解決方法。

?
找到源文件custom_ops.py。用Notepad++打開,找到紅色箭頭所指的地方。這里默認(rèn)設(shè)置了幾個(gè)路徑。按理說不需要手動設(shè)置,但是因?yàn)閂s的小版本不一樣,導(dǎo)致路徑錯誤。

?
此時(shí),需要找到我們自己的安裝路徑,然后去替換源文件中的路徑。只需要把第一條替換即可。修改后記得按Ctrl+S保存。
坑2:感謝偉大的局域網(wǎng),你又被加載速度卡死了。
這個(gè)坑就看你自己的網(wǎng)絡(luò)了,如果運(yùn)氣好,就不用管了。如果運(yùn)氣不好,那么又得折騰一番。首先根據(jù)地址去下載模型 ,然后創(chuàng)建models目錄,然后修改源代碼。
通過迅雷或者其他下載工具,手動下載文件。
http://d36zk2xti64re0.cloudfront.net/stylegan2/networks/stylegan2-ffhq-config-f.pkl
把文件放置到stylegan2下面的models目錄,這個(gè)目錄需要手動創(chuàng)建。


?
修改pretrained_networks.py中的第32行,右側(cè)替換為:
./models/stylegan2-ffhd-config-f.pkl
再次運(yùn)行
#進(jìn)入目標(biāo)文件夾
cd C:\Users\dc2-user\Desktop\StyleGan2\stylegan2
#生成25張高清頭像
python run_generator.py generate-images --network=gdrive:networks/stylegan2-ffhq-config-f.pkl --seeds=6600-6625 --truncation-psi=0.5
如無意外,會出現(xiàn)
Loding network.. (加載模型)
Setingup TensorFlow…(編譯插件)
Generating image… (生成圖片)


?
然后去文件夾results下面找到000開頭的文件夾,打開最新的一個(gè),就可以在里面看好高清頭像了。

?
到了這一步,你終于徹徹底底的成功了。
在上面的命令行中我們可以看到兩個(gè)參數(shù),分別是–seeds=6600-6625 和 –truncation-psi=0.5 。
truncation-psi :不知道怎么翻譯,也沒人教我啊。大概指的是是生成人物的差異度,一般取值為0.5或者1.0,或者中間值,應(yīng)該是越大差異越大。
seeds:可以理解為“種子” ,通過這個(gè)可以直接控制生成的人物。不同的種子,會生成不同的人。seed的值可以是一個(gè)范圍,也可以幾個(gè)離散的點(diǎn)。根據(jù)測試,他的取值范圍大概是:0~4,294,967,295 (Seed must be between 0 and 2**32 – 1)

?
兩個(gè)參數(shù)組合調(diào)整,生成個(gè)幾十億張臉是非常輕松滴!

?
生成的圖片無論是牙齒還是皺紋都一清二楚。

?
眼睫毛,眉毛,頭發(fā)完全和真人照片無差別。如果把這些照片混入互聯(lián)網(wǎng)中,估計(jì)沒有人能識別出來。
希望大家都能成功走到這一步,以后又多了一項(xiàng)吹牛逼的技能,當(dāng)然對有些人來說說可能會創(chuàng)造巨大的價(jià)值。
=============================
公眾號:托尼是塔克
?