使用強大的SlimYOLOv3框架進行實時目標檢測概述

  • 實時對象檢測正席捲計算機視覺行業

  • 這是最新的實時對象檢測框架SlimYOLOv3的分步介紹

  • 我們着眼於SlimYOLOv3架構的各個方面,包括其在檢測對象下方的工作方式

     

介紹

人類可以在幾毫秒內挑選出我們視線中的物體。實際上–現在就四處看看。您已經進入了周圍環境,迅速檢測出存在的物體,現在正在看這篇文章。那花了多長時間?

 

那就是實時物體檢測。如果我們能讓機器做到這一點,那會是多麼酷?現在可以了!主要是由於最近在深度學習和計算機視覺方面取得的突破性進展,我們可以依靠對象檢測算法來不僅檢測圖像中的對象,而且可以以人類的速度和準確性來做到這一點。

 

您是否想學習實時對象檢測,但不確定從哪裏開始?您是否要建立一個計算機視覺模型來檢測上述視頻之類的物體?那麼本文適合您!

我們將首先研究對象檢測的各種細微差別(包括您可能面臨的潛在挑戰)。然後,我將介紹SlimYOLOv3框架,並深入研究其在實時檢測對象下面的工作方式。

 

目錄

  • 什麼是物體檢測?

  • 目標檢測的應用

  • 爲什麼要進行實時物體檢測?

  • 實時物體檢測中的挑戰

  • SlimYOLOv3簡介

  • 瞭解SlimYOLOv3的體系結構

     

 

什麼是物體檢測?

在深入研究如何實時檢測對象之前,讓我們先介紹一下基礎知識。如果您對計算機視覺世界還比較陌生,那麼這尤其重要。

 

物體檢測是一種用於識別圖像中物體位置的技術。如果圖像中只有一個對象,而我們要檢測該對象,則稱爲圖像定位。如果圖像中有多個對象怎麼辦?好吧,這就是對象檢測!

 

讓我用一個例子解釋一下:

左側的圖像只有一個對象(狗),因此檢測該對象將是圖像定位問題。右邊的圖像有兩個對象(貓和狗)。檢測這兩個對象將屬於對象檢測。

 

目標檢測的應用

目前,對象檢測已在行業中廣泛使用。任何懷有在計算機視覺領域工作的野心的人都應該牢記這些應用程序。

 

對象檢測的用例範圍從人身安全到自動車輛系統。讓我們討論其中一些當前和無處不在的應用程序。

 

 

 

無人駕駛汽車

這是對象檢測中最有趣和最新的應用之一。老實說,這是我真正着迷的。

 

自動駕駛汽車(也稱爲自動駕駛汽車)是能夠在很少或沒有人工指導的情況下自行移動的車輛。現在,爲了使汽車能夠決定下一步,即向前行駛,應用中斷或轉彎,它必須知道周圍所有物體的位置。使用對象檢測技術,汽車可以檢測到其他汽車,行人,交通信號燈等物體。

 

人臉檢測和人臉識別

人臉檢測和識別可能是計算機視覺最廣泛使用的應用程序。每次將圖片上傳到Facebook,Instagram或Google相冊時,它都會自動檢測圖像中的人物。這就是工作中計算機視覺的力量。

 

 

 

動作識別

你會喜歡的。目的是識別一個或多個系列圖像的活動或動作。對象檢測是其背後的核心概念,該概念檢測活動然後識別動作。這是一個很酷的例子:

 

對象計數

我們可以使用“對象檢測”算法來計數圖像甚至實時視頻中的對象數量。計算對象的數量有助於多種方式,包括分析商店的性能或估算人羣中的人數。

這些只是一些流行的對象檢測應用程序。行業中涌現出許多主機,因此,如果您知道任何值得一提的內容,請在下面的評論部分中大聲疾呼!

 

現在,事情來了–大多數應用程序都需要實時分析。我們行業的動態性質在很大程度上取決於即時結果,而實時目標檢測正是其中的關鍵。

 

爲什麼要進行實時物體檢測?

讓我們以自動駕駛汽車爲例。考慮到我們已經訓練了一個物體檢測模型,該模型需要花費幾秒鐘(例如,每個圖像2秒鐘)來檢測圖像中的物體,我們最終將該模型部署在自動駕駛汽車中。

 

您認爲這種模式會很好嗎?汽車能否檢測到前方的物體並採取相應措施?

 

當然不是!這裏的推理時間太多了。賽車將花費大量時間做出可能導致嚴重事故(例如事故)的決策。因此,在這種情況下,我們需要一個能夠提供實時結果的模型。該模型應該能夠在微秒內檢測到物體並進行推斷。

 

用於對象檢測的一些常用算法包括RCNN,Fast RCNN,Faster RCNN和YOLO。

 

執行實時對象檢測的挑戰

實時物體檢測模型應該能夠感知環境,解析場景並最終做出相應反應。該模型應該能夠識別場景中存在所有類型的對象。一旦確定了對象的類型,模型應通過在每個對象周圍定義一個邊界框來定位這些對象的位置。

 

因此,這裏有兩個功能。首先,對圖像中的對象進行分類(圖像分類),然後使用邊界框定位對象(對象檢測)。

 

在處理實時問題時,我們可能會面臨多個挑戰:

 

  1. 我們應對變化?這些變化可能在對象的形狀,亮度級別等方面有所不同。

  2. 部署對象檢測模型。這通常需要大量的內存和計算能力,尤其是在我們每天使用的計算機上

  3. 最後,我們還必須在檢測性能和實時要求之間保持平衡。通常,如果滿足實時要求,我們會發現性能下降,反之亦然。因此,平衡這兩個方面也是一個挑戰

那麼我們如何克服這些挑戰呢?好吧-這就是本文的重點-SlimYOLOv3框架!SlimYOLOv3旨在解決這些限制並以驚人的精度執行實時目標檢測。

 

首先讓我們瞭解SlimYOLOv3是什麼,然後我們將查看架構細節以更好地瞭解框架

 

SlimYOLOv3簡介

您能猜出深度學習管道如何工作嗎?以下是典型過程的快速摘要:

 

  • 首先,我們設計模型結構

  • 微調該模型的超參數

  • 訓練模型

  • 最後評估一下

 

模型中有多個組件或連接。這些連接中的一些經過幾次迭代後變得多餘,因此我們可以從模型中刪除這些連接。刪除這些連接稱爲修剪。

修剪不會顯着影響模型的性能,並且計算能力將大大降低。因此,在SlimYOLOv3中,對卷積層執行修剪。我們將在本文的下一部分中瞭解有關如何進行修剪的更多信息。

 

修剪後,我們對模型進行微調以補償模型性能的下降。

 

與原始YOLOv3相比,修剪後的模型導致較少的可訓練參數和較低的計算要求,因此對於實時對象檢測更加方便。

 

現在,讓我們討論SlimYOLOv3的體系結構,以更好,更清楚地瞭解此框架的工作原理。

 

瞭解SlimYOLOv3的體系結構

下圖說明了SlimYOLOv3的工作方式:

 

SlimYOLOv3是YOLOv3的修改版本。修剪YOLOv3的卷積層以實現更薄,更快的版本。但是等等-我們爲什麼首先要使用YOLOv3?爲什麼不使用其他對象檢測算法,例如RCNN,Faster RCNN?

 

爲什麼選擇YOLOv3?

深度對象檢測模型基本上有兩種(或兩類):

 

  • 兩級檢測

    器屬於RCNN家族的檢測器屬於兩級檢測器。該過程包含兩個階段。首先,我們提取區域提議,然後對每個提議進行分類並預測邊界框。這些檢測器通常會導致良好的檢測精度,但是這些檢測器與區域建議的推理時間需要大量的計算和運行時內存

  • 單級檢測

    器屬於YOLO系列的檢測器屬於單級檢測器。這是一個單階段過程。這些模型利用預定義的錨來覆蓋整個圖像的空間位置,比例和長寬比。因此,我們不需要額外的分支來提取區域建議。由於所有計算都在單個網絡中,因此它們比兩階段檢測器運行速度更快。YOLOv3還是單級檢測器,目前是物體檢測的最新技術

 

稀疏訓練

下一步是此YOLOv3模型的稀疏性訓練:

在這裏,我們使用以下步驟修剪YOLOv3模型:

 

  • 首先,我們評估YOLOv3模型每個組成部分的重要性。我將很快討論如何確定這些組件的重要性的細節

  • 評估重要性之後,我們將刪除次要的組件

刪除的組件可以是單個神經連接或網絡結構。爲了定義每個組件的重要性,我們基於它們的貢獻對網絡的每個神經元進行排名。有多種方法可以做到這一點:

 

  • 我們可以採用神經元權重的L1 / L2正則化方法

  • 每個神經元的平均激活

  • 神經元輸出不爲零的次數

在SlimYOLOv3中,重要性是根據神經元權重的L1正則化平均值計算的,該均值被視爲比例因子。這些比例因子的絕對值是通道的重要性。爲了加速收斂並改善YOLOv3模型的泛化,在每個卷積層之後使用批處理歸一化層。

 

SlimYOLOv3

然後,我們定義一個全局閾值(假設爲ŷ),並丟棄比例因子小於此閾值的任何通道。這樣,我們可以修剪YOLOv3架構並獲得SlimYOLOv3架構:

在評估比例因子時,未考慮YOLOv3體系結構的maxpool層和upsample層,因爲它們與層號的通道號無關。

 

微調

 

現在我們有了SlimYOLOv3模型,那麼下一步是什麼?

 

我們對其進行微調,以補償性能的下降,最後評估微調的模型,以確定修剪後的模型是否適合部署。

 

稀疏訓練實際上在減小縮放因子並因此使卷積層的特徵通道稀疏方面非常有效。以較大的懲罰因子α= 0.01進行訓練,會導致縮放因子的急劇衰減,並且模型開始過度擬合。

 

總結

本文涵蓋了很多基礎。我們看到了不同的對象檢測算法,例如RCNN,Fast RCNN,Faster RCNN,以及當前用於對象檢測的最新技術YOLO。然後,我們研究了SlimYOLOv3體系結構,它是YOLO的修剪版本,可用於實時對象檢測。

 

相關論文源碼下載地址:關注“圖像算法”微信公衆號

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章