作者丨餘唯民 & 雷芳涵
學校丨清華大學本科在讀
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 的交流群裡。
▽ 點選 | 閱讀原文 | 加入社群刷論文