卷積神經網絡(4)----目標檢測
一、分類、定位和檢測
簡單來說,分類、定位和檢測的區別如下:
-
分類:是什麽?
-
定位:在哪裏?是什麽?(單個目標)
-
檢測:在哪裏?分別是什麽?(多個目標)
(1)目標分類 |
(2)目標定位 |
(3)目標檢測 |
二、目標定位:
1)案例1:在構建自動駕駛時,需要定位出照片中的行人、汽車、摩托車和背景,即四個類別。
輸出:
1,2,3為要檢測的行人、汽車、摩托車, Pc=1
4為背景, Pc=0
Pc:首先第一個元素pc=1表示有要定位的物體的概率,即是有1,2,3類的概率,否則pc=0表示只有背景第4類如上圖的第二個圖。
bx,by,bh,bw:這四個輸出元素表示定位框的中心坐標bx,by和寬高bh,bw
c1,c2,c3:3個輸出元素one-hot表示是三個類別(1,2,3)中的哪一類。
當第一個元素pc=0時表示是背景,然後就不需要考慮其他輸出了
損失函數:
輸出向量中有8個元素:故:
if y1 =1 ,L = (y‘1-y1)2 + (y‘2-y2)2 + ……+(y‘8-y8)2
if y1 = 0,L = (y‘1-y1)2
實際使用中pc使用邏輯回歸,c1,c2,c3是用softmax激活然後用對數損失函數,位置信息是使用平方誤差損失函數,然後將這些損失函數相加起來得到最終的代價函數。當標簽y=0時,只考慮pc即可。
三、特征點檢測:
特征點檢測就是第一個單元輸出1,表示有這個對象(如人臉),
然後如果在人臉上定義了64個特征點(如下圖所示),每個特征點用(x,y)表示,那麽網絡將會有1+2*68=129個單元輸出。
需要註意的一點是在標註樣本時,所有標簽在所有圖片中務必保持一致,比如說,第5個特征點表示左眼的外眼角,那麽所有圖片的第五個特征點都應該是這個。
四、目標檢測:滑動窗口、YOLO算法【更好解決邊界】
https://www.cnblogs.com/ys99/p/9326637.html
傳統的窗口滑動:將圖片切割成很多小窗口,然後進行目標檢測。直到某個小窗口檢測到目標。
卷積的滑動窗口實現:在原輸入補上邊,在進行卷積操作,得到結果。
例如:
原輸入是14*14*3,輸出是1*1*4【4個分類】。傳統的滑動窗口是將原輸入切成4個,每個大小為12*12*3。經過重復4次卷積操作得到4個1*1*4。
卷積的滑動窗口:將原輸入補成16*16*3,輸出為2*2*4。只需要經過一次卷積操作就可以得到和4個1*1*4相同的結果2*2*4=2*2*(1*1*4)。
交並比函數是用來判斷對象定位是否準確,IoU=(A∩B)/(A∪B),一般將交並比的值大於0.5看成是檢測正確的,當然這個值可以根據實際情況來定。
卷積神經網絡(4)----目標檢測