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