日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 目标检测 >内容正文

目标检测

吴恩达《卷积神经网络》精炼笔记(3)-- 目标检测

發布時間:2025/3/15 目标检测 76 豆豆
生活随笔 收集整理的這篇文章主要介紹了 吴恩达《卷积神经网络》精炼笔记(3)-- 目标检测 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

AI有道

不可錯過的AI技術公眾號

關注

1

Object Localization

前兩節課程中,我們介紹的是利用CNN模型進行圖像分類。除此之外,本周課程將繼續深入介紹目標定位和目標檢測(包含多目標檢測)。

標準的CNN分類模型我們已經很熟悉了,如下所示:

原始圖片經過CONV卷積層后,Softmax層輸出4 x 1向量,分別是:

注意,class label也可能是概率。上述四個向量分別對應pedestrain,car,motorcycle和background四類。

對于目標定位和目標檢測問題,其模型如下所示:

原始圖片經過CONV卷積層后,Softmax層輸出8 x 1向量。除了包含上述一般CNN分類3 x 1向量(class label)之外,還包含了(bx, by),表示目標中心位置坐標;還包含了bh和bw,表示目標所在矩形區域的高和寬;還包含了Pc,表示矩形區域是目標的概率,數值在0~1之間,且越大概率越大。一般設定圖片左上角為原點(0, 0),右下角為(1, 1)。在模型訓練時,bx、by、bh、bw都由人為確定其數值。例如上圖中,可得bx=0.5,by=0.7,bh=0.3,bw=0.4。

輸出label可表示為:

若Pc=0,表示沒有檢測到目標,則輸出label后面的7個參數都可以忽略。

對于損失函數Loss function,若使用平方誤差形式,有兩種情況:

  • Pc=1,即y1=1:

  • Pc=0,即y1=0:

當然,除了使用平方誤差之外,還可以使用邏輯回歸損失函數,類標簽c1,c2,c3c1,c2,c3也可以通過softmax輸出。比較而言,平方誤差已經能夠取得比較好的效果。

2

Landmark Detection

除了使用矩形區域檢測目標類別和位置外,我們還可以僅對目標的關鍵特征點坐標進行定位,這些關鍵點被稱為landmarks。

例如人臉識別,可以對人臉部分特征點坐標進行定位檢測,并標記出來,如下圖所示:

該網絡模型共檢測人臉上64處特征點,加上是否為face的標志位,輸出label共有64x2+1=129個值。通過檢測人臉特征點可以進行情緒分類與判斷,或者應用于AR領域等等。

除了人臉特征點檢測之外,還可以檢測人體姿勢動作,如下圖所示:

3

Object Detection

目標檢測的一種簡單方法是滑動窗算法。這種算法首先在訓練樣本集上搜集相應的各種目標圖片和非目標圖片。注意訓練集圖片尺寸較小,盡量僅包含相應目標,如下圖所示:

然后,使用這些訓練集構建CNN模型,使得模型有較高的識別率。

最后,在測試圖片上,選擇大小適宜的窗口、合適的步進長度,進行從左到右、從上倒下的滑動。每個窗口區域都送入之前構建好的CNN模型進行識別判斷。若判斷有目標,則此窗口即為目標區域;若判斷沒有目標,則此窗口為非目標區域。

滑動窗算法的優點是原理簡單,且不需要人為選定目標區域(檢測出目標的滑動窗即為目標區域)。但是其缺點也很明顯,首先滑動窗的大小和步進長度都需要人為直觀設定。滑動窗過小或過大,步進長度過大均會降低目標檢測正確率。而且,每次滑動窗區域都要進行一次CNN網絡計算,如果滑動窗和步進長度較小,整個目標檢測的算法運行時間會很長。所以,滑動窗算法雖然簡單,但是性能不佳,不夠快,不夠靈活。

4

Convolutional Implementation of Sliding Windows

滑動窗算法可以使用卷積方式實現,以提高運行速度,節約重復運算成本。

首先,單個滑動窗口區域進入CNN網絡模型時,包含全連接層。那么滑動窗口算法卷積實現的第一步就是將全連接層轉變成為卷積層,如下圖所示:

全連接層轉變成卷積層的操作很簡單,只需要使用與上層尺寸一致的濾波算子進行卷積運算即可。最終得到的輸出層維度是1 x 1 x 4,代表4類輸出值。

單個窗口區域卷積網絡結構建立完畢之后,對于待檢測圖片,即可使用該網絡參數和結構進行運算。例如16 x 16 x 3的圖片,步進長度為2,CNN網絡得到的輸出層為2 x 2 x 4。其中,2 x 2表示共有4個窗口結果。對于更復雜的28 x 28 x3的圖片,CNN網絡得到的輸出層為8 x 8 x 4,共64個窗口結果。

之前的滑動窗算法需要反復進行CNN正向計算,例如16 x 16 x 3的圖片需進行4次,28 x 28 x3的圖片需進行64次。而利用卷積操作代替滑動窗算法,則不管原始圖片有多大,只需要進行一次CNN正向計算,因為其中共享了很多重復計算部分,這大大節約了運算成本。值得一提的是,窗口步進長度與選擇的MAX POOL大小有關。如果需要步進長度為4,只需設置MAX POOL為4 x 4即可。

5

Bounding Box Predictions

滑動窗口算法有時會出現滑動窗不能完全涵蓋目標的問題,如下圖藍色窗口所示。

YOLO(You Only Look Once)算法可以解決這類問題,生成更加準確的目標區域(如上圖紅色窗口)。

YOLO算法首先將原始圖片分割成n x n網格,每個網格代表一塊區域。為簡化說明,下圖中將圖片分成3 x 3網格。

然后,利用上一節卷積形式實現滑動窗口算法的思想,對該原始圖片構建CNN網絡,得到的的輸出層維度為3 x 3 x 8。其中,3 x 3對應9個網格,每個網格的輸出包含8個元素:

如果目標中心坐標(bx,by)不在當前網格內,則當前網格Pc=0;相反,則當前網格Pc=1(即只看中心坐標是否在當前網格內)。判斷有目標的網格中,bx,by,bh,bw限定了目標區域。值得注意的是,當前網格左上角坐標設定為(0, 0),右下角坐標設定為(1, 1),(bx,by)范圍限定在[0,1]之間,但是bh,bw可以大于1。因為目標可能超出該網格,橫跨多個區域,如上圖所示。目標占幾個網格沒有關系,目標中心坐標必然在一個網格之內。

劃分的網格可以更密一些。網格越小,則多個目標的中心坐標被劃分到一個網格內的概率就越小,這恰恰是我們希望看到的。

6

Intersection Over Union

IoU,即交集與并集之比,可以用來評價目標檢測區域的準確性。

如上圖所示,紅色方框為真實目標區域,藍色方框為檢測目標區域。兩塊區域的交集為綠色部分,并集為紫色部分。藍色方框與紅色方框的接近程度可以用IoU比值來定義:

IoU可以表示任意兩塊區域的接近程度。IoU值介于0~1之間,且越接近1表示兩塊區域越接近。

7

Non-max Suppression

YOLO算法中,可能會出現多個網格都檢測出到同一目標的情況,例如幾個相鄰網格都判斷出同一目標的中心坐標在其內。

上圖中,三個綠色網格和三個紅色網格分別檢測的都是同一目標。那如何判斷哪個網格最為準確呢?方法是使用非最大值抑制算法。

非最大值抑制(Non-max Suppression)做法很簡單,圖示每個網格的Pc值可以求出,Pc值反映了該網格包含目標中心坐標的可信度。首先選取Pc最大值對應的網格和區域,然后計算該區域與所有其它區域的IoU,剔除掉IoU大于閾值(例如0.5)的所有網格及區域。這樣就能保證同一目標只有一個網格與之對應,且該網格Pc最大,最可信。接著,再從剩下的網格中選取Pc最大的網格,重復上一步的操作。最后,就能使得每個目標都僅由一個網格和區域對應。如下圖所示:

總結一下非最大值抑制算法的流程:

  • 剔除Pc值小于某閾值(例如0.6)的所有網格;

  • 選取Pc值最大的網格,利用IoU,摒棄與該網格交疊較大的網格;

  • 對剩下的網格,重復步驟2。

  • 8

    Anchor Boxes

    到目前為止,我們介紹的都是一個網格至多只能檢測一個目標。那對于多個目標重疊的情況,例如一個人站在一輛車前面,該如何使用YOLO算法進行檢測呢?方法是使用不同形狀的Anchor Boxes。

    如下圖所示,同一網格出現了兩個目標:人和車。為了同時檢測兩個目標,我們可以設置兩個Anchor Boxes,Anchor box 1檢測人,Anchor box 2檢測車。也就是說,每個網格多加了一層輸出。原來的輸出維度是 3 x 3 x 8,現在是3 x 3 x 2 x 8(也可以寫成3 x 3 x 16的形式)。這里的2表示有兩個Anchor Boxes,用來在一個網格中同時檢測多個目標。每個Anchor box都有一個Pc值,若兩個Pc值均大于某閾值,則檢測到了兩個目標。

    在使用YOLO算法時,只需對每個Anchor box使用上一節的非最大值抑制即可。Anchor Boxes之間并行實現。

    順便提一下,Anchor Boxes形狀的選擇可以通過人為選取,也可以使用其他機器學習算法,例如k聚類算法對待檢測的所有目標進行形狀分類,選擇主要形狀作為Anchor Boxes。

    9

    YOLO Algorithm

    這一節主要介紹YOLO算法的流程,算是對前幾節內容的回顧。網絡結構如下圖所示,包含了兩個Anchor Boxes。

    • For each grid call, get 2 predicted bounding boxes.

    • Get rid of low probability predictions.

    • For each class (pedestrian, car, motorcycle) use non-max suppression to generate final predictions.

    10

    Region Proposals

    之前介紹的滑動窗算法會對原始圖片的每個區域都進行掃描,即使是一些空白的或明顯沒有目標的區域,例如下圖所示。這樣會降低算法運行效率,耗費時間。

    為了解決這一問題,盡量避免對無用區域的掃描,可以使用Region Proposals的方法。具體做法是先對原始圖片進行分割算法處理,然后支隊分割后的圖片中的塊進行目標檢測。

    Region Proposals共有三種方法:

    • R-CNN: 滑動窗的形式,一次只對單個區域塊進行目標檢測,運算速度慢。

    • Fast R-CNN: 利用卷積實現滑動窗算法,類似第4節做法。

    • Faster R-CNN: 利用卷積對圖片進行分割,進一步提高運行速度。

    比較而言,Faster R-CNN的運行速度還是比YOLO慢一些。

    喜歡就請贊賞或轉發分享一下吧

    往 期 推 薦

    【1】吳恩達《卷積神經網絡》精煉筆記(1)-- 卷積神經網絡基礎

    【2】吳恩達《卷積神經網絡》精煉筆記(2)-- 深度卷積模型:案例研究

    【3】深入淺出機器學習技法(一):線性支持向量機(LSVM)

    【4】干貨 | 機器學習基石精選文章鏈接

    【5】機器學習中的維度災難

    長按二維碼掃描關注

    AI有道

    ID:redstonewill

    紅色石頭

    個人微信 : WillowRedstone

    新浪微博:@RedstoneWill

    總結

    以上是生活随笔為你收集整理的吴恩达《卷积神经网络》精炼笔记(3)-- 目标检测的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。