深度學習脫掉圖片人物的褲子【python教程】

李博Garvin發表於2019-01-15

效果演示

本文案例使用的是開源專案instagan,是一種比較新的gan模型建模原理,來自2019年ICLR的論文,下面看下效果對照:

(出於人道主義,會把人物的長褲脫掉然後換上短裙)

環境配置

首先玩這個模型需要兩個前提條件:

  1. 有梯子

  2. python3.6版本

  3. 有GPU環境(因為原始碼是要求必須在GPU的Cuda環境下執行,如果沒有GPU的同學推薦用PAI裡面的DSWhttps://data.aliyun.com/product/learn ,比較便宜 )

執行以下流程:

最後把下載的model檔案放到程式碼檔案的根目錄下,目錄結構如下(藍色部分為模型資料夾,裡面是200_net_G_A.pth和200_net_G_B.pth):

螢幕快照 2019-01-15 下午3.58.44.png

完成以上步驟,整個環境就搭建好了。

使用模型做圖片轉換

注:這個專案的程式碼有很多hard code的邏輯,需要嚴格按照下面的做法執行才有可能跑通,包括所有檔案的命名。

(1)先設定需要轉換的圖片

在datasets目錄下新增一個test資料夾,構建如下的檔案格式

螢幕快照 2019-01-15 下午4.20.56.png

testA和testB存放需要轉換的原圖,類似於“效果演示中”穿著長褲的圖片,testA_seg和testB_seg需要存放mask圖片。mask檔案是轉換圖片中的褲子樣式,如下圖對應例項圖片左邊的女生褲子(如果想轉換其它部位,就不用我舉例子了吧):

3078_1.png

mask圖片還需要與被轉換圖片命名一致,詳細規則參見原始碼中的datasets,如果不一致會出現以下錯誤:https://github.com/sangwoomo/instagan/issues/5

(2)執行圖片轉換邏輯

在工程的根目錄下執行以下程式碼,使用工程下的test.py這個測試程式碼:

 

 python test.py --dataroot ./datasets/test --model instagan --name pants2skirt_mhp_instagan --loadSizeH 240 --loadSizeW 160 --fineSizeH 240 --fineSizeW 160 --ins_per 2 --ins_max 20

如果沒有報錯的話在GPU環境下1分鐘就可以執行完畢,程式碼執行完畢後在工程的results資料夾下就能看到轉換好的圖片了。

總結

整個專案的效果還是不錯的,隨便傳張圖片都能脫掉人物的褲子。不過可能程式碼還沒來得及優化,可能在實驗的過程中有很多坑,大家需要一定的debug能力才能把工程跑起來,小白不太建議使用哈。

 

相關文章