日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

集成訓練多數據集,打造通用目標檢測模型方法詳解

 mynotebook 2022-11-06 發(fā)布于湖南

QQ交流群:444129970。群內有大佬負責解答大家的日常學習、科研、代碼問題,群文件里也有很多計算機視覺入門的電子版資料,想要領取的朋友請加群自行下載。


在目標檢測的實際應用中,常常會出現需要泛化的目標檢測系統(tǒng)的情況。如城市安防中,需要目標檢測系統(tǒng)能夠檢測足夠多類別的目標,才能達到更好的安防效果。 

但目前常用的目標檢測數據集中包含的類別數量有限,使用單個數據集訓練的目標檢測模型已經不能滿足需求,如何集成訓練多個數據集成為了一大熱門研究方向。

集成多個數據集存在的問題

如果簡單的將多個數據集拼接起來進行訓練,往往不會獲得性能上的提升。主要原因有以下三點:

各數據集的標簽空間不統(tǒng)一

每個數據集都規(guī)定了各自的標簽空間,并且不同標簽空間之間有重疊。但名字相同的標簽在不同數據集中的語義可能不同,如COCO中的mouse代表鼠標,OpenImages中的mouse代表老鼠;名字不同的標簽在不同數據集中的語義可能相同,如VOC中的aeroplane和COCO中的airplane均代表飛機。

如果單純通過標簽的名稱來對齊會導致標簽語義上的歧義。

各數據集的標注不一致

由于各數據集的標簽空間不統(tǒng)一,導致各數據集的前景背景定義不同。如圖1中所示,A數據集中包含person、car類別,但不包含face類別。B數據集中包含person、face類別,但不包含car類別。那么在各自的標注中,A數據集會將car作為前景標注出來,但會將face作為背景忽略;而B數據集會將face作為前景標注出來,但會將car作為背景忽略[2]。這樣就導致了不同數據集之間的前景背景定義存在歧義。

圖片

圖1 標注不一致問題

各數據集的領域差異

由于各數據集的應用場景,圖片獲取方式的不同導致數據集之間可能存在巨大的領域差異。如圖2左為自動駕駛場景,圖2右為室內場景,可以明顯看出左右兩張圖像的風格不同,這會導致模型提取的特征分布不同。

圖片

圖2 領域差異問題

Simple Multi-dataset Detection論文解讀

由于篇幅有限,本文只介紹一種通過“構建統(tǒng)一標簽空間”來集成訓練多個數據集的論文《Simple Multi-dataset Detection》[1]。這里會概述一下論文中的方法,分析其實驗結果,并簡單介紹代碼使用方法,以幫助讀者更好地了解集成訓練。

方法

UT-Austin提出了一種在多個大型數據集(COCO,Objects365,OpenImages等)上訓練通用目標檢測器的簡單方法,并基于此方法奪得了ECCV2020魯棒視覺挑戰(zhàn)賽中的目標檢測和實例分割兩個賽道的第一名。

圖片

圖3 不同類型的目標檢測模型

傳統(tǒng)的目標檢測模型如圖3(a)所示,單個數據集對應單個模型,這樣用COCO數據集訓練的模型并不能用于檢測Objects365數據集的目標。所以作者采用圖3(b)的方式訓練一個multi-head(多檢測頭)模型,共享模型的backbone,對于不同的數據集使用不同的檢測頭,每個數據集的loss單獨計算。這樣訓練出來的模型可以識別多個數據集中的目標,不過當前的模型并沒有做到統(tǒng)一標簽空間,如COCO、Objects365、OpenImages均檢測出Car類別的目標,但會輸出三個重復的檢測框。

但通過這種方式,我們獲得了統(tǒng)一標簽空間的基礎,在同一張輸入圖片上可以獲得各數據集檢測頭的檢測結果,這樣就可以通過對比檢測結果來對齊不同數據集的標簽。

作者提出了一種新穎的data-diven方式來學習統(tǒng)一的標簽空間:根據不同檢測頭在各數據集驗證集合上的檢測結果來學習標簽空間。作者將標簽空間的融合看作學習一個原始空間  到統(tǒng)一空間  的映射關系矩陣:

圖片

而具體的優(yōu)化目標為以下公式:

圖片

圖片

上述公式中出現的變量含義如下所示:
圖片:數據集k對應的映射矩陣
●   :在統(tǒng)一標簽空間下各預測框的類別概率分布
●   :在數據集k的標簽空間下各預測框的類別概率分布
圖片:優(yōu)化損失函數
其中由于無法直接對映射矩陣進行優(yōu)化(無法得知初始映射關系),作者巧妙的將問題轉化為窮舉在各數據集上每個類別可能的映射關系的方式來尋找最佳的映射矩陣,詳細可見論文中的推導[1]。

圖片

表1 不同Sampling策略效果

如表1 所示,作者對比了在不同sampling策略下的效果。其中uniform dataset sampling表示平衡不同數據集間的樣本數量;class-aware sampling表示平衡數據集內的長尾效應,增加尾部類別被sample的概率。

從結果可以看出uniform dataset sampling和class-aware sampling都是十分重要的。

實驗結果

作者使用了ResNet-50 backbone的CascadeRCNN進行實驗。首先如表2所示,作者提出的多檢測頭模型在不融合標簽空間的情況下已經可以比擬單檢測頭模型(8x schedule),為后面學習標簽映射矩陣提供了可靠的檢測結果。

圖片

表2 多檢測頭模型與單檢測頭模型效果對比

通過上述方法學習到統(tǒng)一標簽空間后,在表3中作者對比了不同版本統(tǒng)一標簽空間對模型性能的影響(2x schedule)。

● GloVe embedding表示使用GloVe詞向量合并相似的標簽;

● Learned,distortion和Learned,AP表示使用論文中提出的方法,通過不同優(yōu)化損失函數學習到的統(tǒng)一標簽空間。

● Expert human表示人工手動合并的統(tǒng)一標簽空間。

圖片

表3 不同版本標簽空間效果對比

如表4所示,統(tǒng)一標簽空間后的模型可以泛化應用到其他下游數據集,并在多數下游數據集上取得更好的效果。

圖片

表4 在其他數據集上的泛化性能

最后如果將模型規(guī)模擴大,使用ResNeSt200作為backbone并訓練8x schedule,模型的效果可以和一些SOTA模型相媲美。

圖片表5 擴大模型規(guī)模

作者對學習到的統(tǒng)一標簽空間進行分析,發(fā)現該方法成功的將名字相同但語義不同的標簽分開,將名字不同但語義相同的標簽融合到一起。

實際操作

作者開源了論文的代碼,下載地址:

https://github.com/xingyizhou/UniDet

該論文依賴detectron2框架,需要先按照說明安裝detectron2。說明文檔:https://detectron2./en/latest/tutorials/install.html

安裝好detectron2后需要將該論文代碼放到projects目錄下:

cd /path/to/detectron2/projects
git clone https://github.com/xingyizhou/UniDet.git

推薦將需要的COCO,Objects365,OpenImages(使用2019 challenge版本)數據集下載到統(tǒng)一的文件夾。(下載地址:https://storage./openimages/web/challenge2019.html)

下載好的COCO和Objects365可以直接使用,但OpenImages需要進行轉換:

# 使用UniDet/tools/convert_datasets/convert_oid.py進行轉換 
python convert_oid.py --path /path/to/openimage --version challenge_2019 --subsets train
python convert_oid.py --path /path/to/openimage --version challenge_2019 --subsets val --expand_label

按下面的命令將DETECTRON2_DATASETS變量指向下載數據集的文件夾,使detectron2可以讀到數據集。

export DETECTRON2_DATASETS=/path/to/datasets

接下來需要下載challenge-2019-label500-hierarchy.json文件。(下載地址:https://storage./openimages/challenge_2019/challenge-2019-label500-hierarchy.json)

并將UniDet/unidet/evaluation/oideval.py文件中的oid_hierarchy_path修改到該文件實際路徑。

圖片

另外在UniDet/configs/中可以看到與OpenImages數據相關的config文件中有一項openimages_challenge_2019_train_v2_cat_info.json文件在代碼倉庫中并沒有給出。

圖片

通過觀察訓練代碼可得知該文件中存放有OpenImages數據集各類別的圖片數量統(tǒng)計信息,可自行對OpenImages各類別的圖片數進行統(tǒng)計來生成,具體格式如下:

 [{'id'419'image_count'45938}, 
 {'id'231'image_count'31351}, 
 {'id'71'image_count'130723}, 
 {'id'114'image_count'378077}, 
 {'id'117'image_count'3262}, 
 {'id'30'image_count'289999}, 
 {'id'11'image_count'58145}, 
 {'id'165'image_count'265635}, 
 {'id'345'image_count'29521},
 ...

至此,全部準備工作完成,可以開始訓練。如果想以2x schedule訓練一個多檢測頭模型,則可通過以下命令行實現:

python UniDet/train_net.py --config-file UniDet/configs/Partitioned_COI_R50_2x.yaml
在UniDet/datasets/label_spaces/中,作者給出了各類統(tǒng)一后的標簽空間,這里展示一下按論文中提出的方法學習的標簽空間:
圖片
如果想復現學習標簽空間的步驟,可以在訓練好多檢測頭模型后得到在三個數據集的驗證集上的推理結果,并按照UniDet/tools/UniDet_learn_labelspace_mAP.ipynb中的步驟運行即可。
如果想添加自定義數據集,可以在UniDet/unidet/data/datasets/中注冊自定義數據集,并修改config文件。
具體如何注冊可參考detectron2文檔:https://detectron2./en/latest/tutorials/datasets.html
數據集下載

本文提到的相關數據集免費、高速檢索、下載地址:

● COCO 2014

https:///COCO_2014?source=bXBXZWl4aW4%3D

● COCO 2017

https:///COCO_2017?source=bXBXZWl4aW4%3D

● Objects365

https:///Objects365?source=bXBXZWl4aW4%3D

● OpenImages Challenge 2019

https:///Open_Images_Challenge_2019?source=bXBXZWl4aW4%3D

● OpenImages V4

https:///Open_Images_V4?source=bXBXZWl4aW4%3D

● OpenImages V6

https:///OpenImagesV6?source=bXBXZWl4aW4%3D

后記

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多