物體檢測的過去、現在和未來

2021-02-25 深藍學院
本文整理自俞剛博士在深藍學院的直播公開課,全文約3500字。公開課視頻請點擊文末「閱讀原文」觀看。本報告分為4個部分,物體檢測的簡介、物體檢測的過去、現在以及未來,每個部分都從學術和工業兩種角度進行分析介紹。

上圖簡單描述了物體檢測的發展歷程時間軸。2012年深度學習熱潮興起,接著2013年有學者將深度學習應用到檢測領域,開啟了傳統方法向深度學習的過渡轉變。我將2019年之前的發展視為物體檢測的過去,2019年至2020年看作檢測的現在,2020年以後屬於檢測的未來。

2013年之前檢測方法大多以傳統方法為主,特徵提取加分類器是那些年檢測的重心所在,2013年至2016年是檢測的飛速發展階段,多種神經網絡結構的問世大大改變了檢測算法的格局。

2020年開始,新方向的引出,使得深度學習研究者燃起了新的希望,那麼,在未來多少年內可以真正解決檢測問題(How far from solving)呢,是當下眾多學者所關心的問題。從工業界領域來看,算法的實用性仍有不足,比如自動駕駛中檢測的結果存在不穩定的抖動,遮擋嚴重的場景下檢測效果不佳等。

視覺識別(Visual Recognition)是計算機視覺領域最核心的一環,物體檢測(Object Detection)是其中一個子類。從視覺識別的角度來說,有很多種不同的表現形式,最簡單的方式是bounding-box,這就是本報告所講的檢測任務,還有point的形式(即分割任務)以及key-point形式(即關鍵點檢測任務)。

物體檢測算法的評估標準常用AP(Average Precision)作為評價指標,AP會定義precision和recall兩個指標。Precision是指檢測結果的正確率,recall是指檢測的召回率。

每個檢測算法都可調整輸出與groud truth之間匹配的IoU閾值,減小閾值,可以得到更高的recall,但同時precision也會有所下降,以recall為橫軸,precision為縱軸可以畫出一條曲線,AP就相當於對這條曲線求積分。

2014年,COCO數據集引入後,在原來的基礎上提出新的評價標準mmAP,這個評價標準是先對所有類別的AP取平均得到mAP,然後再求0.5~0.95不同IoU閾值(step為0.05)下的mAP的均值得到最終mmAP。

 

在深度學習之前,傳統方法主要分為特徵提取和分類器設計兩個階段。具體操作為用滑動窗(sliding window)遍歷整張圖像,並對窗內的圖像提取特徵,再進行分類器檢測。

(1)由於要對每一個滑動窗口進行計算,整體計算量很大;(2)求解每個滑動窗時,可能會造成context信息(上下文信息或者全局信息)丟失。

特徵提取階段常用的方法有Haar、HOG、LBP、ACF等算子,常用的分類器有SVM、Boosting、Random Forest等。

傳統方法的特徵和分類器之間的關聯較為微弱,但在深度學習中二者之間的聯繫更為緊密。一個卷積神經網絡本身就具備特徵提取能力,同時也具備分類的能力,因此深度學習很好的將特徵和分類器整合在一起發揮更大的價值。

傳統方法的特徵是人工設計的,並且層次較淺,而深度學習網絡的特徵相對就更深一些,因此相對深度學習方法,傳統方法的特徵表達能力較為受限。但是,傳統方法的一個好處在於層次簡單因而方便調試(算法的可解釋性較好)。

以下圖的行人檢測為例,從圖像提取HOG特徵,再把位置點乘上去,就可以得到很像人形的圖片,可解釋並且方便研究人員調試。

 

總結來看,深度學習之前的傳統檢測方法優缺點如下:

優點

缺點

1. 在CPU上較為有效;

2. 易於調試,可解釋性強;

3. 適用於數據量較少的情況。

1. 在大數據集上的表現性能較為局限;

2. 難以利用GPU來進行並行加速。

2013年-2014年是基於深度學習的物體檢測飛速發展的階段,主要分成兩類:一種是one stage,代表作有Densebox、YOLO、SSD以及RetinaNet等,另一種是two stage,代表作有RCNN系列、RFCN、FPN、MaskRCNN等。

One Stage和Two Stage的不同是,One Stage是給定一張圖,直接分類回歸,Two Stage是給定一張圖,先提出一系列proposal(非背景區域),然後再在proposal上進行分類回歸(對非背景區域進行更細化的檢測)。 

 

One Stage(單階段法)

以Densebox算法為例,它的pipeline較為簡單,圖像經過CNN網絡,在最後的feature map上的每個點直接生成一個框,然後進行回歸。該方法在目標框有重疊(物體遮擋嚴重)時,不能正確的區分重疊的ground truth的歸屬性(算法中不容易進行assign)。

 

DenseBox的問題在於L2損失對尺度的魯棒性不佳(UnitBox對此進行改進)、ground truth分配問題(SSD對此進行改進)、定位精度不佳(後續引入Two Stage方法進行優化)、誤檢測情況較為常見(後續引入Two Stage方法進行優化)。

YOLO算法的輸入是一張圖片,然後對圖片進行網格化的分割,在每個網格中生成一個類別和兩個目標框,然後將框的分類和回歸統一到一個loss進行學習。Yolo後來又提出v2,v3,v4版本(甚至還出現有些爭議的v5版本)。

SSD檢測算法也是經典檢測算法之一,引入了Anchor概念,在每個點上設置9個anchor,回歸時基於每個anchor分別進行回歸,並將位置坐標回歸問題轉化為框的offset回歸問題。不僅如此,SSD還在多個不同深度的feature map層次上進行anchor的分類回歸,因為較淺的feature map上的anchor更容易關注小物體。

然而,較淺的feature map的語義信息較少,這點在後續的DSSD、RON、RetinaNet中進行了改進,比如在工業界常用的RetinaNet雖然也是多層次特徵,但是相比SSD,採用了先下採樣再上採樣的方法,語義信息也得到了保證。

對one stage方法的總結, one stage方法主要關注三點:

2.feature信息流的設計(多層次特徵融合);

3.loss的設計以及sample(隨機採樣或者難例挖掘等)的設計。

Two stage精度高但是整體算法很複雜計算量大,因此該類的方法主要是在加速方面進行改進。RCNN算法在當時的檢測領域是開創性的工作,當然也存在很多問題,如速度極慢以及沒有端到端的優化。之後便相繼提出了fast rcnn和faster rcnn,以softmax代替svm分類器,以RPN神經網絡代替原始proposal生成網絡。

之後,RFCN網絡繼續對速度進行優化,通過復用計算實現減小計算量的目的。在RFCN之後提出了Deformable Convolutional Networks,在網格上增添了一個可調整大小的offset,可以根據目的自適應的調整感受野,從而使得卷積的信息更為充分。

在Two Stage中還存在一個經典工作——FPN,現在FPN已經是一種非常常用的網絡設計方式。後來提出的MaskRCNN,解決了ROIPooling的對齊問題並實現了多任務學習的目標(分類、檢測、分割)。

總結來說,two stage方法主要關注兩點:速度和性能。

2017年之後物體檢測任務越走越難,陷入一個小低谷,已有的解決方法都較為成熟了,但實用性仍然不足。物體檢測器的pipeline如下圖所示,我們從這個框架的每個細節進行分析介紹。

 

Backbone 在早期的論文中,基本所有的backbone都是基於分類任務設計的,分類任務相比檢測任務對特徵的解析度要求不高,其好處在於感受域很大,但空間上的損失也會很多,這對檢測很不友好。

如果為了得到更多stage的高解析度的feature,可以在網絡添加額外的層(DetNet算法,如下圖的最後兩個16x層),但是這又會出現這些新層的隨機初始化的問題。

 

Head 如何設計一個更好更快的head進行檢測。Light head RCNN從head通道上入手,通過減少channel數來提升速度,當然之後還有ThunderNet的繼續改進等。 

Pretraining 在分類任務上的預訓練遷移到檢測上會有很多問題,因此引入專門針對檢測而設計的數據集——Objects365,該數據集量級為69萬張圖,V2版本有大約200萬張圖,每個檢測框都會完整地進行標註,這對訓練目標檢測網絡來說較為友好。同時,如果在檢測任務上預訓練再遷移到檢測,還可以把head預訓練,這也是通過預訓練來提高性能的重要的點。

Scale 以人臉檢測為例,人臉的尺度變化非常大。在之前的工作中,我們可以通過像SSD、FPN那種,採用多層feature來融合預測或者直接在圖像預處理上進行縮放到不同尺度來訓練。SFace算法是對於處理人臉檢測任務中尺度變化較為有效的方法,其將anchor-based和anchor-free兩種方法結合,前者可以對一些標準尺寸的人臉表現良好,後者可以對一些非標準的人臉進行自適應。

Batchsize 早期的工作如R-CNN、Faster RCNN、RetinaNet、Mask RCNN等都會將batchsize設定的很小,但這也會引出很多問題,比如小batchsize會導致訓練時間增加、統計不準確、正負樣本不均衡等。於是2018年,有人提出了MegDet算法解決了batchsize較小的問題。

Crowd 以密集場景的行人檢測為例,遮擋問題非常嚴重,如何採用更好的策略解決遮擋下的檢測問題也是目標檢測領域很有意思的話題。

現在的物體檢測方向可以從3個角度描述:

(3)more category,即更多的檢測種類。

對於upper bound,課中主要介紹了MegDetV2和EfficientDet兩篇工作,前者融合檢測和分割任務,後者是用NAS搜索網絡。

對於few shot,有些類別物體天生數據量少,因此希望用較少的數據量(小樣本)得到較好的檢測性能。Few-Shot Object Detection with Attention-RPN and Multi-Relation Detector這篇論文提出了一個通用的小樣本目標檢測模型,不需要重新訓練或者fine-tuning就能識別新種類的目標。這類領域有很多相關工作可以參考。

對於more category,如何在更多的種類信息下還能保持高的性能以及甚至讓多種類信息反哺檢測,也是研究的熱點方向。要真正解決物體檢測問題,還要多遠?雖然在物體檢測方面我們已經做了很多研究工作,但實際上還有很長一段路要走。在未來的研究中,我們希望mmAP能達到90以上的精度,FP(false positive)也能得到較好的處理。如何對大尺度的數據集進行處理,如何進行半監督訓練和自監督訓練,如何更好對上下文信息進行理解,如何設計新的pipeline都是值得研究的問題。點擊『閱讀原文』觀看公開課視頻

相關焦點

  • 「時間」只是大腦的幻覺——不存在過去、現在和未來,如何理解?
    本文參加百家號#科學了不起#系列徵文賽在這張血月的延時影像中,我們在一張影像中看到了月亮的所有三個時態:過去、現在和未來。「時間」是最常用的名詞。時間這個詞本身就有多種用途:我們可以消磨時間,節省時間,花掉時間。
  • 港中文李弘揚:物體檢測最新進展
    由中國科學院大學主辦,中國科學院大學學生會承辦,讀芯術作為指定合作自媒體的「AI未來說·青年學術論壇」第三期「計算機視覺」專場已於2019年3月24日下午在中科院舉行。港中文李弘揚博士為大家帶來報告《物體檢測最新進展》。李弘揚,香港中文大學多媒體實驗室(MMLab)博士生,微軟亞洲研究院實習生。博士期間導師為王曉剛教授。
  • 人體姿態估計的過去、現在和未來
    這兩個維度在深度學習時代也是非常至關重要的,只是深度學習往往會把特徵提取,分類,以及空間位置的建模都在一個網絡中直接建模,所以不需要獨立的進行拆解,這樣更方便設計和優化。現在從2012年AlexNet開始,深度學習開始快速發展,從最早的圖片分類問題,到後來的檢測,分割問題。
  • 四維圖新 MineData 的過去,現在和未來
    我們要做第一個吃螃蟹的人——開放核心算法和雲平臺。」過去:四維圖新 MineData 平臺先給大家簡單介紹一下四維圖新 MineData 1.0 位置大數據平臺。這個平臺由四維圖新旗下的子公司世紀高通負責運營。
  • 美圖秀秀的過去、現在和未來
    大家可能會問,為什麼美圖秀秀現在才做社交?是不是有點晚了?如果聚焦在圖片社交的垂直領域,現在做剛剛好,就像十年前的我們做美圖秀秀一樣是一個剛好的機會點。我們分析過圖片分析路徑,發現在中國網際網路裡面,除了像微信朋友圈和微博,在圖片社交這個垂類沒有頭部產品,所以我們做社交是在做一個增量的空間。
  • 卷積神經網絡 物體檢測 FPN
    2017年,kaiming和rbg再次合作(一作Tsung-Yi Lin),提出了FPN解決小物體檢測的問題FPN(feature pyramid network)從rcnn到fater rcnn,物體的分類都是在最後conv層的feature map上做的,而此時feature map每個點對應的是原圖的一個區域,如果我們要檢測的物體比較小,很容易漏檢;所謂低層的特徵淺但是位置精細,高層的特徵深但是位置粗糙,因此如何加入多尺度特徵是本篇要解決的問題,如下是幾種方案:(a)通過多尺度圖片分別獲取多尺度特徵
  • 並沒有什麼沒有過去,現在和未來
    從來就沒有過去,現在,未來。唯有當心分別時,過去,現在未來才出現了。沒有任何事情可以發生在過去,也沒有什麼事情會發生在未來,一切只是存在,僅僅只是存在,我們唯一能做的就是在這個微小的範圍,行使一點有限的選擇,但無論如何選擇,這一切已然存在。
  • 7種用於物體檢測的傳感器
    有許多不同的物體感測技術。下面將討論七個最常見的類型,以及它們的操作,優點和約束條件的簡要說明。 1. 機電 最基本的傳感器是機電限位開關。這些設備包含一個敏感的微開關,當一個機械驅動器被檢測到的物體取代時,它的狀態會發生變化。滾軸、觸鬚和槓桿是許多不同製造商提供的致動器版本。由於這些設備是由運動部件組成的,所以容易磨損和損壞。
  • SSD物體檢測算法詳解
    物體檢測算法,按算法結構,可以分為one-stage和two-stage兩類。
  • 馮端:漫談物理學的過去、現在與未來
    因此他從物理學歷史發展的角度,窺測未來的前景,並表示了物理學有光明的未來。如今,20年過去了,正如馮端先生的預想,物理學正在急速地發展中,而且有更多的未知問題在等著我們。撰文 | 馮端 (南京大學物理系)「物理學的過去、現在和未來」是一個非常大而且重要的題目,也是一個非常難講的題目,特別是涉及物理學的未來,結果往往是貽笑大方。
  • 細粒度物體檢測算法的升級揭秘
    在眾多模型使用場景中,小目標物體的檢測比較常見,一般的目標檢測算法往往效果不理想;因此,EasyDL團隊針對小目標物體的檢測進行了專項優化,並取得了令人矚目的效果提升。自AlexNet在2012年ImageNet比賽上展露頭角以來,計算機視覺各個方向和神經網絡的聯繫變得越發緊密,物體檢測也不例外。
  • 曠視發布通用物體檢測數據集 Objects365,開啟 CVPR 物體檢測挑戰賽
    日前,曠視發布最大通用物體檢測數據集 Objects365,並基於該數據集以及去年公布的 CrowdHuman 數據集,發起三項物體檢測挑戰賽,並將在 CVPR 2019 上舉辦 workshop,邀請優勝隊伍在現場進行比賽分享,共同探討檢測問題的瓶頸及優化方向。
  • 勿用過去的假設對待現在和未來的事情
    人的行為來源於決策假設的建立和對於假設的評估,而通常人們對於假設的建立和假設的評估因已知的未知和未知的未知而做出錯誤的對待。其中,人們經常也最容易做出「用過去的假設對待今天和未來的事情」,失去對事物的客觀對待;對未來慣用「經驗「對待,停止創新和創造,也停止了成功!讓90後談談對抗美援朝的看法,也許他們都會說:唉,國人還吃不飽,何必援朝。
  • 了解Apollo 2.5和3.0裡廣泛使用的單目攝像頭物體檢測模塊
    上周,來自百度美研Apollo感知團隊的資深軟體架構師——陳光,在Apollo開發者社群內為我們帶來關於《基於單目攝像頭的物體檢測》的內容分享。幫助開發者更加了解Apollo 2.5和3.0裡廣泛使用的單目攝像頭物體檢測模塊。
  • 卷積神經網絡 物體檢測 SSD
    2015年,YOLO之後,另外一個直接回歸的方法SSD,以state-of-the-art的檢測效果和檢測效率橫空出世;SSD,single shot multibox detector直接看下圖吧,可以看出,YOLO是在卷積層後加了FC,然後預估2*7*7共49個位置98BBox;而SSD顯著的不同就是多尺度:1) 多尺度的feature map上提取特徵,通過3*3的卷積核,保證特徵的細粒度和豐富性; 2) 多尺度feature map上抽取anchor,每張圖共有7308個BBox,遠大於YOLO的98;
  • 放棄機器學習,Python 如何進行物體檢測?
    學習在不使用機器學習或任何框架的情況下,如何在Python中進行物體檢測。作者 | Ravindu Senaratne譯者 | 彎月,責編 | 屠敏頭圖 | CSDN 下載自視覺中國以下為譯文:每當我們聽說「物體檢測」時,就會想到機器學習和各種不同的框架。
  • 英語美文 |於我,過去、現在和未來
    於我,過去、現在和未來商討聚會各執一詞紛擾不息My lusts usurp the present tense.And strangle reason in his seat.林林總總的欲望,掠取著我的現在把"理性"扼殺於它的寶座 My loves leap through the future's fenceTo dance with dream-enfranchised feet.
  • 過去、現在、未來是一種錯覺
    須菩提,過去心不可得,現在心不可得,未來心不可得。」「為什麼這樣說呢?須菩提,若能通達心的本性,就會知道過去、現在、未來三時,心都了不可得。」無垢光尊者在《三休息》中經常講:「過去心」跟昨天的夢沒有差別。前一剎那的心,現在一絲一毫的痕跡也沒有,留下來的只是憶念,而不是過去心的本體。
  • 過去、現在和未來有明確界限嗎?惠勒延遲選擇實驗意味著什麼?
    在宏觀世界之中,過去、現在和未來是有著明確的界限的,此時此刻就是現在,而在此之前就是過去,在此之後則是未來。過去的行為會影響到現在的我們,而現在的一舉一動又會成為未來的原因,這個順序是不可逆的,在未來所發生的一切都不會導致現在和過去的歷史發生變化,就是這樣一個最為基本的常識,在微觀世界之中似乎也並不適用。
  • 三叉戟的過去、現在與未來
    三叉戟的過去、現在與未來 ——致敬瑪莎拉蒂106周年2020年12月2日,摩德納 —— 2020年註定將成為瑪莎拉蒂歷史上值得銘記的非凡時刻——在蘊藏於品牌基因的無畏精神指引下