蜜桃av色欲a片精品一区,麻豆aⅴ精品无码一区二区,亚洲人成网站在线播放影院在线,亚洲 素人 字幕 在线 最新

微立頂科技

新聞資訊

創(chuàng)新 服務(wù) 價(jià)值

  YOLO算法講解

發(fā)布日期:2022/6/18 6:47:39      瀏覽量:

YOLO 是 2016 年提出來(lái)的目標(biāo)檢測(cè)算法,在當(dāng)時(shí)比較優(yōu)秀的目標(biāo)檢測(cè)算法有 R-CNN、Fast R-CNN 等等,但 YOLO 算法還是讓人感到很新奇與興奮。

YOLO 是 You only look once 幾個(gè)單詞的縮寫(xiě),大意是你看一次就可以預(yù)測(cè)了,靈感就來(lái)自于我們?nèi)祟?lèi)自己,因?yàn)槿丝匆粡垐D片時(shí),掃一眼就可以得知這張圖片不同類(lèi)型目標(biāo)的位置。

YOLO 勝在它的簡(jiǎn)單與快速。

YOLO 是單個(gè)神經(jīng)網(wǎng)絡(luò)進(jìn)行端到端的預(yù)測(cè),沒(méi)有多個(gè)步驟和過(guò)程。

YOLO 的速度非???,可以達(dá)到實(shí)時(shí)的 45 fps,簡(jiǎn)化版本甚至達(dá)到 155 fps。



YOLO 目標(biāo)預(yù)測(cè)如同捕魚(yú)
在 YOLO 前,目標(biāo)檢測(cè)一般通過(guò)算法生成候選區(qū)域,然后在數(shù)量眾多的候選區(qū)域中做目標(biāo)的分類(lèi)和 bbox 位置的回歸。

更古老的方法是通過(guò)滑動(dòng)窗口的形式去挨個(gè)預(yù)測(cè)與判別。

但 YOLO 大不相同。 

如果把目標(biāo)檢測(cè)看做是一個(gè)捕魚(yú)的過(guò)程,其他算法是拿著漁叉一個(gè)一個(gè)精準(zhǔn)地狙擊,那么 YOLO 就粗獷的多,一個(gè)漁網(wǎng)撒撒下去,一網(wǎng)打盡。

YOLO 的預(yù)測(cè)是基于整個(gè)圖片的,并且它會(huì)一次性輸出所有檢測(cè)到的目標(biāo)信息,包括類(lèi)別和位置。

YOLO 的算法思路。

縮放輸入的圖片

將圖片送入到卷積神經(jīng)網(wǎng)絡(luò)中進(jìn)行預(yù)測(cè)

通過(guò)預(yù)測(cè)的結(jié)果進(jìn)行置信度的閾值處理,得到最終的結(jié)果。

下面講解算法細(xì)節(jié)。

分割圖片
YOLO 會(huì)把輸入圖片分割成 SxS 個(gè)網(wǎng)格,如果一個(gè)目標(biāo)的中心點(diǎn)落在某個(gè)網(wǎng)格當(dāng)中,那么對(duì)應(yīng)的那個(gè)網(wǎng)格就負(fù)責(zé)預(yù)測(cè)這個(gè)目標(biāo)的大小和類(lèi)別。

上面的圖片示例中,狗的中心點(diǎn)落在了藍(lán)色的網(wǎng)格當(dāng)中,所以藍(lán)色的網(wǎng)格就負(fù)責(zé)這個(gè)目標(biāo)的信息預(yù)測(cè)。

每個(gè)網(wǎng)格目標(biāo)的預(yù)測(cè)
每個(gè)網(wǎng)格都會(huì)預(yù)測(cè) B 個(gè) bbox 和 bbox 對(duì)應(yīng)的置信值 Confidence,bbox 預(yù)測(cè)目標(biāo)的位置,Confidence 用來(lái)反映這個(gè)網(wǎng)格是否有包含目標(biāo)及 bbox 的準(zhǔn)確性有多高。 

這樣的結(jié)果是針對(duì)每一個(gè) bbox 而言的目標(biāo)類(lèi)別概率分布的置信值,這個(gè)置信值同時(shí)表達(dá)了 2 樣?xùn)|西,一個(gè)是目標(biāo)是某個(gè)類(lèi)別的概率,一個(gè)是預(yù)測(cè)的 bbox 離真實(shí)的 bbox 有多遠(yuǎn)。 


YOLO 把輸入圖片劃分成 SxS 個(gè)網(wǎng)格,每個(gè)網(wǎng)格都會(huì)預(yù)測(cè) B 個(gè) bbox 和 C 個(gè)目標(biāo)類(lèi)別的條件概率,并且每一個(gè) bbox 包含 x、y、w、h、confidence 5 個(gè)參數(shù)。

所以,YOLO 最終的預(yù)測(cè)結(jié)果可以整合成一個(gè)尺寸為 SS(5*B+C) 的 tensor。

B、S、C 這幾個(gè)值都由網(wǎng)絡(luò)結(jié)構(gòu)的設(shè)計(jì)者決定,YOLO v1 在 PASCAL VOC 數(shù)據(jù)集上評(píng)估時(shí),S = 7,B = 2。

因?yàn)檫@個(gè)數(shù)據(jù)集有 20 個(gè)種類(lèi),所以 C = 20,套用前面的公式,最終預(yù)測(cè)時(shí) Tensor 的尺寸為 7730。

YOLO 的網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)
YOLO 是基于 CNN 的,論文作者說(shuō)他受 GooLeNet 結(jié)構(gòu)的啟發(fā),然后構(gòu)建了一個(gè)新的網(wǎng)絡(luò)結(jié)構(gòu)。

YOLO 用 1x1 的卷積核代替了 GooLeNet 的 Inception 模塊來(lái)做降維度。

YOLO 有 24 個(gè)卷積層,然后后面跟著 2 個(gè)全連接層。

這張圖片也可以大致示意最終預(yù)測(cè)的 tensor 的結(jié)構(gòu)。

YOLO 的訓(xùn)練過(guò)程
YOLO 在 ImageNet 上用前 20 個(gè)卷積層和 1 個(gè)全連接層做通用的類(lèi)別識(shí)別訓(xùn)練,并達(dá)到比較高的準(zhǔn)確率。

之后,YOLO 作者在預(yù)訓(xùn)練好的結(jié)構(gòu)上添加了 4 個(gè)卷積層和 1 個(gè)全連接層做目標(biāo)識(shí)別訓(xùn)練。

因?yàn)橄胩岣吣繕?biāo)識(shí)別的整體表現(xiàn),所以 YOLO 在 ImageNet 預(yù)訓(xùn)練時(shí),輸入圖片尺寸是 224x224,但在 PASCAL VOC 上做目標(biāo)識(shí)別的專(zhuān)項(xiàng)訓(xùn)練時(shí),輸入圖片尺寸變成了 448x448

除了最后一層采用線(xiàn)性激活函數(shù)外,其他層都采用 leaky Relu。

YOLO 的 Loss 設(shè)定
我們都知道,采用合適的 loss 對(duì)于訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò)而言非常重要。

而我認(rèn)為,只有理解了 YOLO 的 loss 設(shè)計(jì)原則,才算真正理解了 YOLO 算法的核心.

我們知道,一般 Loss 值越低,代表網(wǎng)絡(luò)準(zhǔn)確度越高,訓(xùn)練的越有效,所以訓(xùn)練時(shí)基本上是以減弱 loss 值為目標(biāo)的。

YOLO 作者在訓(xùn)練時(shí),用 sum-squared error (誤差的平方的和)來(lái)作為 loss 進(jìn)行優(yōu)化。

采用 sum-squared error 是因?yàn)樗菀走M(jìn)行優(yōu)化,但是它也有不好的地方,那就是對(duì)于提高 mAP 的表現(xiàn)有些吃力。

sum-squared error 會(huì)讓 Loss 函數(shù)對(duì)于位置預(yù)測(cè)、類(lèi)別預(yù)測(cè)的誤差權(quán)重一樣。

實(shí)際情況是,YOLO 在每一張圖片上會(huì)預(yù)測(cè) 772=98 個(gè) bbox,但只有很少的 bbox 才包含目標(biāo),哪些不包含目標(biāo)的 bbox 它們的 confidence 會(huì)在訓(xùn)練過(guò)程中很快變成 0,所以哪些包含了目標(biāo)的網(wǎng)格它們預(yù)測(cè)的 bbox 的梯度會(huì)更加急劇變化,這樣而言,整個(gè)預(yù)測(cè)系統(tǒng)處于不平衡也不穩(wěn)定的狀態(tài),最終可能出現(xiàn) loss 無(wú)法收斂。

為了,糾正和改善情況,YOLO 的作者調(diào)整了 bbox 的坐標(biāo)誤差和 沒(méi)有包含目標(biāo)時(shí) confidence 的誤差權(quán)重,也可以看做是添加了不同的懲罰系數(shù),分別是 5 和 0.5。

為什么這樣做呢?

可以這樣理解,整個(gè) YOLO 系統(tǒng)其實(shí)最有效的地方就是那些包含了目標(biāo)中心點(diǎn)的網(wǎng)格它們所預(yù)測(cè)的 2 個(gè) bbox,所以它們這 2 個(gè) bbox 的位置信息就至關(guān)重要,所以它們的坐標(biāo)就不允許它們變化劇烈,所以就需要添加一個(gè)系數(shù)放大它們的誤差,進(jìn)而達(dá)到懲罰的目的。

而沒(méi)有包含目標(biāo)的網(wǎng)格,雖然它們也會(huì)預(yù)測(cè) bbox,也會(huì)有 confidence 的預(yù)測(cè),但基本等同于無(wú)效,所以可以看做它們對(duì)于整體的 Loss 而言,沒(méi)有那么重要,因此要減弱它們對(duì)于 Loss 的影響,以防止它去干擾正常的包含了目標(biāo)的那些 bbox 的 confidence 表現(xiàn),畢竟它無(wú)關(guān)緊要。

說(shuō)到這里,我有思考一個(gè)問(wèn)題:

如果要減弱沒(méi)有 object 時(shí)的 confidence 對(duì) loss 整體的影響,為什么不做到極致?讓?xiě)土P系數(shù)由 0.5 變成 0 不更好嗎?

我沒(méi)有標(biāo)準(zhǔn)答案,但我的理解是那樣會(huì)讓 YOLO 這個(gè)系統(tǒng)失衡,喪失了預(yù)測(cè)背景的能力,所以也失去了某種綜合的能力。

sum-squared error 還有一個(gè)問(wèn)題,那就是它會(huì)讓大的 bbox 和小的 bbox 位置誤差敏感度一樣。

比如預(yù)測(cè)一個(gè)小的 bbox,groundtruth 的 width 是 4,它預(yù)測(cè)是 3,那么它的誤差是 1.

再預(yù)測(cè)一個(gè)大的 bbox,groundtruth 的 width 是 100,預(yù)測(cè)值是 99,那么誤差也是 1.

但大家很容易發(fā)現(xiàn),進(jìn)行小尺寸的 bbox 預(yù)測(cè)時(shí),誤差更敏感,所以 sum-sqaured error 手段需要改良。

YOLO 采用的是用預(yù)測(cè)值和 groundtruth 各自的平方根做誤差,然后再 sum-sqaured error。

還是用剛才的例子,小的 bbox width prediction = 3,groundtruth = 4,誤差為 0.067。

大的 bbox width prediction = 99,groundtruth = 100,誤差為 0.0025。

所以,完美的解決了這個(gè)問(wèn)題。

最終的 Loss 變成了一個(gè)復(fù)合的 Loss,公式如下: 

需要注意的是,YOLO 每個(gè)網(wǎng)格預(yù)測(cè)兩個(gè) bbox,最終只有 1 個(gè) bbox 來(lái)負(fù)責(zé)代表相應(yīng)的目標(biāo)的 bbox 位置,它們通過(guò) Confidence 比較,也就是 IOU 比較,勝出的是分?jǐn)?shù)更高的那個(gè),進(jìn)行 loss 計(jì)算時(shí),也是這個(gè) bbox 才能參與。



其它具體的訓(xùn)練策略如下:

第一個(gè) epoch,學(xué)習(xí)率從 0.001 緩慢變成 0.01.

接下來(lái)的 75 個(gè) epoch ,學(xué)習(xí)率固定為 0.01

之后又用 0.001 訓(xùn)練 30 個(gè) epoch

最后用 0.0001 訓(xùn)練 40 個(gè) epoch

為了避免過(guò)擬合,YOLO 訓(xùn)練時(shí)有采用 dropout 和數(shù)據(jù)增強(qiáng)手段。

總結(jié)
YOLO v1 也有和當(dāng)年其它杰出的目標(biāo)檢測(cè)系統(tǒng)做對(duì)比,但在今天來(lái)看,這個(gè)并不十分重要,重要的是我們需要理解 YOLO 快的原因。

YOLO 就是一個(gè)撒漁網(wǎng)的捕魚(yú)過(guò)程,一次性搞定所有的目標(biāo)定位。

YOLO 快的原因在于比較粗的粒度將輸入圖片劃分網(wǎng)格,然后做預(yù)測(cè)。

YOLO 的算法精髓都體現(xiàn)在它的 Loss 設(shè)計(jì)上及作者如何針對(duì)問(wèn)題改進(jìn) Loss,這種思考問(wèn)題的方式才是最值得我們學(xué)習(xí)的。




  業(yè)務(wù)實(shí)施流程

需求調(diào)研 →

團(tuán)隊(duì)組建和動(dòng)員 →

數(shù)據(jù)初始化 →

調(diào)試完善 →

解決方案和選型 →

硬件網(wǎng)絡(luò)部署 →

系統(tǒng)部署試運(yùn)行 →

系統(tǒng)正式上線(xiàn) →

合作協(xié)議

系統(tǒng)開(kāi)發(fā)/整合

制作文檔和員工培訓(xùn)

售后服務(wù)

馬上咨詢(xún): 如果您有業(yè)務(wù)方面的問(wèn)題或者需求,歡迎您咨詢(xún)!我們帶來(lái)的不僅僅是技術(shù),還有行業(yè)經(jīng)驗(yàn)積累。
QQ: 39764417/308460098     Phone: 13 9800 1 9844 / 135 6887 9550     聯(lián)系人:石先生/雷先生