YoloR:又一個(gè)YOLO系列新框架!速度遠(yuǎn)遠(yuǎn)高于Yolov4
論文:https://arxiv.org/pdf/2105.04206.pdf
開源代碼:https:// github.com/WongKinYiu/yolor
1 前言
人們通過視覺、聽覺、觸覺以及過去的經(jīng)驗(yàn)“理解”世界。人類經(jīng)驗(yàn)可以通過正常學(xué)習(xí)(我們稱之為顯性知識)或潛意識(我們稱之為隱性知識)來學(xué)習(xí)。這些通過正常學(xué)習(xí)或潛意識習(xí)得的經(jīng)驗(yàn)將被編碼并儲存在大腦中。使用這些豐富的經(jīng)驗(yàn)作為一個(gè)龐大的數(shù)據(jù)庫,人類可以有效地處理數(shù)據(jù),即使它們是事先不可見的。
在今天分享中,研究者提出了一個(gè)統(tǒng)一的網(wǎng)絡(luò),將隱性知識和顯性知識編碼在一起,就像人腦可以從正常學(xué)習(xí)和潛意識學(xué)習(xí)中學(xué)習(xí)知識一樣。統(tǒng)一網(wǎng)絡(luò)可以生成統(tǒng)一的表示以同時(shí)服務(wù)于各種任務(wù)。可以在卷積神經(jīng)網(wǎng)絡(luò)中執(zhí)行內(nèi)核空間對齊、預(yù)測優(yōu)化和多任務(wù)學(xué)習(xí)。結(jié)果表明,當(dāng)隱性知識被引入神經(jīng)網(wǎng)絡(luò)時(shí),它有利于所有任務(wù)的性能。研究者進(jìn)一步分析了從所提出的統(tǒng)一網(wǎng)絡(luò)中學(xué)習(xí)到的隱式表示,它在捕捉不同任務(wù)的物理意義方面表現(xiàn)出很強(qiáng)的能力。
2 背景
如下圖所示,人類可以從不同角度分析同一條數(shù)據(jù)。然而,經(jīng)過訓(xùn)練的卷積神經(jīng)網(wǎng)絡(luò)模型通常只能實(shí)現(xiàn)一個(gè)目標(biāo)。一般來說,可以從經(jīng)過訓(xùn)練的CNN中提取的特征通常對其他類型的問題適應(yīng)性較差。造成上述問題的主要原因是我們只從神經(jīng)元中提取特征,沒有使用CNN中豐富的隱式知識。當(dāng)真正的人腦在運(yùn)行時(shí),上述隱性知識可以有效地輔助大腦執(zhí)行各種任務(wù)。
隱性知識是指在潛意識狀態(tài)下學(xué)到的知識。然而,對于隱性學(xué)習(xí)如何運(yùn)作以及如何獲得隱性知識,并沒有系統(tǒng)的定義。在神經(jīng)網(wǎng)絡(luò)的一般定義中,從淺層獲得的特征通常稱為顯性知識,從深層獲得的特征稱為隱性知識。在今天分享中,研究者將與觀察直接對應(yīng)的知識稱為顯性知識。對于模型中隱含的與觀察無關(guān)的知識,稱之為隱性知識。
3 新框架
研究者提出了一個(gè)統(tǒng)一的網(wǎng)絡(luò)來整合隱性知識和顯性知識,并使學(xué)習(xí)模型包含一個(gè)通用表示,而這個(gè)通用表示使子表示適用于各種任務(wù)。上圖(c)說明了提出的統(tǒng)一網(wǎng)絡(luò)架構(gòu)。
接下來我們好好詳細(xì)分析下隱性知識如何運(yùn)作的?
本研究的主要目的是進(jìn)行一個(gè)統(tǒng)一的網(wǎng)絡(luò),可以有效地訓(xùn)練隱性知識,所以在后續(xù)我們將首先關(guān)注如何訓(xùn)練隱性知識并對其進(jìn)行快速推理。由于隱式表示zi與觀察無關(guān),我們可以將其視為一組常數(shù)張量Z={z1, z2, ..., zk}。接下來我們將介紹作為常數(shù)張量的隱性知識如何應(yīng)用于各種任務(wù)。
· Manifold space reduction ·
研究者認(rèn)為一個(gè)好的表示應(yīng)該能夠在它所屬的流形空間中找到合適的投影,并促進(jìn)后續(xù)客觀任務(wù)的成功。例如,如下圖所示,如果目標(biāo)類別可以通過投影空間中的超平面成功分類,那將是最好的結(jié)果。在上面的例子中,我們可以通過投影向量和隱性表示的內(nèi)積來達(dá)到降低流形空間維數(shù),有效完成各種任務(wù)的目的。
· Kernel space alignment ·
在多任務(wù)和多head神經(jīng)網(wǎng)絡(luò)中,內(nèi)核空間未對齊是一個(gè)常見問題,圖上圖(a)說明了多任務(wù)和多Head神經(jīng)網(wǎng)絡(luò)中內(nèi)核空間未對齊的示例。
為了解決這個(gè)問題,研究者可以對輸出特征和隱性表示進(jìn)行加法和乘法,從而可以平移、旋轉(zhuǎn)和縮放核空間以對齊神經(jīng)網(wǎng)絡(luò)的每個(gè)輸出核空間,如下圖(b)所示。
上述操作模式可以廣泛應(yīng)用于不同領(lǐng)域,例如特征金字塔網(wǎng)絡(luò)(FPN)中大目標(biāo)和小目標(biāo)的特征對齊,使用知識蒸餾來整合大模型和小模型,以及處理零樣本域轉(zhuǎn)移和其他問題。
· More functions ·
除了可以應(yīng)用于不同任務(wù)的功能外,隱性知識還可以擴(kuò)展到更多的功能中。如下圖所示,通過引入加法,可以使神經(jīng)網(wǎng)絡(luò)預(yù)測中心坐標(biāo)的偏移。還可以引入乘法來自動(dòng)搜索Anchor的超參數(shù)集,這是基于錨的目標(biāo)檢測器經(jīng)常需要的。此外,可以分別使用點(diǎn)乘和串聯(lián)來執(zhí)行多任務(wù)特征選擇并為后續(xù)計(jì)算設(shè)置前提條件。
在常規(guī)神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程中,通常會最小化以使fθ(x)盡可能接近目標(biāo)。這意味著我們期望對同一目標(biāo)的不同觀察是fθ獲得的子空間中的單個(gè)點(diǎn),如下圖(a)所示。換句話說,我們期望得到的解空間是僅對當(dāng)前任務(wù)ti有區(qū)別,對各種潛在任務(wù)中的ti以外的任務(wù)不變,T \ ti,其中 T = {t1, t2, ..., tn}。
對于通用神經(jīng)網(wǎng)絡(luò),我們希望得到的表征可以服務(wù)于屬于T的所有任務(wù)。因此,我們需要放松,使得可以在流形空間上同時(shí)找到每個(gè)任務(wù)的解,如上圖(b)所示。但是,上述要求使我們無法使用簡單的數(shù)學(xué)方法,例如one-hot向量的最大值或歐幾里得距離的閾值來獲得ti的解。為了解決這個(gè)問題,我們必須對誤差項(xiàng)進(jìn)行建模,以找到不同任務(wù)的解決方案,如上圖6所示。
4 實(shí)驗(yàn)及檢測可視化
這個(gè)作者實(shí)驗(yàn)做的也特別充分,有興趣的同學(xué)可以自己看下論文,從中發(fā)現(xiàn)一些創(chuàng)作靈感。我也是根據(jù)公布的源代碼隨便在公共數(shù)據(jù)集上測試下,效果與YoloV4比,精度可能差不多,速度確實(shí)快不少。今天就以鬼吹燈——云南蟲谷這一小段檢測片段,效果不是很好,因?yàn)槲矣玫氖枪矓?shù)據(jù)集簡單訓(xùn)練的效果,等有機(jī)會基于優(yōu)化的網(wǎng)絡(luò)好好訓(xùn)練一個(gè)模型。
從抖音的檢測過程中,可以看出效果一般般,還是要針對性的數(shù)據(jù)及高質(zhì)量的訓(xùn)練,我為了顯示基本的效果,就簡單訓(xùn)練了一個(gè)輕量級網(wǎng)絡(luò),視頻中可以看出“粽子”確實(shí)是“人“變的!