YOLOV9是今年(2024)發(fā)表的一篇文章龟虎,主要是基于YOLOV7進行改進,改進點主要是使用了一種叫做可編程梯度信息的輔助訓練方法以及將YOLOV7中ELAN模塊一般化美侦,提出了一種計算效率更高的廣義ELAN宠蚂,即GELAN乓土。
雖然yolov9是基于yolov7進行改進的梦裂,但是在backbone處的重參數(shù)方法跟yolov7有些不同似枕,yolov7的重參數(shù)主要用在head處,而yolov9則是將重參數(shù)年柠、CSP和ELAN3種方法結(jié)合在一起搞成了一種算子運用在backbone中凿歼,接下去讓我們來看看yolov9主要的創(chuàng)新點吧。
- 可編程梯度信息
這個說的很高大上冗恨,其實就是一種變相的輔助訓練答憔,用于跳過FPN將梯度更快回傳到backbone的各個層上。因為作者認為梯度最初從非常深層的網(wǎng)絡(luò)傳遞出來后不久派近,就丟失了許多達成目標所需的信息,而這種損失隨著網(wǎng)絡(luò)的加深會不斷累積洁桌。為了驗證這一推斷渴丸,作者對具有初始權(quán)重的不同架構(gòu)的深度網(wǎng)絡(luò)進行前饋處理。下圖 對此進行了可視化說明另凌。顯然谱轨,PlainNet 在深層丟失了很多進行對象檢測所需的重要信息。至于 ResNet吠谢、CSPNet 和 GELAN 能夠保留的重要信息比例土童,確實與訓練后能夠獲得的準確性正相關(guān)。研究者進一步設(shè)計了基于可逆網(wǎng)絡(luò)的方法來解決上述問題的原因工坊。
不同模型的特征圖對比
上圖就是可編程梯度信息分支献汗,可以看到它就是深度輔助監(jiān)督的一種變體,訓練完成后在實際推理時是去掉的王污,可以做到無損漲點罢吃。當然我從實際運用角度出發(fā)分析,這種結(jié)構(gòu)應該是很消耗GPU計算資源的昭齐,相比前幾個版本的YOLO尿招,YOLOV9需要訓練2個backbone。
-
GELAN 網(wǎng)絡(luò)
此外判族,該研究還提出了一個新的網(wǎng)絡(luò)架構(gòu) GELAN(如下圖所示)吉执,具體而言,研究者把 CSPNet活翩、 ELAN 這兩種神經(jīng)網(wǎng)絡(luò)架構(gòu)結(jié)合起來丧荐,從而設(shè)計出兼顧輕量級缆瓣、推理速度和準確性的通用高效層聚合網(wǎng)絡(luò)(generalized efficient layer aggregation network ,GELAN)篮奄。研究者將最初僅使用卷積層堆疊的 ELAN 的功能泛化到可以使用任何計算塊的新架構(gòu)捆愁。
GELAN
ELAN是將vovnet和cspnet兩種方法結(jié)合起來了,而GELA則是ELAN的一般形式窟却,主要是將ELAN中的3x3卷積替換為了其他block昼丑,比如殘差塊、倒置殘差塊和稠密連接塊等夸赫,這個方法我覺得是參照了YOLO-MS的思想去做的菩帝。