清華&曠視:讓VGG再次偉大!
點(diǎn)擊上方“視學(xué)算法”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時(shí)間送達(dá)
豐色 發(fā)自 凹非寺
量子位 報(bào)道 | 公眾號(hào) QbitAI
CNN經(jīng)典模型VGG自2014年誕生以來,由于相比于各種多分支架構(gòu)(如ResNet) 性能不佳,已漸“沒落”……
但來自清華大學(xué)和曠視科技等機(jī)構(gòu)的研究人員,他們居然只用3x3卷積和ReLU激活函數(shù)的超級(jí)簡單架構(gòu),通過結(jié)構(gòu)重參數(shù)化 (structural re-parameterization),就讓這個(gè)7年前的老架構(gòu)再次“容光煥發(fā)”!Great Again!
簡單到什么程度?研究人員表示:
下午5點(diǎn)看完文章,晚飯前就能寫完代碼開始訓(xùn)練,第二天就能看到結(jié)果。如果沒時(shí)間看完這篇文章,只要點(diǎn)開GitHub上的代碼,看完前100行就可以完全搞明白。
新架構(gòu)RepVGG結(jié)合了多分支架構(gòu)和單路架構(gòu)的優(yōu)點(diǎn),在速度和性能上直達(dá)SOTA,在ImageNet上精度超過80%!

相關(guān)論文已被CVPR 2021接收,開源預(yù)訓(xùn)練模型和代碼在GitHub上也已收獲1700+ 標(biāo)星!


兼顧多分支和單路架構(gòu)的優(yōu)點(diǎn)
一個(gè)已經(jīng)快要“沒落”的老模型,為什么還要重新?lián)炱鹄茫?/p>
研究人員介紹道,因?yàn)楹唵蔚腣GG式模型(單路架構(gòu)、僅使用3x3卷積和ReLU激活函數(shù))有五大現(xiàn)實(shí)優(yōu)勢:
1、3x3卷積非???。在GPU上,3x3卷積的計(jì)算密度(理論運(yùn)算量除以所用時(shí)間)可達(dá)1x1和5x5卷積的四倍。
2、單路架構(gòu)因?yàn)椴⑿卸雀咭卜浅??。同樣的?jì)算量,“大而整”的運(yùn)算效率遠(yuǎn)超“小而碎”的運(yùn)算。
3、單路架構(gòu)省內(nèi)存。例如,ResNet的shortcut雖然不占計(jì)算量,卻增加了一倍的顯存占用。
4、單路架構(gòu)靈活性更好,容易改變各層的寬度(如剪枝)。
5、RepVGG主體部分只有一種算子:3x3卷積接ReLU。在設(shè)計(jì)專用芯片時(shí),給定芯片尺寸或造價(jià),我們可以集成海量的3x3卷積-ReLU計(jì)算單元來達(dá)到很高的效率。別忘了,單路架構(gòu)省內(nèi)存的特性也可以幫我們少做存儲(chǔ)單元。
由于多分支架構(gòu)性能更好,為了讓新架構(gòu)RepVGG兼顧兩者優(yōu)點(diǎn),他們提出一個(gè)新的做法:先訓(xùn)練一個(gè)多分支模型,然后將多分支模型等價(jià)轉(zhuǎn)換為單路模型,最后部署這個(gè)單路模型。
具體來說,首先借鑒ResNet的做法,在訓(xùn)練時(shí)為每一個(gè)3x3卷積層添加平行的1x1卷積分支和恒等映射分支,構(gòu)成一個(gè)RepVGG Block。

然后需將RepVGG Block轉(zhuǎn)換為一個(gè)卷積,也就是將訓(xùn)練好的模型等價(jià)轉(zhuǎn)換為只有3x3卷積的單路模型。
怎么轉(zhuǎn)換?結(jié)構(gòu)重參數(shù)化!

如上圖,利用卷積的相加性,需經(jīng)過兩次變換。
示例中,輸入輸出通道數(shù)都是2,那3x3卷積核所對(duì)應(yīng)的參數(shù)矩陣為2x2x3x3,也就是4個(gè)3x3矩陣,1x1卷積核對(duì)應(yīng)的參數(shù)矩陣為2x2x1x1,也就是4個(gè)1x1矩陣,為了畫圖方便換成1個(gè)2x2矩陣。
把1x1卷積等價(jià)轉(zhuǎn)換為3x3卷積,只要用0填充一下就行了。
而恒等映射是一個(gè)特殊(以單位矩陣為卷積核)的1x1卷積,因此也是一個(gè)特殊的3x3卷積。
以上三個(gè)分支都有BN(batch normalization)層,推理時(shí)的卷積層和其后的BN層可轉(zhuǎn)換為一個(gè)帶bias的卷積層。
最后,將三分支得到的卷積核和bias分別相加,完成等價(jià)轉(zhuǎn)換為只有3x3卷積的單路模型。
從這一轉(zhuǎn)換過程中,我們看到了“結(jié)構(gòu)重參數(shù)化”的實(shí)質(zhì):訓(xùn)練時(shí)的結(jié)構(gòu)對(duì)應(yīng)一組參數(shù),推理時(shí)我們想要的結(jié)構(gòu)對(duì)應(yīng)另一組參數(shù);只要能把前者的參數(shù)等價(jià)轉(zhuǎn)換為后者,就可以將前者的結(jié)構(gòu)等價(jià)轉(zhuǎn)換為后者。
不少人都稱贊這篇論文的思路非常有意思,簡單易懂,讓人眼前一亮!
效果確實(shí)也非常不錯(cuò)——
速度和精度達(dá)SOTA
RepVGG這樣只用3x3卷積和ReLU激活函數(shù)的簡單架構(gòu),特別適用于GPU和特殊推理芯片(inference chips)。
研究人員在1080Ti上對(duì)RepVGG進(jìn)行了測試。在公平的訓(xùn)練設(shè)定下,同精度的RepVGG速度是ResNet-50的183%,ResNet-101的201%,EfficientNet的259%,RegNet的131%。


在Cityscapes上的語義分割實(shí)驗(yàn)表明,在速度更快的情況下,RepVGG模型比ResNet系列高約1%到1.7%的mIoU,或在mIoU高0.37%的情況下速度快62%。

通過結(jié)構(gòu)重參數(shù)化,RepVGG在ImageNet上達(dá)到了80.57%的top1精度,與最先進(jìn)的復(fù)雜模型相比,速度-精度都非常出色。
關(guān)于作者
論文一作:丁霄漢,清華大學(xué)計(jì)算機(jī)視覺博士生,研究方向是計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)。在CVPR、ICML、ICCV、NeurIPS作為第一作者發(fā)表論文5篇。曾獲得第七屆百度獎(jiǎng)學(xué)金榮譽(yù)——“十位頂尖 AI 學(xué)子”之一。

論文二作:張?jiān)斢?,曠視科技曠視研究院base model組負(fù)責(zé)人,西安交大博士生。曾在微軟亞洲研究院實(shí)習(xí),是ResNet的主要作者之一。

論文三作:馬寧寧,香港科技大學(xué)與曠視聯(lián)合培養(yǎng)博士,主要研究方向?yàn)橛?jì)算機(jī)視覺和高性能卷積神經(jīng)網(wǎng)絡(luò)。

論文地址:https://arxiv.org/abs/2101.03697
GitHub地址:https://github.com/DingXiaoH/RepVGG
參考鏈接:
[1]https://www.reddit.com/r/MachineLearning/comments/nqflsp/rrepvgg_making_vggstyle_convnets_great_again/
[2]https://zhuanlan.zhihu.com/p/344324470
— 完 —
本文系網(wǎng)易新聞?網(wǎng)易號(hào)特色內(nèi)容激勵(lì)計(jì)劃簽約賬號(hào)【量子位】原創(chuàng)內(nèi)容,未經(jīng)賬號(hào)授權(quán),禁止隨意轉(zhuǎn)載。

點(diǎn)個(gè)在看 paper不斷!
