歡迎光臨
每天分享高質量文章

用風格遷移搞事情!超越藝術字:摺積神經網路打造最美漢字

作者丨餘唯民 & 雷芳涵

學校丨清華大學本科在讀

Github丨https://github.com/yuweiming70

曾幾何時,小學的我們上機課時最喜歡擺弄的就是 word 的藝術字,醜陋的效果並不能阻擋我們在每個角落塞進七彩的字型…….

▲ “七彩”的藝術字


但是時代不同了,我們現在已經有了各種先進的 PS 軟體,我們已經可以做出這樣的藝術字:

▲ 各種PS藝術字

但是,我們還能更進一步嗎?將設計師從繁複的 PS 工作中解放出來,用深度學習的方法設計藝術字,自動生成更加有意思的藝術字嗎?


答案當然是可以!


我們實際上已經有了 CNN(摺積神經網路)以及基於其的風格遷移,我們只需要做的是用一張漢字作為原始輸入,用一張對應的圖片作為風格,遷移上去即可。


聽上去真是簡單呢,事不宜遲,題主這就開啟了 Github,下一個模型開跑,結果如下:

▲ 花(風格圖片)

▲ 花的“花”

看到結果,不禁讓人感到震撼,CNN 網路學會了從圖片裡面剝離出“葉子”和“花朵”兩種語意,並且將原始的圖片中的背景和漢字部分分開,分別進行繪製。最後的效果就是花海中的文字,而文字恰好由葉子構成,唯美的畫面就像大自然的鬼斧神工,處處透露著宇宙的和諧……不行我編不下去了……


最後的結果並不如人意,花顏色太奇怪,葉子黑得蔫了吧唧的,我們還是得深入研究才行。


開啟程式碼,我們發現程式碼中使用了 Keras 提供訓練好的的 VGG19 模型,使用其中的幾層摺積層作為風格損失,還使用最後一層摺積層作為內容損失,結果並不怎麼樣。


於是,我們分別實驗了六層摺積層,分別標記為 A-F 層,這些作為風格損失的情況:

▲ VGG19的A-F層摺積層

▲ 六層分別作為風格損失的情況

從這些圖片可以看到,摺積網路確實實在逐層抽象,開始時,層A的摺積核還在尋找顏色,後來,BC 開始尋找由顏色和線條構成的抽象的“花”“葉”的形狀,D、E、F則是逐漸走向識別物體的形狀輪廓,摒棄色彩。從某種意義上,我們補充了 CNN 的可解釋性問題


這啟發我們要結合色彩與輪廓,形狀與顏色並重地解決問題,於是經過調節 LOSS 函式,測試了各種層的結果如下:

▲ 用多層的組合作為風格損失的結果,最後我們選擇了ABC層作為最終結果


進一步地,我們還可以提升效果。加入隨機擾動,加入圖片增強:

▲ 加入隨機擾動,平滑效果,以及一系列圖片增強的結果


怎麼樣?效果相當漂亮吧?


所有程式碼均已開源,對細節感興趣的請移步 Github:


基於摺積神經網路的風格遷移:


https://github.com/yuweiming70/Style_Migration_For_Artistic_Font_With_CNN


我們已經添加了一些生成圖片的介面,方便大家使用,此外還提供幾十張風格圖片供您探索,如果覺得有意思的話,請別忘了點一下 Star


還在等什麼?趕緊放開你的想象力!盡情地創造吧!


下麵是我們提供的一系列 sytle 圖片的例子,供您欣賞!

專案細節


使用方法很簡單,只需要輸入: 


python.exe neural_style_transfer.py 風格圖片所在目錄 輸出檔案夾 

–chars 花 # 要生成的文字,支援一次輸入多個文字 

–pictrue_size 300 # 生成圖片大小 

–background_color (0,0,0) # 文字圖片中背景的顏色 

–text_color (255,255,255) # 文字圖片中文字的顏色 

–iter 50 # 迭代次數,一般50代左右就行 

–smooth_times 20 # 文字圖片是否進行模糊化處理 

–noise True # 文字圖片是否加入隨機噪聲 

–image_enhance True # 生成圖片是否進行增強,包括色度,亮度,銳度增強 

–font_name 宋體 # 文字字型,支援宋體,楷體,黑體,仿宋,等線 

–reverse_color False # True-黑紙白字,False-白紙黑字,預設白紙黑字

一些說明 


神經網路基於 Keras 官方的風格遷移的例子,經過一定的調整 loss 函式和調參後得到最適合於藝術風格字型的程式碼。調整包括: 


1. 加入生成文字圖片的方法,以及提供一系列圖片生成相關介面,便於您第一時間修改結果;


2. 修改了 loss 函式,經過大量實驗,確定使用 Keras 提供的 VGG19 網路的’block1_conv1′,’block2_conv1′,’block3_conv1’三層作為風格損失,去除內容損失;


3. 加入一些圖片的增強方法,使得結果更加色彩豐富;


4. 在 style 檔案夾下提供了一系列圖片供您探索;


5. 執行需要 Keras 支援,建議使用 GPU 運算,在 Nvidia GeForce GTX 1050 Ti (4 GB) 上,一次迭代大約 3s,一張圖片耗時 2-3min。


點選以下標題檢視更多優質文章: 

 戳我檢視招募詳情

#作 者 招 募#


讓你的文字被很多很多人看到,喜歡我們不如加入我們


關於PaperWeekly


PaperWeekly 是一個推薦、解讀、討論、報道人工智慧前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號後臺點選「交流群」,小助手將把你帶入 PaperWeekly 的交流群裡。

▽ 點選 | 閱讀原文 | 加入社群刷論文

贊(0)

分享創造快樂