穆衛衛 郭鵬博
(天津師范大學 天津市 300387)
藝術是人們情感交流的媒介,它使我們的生活更加美好,人工智能和藝術的“跨界融合”成為當今研究的熱點之一。本文利用深度學習模型,設計了圖像風格變換、圖像修復等功能。此外,為了給用戶提供一個更加健康、便捷、豐富的藝術交流環境,此網站也設計了投票、留言以及基于WebSocket 通信協議和“自動禁言”的聊天室功能。為眾多藝術圖片愛好者提供一個更加智能化的圖片展示、處理與交流平臺。
風格遷移是指創建一張新圖像,保留目標圖像的內容,同時抓住參考圖像的風格,盡可能的使內容損失函數和風格損失函數最小化[1]。
風格遷移使用卷積層的中間特征還原出對應這種特征的原始圖像[1],圖像還原的方法是梯度下降。設原始內容圖像為,原始風格圖像為,待生成圖像為,因此組合的內容損失和的風格損失,定義總損失:

其中:α,β 是平衡兩個損失的超參數。
在快速圖像風格遷移中,不使用優化的方法逐步迭代生成,而是使用訓練好的生成網絡直接生成。快速圖像風格遷移由生成網絡和損失網絡兩個神經網絡組成[2],如圖1所示:左側虛線框內為生成網絡(fw,w 為權重參數),即一個深度殘差網絡;右側虛線框內為損失網絡(φ)。利用損失網絡來定義內容和風格損失,根據損失值來訓練生成網絡。

圖1:VGG-16 卷積神經網絡結構
WGAN-GP 是基于Wasserstein 距離實現的改進版生成對抗網絡[4]。其對Smooth L1 損失函數進行了優化:加入梯度懲罰GP 項,避免梯度爆炸[5]。在保證生成器梯度變化的前提下,WGAN-GP 能夠使模型在訓練過程中表現得更加穩定。
本文借助端到端的U-NET網絡結構可以直接生成圖像的優勢,構建待處理照片和生成圖片間的映射關系[5]。判別器與生成器相互協同對抗,使生成圖片的效果更佳。
DeOldify 是用于恢復和著色老照片的深度學習項目,它采用了效率更高的NoGAN 訓練方法[6]。相比于傳統的GAN,它可以將復原圖片的細節處理得更好、效果更加逼真,其對于保證視頻著色的穩定性來說至關重要。
目前,DeOldify 擁有Artistic、Stable 和Video 三種型號,每種型號都有其關鍵的優勢和劣勢,適用于不同用例。
DFA(Deterministic Finite Automaton),即確定有窮自動機,其通過事件和當前的狀態確定下一個狀態。算法核心為建立了大量以敏感詞為基礎的敏感詞樹,對文本中的文字進行敏感詞匹配時,首先,進行文本的預處理,過濾掉起干擾作用的無意義字符[7]。預處理完成后,匹配根節點是待檢測文本第一個字的樹,匹配成功后,對根節點的子樹依次進行檢索,最終確定待檢測文本是否為敏感詞。若是,進行文本拋棄;若否,檢測剩余文本。DFA 過濾敏感詞算法在實現文字過濾時速度較快。
數據庫技術是數據處理和信息管理系統的核心,主要用于大量數據的組織存儲問題。MySQL 是一種開源的關系型數據庫管理系統,擁有體積小、運行速度快、成本低的特點,適合此量級網站的使用。
本文選用自由、靈活、可擴展性強的flask 框架創建并運行一個web 應用程序,它可以實現python 后端代碼和keras 的模型訓練語法的對接,方便實現深度學習模型執行上線定時任務。相比于flask 的模板引擎jinjia2 提供的前端結構,本文在flask 中集成了Bootstrap 開源前端框架,Bootstrap 框架所提供的用戶界面組件可以創建更加整潔規范且生動的頁面。
由于flask 并沒有提供一個全面的表單驗證機制,為了保證代碼的簡潔和可維護性,本文使用了wtforms 表單驗證插件進行對用戶請求數據的驗證。同時,在后端采用tensorflow 框架以完成圖片處理工作。
交互式圖片藝術網站功能結構圖如圖2所示。功能設計如下:

圖2:交互式圖片藝術網站功能結構圖
用戶注冊登錄模塊實現了用戶的賬戶注冊和網站登錄功能。用戶在注冊界面輸入賬號、郵箱、密碼、電話等信息后,可以完成賬戶的注冊。在登錄界面,用戶輸入賬戶信息即可登錄網站,進入個人主頁。
個人中心模塊實現了作品上傳、查看留言、作品刪除等功能。用戶在選擇想要上傳的圖片后,輸入作者、日期及作品描述相關信息后完成作品上傳。用戶可以在個人中心讀取來自其他用戶的留言,并進行回復。
2.3.1 快速圖像風格遷移
快速圖像風格遷移可以讓圖片擁有特定風格畫派的明顯紋理結構。用戶上傳待處理圖片后,選擇想要的圖片風格。系統進行圖片風格轉換,返回具有特定風格的圖片。
2.3.2 修復模糊、褶皺圖片
模糊與褶皺圖片修復功能可以幫助用戶修復由于拍攝、存儲不當而造成損傷的圖片,自動彌補圖像損失的細節。
2.3.3 圖片上色黑白照片上色功能可實現老照片的色彩修復,使黑白圖片變得更加鮮活,最大程度還原歷史場景。
此模塊實現了多用戶在線交流功能。為了保證一個綠色健康的交流環境,網絡聊天室會對交流者的發言進行快速過濾,包含敏感詞匯的消息將被禁止顯示。
用戶在看到自己感興趣的作品后可以使用在線留言功能向作者留言,交流個人的感受并與作者探討。
3.1.1 圖片上傳
在前端使用ajax 上傳圖片,需要創建FormData 對象,改變ajax 中的data 屬性,在ajax 中設置processData:false,contentType:false,async:false 參數。
后端的視圖函數接收用戶圖片上傳的請求后,調用flask_uploads.UploadSet 對象的save 函數接收并存儲圖像。為了節省數據庫空間并且保證網站的響應速度,該視圖函數只將圖片的名稱和地址存入數據庫,圖片文件存儲在服務器本地文件夾中。
3.1.2 圖片展示
服務器讀取用戶上傳成功的圖片文件后,通過對圖片進行base64 編碼操作,將處理后獲得的圖片流傳遞給前端,并在前端的img 標簽中以base64 編碼形式添加圖片完成顯示。
3.2.1 快速圖像風格遷移
用戶進入圖片風格變換頁面,上傳原圖片,同時選擇濾鏡風格,點擊“生成圖片”。系統獲取到上傳的圖片及濾鏡,開啟線程并調用訓練好的圖像遷移模型對圖片進行風格化處理。處理完成后,由系統自動檢測圖片生成路徑,返回生成圖片。如圖3所示。

圖3:快速圖像風格遷移
3.2.2 圖片修復
用戶進入照片修復頁面,上傳需要修復處理的圖片。從模糊圖片修復、褶皺圖片修復和黑白圖片上色三個功能中進行選擇,點擊“修復圖片”。
服務器端在獲取上傳的圖片及修復信息后,開啟線程調用已經訓練完成的模型進行圖片修復。處理完成后,同樣由系統自動檢測圖片生成路徑,返回生成圖片。
本文使用Bootstarp 前端框架設計前端聊天室頁面,使用websocket 協議在客戶端與服務器之間建立起全雙工的通信方式,實現消息的發送和接收。客戶端使用socket.io.js,服務器端使用flask-socketio 擴展。首先,在運行環境中用pip 安裝flasksocketio。
在前端引入socket.io.js,用戶輸入消息點擊發送按鈕,消息通過socket.emit 發送到服務端。服務器端用@socketio.on 裝飾器裝飾的函數接收和處理消息。在此事件處理中開啟敏感詞匯過濾線程,在線程中利用DFA 算法實現敏感詞匯過濾,包含敏感詞匯的消息將被自動拋棄,合法的消息將被存入需發送給客戶端的message隊列,返回一個消息的html 字符串,并對其進行渲染。通過設置broadcast=True,把消息廣播到與服務器建立websocket 鏈接的所有客戶端。客戶端同樣用socket.on 方法接收返回信息,將其添加到顯示區域。
網絡聊天室交互界面如圖4所示。

圖4:網絡聊天室交互界面
建立數據庫。在數據庫中建立相互關聯的數據表,以此實現數據存儲。
(1)用戶注冊表。用戶注冊表主要用于存儲用戶賬號數據,包含賬號、郵箱、密碼、電話等,ID 作為唯一標識。
(2)作品信息表。作品信息表主要用于記錄用戶上傳作品及其相關信息,包含主題、作者、日期、描述等。
(3)投票匯總表。投票匯總表主要用于對投票活動進行數據匯總和信息統計,包含:作者、主題、日期、得票數等。
(4)留言記錄表。留言記錄表主要用于記錄留言信息,包含留言者、文本內容、作者。
傳統圖片網站的單一功能已經不能滿足藝術圖片愛好者的需求,基于人工智能深度學習的多元化圖片分享網站讓用戶可以用一種新的方式創作圖片,填補了藝術圖片方向上社區分享型網站的空白。自動分類、圖片配樂等功能的逐步完善,將會不斷增強用戶體驗,使網站更加智能化。