目標檢測是計算機視覺領域中的乙個新興的應用方向,在構建目標檢測之前,我們首先了解一下object localization目標定位。
前面說過的分類任務就是演算法遍歷,判斷其中的物件是不是汽車,主要是分類
這裡所說的目標定位指的是我們不僅要用演算法判斷中是不是一輛汽車,還要在中標記出它的位置,用邊框或紅色方框把目標 標註圈起來,這就是定位分類問題。其中定位的意思是 判斷目標在中的具體位置。在目標檢測問題中,可以包含有多個目標,甚至單張中會有多個不同分類的目標,因此分類的思路可以幫助學習分類定位,而目標定位的思路又有助於學習目標檢測。
一般的分類問題,我們輸入一張到多層卷積神經網路中,它會輸出乙個特徵向量,並反饋給softmax單元來**型別。如果我們想定位中的目標具體的位置,我們可以讓神經網路多輸出幾個單元,具體來說就是讓神經網路再多輸出4個數字標記為bx、by、bh、bw。這四個數字是被檢測物件的邊界框的引數化表示。
(bx,by)表示為目標邊界框的中心點座標
bh表示為邊界框的高度
bw表示為邊界框的寬度
因此,訓練集不僅要包含神經網路要**的物件分類標籤,還要包含表示邊界框的這四個數字。接著採用監督學習演算法,輸出乙個分類標籤,還有這四個引數值,從而給出被檢測物件的邊界框位置。
如何為監督學習任務定義目標標籤y?
這裡有四個分類,神經網路輸出的是這四個數字和乙個分類標籤或分類標籤出現的概率。
目標標籤y的定義如下:
它是乙個向量,第乙個元件pc表示是否含有物件,如果物件屬於前三類,則pc=1,如果是background或者其他,則pc=0,即中沒有我們指定的物件。若我們檢測到物件,則接下來會輸出目標邊界框的四個引數bx、by、bw、bh。如果存在某個目標物件,則除了輸出pc=1,邊界框的四個引數,同時還會輸出c1、c2、c3,表示該物件屬於1~3中的哪一類,屬於哪一類其對應的cx就為1,其餘為c為0。如果輸入中沒有以上的3中物件或者說只有背景時,那麼pc=0,那麼標籤y中的其他引數將變得毫無意義,不要考慮邊框座標以及cx的值。
所以針對給定的被標記的訓練樣本,不論輸入是否含有定位物件, 構建輸入x和分類標籤y的具體過程都是如此,這些資料最終定義了訓練集。
訓練神經網路的損失函式
其引數為類別y和網路輸出
注意,這裡的y含有8個元素,損失值等於每個元素相應差值的平方和。
如果中存在定位物件,則
另一種情況是。因為對於此種情況,我們不用考慮其他元素,只需關注神經網路輸出
為了了解目標定位的細節,這裡用平方誤差簡化了描述過程。實際應用中,你可以不用對c1、c2、c3和softmax啟用函式應用 對數損失函式並輸出其中乙個元素值,通常做法是對邊界框座標應用平方誤差或類似方法,對
我們可以採集人臉中的64個特徵點並生成包含這些特徵點的標籤訓練集,然後利用神經網路輸出臉部關鍵特徵點的位置。具體做法是:準備乙個卷積網路和一些特徵點的資料集,將人臉輸入卷積網路,輸出0或1,輸出1表示有人臉,然後輸出
為了構建這樣的網路,我們首先需要準備乙個標籤的訓練集,也就是x和標籤y的集合,這些特徵點都是人為花費大量時間手工標註的。
同樣,如果我們做人體姿態檢測,我們還可以在人體四肢各部位定義一些關鍵特徵點,然後通過神經網路標註人物姿態的關鍵特徵點,再輸出這些標註過的特徵點,就相當於輸出了人物的姿態動作。當然,要實現這個功能,你需要設定這些關鍵特徵點,從胸部中心點
人臉特徵點檢測
參考 face alignment by explicit shape regression。演算法的實現原始碼在裡的explicitshaperegression.cpp裡面。下面貼上乙個檢測結果 人臉特徵點有不少應用,比如可以對齊人臉,或者做人臉變形。在人臉資料庫裡挑選了一些人臉,對齊它們,求出...
ORB特徵點檢測
這篇文章我們將介紹一種新的具有區域性不變性的特徵 orb特徵,從它的名字中可以看出它是對fast特徵點與breif特徵描述子的一種結合與改進,這個演算法是由ethan rublee,vincent rabaud,kurt konolige以及gary r.bradski在2011年一篇名為 orb ...
GFTT特徵點檢測
角點檢測,避免出現聚簇現象 shi tomasi的角點檢測演算法,名稱goodfeaturetotrack,opencv的feature2d介面整合了這種演算法,名稱為gfttdetector,介面如下 ptrcreate int maxcorners 1000,double qualityleve...