用Python脫掉圖片人物的褲子

AI科技大本營發表於2019-02-21

640?wx_fmt=jpeg


作者|李博Garvin

轉載自CSDN部落格


效果演示


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


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


640?wx_fmt=png


環境配置


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


  • 有梯子

  • python3.6 版本

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


執行以下流程:


(1)下載實驗程式碼:

https://github.com/sangwoomo/instagan

(2)下載pre-trained model,如果只是實驗就直接用訓練好的模型即可(如果只玩換褲子這個實驗,下載pants2skirt_mhp_instagan這個模型即可)

https://drive.google.com/drive/folders/1xb9rR21MhMVselc6HTmOr73WOkOviFmO

(3)安裝程式碼中的requirement.txt中的依賴包


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


640?wx_fmt=png


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


使用模型做圖片轉換


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


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


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


640?wx_fmt=png


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


640?wx_fmt=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能力才能把工程跑起來,小白不太建議使用哈。


(本文為AI科技大本營轉載文章,轉載請聯絡原作者)

精彩推薦

640?wx_fmt=jpeg

640?wx_fmt=jpeg

推薦閱讀:

                         640?wx_fmt=png

點選“閱讀原文”,檢視作者更多精彩博文。

相關文章