Yolov7問(wèn)世,刷新了目標(biāo)檢測(cè)內(nèi)卷的新上限!小博此次攜手博世AI大神Zlex做一次解析。今天,我們不準(zhǔn)備解析yolov7,而是解析yolov7采用的一項(xiàng)技術(shù):模型結(jié)構(gòu)重參化。
首先,這要從古老的vgg說(shuō)起,很久很久以前神經(jīng)網(wǎng)絡(luò)還沒(méi)有很多花樣的時(shí)候,他是一個(gè)以卷積為主串聯(lián)的網(wǎng)絡(luò)結(jié)構(gòu),如下圖所示:
由于見(jiàn)證了神經(jīng)網(wǎng)絡(luò)的神奇效果,科學(xué)家工程師們前仆后繼開(kāi)發(fā)了resnet, inception net, 以及自學(xué)習(xí)產(chǎn)生的efficientnet等等以結(jié)構(gòu)創(chuàng)新為主的系列,以及歸一化系列(ln,bn,gn,in),激活函數(shù)系列, 卷積系列等各種新的計(jì)算層,還有各種損失函數(shù)層等等。
隨著思維的展開(kāi),除了從計(jì)算方法(數(shù)學(xué)推理角度)和網(wǎng)絡(luò)結(jié)構(gòu)(實(shí)驗(yàn)性創(chuàng)新角度)層面創(chuàng)新,還有哪些腦洞可以打開(kāi)呢?是否可以實(shí)現(xiàn)數(shù)學(xué)和網(wǎng)絡(luò)結(jié)構(gòu)方面的互相轉(zhuǎn)化?答案是肯定的,數(shù)學(xué)推算和結(jié)構(gòu)設(shè)計(jì)之間是可以相互轉(zhuǎn)化的。
而模型結(jié)構(gòu)重參化就是其中一種。
01
模型結(jié)構(gòu)重參化
模型結(jié)構(gòu)重參化是繼承了深度學(xué)習(xí)的特性,并作為思考點(diǎn)而展開(kāi)的,也就是訓(xùn)練(train)和推斷(deploy)分別思考的策略,通常我們是可以忍受訓(xùn)練速度較慢,但是推理更加快速的部署方案。
基于這個(gè)現(xiàn)實(shí)的考慮,是否可能通過(guò)增加訓(xùn)練的復(fù)雜度但不增加推斷運(yùn)行的時(shí)間,從而達(dá)到模型能力的提升?
其實(shí)這一切都經(jīng)不起科學(xué)家的推敲,這種思路的可行性答案也是肯定的,其實(shí)在很久之前的部署加速技巧—— Conv、BN、Relu 三個(gè)層融合(大部分情況是conv和bn融合)也是發(fā)現(xiàn)了——訓(xùn)練和部署可以在網(wǎng)絡(luò)結(jié)構(gòu)不同的情況下實(shí)現(xiàn)效果等價(jià),這個(gè)數(shù)學(xué)公式等價(jià)變換思路。而tensorRT等部署加速方案也都融合了這項(xiàng)技術(shù)。
模型結(jié)構(gòu)重參化(structural re-parameterization)是丁霄漢近年來(lái)提出的一種通用深度學(xué)習(xí)模型設(shè)計(jì)方法論。該方法論首先指出了構(gòu)造一系列用于訓(xùn)練的結(jié)構(gòu),并將其結(jié)構(gòu)等價(jià)轉(zhuǎn)換為另一種用于測(cè)試的結(jié)構(gòu),也就是訓(xùn)練和測(cè)試的結(jié)構(gòu)不再相同,但是效果等效。
該理論是假設(shè)在訓(xùn)練資源相對(duì)豐富的條件下,在不降低推理能力的前提下又能達(dá)到提速的目的。因此訓(xùn)練時(shí)的模型可以足夠復(fù)雜,且具備優(yōu)秀的性質(zhì)。而轉(zhuǎn)換得到的推理時(shí)模型可以簡(jiǎn)化,但能力不會(huì)減弱,也就是實(shí)現(xiàn)無(wú)損壓縮。
為什么要以vgg為例,而不是以目前各種先進(jìn)復(fù)雜的結(jié)構(gòu)為例解析這一設(shè)計(jì)呢?其原因在于:模型結(jié)構(gòu)復(fù)雜提升了精度,但不利于硬件的各種并行加速計(jì)算。但vgg這種單一的結(jié)構(gòu)更容易做很多的變形和加速操作,Repvgg就是基于vgg網(wǎng)絡(luò)的模型結(jié)構(gòu)重參化。
論文中對(duì)比了resnet的參差結(jié)構(gòu)和rep結(jié)構(gòu)的不同,以及訓(xùn)練和推理網(wǎng)絡(luò)如何轉(zhuǎn)化,如下圖所示:
以上設(shè)計(jì)方法論基于的數(shù)學(xué)關(guān)系是:
(i+c+b)*w=i*w + c*w + b*w的等式理論。
該等式畫(huà)成結(jié)構(gòu)圖是:
只不過(guò)在卷積的世界里,a和b表示的是一個(gè)n*n的核;而在一些設(shè)計(jì)里面,a和b的大小是不一致的。這個(gè)時(shí)候就需要把現(xiàn)在a和b的維度進(jìn)行一致性轉(zhuǎn)換,也就是repvgg作者采用的:把1*1的核通過(guò)pad的方法補(bǔ)0操作變成3*3的核,達(dá)到a、b維度一致。
identity的操作相當(dāng)于是1*1的單位矩陣卷積pad后就可以轉(zhuǎn)化為3*3的卷積核。還應(yīng)該值得注意的是:每個(gè)卷積后面還跟著bn層,這是就用到了上述提到的conv和bn的融合計(jì)算方法。
02
Yolov7在這項(xiàng)技術(shù)上的發(fā)現(xiàn)和創(chuàng)新
Yolov7中的模型結(jié)構(gòu)重參化做了哪些創(chuàng)新?
Zlex發(fā)現(xiàn)Rep的結(jié)構(gòu)策略直接用到resnet等結(jié)構(gòu)的網(wǎng)絡(luò)中達(dá)不到預(yù)期效果,分析后發(fā)現(xiàn)identity層的使用破壞了resnet的參差結(jié)構(gòu)和densenet的級(jí)聯(lián)結(jié)構(gòu),因此去掉identity層,采用如下圖(g和h)的結(jié)構(gòu)方式有效。
03
Yolov7工業(yè)應(yīng)用領(lǐng)域的改善空間
俗話說(shuō),極致的項(xiàng)目一般是“既要,也要,還要”的模式——既要推理速度快!也要推理精度高!還要訓(xùn)練速度也不能太慢!
Yolov7無(wú)疑是吸收了很多仙氣修煉成的佳作,但也存在些許缺點(diǎn),這些缺點(diǎn)也是該設(shè)計(jì)本質(zhì)性的東西,Yolov7的訓(xùn)練速度經(jīng)過(guò)Zlex親測(cè),比其他yolo系列慢了很多。對(duì)于資源有限型的AI愛(ài)好者也形成了一定的障礙,單元時(shí)間可以跑的實(shí)驗(yàn)次數(shù)少了很多,驗(yàn)證一些想法的節(jié)奏也慢了很多。
Yolov7給博世工業(yè)檢測(cè)、自動(dòng)駕駛、數(shù)字化等領(lǐng)域又注入了新的超能力,應(yīng)用過(guò)程中也會(huì)發(fā)現(xiàn)這樣或者那樣的問(wèn)題,比方說(shuō)訓(xùn)練資源有限,速度跟不上項(xiàng)目的節(jié)奏,能力提升的trick不夠適應(yīng)自己的應(yīng)用場(chǎng)景,小數(shù)據(jù)訓(xùn)練效果不佳,不同平臺(tái)的移植工作量大等等,需要我們博世工程師在適配、融合和改進(jìn)的路上堅(jiān)定的前進(jìn)。
審核編輯 :李倩
-
模型
+關(guān)注
關(guān)注
1文章
3112瀏覽量
48658 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5463瀏覽量
120890
原文標(biāo)題:博采眾長(zhǎng) | 在提升深度學(xué)習(xí)模型能力方面的那些魔鬼細(xì)節(jié):模型結(jié)構(gòu)重參化
文章出處:【微信號(hào):rbacinternalevents,微信公眾號(hào):博世蘇州】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論