達(dá)摩院開源低成本大規(guī)模分類框架FFC
論文鏈接:https://arxiv.org/pdf/2105.10375.pdf
應(yīng)用 & 代碼:
- ??https://modelscope.cn/models/damo/cv_ir50_face-recognition_arcface/summary??
- ??https://modelscope.cn/models/damo/cv_resnet_face-recognition_facemask/summary??
背景
圖像分類是當(dāng)前 AI 最為成功的實(shí)際應(yīng)用技術(shù)之一,已經(jīng)融入了人們的日常生活。被廣泛應(yīng)用于計(jì)算機(jī)視覺的大部分任務(wù)中,比如圖像分類、圖像搜索、OCR、內(nèi)容審核、識別認(rèn)證等領(lǐng)域。目前已形成一個普遍共識:“當(dāng)數(shù)據(jù)集越大 ID 越多時,只要訓(xùn)練得當(dāng),相應(yīng)分類任務(wù)的效果就會越好”。但是當(dāng)面對千萬 ID 甚至上億 ID 時,當(dāng)下流行的 DL 框架,很難低成本的直接進(jìn)行如此超大規(guī)模的分類訓(xùn)練。
解決該問題最直觀的方式是通過集群的方式消耗更多的顯卡資源,但即便如此,海量 ID 下的分類問題,依然會有如下幾個問題:
1)成本問題:分布式訓(xùn)練框架 + 海量數(shù)據(jù)情況下,內(nèi)存開銷、多機(jī)通信、數(shù)據(jù)存儲與加載都會消耗更多的資源。
2)長尾問題:實(shí)際場景中,當(dāng)數(shù)據(jù)集達(dá)到上億 ID 時,往往其絕大部分 ID 內(nèi)的圖片樣本數(shù)量會很少,數(shù)據(jù)長尾分布非常明顯,直接訓(xùn)練難以獲得較好效果。
本文余下章節(jié)將重點(diǎn)介紹超大規(guī)模分類框架現(xiàn)有解決方案,以及低成本分類框架 FFC 的相應(yīng)原理及 trick 介紹。
方法
在介紹方法之前,本文首先回顧了當(dāng)前超大規(guī)模分類存在的主要挑戰(zhàn)點(diǎn):
挑戰(zhàn)點(diǎn) 1:成本居高不下?
ID 數(shù)目越大分類器顯存需求越大,如下示意圖所示:
顯存越大所需機(jī)器卡數(shù)越多,成本也就越高,相應(yīng)多機(jī)協(xié)同的硬件基礎(chǔ)設(shè)施成本也越高。與此同時,當(dāng)分類 ID 數(shù)目達(dá)到極超大規(guī)模的時候,主要計(jì)算量將浪費(fèi)在最后一層分類器上,骨架網(wǎng)絡(luò)消耗的時間可忽略不計(jì)。
挑戰(zhàn)點(diǎn) 2:長尾學(xué)習(xí)困難?
在實(shí)際場景下,上億 ID 中的絕大部分 ID 內(nèi)的圖片樣本數(shù)量會很少,長尾數(shù)據(jù)分布非常明顯,直接訓(xùn)練難以收斂。如果按照同等權(quán)重訓(xùn)練,則長尾樣本會被淹沒學(xué)習(xí)不充分。此時,一般采用 imbalanced sample,在這個研究課題上,有非常多的方法可以借鑒,采取怎樣的方式融入到簡易超大規(guī)模分類框架上較為合適呢?
帶著上述兩個挑戰(zhàn)點(diǎn),首先來看下現(xiàn)有可行的方案有哪些,是否能很好的解決上述兩個挑戰(zhàn)。
可行方法 1:度量學(xué)習(xí)?
可行方法 2:PFC 框架
可行方法 3:VFC 框架?
本論文方法:FFC 框架
大規(guī)模分類采用 FC 訓(xùn)練時損失函數(shù)如下:
在每一次反傳過程中,所有的類中心都會更新:
但 FC 太大了,直觀的思路是合理地選擇一定比例的類中心,即如下 Vj 為 1 部分:
由上述動機(jī),引出了如下初步的方案:
首先,為了解決長尾帶來的影響,本文引入兩個 loaders,分別是基于 id 采樣的 id_loader 和基于樣本采樣的 instance_loader,有了這兩個 loader。在每個 epoch 當(dāng)中,樣本多的類和樣本少的(few-shot)類能夠有機(jī)會被訓(xùn)練到。
其次,在訓(xùn)練開始之前,先將一部分樣本送入 id group,這里假設(shè)放入 10% id 的樣本進(jìn)入 group。這時候 gallery 用的是隨機(jī)參數(shù)。
然后,訓(xùn)練開始時,batch 樣本挨個進(jìn)入 probe net。然后對于每個 batch 里面的樣本就有兩種情況:1.)group 中存在此樣本同樣 id 的特征,2.)group 中不存在同類樣本的特征。對于這兩種情況,分別稱之為 existing id 和 fresh id。對于 existing 的樣本,用特征和 group 里面的特征做內(nèi)積,計(jì)算與標(biāo)簽的交叉熵?fù)p失函數(shù),后回傳。對于 fresh 的樣本,與 group 里面的樣本進(jìn)行最小化余弦相似度。
最后,對 group 里面特征更新,采取新類中心替換,依據(jù)現(xiàn)有類中心加權(quán)的原則。對于 gallery net,采用 moving average 策略把 probe 里面的參數(shù)漸漸更新進(jìn)去。
本論文方法:trick 介紹?
1.)引入的 ID Group,其 size 是個可調(diào)參數(shù),一般默認(rèn)為 3 萬。
2.)為達(dá)到穩(wěn)定訓(xùn)練,參考 moco 類方法,引入 moving average,相應(yīng)收斂情況分別為:
實(shí)驗(yàn)結(jié)果
1. 雙 Loader 消融實(shí)驗(yàn)
2. SOTA 方法效果對比
3. 顯存與樣本吞吐對比?