|
一個(gè)風(fēng)格遷移模型可以有多??? 17KB足矣。 事實(shí)證明,你可以用1.7M的參數(shù)訓(xùn)練出風(fēng)格遷移模型,然后只留下11868個(gè)參數(shù),生成遷移圖像。將模型量化后,原本7M的模型壓縮到只有17KB,而遷移效果和原本模型差別不大: △ 遷移效果對(duì)比 | 從左到右分別為原圖,小模型效果,大模型效果17KB是什么概念?一個(gè)模糊得不行的小頭像,word中的10個(gè)文字,迅雷0.01秒內(nèi)下載的文件…… 整波操作效果明顯—— 原始模型:
縮減后的模型:
這到底怎么做到的? 只需兩步這項(xiàng)研究的作者、AI部署解決方案Fritz的聯(lián)合創(chuàng)始人Jameson Toole在博客中表示,縮小模型真的“pretty easy”,只要你: 一是要毫不留情地修剪層數(shù)和權(quán)重,二是要通過(guò)量化的方式,將32位的浮點(diǎn)權(quán)重轉(zhuǎn)換成8位整數(shù)。下面分別細(xì)講。 修剪策略神經(jīng)網(wǎng)絡(luò)的訓(xùn)練期間需要調(diào)整數(shù)百萬(wàn)甚至數(shù)億個(gè)權(quán)重,一般來(lái)講更多的權(quán)重意味著更高的準(zhǔn)確性,但非常低效。 假設(shè)一個(gè)神經(jīng)網(wǎng)絡(luò)可以大多數(shù)權(quán)重都沒(méi)那么有用,可以刪除,應(yīng)該在什么層面去刪?Toole認(rèn)為主要有三種選擇:修剪單個(gè)權(quán)重、層和模塊等。 權(quán)重方面:指一些網(wǎng)絡(luò)中絕大多數(shù)(可能會(huì)>95%)訓(xùn)練過(guò)的權(quán)重對(duì)結(jié)果沒(méi)有幫助,確定哪些權(quán)重能提升網(wǎng)絡(luò)準(zhǔn)確性,將無(wú)用權(quán)重刪去。 層級(jí)方面:每個(gè)層中都有權(quán)重,2D的卷積層具有的權(quán)重張量被稱(chēng)為一個(gè)卷積核(kernel),包含寬度、高度和深度信息,縮小卷積核也是縮小模型的一種方法。 模塊方面:層通常會(huì)被組合在一起,形成可重復(fù)使用的子圖,也就是一個(gè)模塊。在這個(gè)層面的修剪會(huì)一次刪除多個(gè)層,從而減小模型體積。 具體操作作者引入了寬度乘數(shù)(width multiplier)當(dāng)作超參數(shù),這種方法是谷歌首次在論文MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications中提出的。 論文地址: 寬度乘數(shù)能調(diào)整每個(gè)卷積層中濾波器的數(shù)量。如果層和寬度乘數(shù)alpha已經(jīng)給定,那將濾波器的數(shù)量F改成F×alpha即可。 通過(guò)這個(gè)超參數(shù),我們能夠利用李飛飛團(tuán)隊(duì)曾經(jīng)發(fā)表的方法,生成架構(gòu)相同但權(quán)重?cái)?shù)量不同的連續(xù)網(wǎng)絡(luò),就像下面這樣: 李飛飛論文Perceptual Losses for Real-Time Style Transfer and Super-Resolution: 當(dāng)alpha=1.0時(shí),生成網(wǎng)絡(luò)的權(quán)重為1.7M,當(dāng)alpha=0.5時(shí),得到權(quán)重?cái)?shù)量為424102個(gè)的一個(gè)網(wǎng)絡(luò)。 此時(shí)可以使用低寬度乘數(shù)制作構(gòu)建一些小網(wǎng)絡(luò),但里面也有很多重復(fù)模塊。 作者發(fā)現(xiàn),沒(méi)有辦法大刀闊斧地修剪這些重復(fù)模塊,參數(shù)數(shù)量固定時(shí),更深的網(wǎng)絡(luò)產(chǎn)生的結(jié)果更好。作者最終將五個(gè)殘差塊中刪去了兩個(gè),并將每層的默認(rèn)濾波器減少到32個(gè)。 看起來(lái)是這樣的: 用上述架構(gòu),作者在反復(fù)試驗(yàn)后將寬度乘數(shù)調(diào)整到了0.3,每層中有9個(gè)濾波器,最終生成一個(gè)只有11868個(gè)權(quán)重的神經(jīng)網(wǎng)絡(luò)。 量化神經(jīng)網(wǎng)絡(luò)訓(xùn)練完成后進(jìn)入最后的壓縮環(huán)節(jié)。 通常大家會(huì)將網(wǎng)絡(luò)權(quán)重存儲(chǔ)成64位或32位的浮點(diǎn)數(shù),所謂量化,就是將每一個(gè)浮點(diǎn)權(quán)重映射成位寬較低的整數(shù)。 從32位到8位的映射能將存儲(chǔ)空間減少4倍,并且目前每個(gè)主流移動(dòng)端框架都支持量化,包括TensorFlow Mobile、TensorFlow Lite、Core ML和Caffe2Go。 結(jié)果展示最終,用11868個(gè)參數(shù)構(gòu)建的這個(gè)微型網(wǎng)絡(luò)架構(gòu)原始大小為1.7M,當(dāng)用Google的移動(dòng)端框架CoreML量化后,最終大小為17KB,僅為原始大小的0.25%。 這個(gè)超小型的遷移模型,可以將所見(jiàn)場(chǎng)景轉(zhuǎn)化成梵高名畫(huà)《星空》的風(fēng)格。 作者還發(fā)現(xiàn),盡管模型大小縮小了400倍,但在iPhoneX上的運(yùn)行速度只提高了50%,原因尚不明確。 用簡(jiǎn)單兩步操作將風(fēng)格遷移模型大小減少99.75%的方法,這次你學(xué)會(huì)了嗎? 傳送門(mén) |
|
|
來(lái)自: 長(zhǎng)沙7喜 > 《智能技術(shù)》