深度学习——特征点检测和目标检测
特征點(diǎn)檢測(cè)
假設(shè)你正在構(gòu)建一個(gè)人臉識(shí)別應(yīng)用,出于某種原因,你希望算法可以給出眼角的具體位置。眼角坐標(biāo)為(𝑥, 𝑦),你可以讓神經(jīng)網(wǎng)絡(luò)的最后一層多輸出兩個(gè)數(shù)字𝑙𝑥和𝑙𝑦,作為眼角的坐標(biāo)值。如果你想知道兩只眼睛的四個(gè)眼角的具體位置,那么從左到右,依次用四個(gè)特征點(diǎn)來表示這四個(gè)眼角。對(duì)神經(jīng)網(wǎng)絡(luò)稍做些修改,輸出第一個(gè)特征點(diǎn)(𝑙1𝑥,𝑙1𝑦),第二個(gè)特征點(diǎn)(𝑙2𝑥,𝑙2𝑦),依此類推,這四個(gè)臉部特征點(diǎn)的位置就可以通過神經(jīng)網(wǎng)絡(luò)輸出了。
也許除了這四個(gè)特征點(diǎn),你還想得到更多的特征點(diǎn)輸出值,這些(圖中眼眶上的紅色特征點(diǎn))都是眼睛的特征點(diǎn),你還可以根據(jù)嘴部的關(guān)鍵點(diǎn)輸出值來確定嘴的形狀,從而判斷人物是在微笑還是皺眉,也可以提取鼻子周圍的關(guān)鍵特征點(diǎn)。為了便于說明,你可以設(shè)定特征點(diǎn)的個(gè)數(shù),假設(shè)臉部有 64 個(gè)特征點(diǎn),有些點(diǎn)甚至可以幫助你定義臉部輪廓或下頜輪廓。選定特征點(diǎn)個(gè)數(shù),并生成包含這些特征點(diǎn)的標(biāo)簽訓(xùn)練集,然后利用神經(jīng)網(wǎng)絡(luò)輸出臉部關(guān)鍵特征點(diǎn)的位置。
具體做法是,準(zhǔn)備一個(gè)卷積網(wǎng)絡(luò)和一些特征集,將人臉圖片輸入卷積網(wǎng)絡(luò),輸出 1 或 0, 1 表示有人臉,0 表示沒有人臉,然后輸出(𝑙1𝑥,𝑙1𝑦)……直到(𝑙64𝑥,𝑙64𝑦)。這里我用𝑙代表一個(gè)特征,這里有129 個(gè)輸出單元,其中1表示圖片中有人臉,因?yàn)橛?4個(gè)特征,64×2=128,所以最終輸出 128+1=129 個(gè)單元,由此實(shí)現(xiàn)對(duì)圖片的人臉檢測(cè)和定位。這只是一個(gè)識(shí)別臉部表情的基本構(gòu)造模塊,如果你玩過Snapchat或其它娛樂類應(yīng)用,你應(yīng)該對(duì) AR(增強(qiáng)現(xiàn)實(shí))過濾器多少有些了解,Snapchat 過濾器實(shí)現(xiàn)了在臉上畫皇冠和其他一些特殊效果。檢測(cè)臉部特征也是計(jì)算機(jī)圖形效果的一個(gè)關(guān)鍵構(gòu)造模塊,比如實(shí)現(xiàn)臉部扭曲,頭戴皇冠等等。當(dāng)然為了構(gòu)建這樣的網(wǎng)絡(luò),你需要準(zhǔn)備一個(gè)標(biāo)簽訓(xùn)練集,也就是圖片𝑥和標(biāo)簽𝑦的集合,這些點(diǎn)都是人為辛苦標(biāo)注的。
最后一個(gè)例子,如果你對(duì)人體姿態(tài)檢測(cè)感興趣,你還可以定義一些關(guān)鍵特征點(diǎn),如胸部的中點(diǎn),左肩,左肘,腰等等。然后通過神經(jīng)網(wǎng)絡(luò)標(biāo)注人物姿態(tài)的關(guān)鍵特征點(diǎn),再輸出這些標(biāo)注過的特征點(diǎn),就相當(dāng)于輸出了人物的姿態(tài)動(dòng)作。當(dāng)然,要實(shí)現(xiàn)這個(gè)功能,你需要設(shè)定這些關(guān)鍵特征點(diǎn),從胸部中心點(diǎn)(𝑙1𝑥,𝑙1𝑦)一直往下,直到(𝑙32𝑥,𝑙32𝑦)。
一旦了解如何用二維坐標(biāo)系定義人物姿態(tài),操作起來就相當(dāng)簡單了,批量添加輸出單元,用以輸出要識(shí)別的各個(gè)特征點(diǎn)的(𝑥, 𝑦)坐標(biāo)值。要明確一點(diǎn),特征點(diǎn) 1 的特性在所有圖片中必須保持一致,就好比,特征點(diǎn) 1 始終是右眼的外眼角,特征點(diǎn) 2 是右眼的內(nèi)眼角,特征點(diǎn)3 是左眼內(nèi)眼角,特征點(diǎn) 4 是左眼外眼角等等。所以標(biāo)簽在所有圖片中必須保持一致,假如你雇用他人或自己標(biāo)記了一個(gè)足夠大的數(shù)據(jù)集,那么神經(jīng)網(wǎng)絡(luò)便可以輸出上述所有特征點(diǎn),你可以利用它們實(shí)現(xiàn)其他有趣的效果,比如判斷人物的動(dòng)作姿態(tài),識(shí)別圖片中的人物表情等等。
目標(biāo)檢測(cè)
采用的是基于滑動(dòng)窗口的目標(biāo)檢測(cè)算法。
假如你想構(gòu)建一個(gè)汽車檢測(cè)算法,步驟是,首先創(chuàng)建一個(gè)標(biāo)簽訓(xùn)練集,也就是𝑥和𝑦表示適當(dāng)剪切的汽車圖片樣本,這張圖片(編號(hào) 1)𝑥是一個(gè)正樣本,因?yàn)樗且惠v汽車圖片,這幾張圖片(編號(hào) 2、3)也有汽車,但這兩張(編號(hào) 4、5)沒有汽車。出于我們對(duì)這個(gè)訓(xùn)練集的期望,你一開始可以使用適當(dāng)剪切的圖片,就是整張圖片𝑥幾乎都被汽車占據(jù),你可以照張照片,然后剪切,剪掉汽車以外的部分,使汽車居于中間位置,并基本占據(jù)整張圖片。有了這個(gè)標(biāo)簽訓(xùn)練集,你就可以開始訓(xùn)練卷積網(wǎng)絡(luò)了,輸入這些適當(dāng)剪切過的圖片(編號(hào) 6),卷積網(wǎng)絡(luò)輸出𝑦,0 或 1 表示圖片中有汽車或沒有汽車。
訓(xùn)練完這個(gè)卷積網(wǎng)絡(luò),就可以用它來實(shí)現(xiàn)滑動(dòng)窗口目標(biāo)檢測(cè),具體步驟如下:
如果你這樣做,不論汽車在圖片的什么位置,總有一個(gè)窗口可以檢測(cè)到它。
滑動(dòng)窗口目標(biāo)檢測(cè)算法也有很明顯的缺點(diǎn),就是計(jì)算成本,因?yàn)槟阍趫D片中剪切出太多小方塊,卷積網(wǎng)絡(luò)要一個(gè)個(gè)地處理。如果你選用的步幅很大,顯然會(huì)減少輸入卷積網(wǎng)絡(luò)的窗口個(gè)數(shù),但是粗糙間隔尺寸可能會(huì)影響性能。反之,如果采用小粒度或小步幅,傳遞給卷積網(wǎng)絡(luò)的小窗口會(huì)特別多,這意味著超高的計(jì)算成本。不過,慶幸的是,計(jì)算成本問題已經(jīng)有了很好的解決方案,大大提高了卷積層上應(yīng)用滑動(dòng)窗口目標(biāo)檢測(cè)器的效率
總結(jié)
以上是生活随笔為你收集整理的深度学习——特征点检测和目标检测的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第七周求圆柱体表面积
- 下一篇: 对象检测目标小用什么模型好_小目标检测技