YOLO v9來了!它帶來什麼樣的創新呢?

Martin Huang
Feb 28, 2024

--

出處:YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information,Figure 1

原文同步在我的個人FB。屬於自無斷轉載。

其實我還沒把整篇論文徹頭徹尾看完,主要節錄作者團隊認為改良的關鍵點。原文在此:

https://huggingface.co/papers/2402.13616?fbclid=IwAR1_oXf_S-Zq3biFBpoq2V8jqgaf8AyU2vA0o7-Suvbjf_2dvxnHJGf8iyE

1. 深度學習神經網路,就同好者擔心的角度,不是那些虛無飄渺的黑箱指控,而是梯度消失,以及訊息損失。這兩件事在過去的CV model裡面不斷想要克服,最典型的例子是ResNet裡的skip connection。從NLP借鏡的也有。

2. 本文先羅列了一些目前常用的作法:

(1) Reversible architecture:這個是利用intermediate layer進行雙向的運算,所以在input進來之後會做一些特徵分派,其中一種做法是隨意地按channel分派。因為layer之間聯繫會比傳統神經網路多,受限於運算資源限制,無法太深。且inference時可能消耗大量資源(因為要整個搬過來)

(2) Masked modeling:從NLP(如BERT)借鏡來的做法,把影像切割成許多patch之後,轉成visible token,這些token是可以再透過decoder還原的。然後把patch隨意遮住,要模型預測被遮住的部分是什麼樣子。缺點是有時decoder其實無法還原成正確的資訊,且模型對於patch之間的連結似乎抓得不太準。

(3) Deep supervision:有一~點點像偷看資料,利用較淺的架構(例如機器學習的SVM)先建立影像和target之間的連結,「誘導」intermediate layer建立較良好的梯度,並確保這些梯度可以走深。缺點是即使這樣,有時還是會損失資訊,而且通常只能被用在較深的模型。

3. YOLO v9提出的解決方案:programmable gradient information (PGI)。簡單說,他不否定上述方法的效益。所以會運用,但架構不同:把他們放在主幹(main branch)的側枝(auxillary),只在訓練時使用。

(1) Reversible architecture就被放在其中一側,利用他迴避deep supervision可能會造成的information loss問題。而因為inference時不會保留這個架構,因此可迴避它帶來的運算資源及時間的消耗。

(2) 改良deep supervision的概念,作者認為資訊的損失主要在較深層的網路,可能只會關注較小的目標,而對於同樣是目標但尺寸較大的,可能會被忽略。因此,他們利用一個integration network把各level的訊息(從各deep supervision和prediction head獲得的梯度)都聚集起來,再傳給main branch。這樣做有兩個好處:第一個是訊息的損失可以降低,第二個則是可以因應模型深度,調整integration network的大小,因此讓較淺的模型也有機會得到deep supervision的好處。這個架構一樣放在側枝,所以inference時也不會帶進去。

(3) GELAN網路架構,源自ELAN,但把內含相容性從只能放CNN改成可以兼容其他運算架構。這個架構,作者認為可以兼顧參數量(結構大小)、運算複雜度(消耗算力),以及inference速度。

以上就是關於YOLO v9的一些重點速記。最近因為準備畢業相關的事情弄得很忙,不太有時間更新。感謝讀者們持續支持這塊園地,等到忙一段落之後,我還是會持續分享一些論文中讀到的概念,雖然這些概念不一定都是最新的,但對於理解機器學習/深度學習的結構或運算,相信是會有幫助的。

我們下篇文章再見。

--

--

Martin Huang

崎嶇的發展 目前主攻CV,但正在往NLP的路上。 歡迎合作或聯絡:martin12345m@gmail.com