機器學習我淌過的那些坑之DCGAN

2021-02-19 朱舜山

上次說的是CycleGAN的坑。CycleGAN運算很慢,即使跑在雙2080Ti伺服器上,難怪去年把我的小本子搞得風扇狂轉兩天也沒有什麼結果。所以等結果的時候,我又去找其它的GAN來玩兒。首先找到的是DCGAN。因為有對付CycleGAN的填坑基礎,找到的DCGAN又都是基於torch的,所以很容易就跑起來了,其實算不上坑,本文展示更多的是結果和心得。

既然提到了,就先把CycleGAN的運算結果說一下。訓練運行了兩天多,50個小時,其實只有200步的迭代,效果極其不好。用原git主提供的訓練模型跑得其實很不錯,用自己訓練的模型就是不行,感覺是迭代次數太少,結果並沒有穩定,或者generator和discriminator的參數配置不對。之所以這個GAN訓練這麼慢,我認為原因是它的功能,CycleGAN是讓兩種風格的圖像可以雙向轉換,比如一幅風景照片和一幅梵谷畫之間的雙向轉換,或者馬和斑馬之間的轉換等等。這要求同時訓練兩個數據集,估計運算量不是線性增長的,而且我選擇的數據集太大,分別是2000+和6000+,增加了運算負擔。總之,我現在並不想花幾天時間再來訓練一次,等訓練結果太漫長和痛苦,以後有時間再選擇兩個小數據集訓練來研究吧。

回到DCGAN。我先搜到了一個git repo,https://github.com/soumith/dcgan.torch,這是FaceBook的大神Soumith Chintala做的,據說他是DCGAN的發明人之一,他作為三作的DCGAN論文在https://arxiv.org/pdf/1511.06434.pdf。總之Soumith是深度學習領域神一般的存在。

按照README做就好,很順,下載了人臉和臥室的模型玩兒了一下,然後就訓練我自己的數據。我用的數據集是我們做《數據追問-全國美展油畫作品視覺化解讀》時候的數據,第6-12屆全國美展油畫獲獎作品,共2276張。訓練後,在自己的模型上生成了一些有趣的結果。

《無題》 訓練數據第6-12屆油畫獲獎作品

《無題》 訓練數據第6-12屆油畫獲獎作品

DCGAN生成的畫看起來挺不錯,但是精度比較小,是64x64的。我也嘗試了修改代碼生成128x128的圖像,但是訓練自己數據集時穩定性極差(不收斂?),即使迭代到10000次,生成的畫還是很有問題,我認為需要更多的摸索,找到合適的參數。我也嘗試修改代碼生成256x256的,但死活跑不出來,腳本語言我比較熟的還是PERL和Shell,lua實在不熟,沒辦法,old school。試過一天,大概明白了幾個trick和概念也就夠了,我更感興趣的是多用不同的數據集訓練不同的模型、或者用其它的GAN來玩兒。至少,這一周的實踐,我在機器學習語境下,慢慢舒服起來。

在尋找生成更高精度圖像的過程中,我還發現了另一個repo,https://github.com/robbiebarrat/art-DCGAN。研究了一下,才發現這個自稱Robbie Barrat的19歲Virginia少年,也是個小神人。大家如果記得,2018年在佳士得拍賣了世界第一幅人工智慧繪畫作品,當時拍出了43.2萬美元,我還為此寫過《追趕機器學習 - 佳士得AI作品拍賣後的思考》。該作品的創作團隊Obvious用的就是這小子的repo。少年在拍賣後很不滿,想想擱誰誰也受不了,又不是43.2美元,這裡面還有不少八卦,我有時間再寫。

DCGAN在深度學習裡已經算個老古董了,如果你對生成大尺度的畫感興趣,建議看看BigGAN,比較新,不過估計訓練起來應該比較考驗算力。

下面是我的機器跑出來的另一些結果,與前面幾幅一樣屬於我們的第一批機器學習作品。

《無題》 訓練數據第6屆油畫獲獎作品

《無題》 訓練數據第7屆油畫獲獎作品

《無題》 訓練數據第8屆油畫獲獎作品

《無題》 訓練數據第9屆油畫獲獎作品

《無題》 訓練數據第10屆油畫獲獎作品

《無題》 訓練數據第11屆油畫獲獎作品

《無題》 訓練數據第12屆油畫獲獎作品

機器學習也好,GAN也好,都是我的「相機」,我可以用來做不同的實驗。對於我來說,訓練自己的數據集才是有意義的,自己的數據以及參數配置代表自己的想法。至於人工智慧繪畫是不是藝術,見仁見智吧。相機剛剛出現的時候,攝影作品被評論家們批判得一無是處,而到今天,攝影已經是藝術世界很重要的組成部分了。很多人說機器學習畫的畫很醜,其實,藝術不是關於美,藝術不是必須美。

    杜尚說:There's much more to love than in hatred.    沃霍爾說:Don't pay any attention to what they write about you. Just measure it in inches.    甘地說:In matter of conscience, the law of majority has no place.    我們說:In matter of Arts, the law of majority has no place.

在我眼裡,這些作品,包括那些未收斂的結果,都挺美的。

朱舜山

2019年11月27日凌晨 於清華園

相關焦點

  • PyTorch 零基礎入門 GAN 模型之基礎篇
    對應到 MMGeneration 當中,模型的具體代碼都存放在 models/architectures/dcgan 文件夾下面,下圖展示了對應的生成器和判別器的代碼邏輯,在 mmgen 中我們也是嚴格按照這樣的設計來構建代碼,相信大家能夠更容易上手。
  • GAN+異常檢測
    本文主要調研一下gan在異常檢測的方法。
  • 訓練GAN,你應該知道的二三事
    我覺得 GANs 在某種程度上有點類似於中國太極,『太極生兩儀,兩儀生四象』,太極闡明了宇宙從無極而太極,以至萬物化生的過程,太極也是講究陰陽調和。(哈哈,這麼說來 GANs 其實在中國古代就已經有了發展雛形了。)
  • 手把手教你用keras搭建GAN
    /gan.py大家好,我是中國海洋大學的陳揚。在遙遠的九月份,我開始做了keras的系列教程,現在我主要的研究方向轉到了生成對抗網絡,生成對抗網絡的代碼實現和訓練機制比分類模型都要複雜和難入門.之前一段時間時間一直在幫璇姐跑cvpr的實驗代碼,做了蠻多的對比實驗,其中我就發現了,keras的代碼實現和可閱讀性很好,搭生成對抗網絡網絡GAN就好像搭樂高積木一樣有趣哦。
  • 構建動漫草圖著色的GAN的分步指南
    生成建模是一項無監督的學習機器學習任務,涉及自動發現和學習輸入數據中的模式,以使該模型可用於生成新的示例,這有可能是從原始數據集中得出的。GAN模型體系結構涉及兩個子模型:1. 用於生成新示例的生成器模型 ;2. 用於對生成器模型生成的示例是真實的,來自域的還是偽造的進行分類的鑑別器模型。
  • 圖像生成器丨用GAN生成辛普森家族
    為了實現這個機器學習模型,我們將啟動生成對抗網絡(GANs)並且將包含有「辛普森家族」圖像特徵的數據作為輸入。在這篇文章的最後,你將會熟悉GANs背後的基礎知識,而且你也可以建立一個你自己的生成模型。為了更好的理解GANs的功能,看一下下面的辛普森家族訓練過程中的變化。
  • Vulnhub靶機DC系列-DC4
    linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4OS details: Linux 3.2 - 4.9Network Distance: 1 hopService Info: OS: Linux; CPE: cpe:/o:linux:linux_kernelTRACEROUTEHOP RTT
  • 機器學習對抗攻擊是一顆「定時炸彈」
    如果你一直在關注有關人工智慧的新聞,你可能已經聽說過或看到過經修改的熊貓、海龜和停車標誌的圖像,這些圖像在人們眼中看似平凡,但卻能引起人工智慧系統的異常行為。這些被稱為 「對抗樣本」或「對抗攻擊」圖像及其 音頻 和文本 對應物,在機器學習領域引起了越來越多的興趣和關注。
  • Python快速生成web動態展示機器學習項目
    Streamlit一句話,Streamlit是一個可以用python編寫web app的庫,可以方便的動態展示你的機器學習的項目。優點你不需要懂html, css, js等,純python語言編寫web app包括web常用組件:文本框, 按鈕,單選框,複選框, 下拉框,多媒體(圖片,視頻)和文件上傳等應用場景可以方便動態展示你的機器學習成果(可以和jupyter notebook做個比較)https
  • VulnHub通關日記-DC_4-Walkthrough
    圖片Burpsuite枚舉弱密碼:後發現是一個登陸的頁面,我嘗試了常規的弱口令admin,admin123無果,隨後我又嘗試了一遍SQL注入,並沒有注入點!須藤-l回顯緊接著我在jim的目錄下發現了一個文件,文件裡好像是一封郵件信息:From root@dc-4 Sat Apr 06 20:20:04 2019Return-path: <
  • dc-9滲透測試記錄
    靶機來源:https://www.vulnhub.com/entry/dc-9,412/滲透準備:kali-linux
  • Vulnhub-DC-2靶場
    發現URL欄寫的不是靶機的ip,而是http://dc-2/,而很明顯,DNS沒有解析出來 修改hosts文件:vim /etc/hosts 使用wpscan進行帳戶掃描wpscan換一種用法,列出站點的用戶名、帳號 wpscan --url dc
  • 機器學習:如何在安卓上集成TensorFlow
    作者:Amit Shekhar翻譯:梁傅淇  王軍福校對:李君原文連結:https://blog.mindorks.com/android-tensorflow-machine-learning-example-ff0e9b2654cc#.aoq0izsg6我們都知道,谷歌有一個開源庫叫做TensorFlow,可被用在安卓系統中實現機器學習
  • 無線電頻譜機器學習系統(RFMLS)
    美國國防高級研究計劃局(Defense Advanced Research Projects Agency, DARPA)於2017年8月設立了新的研究項目無線電頻譜機器學習系統(Radio Frequency Machine Learning Systems, RFMLS),探索在頻譜領域利用機器學習理解無線電信號。
  • 【乾貨】基於GAN實現圖像銳化應用(附代碼)
    Keras代碼可以在此處查看:https://github.com/RaphaelMeudec/deblur-gan原始論文見https://arxiv.org/pdf/1711.07064.pdf。Pytorch版本見https://github.com/KupynOrest/DeblurGAN/。
  • 獨家 | 博士學霸推薦:機器學習9種必備工具
    本文的介紹機器學習中9種必須掌握的工具。學術界儘管在推動技術進步方面發揮了巨大作用,但往往對工業成就一無所知。在我博士畢業時,我意識到有無數偉大的輔助工具,在學術界被忽視,而在工業界卻被廣泛採用。以我的個人經驗看,學習和引入新工具可能會很枯燥,讓人沮喪並失去動力,尤其是當你對當前的設置非常熟悉且有效時。要改變既有的習慣可能很困難。
  • 自動化機器學習入門指南,來了
    之前的工作中也有多少接觸過這個AutoML(Automated Machine Learning)的概念,簡單來說就是把模型開發的標準過程模塊化,都交給一些自動化的組件來完成,比如數據集的劃分、特徵衍生、算法選擇、模型訓練、調優、部署以及後續的監控,都「一條龍」地在AutoML
  • SVM機器學習算法和OpenCV實現貓咪圖片識別器
    SVM(支持向量機)是一種常用的機器學習分類算法。
  • PDF編輯軟體:Adobe Acrobat DC
    adobe acrobat dc是一款用於pdf