Reading Andrew Ng DL 目標檢測

2021-08-30 21:31:14 字數 3401 閱讀 2804

目標檢測:

1、物件定位和特徵點檢測

目標檢測的神經網路的目標標籤和損失函式為:

2、基於滑動視窗的目標檢測演算法。

定義:我們以某個步幅滑動這些方框視窗遍歷整張,

對這些方形區域進行分類,判斷裡面有沒有汽車。

缺點:計算量大 粒度、步幅

3、 卷積的滑動視窗實現

基於滑動視窗的目標檢測演算法的缺點:計算量大  粒度、步幅

卷積大小的轉化公式:[(number + 2padding - filter)/s步長] + 1

在卷積層上應用這個滑動檢測演算法。

為什麼要將全連線層換成卷積層??

1、把神經網路的全連線層轉化成卷積層。具體操作就是用5*5的卷積核,將5*5的網路變成1*1的網路,就不是之前的全連線層了

可以看到輸出了位置資訊,並且不再限制輸入的大小。

4、bounding box **和yolo演算法

滑動視窗法的卷積實現,這個演算法效率更高,但仍然存在

問題,不能輸出最精準的邊界框

不同於卷積滑動檢測,yolo直接就是將輸入的分成3*3 (也可以更精細,如19*19),輸出3*3*8的矩陣。

- 如果乙個物件橫跨幾個格仔?

取物件的中點,分配在乙個格仔中(如上圖的黃點)

- 如何界定框的引數,x , y , w ,h ?

定義格仔左上這個點是(0,0),然後右下這個點是(1,1) , 然後中點座標和框的高度寬度都是相對於格仔來說的

5、交並比(intersection over union)

如何判斷物件檢測演算法運作良好呢?

一般約定,在計算機檢測任務中,如果??? ≥ 0.5,就說檢測正確

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

演算法可能對同乙個物件做出多次檢測,

所以演算法不是對某個物件檢測出一次,而是檢測出多次。非極大值抑 制這個方法可以

確保你的演算法對每個物件只檢測一次

如圖,每個格仔都覺得中心點在自己這裡,如何選擇最好的乙個

步驟:while迴圈:

將所有的**值,所有的邊界框??小於或等於某個閾值,比如?? ≤ 0.6的邊界框去掉。選擇概率??最高的邊界框,然後把它輸出成**結果

接下來去掉所有剩下的邊界框,把這些和輸出邊界框有高重疊面積和上一步輸出邊界框有很高交並比的邊界框全部拋棄,比如iou>=0.5得框去掉。

在剩下的未處理的框中重複上述的步驟,知道找出所有的**結果

注:之前一直不明白這個while迴圈有什麼用,找到??最高的然後用交並比解決剩下的框不就行了,現在知道其實這是多目標檢測,剩下的交並比低的框是別的目標的,然後在剩下的框中再選擇對另乙個目標概率最高的,重複上述步驟。

如下提圖,很明顯是檢測了兩個目標:

7、 anchor boxes

物件檢測中存在的乙個問題是每個格仔只能檢測出乙個物件

為了解決這個問題,使用 anchor box 這個概念

比如有兩個anchor box ,檢測每個目標都會預設輸出兩個格仔,然後目標標籤y為3*3*2*8,看目標的框與其中哪乙個anchor box 的交並比高,就pc = 1,否則為0.

也就是說,yolo的每乙個格仔都有兩個(或多個)anchor box

看上圖,第八個圖,車和5號an box交並比高,所以y的下半部分的pc = 1,檢測為乙個車,其他的部分dont care。

7、候選區域(選修)(region proposals (optional)

這是目標檢測的另乙個方向,不同於yolo的you only look once ,這個還是沿襲之前的滑動窗法,代表演算法是r-cnn等

如圖,用分割演算法(如聚類)先將影象分割成n塊,再色塊(其實也會輸出乙個邊界框)上進行分類

兩個步驟:proposal+classifier

得到色塊(區域)–> 在色塊上分類

r-cnn:用影象分割演算法,得到區域,再逐一對區域分類(引進色塊)

fast - rcnn:分類用的是滑動窗法的乙個卷積實現(改進classifier)

faster - rcnn:用卷積神經網路,而不是更傳統的分割演算法來獲得候選區域色塊(改進proposal)

8、 yolo演算法

因為之前取地平線面試被問到yolo的具體實現,

當時正值國慶high完,明明之前仔細看過,

但是還是忘得一乾二淨,所以要經常看,

現在把yolo123都看一下。

基於caffe框架復現yolov3目標檢測

新增過程 把upsample layer.hpp 放在include caffe layers下面 把upsample layer.cpp與upsample layer.cu放在src caffe layers下面 然後重新編譯 編譯成功之後就可以載入yolov3.prototxt與yolov3.c...

使用TensorFlow一步步進行目標檢測 1

目標檢測 object detection 是人工智慧最基礎的應用,不論是我們常見的人臉識別,還是高大上的自動駕駛,都離不開目標檢測。要從一幅複雜的畫面中識別出物體或人物,需要複雜的演算法,想想就覺得深奧,不過好在有tensorflow這樣的框架,具有強大的目標檢測api,讓沒有機器學習背景的人也可...

使用TensorFlow一步步進行目標檢測 2

資料集標籤 tensorflow目標檢測api要求所有標記的訓練資料都採用tfrecord檔案格式。如果我們的資料集如pascal voc資料集那樣附帶儲存在單個.xml檔案中的標籤,那麼我們可以使用名為create pascal tf record.py的檔案 可能需要稍作修改 將資料集轉換為tf...