導讀
本文討論使用生成數(shù)據(jù)集來做目標檢測的一些基礎概念。
今天,我們開始一系列專門討論一個特定的機器學習問題,這個問題通常由合成數(shù)據(jù)來補充:物體檢測。在這個系列的第一篇文章中,我們將討論什么是目標檢測,以及數(shù)據(jù)從哪里來,以及如何讓你的網絡來檢測物體的邊界框下面。
問題設定:什么是物體檢測
如果你有過計算機視覺方面的經驗,或者聽過許多關于現(xiàn)代深度學習的神奇之處的介紹,你可能知道圖像分類問題:如何區(qū)分貓和狗?
盡管這只是一個二元分類(一個回答是/否的問題),但這已經是一個非常復雜的問題了。真實世界的圖像“生活”在一個非常高維的空間中,以數(shù)百萬計的特征為數(shù)量級:例如,從數(shù)學上講,一張一百萬像素的彩色照片是一個超過三百萬數(shù)字的向量!因此,圖像分類的重點不在于實際學習決策面(分離類),而在于特征提?。何覀內绾螌⑦@個巨大的空間投射到更易于管理的東西上,而分割平面可以相對簡單?
這正是深度學習取得如此成功的原因:它不依賴于人們以前用于計算機視覺的手工功能SIFT,而是從零開始學習自己的特征。分類器本身仍然非常簡單和經典:幾乎所有用于分類的深度神經網絡都帶有一個softmax層,即基本的邏輯回歸。關鍵是如何將圖像空間轉換為邏輯回歸足夠的表示,而這正是網絡的其他部分的切入點。如果你看一些早期文章你可以找到例子,人們學習深度神經網絡提取特征,然后應用其他分類器,如支持向量機:
但到目前為止,這是很少見的:一旦我們有足夠的數(shù)據(jù)來訓練最先進的特征提取器,在最后進行簡單的邏輯回歸就容易得多,也足夠了。在過去的十年里,人們已經開發(fā)了大量的圖像特征提取器:AlexNet, VGG, Inception, ResNet, DenseNet, EfficientNet……
要把它們全部解釋清楚,光靠一篇博客文章是遠遠不夠的,但常見的思路是,你有一個特征提取主干,后面跟著一個簡單的分類層,然后你在一個大型圖像分類數(shù)據(jù)集中從頭到尾地訓練整個東西,通常是ImageNet,這是一個巨大的人工標記和管理的數(shù)據(jù)集,有超過1400萬張圖片,標記了近22000個類別,以語義層次組織:
一旦你完成了這些,網絡已經學會了為真實世界的攝影圖像提取信息豐富的、有用的特征,所以即使你的類不是來自ImageNet,它也通常是一個調整以適應這個新信息的問題。當然,你仍然需要新的數(shù)據(jù),但通常不是數(shù)以百萬計的圖像。當然,除非這是一個完全新穎的圖像領域,如x射線或顯微鏡,在那里ImageNet不會有太大幫助。
但視覺并不是這樣工作的。當我環(huán)顧四周,我在腦海中看到的不僅僅是單一的標簽。我在我的視野中區(qū)分不同目標:現(xiàn)在我看到了鍵盤,我自己的手,一個監(jiān)視器,一個咖啡杯,一個網絡攝像頭等等,基本上是在同一時間。我能夠從一個單一的靜止圖像中同樣區(qū)分所有這些物體。
這意味著我們需要從分類開始繼續(xù)下去、分類時為整個圖像分配一個標簽(你可以分配多個multilabel分類模型,但是他們仍然是整個圖像打標簽),其他問題,需要更細粒度的分析圖像中的目標。人們通常會區(qū)分幾種不同的問題:
分類,就像我們上面討論的那樣。
分類 + 定位,你假設圖像中只有一個中心目標,你需要去定位這個目標,畫一個包圍框出來。
物體檢測,我們今天的主題,需要在一張圖像中找到多個目標,并框出來。
最后,分割是更加復雜的問題,你需要找到物體的實際輪廓,即,基本上把圖像上的每一個像素劃分為一個物體或背景,分割也有幾種不同的方式(語義分割、邊界分割和實例分割)。
用貓和狗解釋如下:
從數(shù)學上講,這意味著網絡的輸出不再僅僅是一個類標簽。它現(xiàn)在是幾個不同的類標簽,每個都有相關聯(lián)的矩形。矩形由四個數(shù)字定義(兩個相對角的坐標,或一個角的坐標,寬度和高度),所以現(xiàn)在每個輸出在數(shù)學上是四個數(shù)字和一個類標簽。
從機器學習的角度來看,在我們開始思考如何解決問題之前,我們需要找到數(shù)據(jù)。基本的ImageNet數(shù)據(jù)集沒有什么用:它是一個分類數(shù)據(jù)集,所以它有像“Cat”這樣的標簽,但是它沒有邊界框!手動標注現(xiàn)在是一個更困難的問題:你必須為每個目標提供一個邊界框,而不僅僅是點擊正確的類標簽,而且在一張照片上可能有許多目標。
下面是一個用于通用目標檢測問題的標注的例子。
你可以想象,為目標檢測而手動標注一幅圖像需要整整幾分鐘,而不是像用于分類那樣需要幾秒鐘。那么像這樣的大型數(shù)據(jù)集從何而來呢?
目標檢測數(shù)據(jù)集:真實
讓我們首先看看我們有什么樣的使用真實目標和人工標注的目標檢測數(shù)據(jù)集。首先,讓我們快速回顧最流行的數(shù)據(jù)集。
ImageNet數(shù)據(jù)集作為ImageNet大規(guī)模視覺識別挑戰(zhàn)(ILSVRC)的關鍵部分而受到歡迎,這是2010年至2017年舉辦的一系列比賽。ILSVRC系列見證了一些卷積神經網絡中最有趣的進展:AlexNet、VGG、GoogLeNet、ResNet和其他著名的架構都在這里首次亮相。
一個不太為人所知的事實是ILSVRC也一直有一個物體檢測競賽,而ILSVRC系列實際上是與另一個著名的競賽合作發(fā)展起來的,2005年至2012年舉辦的PASCAL Visual Object Classes (VOC) Challenge。這些挑戰(zhàn)也從一開始就體現(xiàn)了目標檢測,這就是第一個著名的數(shù)據(jù)集的由來,通常被稱為PASCAL VOC數(shù)據(jù)集。以下是“飛機”和“自行車”類別的一些示例圖片:
按照今天的標準,PASCAL VOC是相當小的:20個類,只有11530張圖片,27450個目標標注,這意味著PASCAL VOC每幅圖片只有不到2.5個目標。目標通常是相當大的和突出的照片,所以PASCAL VOC是一個“容易”的數(shù)據(jù)集。盡管如此,在很長一段時間里,它仍然是最大的手動標注的目標檢測數(shù)據(jù)集之一,并在數(shù)百篇關于目標檢測的論文中默認使用。
在規(guī)模和復雜性方面的下一步是Microsoft Common Objects in Context (Microsoft COCO)數(shù)據(jù)集。到目前為止,它已經超過200K帶有150萬個目標實例的標記圖像,它不僅提供了邊界框,而且還提供了(相當粗糙的)分割輪廓。以下是一些示例圖片:
正如你所看到的,現(xiàn)在的目標更加多樣化,它們可以有非常不同的大小。這實際上是一個物體檢測的大問題:很難讓一個單一的網絡同時檢測大大小小的物體,這也是為什么MS COCO被證明是一個比PASCAL VOC更難的數(shù)據(jù)集的主要原因。數(shù)據(jù)集仍然是非常相關的,在目標檢測,實例分割和其他賽道每年舉行比賽。
我想談論的最后一個通用目標檢測數(shù)據(jù)集是目前最大的可用數(shù)據(jù)集:谷歌的Open Images Dataset。到目前為止,他們到了Open Images V6,它有大約190萬張圖片和1600萬個邊界框600個目標類。這相當于每幅圖像有8.4個邊界框,所以場景相當復雜,物體的數(shù)量也更加均勻分布:
這些例子看起來有趣、多樣,有時非常復雜:
實際上,Open Images之所以成為可能,是因為目標檢測本身的進步。如上所述,手工繪制邊界框非常耗時。幸運的是,在某種程度上,現(xiàn)有的目標檢測器變得非常好,以至于我們可以將邊界框委托給機器學習模型,而只用人類來驗證結果。也就是說,你可以將模型設置為一個相對較低的靈敏度閾值,這樣你就不會錯過任何重要的信息,但結果可能會有很多誤報。然后請人工標注確認正確的邊界框并拒絕誤報。
據(jù)我所知,這一范式的轉變發(fā)生在2016年前后Papadopoulos等人的一篇論文之后。它更易于管理,這就是Open Images成為可能的原因,但是對于人類標注者來說,它仍然有很多工作要做,所以只有像谷歌這樣的巨人才能提供如此規(guī)模的目標檢測數(shù)據(jù)集。
當然,還有更多的對象檢測數(shù)據(jù)集,通常用于更專門的應用程序:這三個是覆蓋通用目標檢測的主要數(shù)據(jù)集。但等等,這是一個關于合成數(shù)據(jù)的博客,我們還沒有說過一個字!讓我們解決這個問題。
目標檢測數(shù)據(jù)集:為什么要合成數(shù)據(jù)?
有了像Open Images這樣的數(shù)據(jù)集,主要的問題就變成了:我們到底為什么需要合成數(shù)據(jù)來進行目標檢測?Open Images看起來幾乎和ImageNet一樣大,我們還沒有聽說過很多關于圖像分類的合成數(shù)據(jù)。
對于目標檢測,答案在于細節(jié)和具體的用例。是的,Open Images很大,但它并不能覆蓋你可能需要的所有內容。舉個恰當?shù)睦?假設你正在為一輛自動駕駛汽車構建一個計算機視覺系統(tǒng)。當然,Open Images有“Car”類別,但你需要更多的細節(jié):不同交通情況下的不同類型的汽車、路燈、各種類型的行人、交通標志等等。如果你所需要的只是一個圖像分類問題,那么你可以為新類創(chuàng)建自己的數(shù)據(jù)集,每個類包含幾千張圖像,手工為其貼上標簽,并為新類調整網絡。在目標檢測,特別是分割中,它就不那么容易工作了。
考慮一下最新和最大的自動駕駛真實數(shù)據(jù)集:Caesar et al.的nuScenes,順便說一下,這篇論文已經被CVPR 2020接受了。他們創(chuàng)建了一個包含6個攝像機、5個雷達和1個激光雷達的完整數(shù)據(jù)集,并使用3D邊界框(這是我們走向3D場景理解的新標準)和人類場景描述進行了充分標注。以下是數(shù)據(jù)的一個樣本:
所有這些都是在視頻中完成的!nuScenes數(shù)據(jù)集包含1000個場景,每20秒以2Hz的頻率進行關鍵幀采樣,所以總共有40000張非常相似的40張標注圖像(來自同一個場景)。給這類數(shù)據(jù)貼上標簽已經是一項龐大而昂貴的工作。
將其與名為ProcSy的自動駕駛合成數(shù)據(jù)集進行比較。它的特點是像素完美的分割(使用合成數(shù)據(jù),沒有區(qū)別,你可以像要求分割邊界框一樣簡單),使用CityEngine構建深度地圖的城市場景與交通,然后用虛幻引擎渲染。它看起來像這樣(帶有分割、深度和遮擋圖):
在論文中,比較了不同分割模型在惡劣天氣條件和其他可能使問題復雜化的因素下的性能。為此,他們只需要11000幀的小數(shù)據(jù)樣本,這就是你可以從上面的網站下載的(順便說一下,壓縮文件就有30Gb)。他們報告說,這個數(shù)據(jù)集是從135萬可用的道路場景中隨機抽取的。但最重要的部分是數(shù)據(jù)集是程序生成的,所以實際上它是一個潛在的無限數(shù)據(jù)流,你可以改變地圖、交通類型、天氣狀況等等。
這是合成數(shù)據(jù)的主要特點:一旦你預先投資創(chuàng)建(或者更準確地說,尋找和調整)你感興趣的目標的3D模型,你就可以擁有盡可能多的數(shù)據(jù)。如果你做了額外的投資,你甚至可以轉向全尺寸交互式3D世界,但這又是另一個故事了。
英文原文:https://synthesis.ai/2020/08/05/object-detection-with-synthetic-data-i-introduction-to-object-detection/
作者:Sergey Nikolenk
編譯:ronghuaiyang
責任編輯:lq6
-
數(shù)據(jù)
+關注
關注
8文章
7134瀏覽量
89456 -
物體檢測
+關注
關注
0文章
8瀏覽量
9207
原文標題:如何使用合成數(shù)據(jù)集來做目標檢測?
文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論