目標檢測入門 下(吳恩達老師 學習筆記)

2021-10-10 06:53:38 字數 2649 閱讀 2138

目錄

互動比(intersection over union)

非極大值抑制(non-max suppression)

anchor boxes

yolo演算法

候選區域(region proposals )

互動比可以用來判斷檢測演算法的好壞

黃色面積除以綠色面積,iou的面積>0.5(閾值),則檢測正確。

假設需要在這張裡檢測汽車,按照上個部落格中提到的bounding box方法,假設上面放個19×19網格,這輛車只有乙個中點,所以理論上應該只有乙個格仔做出有車的**。但是在實踐中,對於每個格仔都執行一次目標定位演算法,會可能讓多個格仔都認為這個車的中點在這個格仔內,即最後可能會對同乙個物件做出多次檢測,而非極大值抑制就是確保一輛車只檢測一次,而不是每輛車都觸發多次檢測。

具體做法:這裡的公式簡化了,假設只檢測一類c1,所以pc直接用c1代替,pc表示是c1類別的概率(實際上是pc乘以c1 、c2 或c3 )。

先把概率小於0.6的**格仔刪除(這樣可以加快運算速度),如下圖。

接下來剩下的邊界框,就一直選擇概率pc最高的邊界框,然後把它輸出成**結果(高亮),同時把剩下邊界框與下圖高亮的邊界框有高iou值的邊框去掉。

這裡的一直選擇很重要,等於是先選出概率為0.9的這個框,然後通過非極大值抑制(即去除高iou),去除麵包車旁的兩個框,然後再剩下的框中選擇概率為0.8的框,然後迴圈迭代,直到沒有多餘的框

這樣就實現了每次只用乙個框識別出乙個車,每個車都只被檢測一次,如果直接選擇最高概率的框,這只能一張圖中只能檢測到一輛汽車了。

讓乙個格仔檢測出多個物件的方法。

假設要分類兩個目標,車和行人,則預先定義幾個不同形狀的anchor box(人工設定,也有自動的一些演算法),這裡舉例兩個,然後輸出的y則是之前兩個y合併的向量。

之前y的輸出是3×3×8,現在有兩個anchor box後,y的輸出是3×3×16,**出的兩個框(紫色),和標記的紅框相比,選擇iou(互動比)高的作為**框

構造訓練集:

實踐中,會把格仔劃分的更小如19×19,anchor box設定的更多如5個

中間的省略號是 卷積神經網路(其中全連線層用卷積層代替,所以可以輸出乙個3×3×16的張量,表示有3×3個y)

yolo檢測過程

然後對每個分類目標執行非極大值抑制方法得到最終的**結果。

典型代表是著名的r-cnn的演算法,意思是帶區域的卷積神經網路。這個演算法嘗試選出一些區域,在這些區域上執行卷積網路分類器是有意義的,而不需要對整個影象的每個格仔都執行檢測演算法,而是只選擇一些視窗,在少數視窗上執行卷積神經網路。

選出候選區域的方法是執行影象分割演算法,分割出不同的色塊,然後在每個色塊上執行分類器,最後輸出乙個標籤和邊界框。

但實際上會分割出很多色塊,導致r-cnn演算法太慢了,所以這些年來有一些對r-cnn演算法的改進工作

例如 —

fast r-cnn在分割出的每個色塊中執行卷積實現的滑動視窗(即沒有全連線層)

faster r-cnn使用卷積神經網路而不是傳統的分割演算法來獲得候選區域色塊

注:吳恩達老師認為大多數faster r-cnn的演算法實現還是比yolo演算法慢很多,雖然候選區域是乙個有趣的想法,但這個方法需要兩步,首先得到候選區域,然後再分類,這不如yolo可以只看一次更直接。

吳恩達老師課程機器學習筆記

無監督學習 線性回歸 代價函式j 主要演算法 1.監督學習 supervised learning 2.無監督學習 unsupervised learning 其他演算法 1.強化學習 reinforcement learning 2.推薦演算法 recommender systems right ...

人臉識別 (吳恩達老師 學習筆記)

目錄前言 一次學習 one shot learning siamese網路 孿生神經網路 triplet損失 三元組損失 人臉驗證與二分類 前言 人臉識別應用是目前應用最廣的乙個深度學習的落地專案,如下圖所示,只有真正的人臉才可以成功識別。人臉識別 face recognition 是乙個1 k的問...

吳恩達 深度學習 卷積神經網路 目標檢測

我們希望在圖中識別不同類別的目標,通過一系列卷積操作,得到輸出 y p c 是否有目標0 1 bx,by 目標中間相對於的位置座標 bh,bw 邊界框的尺寸 c1,c2,c3.cn 根據類別多少的one hot 如人臉68個特徵點,人體骨骼特徵點等 使用5x5,1x1卷積來實現全連線層 通過卷積的方...