您好,登錄后才能下訂單哦!
用pytorch和GAN做了生成神奇寶貝的失敗模型是怎樣的,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡(jiǎn)單易行的方法。
前言
神奇寶貝已經(jīng)是一個(gè)家喻戶曉的動(dòng)畫了,我們今天來(lái)確認(rèn)是否可以使用深度學(xué)習(xí)為他自動(dòng)創(chuàng)建新的Pokemon。
我最終成功地使用了生成對(duì)抗網(wǎng)絡(luò)(GAN)生成了類似Pokemon的圖像,但是這個(gè)圖像看起來(lái)并不像神奇寶貝。
雖然這個(gè)嘗試失敗了,但是我認(rèn)為其他人可能會(huì)喜歡這個(gè)過程,現(xiàn)在把他分享出來(lái)。
這里不想花很多時(shí)間討論GAN是什么,但是上面的圖片只是一個(gè)非常簡(jiǎn)單的解釋過程。
訓(xùn)練了兩個(gè)網(wǎng)絡(luò)-鑒別器和生成器。生成器學(xué)習(xí)如何吸收隨機(jī)噪聲并從訓(xùn)練數(shù)據(jù)生成看起來(lái)像圖像的圖像。它通過將其生成的圖像發(fā)送到鑒別器網(wǎng)絡(luò),鑒別器網(wǎng)絡(luò)經(jīng)過訓(xùn)練可以辨別真實(shí)圖像和生成的圖像。
生成器經(jīng)過優(yōu)化,可以更好地欺騙鑒別器,鑒別器經(jīng)過優(yōu)化,可以更好地檢測(cè)生成的圖像。因此,他們倆一起進(jìn)步。
因此,我的假設(shè)是,我可以使用真實(shí)的神奇寶貝圖像作為訓(xùn)練集來(lái)訓(xùn)練GAN。結(jié)果將是一個(gè)生成器,然后將能夠創(chuàng)建新穎的神奇寶貝!
我的第一個(gè)挑戰(zhàn)是找到神奇寶貝的圖像。幸運(yùn)的是,Kaggle數(shù)據(jù)集得以搶救!
有人已經(jīng)想過類似的想法,盡管聽起來(lái)他在生成新的Pokemon圖像方面沒有很大的成功,但是由于他花了時(shí)間收集800幅圖像,因此決定將它們上傳到Kaggle數(shù)據(jù)集。這節(jié)省我很多時(shí)間。
我們看一下這個(gè)數(shù)據(jù)集:
這是一張 蒜頭王八 妙蛙種子 的圖片,大小是256*256
現(xiàn)在,有了數(shù)據(jù),下一步就是選擇要使用的GAN類型??赡艽嬖跀?shù)百種GAN的變體,但過去使用DCGAN可以看到良好的效果。
DCGAN從神經(jīng)網(wǎng)絡(luò)中消除了所有完全連接的層,使用轉(zhuǎn)置卷積進(jìn)行上采樣,并用卷積跨度(除其他外)代替了最大池化。
我喜歡DCGAN,因?yàn)榕c其他我嘗試過的GAN相比,它們似乎更健壯,因此無(wú)需進(jìn)行超參數(shù)的重大調(diào)整即可更容易訓(xùn)練。
實(shí)際上,DCGAN非常受歡迎,以至于PyTorch的示例就很好地實(shí)現(xiàn)了。同樣重要的是,他們的示例可以直接從文件夾讀取輸入。因此,使用以下命令,我能夠開始訓(xùn)練我的GAN:
python main.py --dataset folder --dataroot /pokemon/ --cuda --niter 10000 --workers 8
該命令從文件夾中讀取圖像,在具有8個(gè)工作程序的GPU上運(yùn)行以加載數(shù)據(jù),并運(yùn)行10,000次迭代。
事實(shí)證明,此問題需要進(jìn)行10,000次迭代,但我想看看我能推多遠(yuǎn)。讓我們來(lái)看看!
第一步始于一個(gè)一無(wú)所知的網(wǎng)絡(luò),因此產(chǎn)生的只是噪聲:
每個(gè)box都是一個(gè)64 x 64像素的圖像,它是嘗試從我們的生成器中生成神奇寶貝。由于我們的網(wǎng)格為8 x 8,因此我們嘗試生成64種不同的神奇寶貝。我將圖像縮小到64 x 64,因?yàn)樵趪L試生成更大的圖像時(shí)這種算法會(huì)變得不穩(wěn)定。
50次迭代以后,有點(diǎn)意思了
150次迭代,圖像變得清晰了
3,700點(diǎn)之后,會(huì)有一些不錯(cuò)的圖片出現(xiàn)了。此后,它開始趨向于產(chǎn)生更差的結(jié)果:
這些看起來(lái)根本都不像神奇寶貝!
但是請(qǐng)將瀏覽器縮小到25%左右,然后再次查看。在遠(yuǎn)處,它們看起來(lái)驚人地類似于真正的神奇寶貝。
為什么呢?由于我們正在對(duì)64 x 64的圖像進(jìn)行訓(xùn)練,因此辨別器很容易被形狀和顏色類似于口袋妖怪的圖像所迷惑,因此生成器不需要改進(jìn)。
顯而易見的下一步就是訓(xùn)練更高分辨率的GAN。實(shí)際上,我已經(jīng)對(duì)此進(jìn)行了一些嘗試。
第一個(gè)嘗試是重新編寫PyTorch代碼以縮放到256 x 256圖像。該代碼有效,但是DCGAN崩潰了,我無(wú)法穩(wěn)定訓(xùn)練。主要原因是只有大約800張圖像。而且,盡管我進(jìn)行了一些數(shù)據(jù)擴(kuò)充,但還不足以訓(xùn)練更高分辨率的DCGAN。
然后,我嘗試使用相對(duì)論的GAN,該GAN已成功針對(duì)具有較小數(shù)據(jù)集的高分辨率數(shù)據(jù)進(jìn)行了成功的訓(xùn)練,但也無(wú)法使其正常工作。
目前來(lái)看,問題應(yīng)該出現(xiàn)在數(shù)據(jù)上,數(shù)據(jù)量太小,還是滿足不了訓(xùn)練的需求。但是我將繼續(xù)嘗試其他一些想法,以產(chǎn)生更高分辨率的Pokemon,如果我有工作的必要,我將發(fā)布我使用的技術(shù)。
關(guān)于用pytorch和GAN做了生成神奇寶貝的失敗模型是怎樣的問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。