大小僅17KB!這個微型風格遷移模型太好玩了
銅靈 編譯整理
量子位 出品 | 公眾號 QbitAI
一個風格遷移模型可以有多小?
17KB足矣。
事實證明,你可以用1.7M的參數訓練出風格遷移模型,然後只留下11868個參數,生成遷移圖像。將模型量化後,原本7M的模型壓縮到只有17KB,而遷移效果和原本模型差別不大:
遷移效果對比 | 從左到右分別為原圖,小模型效果,大模型效果
17KB是什麼概念?一個模糊得不行的小頭像,word中的10個文字,迅雷0.01秒內下載的文件……
整波操作效果明顯——
原始模型:
大小:7M
權重數量:1.7M
iPhoneX上的運行速度:18 FPS
縮減後的模型:
大小:17KB
權重數量:11868
iPhoneX上的運行速度:29 FPS
這到底怎麼做到的?
只需兩步
這項研究的作者、AI部署解決方案Fritz的聯合創始人Jameson Toole在博客中表示,縮小模型真的「pretty easy」,只要你:
一是要毫不留情地修剪層數和權重,二是要通過量化的方式,將32位的浮點權重轉換成8位整數。下面分別細講。
修剪策略
神經網路的訓練期間需要調整數百萬甚至數億個權重,一般來講更多的權重意味著更高的準確性,但非常低效。
假設一個神經網路可以大多數權重都沒那麼有用,可以刪除,應該在什麼層面去刪?Toole認為主要有三種選擇:修剪單個權重、層和模塊等。
權重方面:指一些網路中絕大多數(可能會>95%)訓練過的權重對結果沒有幫助,確定哪些權重能提升網路準確性,將無用權重刪去。
層級方面:每個層中都有權重,2D的卷積層具有的權重張量被稱為一個卷積核(kernel),包含寬度、高度和深度信息,縮小卷積核也是縮小模型的一種方法。
模塊方面:層通常會被組合在一起,形成可重複使用的子圖,也就是一個模塊。在這個層面的修剪會一次刪除多個層,從而減小模型體積。
具體操作
作者引入了寬度乘數(width multiplier)當作超參數,這種方法是谷歌首次在論文MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications中提出的。
論文地址:
https://arxiv.org/abs/1704.04861
寬度乘數能調整每個卷積層中濾波器的數量。如果層和寬度乘數alpha已經給定,那將濾波器的數量F改成F×alpha即可。
通過這個超參數,我們能夠利用李飛飛團隊曾經發表的方法,生成架構相同但權重數量不同的連續網路,就像下面這樣:
李飛飛論文Perceptual Losses for Real-Time Style Transfer and Super-Resolution:
https://arxiv.org/abs/1603.08155
當alpha=1.0時,生成網路的權重為1.7M,當alpha=0.5時,得到權重數量為424102個的一個網路。
此時可以使用低寬度乘數製作構建一些小網路,但裡面也有很多重複模塊。
作者發現,沒有辦法大刀闊斧地修剪這些重複模塊,參數數量固定時,更深的網路產生的結果更好。作者最終將五個殘差塊中刪去了兩個,並將每層的默認濾波器減少到32個。
看起來是這樣的:
用上述架構,作者在反覆試驗後將寬度乘數調整到了0.3,每層中有9個濾波器,最終生成一個只有11868個權重的神經網路。
量化
神經網路訓練完成後進入最後的壓縮環節。
通常大家會將網路權重存儲成64位或32位的浮點數,所謂量化,就是將每一個浮點權重映射成位寬較低的整數。
從32位到8位的映射能將存儲空間減少4倍,並且目前每個主流移動端框架都支持量化,包括TensorFlow Mobile、TensorFlow Lite、Core ML和Caffe2Go。
結果展示
最終,用11868個參數構建的這個微型網路架構原始大小為1.7M,當用Google的移動端框架CoreML量化後,最終大小為17KB,僅為原始大小的0.25%。
這個超小型的遷移模型,可以將所見場景轉化成梵高名畫《星空》的風格。
作者還發現,儘管模型大小縮小了400倍,但在iPhoneX上的運行速度只提高了50%,原因尚不明確。
用簡單兩步操作將風格遷移模型大小減少99.75%的方法,這次你學會了嗎?
傳送門
可進一步閱讀博客原文:
https://heartbeat.fritz.ai/creating-a-17kb-style-transfer-model-with-layer-pruning-and-quantization-864d7cc53693
GitHub上可下載模型的代碼+Demo:
https://github.com/fritzlabs/fritz-style-transfer
—完—
年度評選申請
加入社群
量子位AI社群開始招募啦,歡迎對AI感興趣的同學,在量子位公眾號(QbitAI)對話界面回復關鍵字「交流群」,獲取入群方式;
此外,量子位專業細分群(自動駕駛、CV、NLP、機器學習等)正在招募,面向正在從事相關領域的工程師及研究人員。
進專業群請在量子位公眾號(QbitAI)對話界面回復關鍵字「專業群」,獲取入群方式。(專業群審核較嚴,敬請諒解)
誠摯招聘
量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!相關細節,請在量子位公眾號(QbitAI)對話界面,回復「招聘」兩個字。
※機器學習經典教材PRML《模式識別與機器學習》官方開放免費下載
※機器學習和AI的區別是什麼?
TAG:量子位 |