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

歡迎訪問 生活随笔!

生活随笔

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

目标检测

深度学习和目标检测系列教程 13-300:YOLO 物体检测算法

發(fā)布時間:2024/10/8 目标检测 170 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深度学习和目标检测系列教程 13-300:YOLO 物体检测算法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

@Author:Runsen

YOLO,是目前速度更快的物體檢測算法之一。雖然它不再是最準(zhǔn)確的物體檢測算法,但當(dāng)您需要實時檢測時,它是一個非常好的選擇,而不會損失太多的準(zhǔn)確性。

YOLO 框架

在本篇博客中,我將介紹 YOLO 在給定圖像中檢測對象所經(jīng)過的步驟。

  • YOLO 首先獲取輸入圖像:

然后框架將輸入圖像劃分為網(wǎng)格(比如 3 X 3 網(wǎng)格):

圖像分類和定位分別應(yīng)用于每個網(wǎng)格,然后 YOLO 預(yù)測邊界框及其對應(yīng)的對象類別概率。

因此,下一步的方法是將標(biāo)記數(shù)據(jù)傳遞給模型以對其進(jìn)行訓(xùn)練。假設(shè)已將圖像劃分為大小為 3 X 3 的網(wǎng)格,并且存在有 3 個希望將對象分類的類。

假設(shè)這些類分別是 Pedestrian行人、Car 和 Motorcycle摩托車。對于每個網(wǎng)格單元,標(biāo)簽 y 將是一個八維向量:

  • pc定義對象是否存在于網(wǎng)格中(這是概率)
  • bx , by , bh , bw指定邊界框,如果有對象
  • c1、c2、c3表示類別。因此,如果對象是汽車,則 c2將為 1,c1 和 c3將為 0

從上面的例子中選擇了第一個網(wǎng)格:

由于此網(wǎng)格中沒有對象,因此 pc 將為零,此網(wǎng)格的 y 標(biāo)簽為

這里, ‘?’ 是沒有的意思。

采用另一個網(wǎng)格,其中這里有一輛汽車 (c2 = 1):

在我們?yōu)檫@個網(wǎng)格編寫 y 標(biāo)簽之前,首先要知道 YOLO 如何確定網(wǎng)格中是否確實存在對象。在最上面圖中,有兩個對象(兩輛車),因此 YOLO 將取這兩個對象的中點,并將這些對象分配到包含這些對象中點的網(wǎng)格。上面的 y 標(biāo)簽將是:


由于此網(wǎng)格中有一個對象,因此 p c 將等于 1。 bx、 by、 bh、 bw將相對于正在處理的特定網(wǎng)格單元。由于汽車是第二類,c2 = 1 且 c1和 c3 = 0。因此,對于9個網(wǎng)格中的每一個,將有一個八維輸出向量。此輸出的形狀為 3 X 3 X 8。

所以現(xiàn)在我們有一個輸入圖像,它是對應(yīng)的目標(biāo)向量。使用上面的例子(輸入圖像 – 100 X 100 X 3,輸出 – 3 X 3 X 8),模型將訓(xùn)練如下:

在測試階段,我們將圖像傳遞給模型并運行前向傳播,直到我們得到輸出 y。在這里使用 3 X 3 網(wǎng)格進(jìn)行了解釋,但通常在實際場景中采用更大的網(wǎng)格(一般是 19 X 19)。

如何得到編碼邊界框?

bx、 by、 bh和 bw是相對于正在處理的網(wǎng)格單元計算的。

下面通過一個例子來理解這個概念。考慮包含汽車的中右網(wǎng)格:

bx、 by、 bh和bw將僅相對于該網(wǎng)格進(jìn)行計算。此網(wǎng)格的 y 標(biāo)簽將是:

pc = 1 因為在這個網(wǎng)格中有一個物體并且它是一輛汽車,所以 c2 = 1。現(xiàn)在,看看怎么確定 bx、 by、 bh和 bw。在YOLO中,分配給所有網(wǎng)格的坐標(biāo)是:

bx , by是對象中點相對于該網(wǎng)格的 x 和 y 坐標(biāo)。在這種情況下,它將是(大約)bx = 0.4 和 by = 0.3:

bh 是邊界框(上例中的紅色框)的高度與相應(yīng)網(wǎng)格單元的高度之比,在例子中約為 0.9。因此,bh = 0.9。bw是邊界框的寬度與網(wǎng)格單元格的寬度之比。因此,大約bw = 0.5。此網(wǎng)格的 y 標(biāo)簽將是:

請注意,bx和 by將始終介于 0 和 1 之間,因為中點始終位于網(wǎng)格內(nèi)。而 bh和 bw可以大于 1,這樣邊界框的尺寸大于網(wǎng)格的尺寸。

如何確定預(yù)測的邊界框是否給了我們一個好的結(jié)果還是一個壞的結(jié)果)?判斷的方法就是 Intersection over Union ,計算實際邊界框和預(yù)測結(jié)合框的并集的交集。

Intersection over Union

在上圖,紅色框是實際的邊界框,藍(lán)色框是預(yù)測的邊界框。我們?nèi)绾未_定它是否是一個好的預(yù)測?IoU ,全稱 Intersection over Union,將計算這兩個框的并集上的交集面積。該區(qū)域?qū)⑹?#xff1a;

IoU = 交集面積/并集面積,即 IoU = 黃框面積/綠框面積

如果 IoU 大于 0.5,我們可以說預(yù)測足夠好。0.5 是此處采用的任意閾值。

還有一種技術(shù)可以顯著提高 YOLO 的輸出——Non-Max Suppression。

因為對象檢測算法中,有的對象可能會多次檢測到一個對象,而不是只檢測一次。比如下圖:

在這里,汽車被多次識別。Non-Max Suppression 技術(shù)對此進(jìn)行了清理,以便我們對每個對象僅進(jìn)行一次檢測。

Non-Max Suppression首先查看與每個檢測相關(guān)的概率并取最大的一個。在上圖中,0.9 是最高概率,因此將首先選擇概率為 0.9 的框:


現(xiàn)在,它查看圖像中的所有其他框。與當(dāng)前框具有高 IoU 的框被抑制。因此,在上面的圖片中,概率為 0.6 和 0.7 的框?qū)⒈灰种?#xff1a;

在這些框被抑制后,它從所有具有最高概率的框中選擇下一個框,在圖片中為 0.8,不斷重復(fù)這些步驟,直到所有的框都被選中或壓縮,得到最終的邊界框。

這就是非最大抑制Intersection over Union。以最大概率取框并以非最大概率抑制附近的框。

Anchor Boxes

由于每個網(wǎng)格只能識別一個對象。但是如果一個網(wǎng)格中有多個對象呢?現(xiàn)實中經(jīng)常是這樣。這將我們引向了 Anchor Boxes錨盒的概念。考慮下圖,分為 3 X 3 網(wǎng)格:

取對象的中點并根據(jù)其位置將對象分配到相應(yīng)的網(wǎng)格。在上面的例子中,兩個對象的中點位于同一個網(wǎng)格中。

我們只會得到兩個盒子中的一個,要么是汽車,要么是人。但是如果我們使用錨框,可能可以同時輸出兩個框!

首先,我們預(yù)先定義了兩種不同的形狀,稱為錨盒。對于每個網(wǎng)格,我們將有兩個輸出,而不是一個輸出。我們也可以隨時增加錨框的數(shù)量。在這里拿了兩個來使這個概念易于理解:

這是沒有錨框的 YOLO 的 y 標(biāo)簽的樣子:

如果有 2 個錨框,你認(rèn)為 y 標(biāo)簽會是什么?我希望你在進(jìn)一步閱讀之前花點時間思考一下。知道了y 標(biāo)簽將是:

前 8 行屬于錨框 1,其余 8 行屬于錨框 2。

根據(jù)邊界框和錨框形狀的相似性將對象分配給錨框。

由于anchor box 1的形狀類似于person的bounding box,后者將被分配給anchor box 1,car將被分配給anchor box 2。這種情況下的輸出,而不是3 X 3 X 8 ,使用 3 X 3 網(wǎng)格和 3 個類將是 3 X 3 X 16(因為使用了 2 個錨點)。

因此,對于每個網(wǎng)格,可以根據(jù)錨點的數(shù)量檢測兩個或多個對象。

訓(xùn)練yolo模型的輸入顯然是圖像及其相應(yīng)的 y 標(biāo)簽。讓我們看一個圖像如何制作 y 標(biāo)簽:

考慮使用 3 X 3 網(wǎng)格,每個網(wǎng)格有兩個錨點,并且有 3 個不同的對象類。所以對應(yīng)的 y 標(biāo)簽將有 3 X 3 X 16的形狀。現(xiàn)在,假設(shè)我們每個網(wǎng)格使用 5 個錨框并且類的數(shù)量已經(jīng)增加到 5。所以目標(biāo)將是3 X 3 X 10 X 5 = 3 X 3 X 50。

在測試中,新圖像將被劃分為我們在訓(xùn)練期間選擇的相同數(shù)量的網(wǎng)格。對于每個網(wǎng)格,模型將預(yù)測形狀為 3 X 3 X 16 的輸出,此預(yù)測中的 16 個值將采用與訓(xùn)練標(biāo)簽相同的格式。

前 8 個值將對應(yīng)于錨框 1,其中第一個值將是該網(wǎng)格中對象的概率。值 2-5 將是該對象的邊界框坐標(biāo),最后三個值將告訴我們該對象屬于哪個類。接下來的 8 個值將用于錨框 2 并且格式相同,即首先是概率,然后是邊界框坐標(biāo),最后是類別。

最后,非最大抑制Intersection over Union技術(shù)將應(yīng)用于預(yù)測框以獲得每個對象的單個預(yù)測。

總結(jié)

以上是生活随笔為你收集整理的深度学习和目标检测系列教程 13-300:YOLO 物体检测算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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