CycleGan脱衣服(男人)
上天看到deepnude給美女脫衣服的項目最近比較火,考慮到他們是用pixpix2模型搭建,必須得有嚴格的配對數(shù)據(jù)集,那么我將利用和他基本相當?shù)腸ycleGAN實現(xiàn)對男人脫上衣的實例。當然生成的圖像肯定是虛假的,僅作為參考使用。
下面簡單講一下cycleGAN的工作原理:首先其稱之為循環(huán)生成對抗式神經(jīng)網(wǎng)絡,了解過神經(jīng)網(wǎng)絡的朋友應該知道其中神經(jīng)網(wǎng)絡最基本的就是輸入層和輸出層的定義,一般將輸入層稱之為X,輸出層稱之Y,就像函數(shù)的映射關(guān)系一般。而cycle的意為不僅是X是輸入,而且需要Y也為輸入,進行循環(huán)交替,以保持他既具有X的特征,又具有Y的特征。在這個實例中不妨將X定義為穿了衣服的男人,Y定義為脫了衣服的男人,則我們生成的圖像不僅要像Y一樣使之脫了衣服,還要使得像X一樣的容貌動作等等。下面將對一些關(guān)鍵的代碼函數(shù)進行講解,完整代碼見文末,當然歡迎大家關(guān)注我的公眾號,小小見解如有錯誤懇請糾正。
首先數(shù)據(jù)集的準備,將穿衣服的數(shù)據(jù)集放到文件夾TrainB中,如圖所示:
因為我制作演示使用,所以準備數(shù)據(jù)集較少,能稍微看到點效果就像,如果想要更好效果要大量數(shù)據(jù)集。
TrainA放入沒穿衣服的照片:
作為訓練的數(shù)據(jù)集。下面介紹關(guān)鍵代碼:
網(wǎng)絡結(jié)構(gòu)定義激活函數(shù):
定義歸一化數(shù)據(jù),目的在于減少運算,防治數(shù)據(jù)噪聲過大等等。
定義網(wǎng)絡卷積層:
定義反向傳播卷積層:
定義池化層使用函數(shù):
以上為網(wǎng)絡層需要使用的函數(shù)定義,下面是函數(shù)內(nèi)具體參數(shù)設定,可以自己調(diào)整。
定義resnet網(wǎng)絡層,類似于vgg網(wǎng)絡層可直接變參數(shù):
然后是生成器的定義:
判別器的定義:
模型訓練部分主要比測試部分多一些模型保存,訓練參數(shù)代碼,下面只簡單講下訓練部分代碼,這樣比較清晰網(wǎng)絡層:
主要思路是設占位符待讀入數(shù)據(jù),然后設置網(wǎng)絡層對讀入的數(shù)據(jù)訓練,需要生成器和判別器的對抗,接著讀取模型,初始化,讀入需要測試的圖片路徑,保存模型生成圖片,其中inputA就是為讀入的dataA數(shù)據(jù),通過字典匹配而已。
然后訓練結(jié)果聲明:
首先我的電腦配置很低,所以參數(shù)設置很小,數(shù)據(jù)集也很少,就5張圖片,如果需要好的結(jié)果需要多數(shù)據(jù),改參數(shù),好電腦等等。另外有些參數(shù)是根據(jù)數(shù)據(jù)集個數(shù)需要改的,比如數(shù)據(jù)集少,但是參數(shù)一次訓練的圖片數(shù)大于訓練集數(shù)那就報錯啦,自己看看改改。
最終演示結(jié)果如下:
,本來是穿衣服在車旁的,數(shù)據(jù)集少,參數(shù)小,效果較差,只做演示。
歡迎大家關(guān)注我的公眾號"人工智能實戰(zhàn)及常見代碼分享”:
,后天回復“脫衣服CycleGan”,獲取完整代碼。
總結(jié)
以上是生活随笔為你收集整理的CycleGan脱衣服(男人)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python_turtle库丘比特之箭
- 下一篇: 小程序转uni-app——动态转换样式