機器學習讓電腦也能畫世界名畫
近日,德國圖賓根大學的Leon A. Gatys等人研發出了一種 基于深度神經網絡的人工系統 。該系統可以制作非常具有藝術氣息的電腦圖片,完成了電腦作畫方面的一大突破。
畫家一般通過非常高超的技巧把現實中的東西按照一定的風格進行抽象,來創造非凡的藝術品。以往,這種創造過程總是神秘而不可預知的。因而,機器無法自動完成圖畫,尤其是抽象畫派作品的創作。然而,在目標或者人臉識別等領域,機器已經能夠根據 深度神經網絡(Deep Neural Network,DNN) 理論,很好的完成識別工作。Leon等人所研發的系統試圖解決這一難題。該系統使用了神經表示來分離和重新合并圖畫的內容和風格。它可以把一副圖畫的內容和另一副圖畫的風格結合在一起,創造出一個新的圖片。以斯坦福校園的一張照片為例,該系統把著名畫家梵高的 《星空》 的風格抽象出來,合并為了一張新的圖片。
把該風格應用到不同的圖片中,系統還可以給出很多有意思的結果。而且,算法還支持用戶調整風格和內容分別占據的權重。這樣,圖片就可以在偏重原始內容和風格化之間進行變化。此外,用戶還可以利用 -style_scale
在提取風格特征之前調整風格圖片的大小。由此,最終合成圖片的風格化粒度也會不同。
該系統基本原理可以劃分為內容提取和風格提取兩個部分。在內容提取中,算法使用了深度神經網絡中的 卷積神經網絡(Convolutional Neural Network,CNN) 。卷積神經網絡是一個多層的神經網絡,每層由多個二維平面組成,而每個平面由多個獨立神經元組成。輸入圖像通過和若干濾波器進行卷積后產生相應的特征映射 圖。這些特征映射圖中每組的幾個像素再進行求和、加權值以及加偏置(bias),通過一個Sigmoid函數得到下一層特征映射圖。該過程依次進行,直到 通過神經網絡的所有層后,得到輸出。在Leon等人的研究中提到,隨著圖像通過CNN中的多個層,圖像內容越來越多的反應到特征映射圖中。而網絡中高層的 特征響應就可以記為內容表示( content representation )。
在風格提取中,算法使用了原本用于獲得紋理信息的特征空間。該特征空間基于神經網絡中每一層的濾波響應,由這些響應之間的相關度所組成。通過包含多層網絡的特征相關,算法獲得了一個輸入圖像的多層表示——風格表示( style representation )然后,系統通過尋找同時符合內容表示和風格表示的圖片,即可合并兩張圖畫,制作出新的圖畫。
目前,該算法的torch實現已經共享到 GitHub 。用戶在安裝 torch7 和 loadcaffe 之后,需要運行 sh models/download_models.sh
腳本來下載 VGG模型 。然后,用戶按照 安裝指導 中的指示即可完成Ubuntu系統中的安裝。然后,用戶輸入 th neural_style.lua -style_image <image.jpg> -content_image <image.jpg>
命令,開始使用該算法來生成圖像。此外,該實現還提供了 -image_size
(所產生圖像的最大邊像素數)、 -gpu
(所使用GPU從0開始編號的ID)、 -content_weight
(內容重建部分的權重,默認為5)等選項。這些選項可以優化轉換過程、確定輸出文件名以及CNN中的層名等,為用戶提供更多的靈活性。