概念 | 使用合成數(shù)據(jù)集來做目標(biāo)檢測
今天,我們開始一系列專門討論一個特定的機器學(xué)習(xí)問題,這個問題通常由合成數(shù)據(jù)來補充:物體檢測。在這個系列的第一篇文章中,我們將討論什么是目標(biāo)檢測,以及數(shù)據(jù)從哪里來,以及如何讓你的網(wǎng)絡(luò)來檢測物體的邊界框下面。

問題設(shè)定:什么是目標(biāo)檢測
如果你有過計算機視覺方面的經(jīng)驗,或者聽過許多關(guān)于現(xiàn)代深度學(xué)習(xí)的神奇之處的介紹,你可能知道圖像分類問題:如何區(qū)分貓和狗?

盡管這只是一個二元分類(一個回答是/否的問題),但這已經(jīng)是一個非常復(fù)雜的問題了。真實世界的圖像“生活”在一個非常高維的空間中,以數(shù)百萬計的特征為數(shù)量級:例如,從數(shù)學(xué)上講,一張一百萬像素的彩色照片是一個超過三百萬數(shù)字的向量!因此,圖像分類的重點不在于實際學(xué)習(xí)決策面(分離類),而在于特征提?。何覀?nèi)绾螌⑦@個巨大的空間投射到更易于管理的東西上,而分割平面可以相對簡單?
這正是深度學(xué)習(xí)取得如此成功的原因:它不依賴于人們以前用于計算機視覺的手工功能SIFT,而是從零開始學(xué)習(xí)自己的特征。分類器本身仍然非常簡單和經(jīng)典:幾乎所有用于分類的深度神經(jīng)網(wǎng)絡(luò)都帶有一個softmax層,即基本的邏輯回歸。關(guān)鍵是如何將圖像空間轉(zhuǎn)換為邏輯回歸足夠的表示,而這正是網(wǎng)絡(luò)的其他部分的切入點。如果你看一些早期文章你可以找到例子,人們學(xué)習(xí)深度神經(jīng)網(wǎng)絡(luò)提取特征,然后應(yīng)用其他分類器,如支持向量機:

但到目前為止,這是很少見的:一旦我們有足夠的數(shù)據(jù)來訓(xùn)練最先進(jìn)的特征提取器,在最后進(jìn)行簡單的邏輯回歸就容易得多,也足夠了。在過去的十年里,人們已經(jīng)開發(fā)了大量的圖像特征提取器:AlexNet, VGG, Inception, ResNet, DenseNet, EfficientNet……
要把它們?nèi)拷忉屒宄饪恳黄┛臀恼率沁h(yuǎn)遠(yuǎn)不夠的,但常見的思路是,你有一個特征提取主干,后面跟著一個簡單的分類層,然后你在一個大型圖像分類數(shù)據(jù)集中從頭到尾地訓(xùn)練整個東西,通常是ImageNet,這是一個巨大的人工標(biāo)記和管理的數(shù)據(jù)集,有超過1400萬張圖片,標(biāo)記了近22000個類別,以語義層次組織:

一旦你完成了這些,網(wǎng)絡(luò)已經(jīng)學(xué)會了為真實世界的攝影圖像提取信息豐富的、有用的特征,所以即使你的類不是來自ImageNet,它也通常是一個調(diào)整以適應(yīng)這個新信息的問題。當(dāng)然,你仍然需要新的數(shù)據(jù),但通常不是數(shù)以百萬計的圖像。當(dāng)然,除非這是一個完全新穎的圖像領(lǐng)域,如x射線或顯微鏡,在那里ImageNet不會有太大幫助。
但視覺并不是這樣工作的。當(dāng)我環(huán)顧四周,我在腦海中看到的不僅僅是單一的標(biāo)簽。我在我的視野中區(qū)分不同目標(biāo):現(xiàn)在我看到了鍵盤,我自己的手,一個監(jiān)視器,一個咖啡杯,一個網(wǎng)絡(luò)攝像頭等等,基本上是在同一時間。我能夠從一個單一的靜止圖像中同樣區(qū)分所有這些物體。
這意味著我們需要從分類開始繼續(xù)下去、分類時為整個圖像分配一個標(biāo)簽(你可以分配多個multilabel分類模型,但是他們?nèi)匀皇钦麄€圖像打標(biāo)簽),其他問題,需要更細(xì)粒度的分析圖像中的目標(biāo)。人們通常會區(qū)分幾種不同的問題:
分類,就像我們上面討論的那樣。 分類 + 定位,你假設(shè)圖像中只有一個中心目標(biāo),你需要去定位這個目標(biāo),畫一個包圍框出來。 物體檢測,我們今天的主題,需要在一張圖像中找到多個目標(biāo),并框出來。 最后,分割是更加復(fù)雜的問題,你需要找到物體的實際輪廓,即,基本上把圖像上的每一個像素劃分為一個物體或背景,分割也有幾種不同的方式(語義分割、邊界分割和實例分割)。
用貓和狗解釋如下:

從數(shù)學(xué)上講,這意味著網(wǎng)絡(luò)的輸出不再僅僅是一個類標(biāo)簽。它現(xiàn)在是幾個不同的類標(biāo)簽,每個都有相關(guān)聯(lián)的矩形。矩形由四個數(shù)字定義(兩個相對角的坐標(biāo),或一個角的坐標(biāo),寬度和高度),所以現(xiàn)在每個輸出在數(shù)學(xué)上是四個數(shù)字和一個類標(biāo)簽。

從機器學(xué)習(xí)的角度來看,在我們開始思考如何解決問題之前,我們需要找到數(shù)據(jù)?;镜腎mageNet數(shù)據(jù)集沒有什么用:它是一個分類數(shù)據(jù)集,所以它有像“Cat”這樣的標(biāo)簽,但是它沒有邊界框!手動標(biāo)注現(xiàn)在是一個更困難的問題:你必須為每個目標(biāo)提供一個邊界框,而不僅僅是點擊正確的類標(biāo)簽,而且在一張照片上可能有許多目標(biāo)。
下面是一個用于通用目標(biāo)檢測問題的標(biāo)注的例子。

你可以想象,為目標(biāo)檢測而手動標(biāo)注一幅圖像需要整整幾分鐘,而不是像用于分類那樣需要幾秒鐘。那么像這樣的大型數(shù)據(jù)集從何而來呢?
目標(biāo)檢測數(shù)據(jù)集:真實
讓我們首先看看我們有什么樣的使用真實目標(biāo)和人工標(biāo)注的目標(biāo)檢測數(shù)據(jù)集。首先,讓我們快速回顧最流行的數(shù)據(jù)集。
ImageNet數(shù)據(jù)集作為ImageNet大規(guī)模視覺識別挑戰(zhàn)(ILSVRC)的關(guān)鍵部分而受到歡迎,這是2010年至2017年舉辦的一系列比賽。ILSVRC系列見證了一些卷積神經(jīng)網(wǎng)絡(luò)中最有趣的進(jìn)展:AlexNet、VGG、GoogLeNet、ResNet和其他著名的架構(gòu)都在這里首次亮相。
一個不太為人所知的事實是ILSVRC也一直有一個物體檢測競賽,而ILSVRC系列實際上是與另一個著名的競賽合作發(fā)展起來的,2005年至2012年舉辦的PASCAL Visual Object Classes (VOC) Challenge。這些挑戰(zhàn)也從一開始就體現(xiàn)了目標(biāo)檢測,這就是第一個著名的數(shù)據(jù)集的由來,通常被稱為PASCAL VOC數(shù)據(jù)集。以下是“飛機”和“自行車”類別的一些示例圖片:


按照今天的標(biāo)準(zhǔn),PASCAL VOC是相當(dāng)小的:20個類,只有11530張圖片,27450個目標(biāo)標(biāo)注,這意味著PASCAL VOC每幅圖片只有不到2.5個目標(biāo)。目標(biāo)通常是相當(dāng)大的和突出的照片,所以PASCAL VOC是一個“容易”的數(shù)據(jù)集。盡管如此,在很長一段時間里,它仍然是最大的手動標(biāo)注的目標(biāo)檢測數(shù)據(jù)集之一,并在數(shù)百篇關(guān)于目標(biāo)檢測的論文中默認(rèn)使用。
在規(guī)模和復(fù)雜性方面的下一步是Microsoft Common Objects in Context (Microsoft COCO)數(shù)據(jù)集。到目前為止,它已經(jīng)超過200K帶有150萬個目標(biāo)實例的標(biāo)記圖像,它不僅提供了邊界框,而且還提供了(相當(dāng)粗糙的)分割輪廓。以下是一些示例圖片:

正如你所看到的,現(xiàn)在的目標(biāo)更加多樣化,它們可以有非常不同的大小。這實際上是一個物體檢測的大問題:很難讓一個單一的網(wǎng)絡(luò)同時檢測大大小小的物體,這也是為什么MS COCO被證明是一個比PASCAL VOC更難的數(shù)據(jù)集的主要原因。數(shù)據(jù)集仍然是非常相關(guān)的,在目標(biāo)檢測,實例分割和其他賽道每年舉行比賽。
我想談?wù)摰淖詈笠粋€通用目標(biāo)檢測數(shù)據(jù)集是目前最大的可用數(shù)據(jù)集:谷歌的Open Images Dataset。到目前為止,他們到了Open Images V6,它有大約190萬張圖片和1600萬個邊界框600個目標(biāo)類。這相當(dāng)于每幅圖像有8.4個邊界框,所以場景相當(dāng)復(fù)雜,物體的數(shù)量也更加均勻分布:

這些例子看起來有趣、多樣,有時非常復(fù)雜:


實際上,Open Images之所以成為可能,是因為目標(biāo)檢測本身的進(jìn)步。如上所述,手工繪制邊界框非常耗時。幸運的是,在某種程度上,現(xiàn)有的目標(biāo)檢測器變得非常好,以至于我們可以將邊界框委托給機器學(xué)習(xí)模型,而只用人類來驗證結(jié)果。也就是說,你可以將模型設(shè)置為一個相對較低的靈敏度閾值,這樣你就不會錯過任何重要的信息,但結(jié)果可能會有很多誤報。然后請人工標(biāo)注確認(rèn)正確的邊界框并拒絕誤報。
據(jù)我所知,這一范式的轉(zhuǎn)變發(fā)生在2016年前后Papadopoulos等人的一篇論文之后。它更易于管理,這就是Open Images成為可能的原因,但是對于人類標(biāo)注者來說,它仍然有很多工作要做,所以只有像谷歌這樣的巨人才能提供如此規(guī)模的目標(biāo)檢測數(shù)據(jù)集。
當(dāng)然,還有更多的對象檢測數(shù)據(jù)集,通常用于更專門的應(yīng)用程序:這三個是覆蓋通用目標(biāo)檢測的主要數(shù)據(jù)集。但等等,這是一個關(guān)于合成數(shù)據(jù)的博客,我們還沒有說過一個字!讓我們解決這個問題。
目標(biāo)檢測數(shù)據(jù)集:為什么要合成數(shù)據(jù)?
有了像Open Images這樣的數(shù)據(jù)集,主要的問題就變成了:我們到底為什么需要合成數(shù)據(jù)來進(jìn)行目標(biāo)檢測?Open Images看起來幾乎和ImageNet一樣大,我們還沒有聽說過很多關(guān)于圖像分類的合成數(shù)據(jù)。
對于目標(biāo)檢測,答案在于細(xì)節(jié)和具體的用例。是的,Open Images很大,但它并不能覆蓋你可能需要的所有內(nèi)容。舉個恰當(dāng)?shù)睦?假設(shè)你正在為一輛自動駕駛汽車構(gòu)建一個計算機視覺系統(tǒng)。當(dāng)然,Open Images有“Car”類別,但你需要更多的細(xì)節(jié):不同交通情況下的不同類型的汽車、路燈、各種類型的行人、交通標(biāo)志等等。如果你所需要的只是一個圖像分類問題,那么你可以為新類創(chuàng)建自己的數(shù)據(jù)集,每個類包含幾千張圖像,手工為其貼上標(biāo)簽,并為新類調(diào)整網(wǎng)絡(luò)。在目標(biāo)檢測,特別是分割中,它就不那么容易工作了。
考慮一下最新和最大的自動駕駛真實數(shù)據(jù)集:Caesar et al.的nuScenes,順便說一下,這篇論文已經(jīng)被CVPR 2020接受了。他們創(chuàng)建了一個包含6個攝像機、5個雷達(dá)和1個激光雷達(dá)的完整數(shù)據(jù)集,并使用3D邊界框(這是我們走向3D場景理解的新標(biāo)準(zhǔn))和人類場景描述進(jìn)行了充分標(biāo)注。以下是數(shù)據(jù)的一個樣本:

所有這些都是在視頻中完成的!nuScenes數(shù)據(jù)集包含1000個場景,每20秒以2Hz的頻率進(jìn)行關(guān)鍵幀采樣,所以總共有40000張非常相似的40張標(biāo)注圖像(來自同一個場景)。給這類數(shù)據(jù)貼上標(biāo)簽已經(jīng)是一項龐大而昂貴的工作。
將其與名為ProcSy的自動駕駛合成數(shù)據(jù)集進(jìn)行比較。它的特點是像素完美的分割(使用合成數(shù)據(jù),沒有區(qū)別,你可以像要求分割邊界框一樣簡單),使用CityEngine構(gòu)建深度地圖的城市場景與交通,然后用虛幻引擎渲染。它看起來像這樣(帶有分割、深度和遮擋圖):

在論文中,比較了不同分割模型在惡劣天氣條件和其他可能使問題復(fù)雜化的因素下的性能。為此,他們只需要11000幀的小數(shù)據(jù)樣本,這就是你可以從上面的網(wǎng)站下載的(順便說一下,壓縮文件就有30Gb)。他們報告說,這個數(shù)據(jù)集是從135萬可用的道路場景中隨機抽取的。但最重要的部分是數(shù)據(jù)集是程序生成的,所以實際上它是一個潛在的無限數(shù)據(jù)流,你可以改變地圖、交通類型、天氣狀況等等。
英文原文:https://synthesis.ai/2020/08/05/object-detection-with-synthetic-data-i-introduction-to-object-detection/
---END---
雙一流大學(xué)研究生團(tuán)隊創(chuàng)建,一個專注于目標(biāo)檢測與深度學(xué)習(xí)的組織,希望可以將分享變成一種習(xí)慣。
將「目標(biāo)檢測與深度學(xué)習(xí)」設(shè)為星標(biāo)★,并點擊右下角“在看“,解鎖推送限制,第一時間收到我們的分享。
整理不易,點贊三連↓
