日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人工智能 > 目标检测 >内容正文

目标检测

Coursera吴恩达《卷积神经网络》课程笔记(3)-- 目标检测

發(fā)布時(shí)間:2025/3/15 目标检测 70 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Coursera吴恩达《卷积神经网络》课程笔记(3)-- 目标检测 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

紅色石頭的個(gè)人網(wǎng)站:redstonewill.com

《Convolutional Neural Networks》是Andrw Ng深度學(xué)習(xí)專(zhuān)項(xiàng)課程中的第四門(mén)課。這門(mén)課主要介紹卷積神經(jīng)網(wǎng)絡(luò)(CNN)的基本概念、模型和具體應(yīng)用。該門(mén)課共有4周課時(shí),所以我將分成4次筆記來(lái)總結(jié),這是第3節(jié)筆記,主要介紹目標(biāo)檢測(cè)。

1. Object Localization

前兩節(jié)課程中,我們介紹的是利用CNN模型進(jìn)行圖像分類(lèi)。除此之外,本周課程將繼續(xù)深入介紹目標(biāo)定位和目標(biāo)檢測(cè)(包含多目標(biāo)檢測(cè))。

標(biāo)準(zhǔn)的CNN分類(lèi)模型我們已經(jīng)很熟悉了,如下所示:

原始圖片經(jīng)過(guò)CONV卷積層后,Softmax層輸出4 x 1向量,分別是:

?????1000?????[1000] ?????0100?????[0100] ?????0010?????[0010] ?????0001?????[0001]

注意,class label也可能是概率。上述四個(gè)向量分別對(duì)應(yīng)pedestrain,car,motorcycle和background四類(lèi)。

對(duì)于目標(biāo)定位和目標(biāo)檢測(cè)問(wèn)題,其模型如下所示:

原始圖片經(jīng)過(guò)CONV卷積層后,Softmax層輸出8 x 1向量。除了包含上述一般CNN分類(lèi)3 x 1向量(class label)之外,還包含了(bx, by),表示目標(biāo)中心位置坐標(biāo);還包含了bh和bw,表示目標(biāo)所在矩形區(qū)域的高和寬;還包含了Pc,表示矩形區(qū)域是目標(biāo)的概率,數(shù)值在0~1之間,且越大概率越大。一般設(shè)定圖片左上角為原點(diǎn)(0, 0),右下角為(1, 1)。在模型訓(xùn)練時(shí),bx、by、bh、bw都由人為確定其數(shù)值。例如上圖中,可得bx=0.5,by=0.7,bh=0.3,bw=0.4。

輸出label可表示為:

????????????????Pcbxbybhbwc1c2c3????????????????[Pcbxbybhbwc1c2c3] Pc=1:????????????????1bxbybhbwc1c2c3????????????????[1bxbybhbwc1c2c3] Pc=0:????????????????0???????????????????????[0???????]

若Pc=0,表示沒(méi)有檢測(cè)到目標(biāo),則輸出label后面的7個(gè)參數(shù)都可以忽略。

對(duì)于損失函數(shù)Loss function,若使用平方誤差形式,有兩種情況:

  • Pc=1,即y1=1y1=1

L(y^,y)=(y^1?y1)2+(y^2?y2)2+?+(y^8?y8)2L(y^,y)=(y^1?y1)2+(y^2?y2)2+?+(y^8?y8)2

  • Pc=0,即y1=0y1=0

L(y^,y)=(y^1?y1)2L(y^,y)=(y^1?y1)2

當(dāng)然,除了使用平方誤差之外,還可以邏輯回歸損失函數(shù),類(lèi)標(biāo)簽c1,c2,c3c1,c2,c3也可以通過(guò)softmax輸出。比較而言,平方誤差已經(jīng)能夠取得比較好的效果。

2. Landmark Detection

除了使用矩形區(qū)域檢測(cè)目標(biāo)類(lèi)別和位置外,我們還可以?xún)H對(duì)目標(biāo)的關(guān)鍵特征點(diǎn)坐標(biāo)進(jìn)行定位,這些關(guān)鍵點(diǎn)被稱(chēng)為landmarks。

例如人臉識(shí)別,可以對(duì)人臉部分特征點(diǎn)坐標(biāo)進(jìn)行定位檢測(cè),并標(biāo)記出來(lái),如下圖所示:

該網(wǎng)絡(luò)模型共檢測(cè)人臉上64處特征點(diǎn),加上是否為face的標(biāo)志位,輸出label共有64x2+1=129個(gè)值。通過(guò)檢測(cè)人臉特征點(diǎn)可以進(jìn)行情緒分類(lèi)與判斷,或者應(yīng)用于AR領(lǐng)域等等。

除了人臉特征點(diǎn)檢測(cè)之外,還可以檢測(cè)人體姿勢(shì)動(dòng)作,如下圖所示:

3. Object Detection

目標(biāo)檢測(cè)的一種簡(jiǎn)單方法是滑動(dòng)窗算法。這種算法首先在訓(xùn)練樣本集上搜集相應(yīng)的各種目標(biāo)圖片和非目標(biāo)圖片。注意訓(xùn)練集圖片尺寸較小,盡量?jī)H包含相應(yīng)目標(biāo),如下圖所示:

然后,使用這些訓(xùn)練集構(gòu)建CNN模型,使得模型有較高的識(shí)別率。

最后,在測(cè)試圖片上,選擇大小適宜的窗口、合適的步進(jìn)長(zhǎng)度,進(jìn)行從左到右、從上倒下的滑動(dòng)。每個(gè)窗口區(qū)域都送入之前構(gòu)建好的CNN模型進(jìn)行識(shí)別判斷。若判斷有目標(biāo),則此窗口即為目標(biāo)區(qū)域;若判斷沒(méi)有目標(biāo),則此窗口為非目標(biāo)區(qū)域。

滑動(dòng)窗算法的優(yōu)點(diǎn)是原理簡(jiǎn)單,且不需要人為選定目標(biāo)區(qū)域(檢測(cè)出目標(biāo)的滑動(dòng)窗即為目標(biāo)區(qū)域)。但是其缺點(diǎn)也很明顯,首先滑動(dòng)窗的大小和步進(jìn)長(zhǎng)度都需要人為直觀設(shè)定。滑動(dòng)窗過(guò)小或過(guò)大,步進(jìn)長(zhǎng)度過(guò)大均會(huì)降低目標(biāo)檢測(cè)正確率。而且,每次滑動(dòng)窗區(qū)域都要進(jìn)行一次CNN網(wǎng)絡(luò)計(jì)算,如果滑動(dòng)窗和步進(jìn)長(zhǎng)度較小,整個(gè)目標(biāo)檢測(cè)的算法運(yùn)行時(shí)間會(huì)很長(zhǎng)。所以,滑動(dòng)窗算法雖然簡(jiǎn)單,但是性能不佳,不夠快,不夠靈活。

4. Convolutional Implementation of Sliding Windows

滑動(dòng)窗算法可以使用卷積方式實(shí)現(xiàn),以提高運(yùn)行速度,節(jié)約重復(fù)運(yùn)算成本。

首先,單個(gè)滑動(dòng)窗口區(qū)域進(jìn)入CNN網(wǎng)絡(luò)模型時(shí),包含全連接層。那么滑動(dòng)窗口算法卷積實(shí)現(xiàn)的第一步就是將全連接層轉(zhuǎn)變成為卷積層,如下圖所示:

全連接層轉(zhuǎn)變成卷積層的操作很簡(jiǎn)單,只需要使用與上層尺寸一致的濾波算子進(jìn)行卷積運(yùn)算即可。最終得到的輸出層維度是1 x 1 x 4,代表4類(lèi)輸出值。

單個(gè)窗口區(qū)域卷積網(wǎng)絡(luò)結(jié)構(gòu)建立完畢之后,對(duì)于待檢測(cè)圖片,即可使用該網(wǎng)絡(luò)參數(shù)和結(jié)構(gòu)進(jìn)行運(yùn)算。例如16 x 16 x 3的圖片,步進(jìn)長(zhǎng)度為2,CNN網(wǎng)絡(luò)得到的輸出層為2 x 2 x 4。其中,2 x 2表示共有4個(gè)窗口結(jié)果。對(duì)于更復(fù)雜的28 x 28 x3的圖片,CNN網(wǎng)絡(luò)得到的輸出層為8 x 8 x 4,共64個(gè)窗口結(jié)果。

之前的滑動(dòng)窗算法需要反復(fù)進(jìn)行CNN正向計(jì)算,例如16 x 16 x 3的圖片需進(jìn)行4次,28 x 28 x3的圖片需進(jìn)行64次。而利用卷積操作代替滑動(dòng)窗算法,則不管原始圖片有多大,只需要進(jìn)行一次CNN正向計(jì)算,因?yàn)槠渲泄蚕砹撕芏嘀貜?fù)計(jì)算部分,這大大節(jié)約了運(yùn)算成本。值得一提的是,窗口步進(jìn)長(zhǎng)度與選擇的MAX POOL大小有關(guān)。如果需要步進(jìn)長(zhǎng)度為4,只需設(shè)置MAX POOL為4 x 4即可。

5. Bounding Box Predictions

滑動(dòng)窗口算法有時(shí)會(huì)出現(xiàn)滑動(dòng)窗不能完全涵蓋目標(biāo)的問(wèn)題,如下圖藍(lán)色窗口所示。

YOLO(You Only Look Once)算法可以解決這類(lèi)問(wèn)題,生成更加準(zhǔn)確的目標(biāo)區(qū)域(如上圖紅色窗口)。

YOLO算法首先將原始圖片分割成n x n網(wǎng)格,每個(gè)網(wǎng)格代表一塊區(qū)域。為簡(jiǎn)化說(shuō)明,下圖中將圖片分成3 x 3網(wǎng)格。

然后,利用上一節(jié)卷積形式實(shí)現(xiàn)滑動(dòng)窗口算法的思想,對(duì)該原始圖片構(gòu)建CNN網(wǎng)絡(luò),得到的的輸出層維度為3 x 3 x 8。其中,3 x 3對(duì)應(yīng)9個(gè)網(wǎng)格,每個(gè)網(wǎng)格的輸出包含8個(gè)元素:

y=????????????????Pcbxbybhbwc1c2c3????????????????y=[Pcbxbybhbwc1c2c3]

如果目標(biāo)中心坐標(biāo)(bx,by)(bx,by)不在當(dāng)前網(wǎng)格內(nèi),則當(dāng)前網(wǎng)格Pc=0;相反,則當(dāng)前網(wǎng)格Pc=1(即只看中心坐標(biāo)是否在當(dāng)前網(wǎng)格內(nèi))。判斷有目標(biāo)的網(wǎng)格中,bx,by,bh,bwbx,by,bh,bw限定了目標(biāo)區(qū)域。值得注意的是,當(dāng)前網(wǎng)格左上角坐標(biāo)設(shè)定為(0, 0),右下角坐標(biāo)設(shè)定為(1, 1),(bx,by)(bx,by)范圍限定在[0,1]之間,但是bh,bwbh,bw可以大于1。因?yàn)槟繕?biāo)可能超出該網(wǎng)格,橫跨多個(gè)區(qū)域,如上圖所示。目標(biāo)占幾個(gè)網(wǎng)格沒(méi)有關(guān)系,目標(biāo)中心坐標(biāo)必然在一個(gè)網(wǎng)格之內(nèi)。

劃分的網(wǎng)格可以更密一些。網(wǎng)格越小,則多個(gè)目標(biāo)的中心坐標(biāo)被劃分到一個(gè)網(wǎng)格內(nèi)的概率就越小,這恰恰是我們希望看到的。

6. Intersection Over Union

IoU,即交集與并集之比,可以用來(lái)評(píng)價(jià)目標(biāo)檢測(cè)區(qū)域的準(zhǔn)確性。

如上圖所示,紅色方框?yàn)檎鎸?shí)目標(biāo)區(qū)域,藍(lán)色方框?yàn)闄z測(cè)目標(biāo)區(qū)域。兩塊區(qū)域的交集為綠色部分,并集為紫色部分。藍(lán)色方框與紅色方框的接近程度可以用IoU比值來(lái)定義:

IoU=IUIoU=IU

IoU可以表示任意兩塊區(qū)域的接近程度。IoU值介于0~1之間,且越接近1表示兩塊區(qū)域越接近。

7. Non-max Suppression

YOLO算法中,可能會(huì)出現(xiàn)多個(gè)網(wǎng)格都檢測(cè)出到同一目標(biāo)的情況,例如幾個(gè)相鄰網(wǎng)格都判斷出同一目標(biāo)的中心坐標(biāo)在其內(nèi)。

上圖中,三個(gè)綠色網(wǎng)格和三個(gè)紅色網(wǎng)格分別檢測(cè)的都是同一目標(biāo)。那如何判斷哪個(gè)網(wǎng)格最為準(zhǔn)確呢?方法是使用非最大值抑制算法。

非最大值抑制(Non-max Suppression)做法很簡(jiǎn)單,圖示每個(gè)網(wǎng)格的Pc值可以求出,Pc值反映了該網(wǎng)格包含目標(biāo)中心坐標(biāo)的可信度。首先選取Pc最大值對(duì)應(yīng)的網(wǎng)格和區(qū)域,然后計(jì)算該區(qū)域與所有其它區(qū)域的IoU,剔除掉IoU大于閾值(例如0.5)的所有網(wǎng)格及區(qū)域。這樣就能保證同一目標(biāo)只有一個(gè)網(wǎng)格與之對(duì)應(yīng),且該網(wǎng)格Pc最大,最可信。接著,再?gòu)氖O碌木W(wǎng)格中選取Pc最大的網(wǎng)格,重復(fù)上一步的操作。最后,就能使得每個(gè)目標(biāo)都僅由一個(gè)網(wǎng)格和區(qū)域?qū)?yīng)。如下圖所示:

總結(jié)一下非最大值抑制算法的流程:

  • 1. 剔除Pc值小于某閾值(例如0.6)的所有網(wǎng)格;

  • 2. 選取Pc值最大的網(wǎng)格,利用IoU,摒棄與該網(wǎng)格交疊較大的網(wǎng)格;

  • 3. 對(duì)剩下的網(wǎng)格,重復(fù)步驟2。

8. Anchor Boxes

到目前為止,我們介紹的都是一個(gè)網(wǎng)格至多只能檢測(cè)一個(gè)目標(biāo)。那對(duì)于多個(gè)目標(biāo)重疊的情況,例如一個(gè)人站在一輛車(chē)前面,該如何使用YOLO算法進(jìn)行檢測(cè)呢?方法是使用不同形狀的Anchor Boxes。

如下圖所示,同一網(wǎng)格出現(xiàn)了兩個(gè)目標(biāo):人和車(chē)。為了同時(shí)檢測(cè)兩個(gè)目標(biāo),我們可以設(shè)置兩個(gè)Anchor Boxes,Anchor box 1檢測(cè)人,Anchor box 2檢測(cè)車(chē)。也就是說(shuō),每個(gè)網(wǎng)格多加了一層輸出。原來(lái)的輸出維度是 3 x 3 x 8,現(xiàn)在是3 x 3 x 2 x 8(也可以寫(xiě)成3 x 3 x 16的形式)。這里的2表示有兩個(gè)Anchor Boxes,用來(lái)在一個(gè)網(wǎng)格中同時(shí)檢測(cè)多個(gè)目標(biāo)。每個(gè)Anchor box都有一個(gè)Pc值,若兩個(gè)Pc值均大于某閾值,則檢測(cè)到了兩個(gè)目標(biāo)。

y=????????????????????????????????????Pcbxbybhbwc1c2c3Pcbxbybhbwc1c2c3????????????????????????????????????y=[Pcbxbybhbwc1c2c3Pcbxbybhbwc1c2c3]

在使用YOLO算法時(shí),只需對(duì)每個(gè)Anchor box使用上一節(jié)的非最大值抑制即可。Anchor Boxes之間并行實(shí)現(xiàn)。

順便提一下,Anchor Boxes形狀的選擇可以通過(guò)人為選取,也可以使用其他機(jī)器學(xué)習(xí)算法,例如k聚類(lèi)算法對(duì)待檢測(cè)的所有目標(biāo)進(jìn)行形狀分類(lèi),選擇主要形狀作為Anchor Boxes。

9. YOLO Algorithm

這一節(jié)主要介紹YOLO算法的流程,算是對(duì)前幾節(jié)內(nèi)容的回顧。網(wǎng)絡(luò)結(jié)構(gòu)如下圖所示,包含了兩個(gè)Anchor Boxes。

  • 1. For each grid call, get 2 predicted bounding boxes.

  • 2. Get rid of low probability predictions.

  • 3. For each class (pedestrian, car, motorcycle) use non-max suppression to generate final predictions.

10. Region Proposals

之前介紹的滑動(dòng)窗算法會(huì)對(duì)原始圖片的每個(gè)區(qū)域都進(jìn)行掃描,即使是一些空白的或明顯沒(méi)有目標(biāo)的區(qū)域,例如下圖所示。這樣會(huì)降低算法運(yùn)行效率,耗費(fèi)時(shí)間。

為了解決這一問(wèn)題,盡量避免對(duì)無(wú)用區(qū)域的掃描,可以使用Region Proposals的方法。具體做法是先對(duì)原始圖片進(jìn)行分割算法處理,然后支隊(duì)分割后的圖片中的塊進(jìn)行目標(biāo)檢測(cè)。

Region Proposals共有三種方法:

  • R-CNN: 滑動(dòng)窗的形式,一次只對(duì)單個(gè)區(qū)域塊進(jìn)行目標(biāo)檢測(cè),運(yùn)算速度慢。

  • Fast R-CNN: 利用卷積實(shí)現(xiàn)滑動(dòng)窗算法,類(lèi)似第4節(jié)做法。

  • Faster R-CNN: 利用卷積對(duì)圖片進(jìn)行分割,進(jìn)一步提高運(yùn)行速度。

比較而言,Faster R-CNN的運(yùn)行速度還是比YOLO慢一些。

更多AI資源請(qǐng)關(guān)注公眾號(hào):紅色石頭的機(jī)器學(xué)習(xí)之路(ID:redstonewill)

總結(jié)

以上是生活随笔為你收集整理的Coursera吴恩达《卷积神经网络》课程笔记(3)-- 目标检测的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。