摘要:將圖像到作為輸入,輸出,即將圖片劃分為,每個單元格獨立檢測。類別損失當有物體的中心點落在單元格中,此單元格就負責預測該物體。
YOLO-v1介紹
YOLO是一個端到端的目標檢測算法,不需要預先提取region proposal(RCNN目標檢測系列),通過一個網絡就可以輸出:類別,置信度,坐標位置,檢測速度很快,不過,定位精度相對低些,特別是密集型小目標。
YOLO將圖像resize到448x448作為輸入,輸出7x7x30,即:將圖片劃分為7x7,每個單元格獨立檢測。這里需要注意,不是那種滑動窗口將每個單元格都輸入到網絡中進行預測,這里的劃分只是物體中心點位置的劃分之用(劃分越多越準確),物體的中心落在哪個單元格,就由那個單元格負責預測。說完7x7我們再說下另一個維度30,30=(2*5=20),其中“2:每個單元格預測數量(box數量)”,“5:(x,y,w,h,score)”,“20:模型可以預測20個種類”。
YOLO-v1訓練模型首先會將ImageNet作為訓練集預訓練模型,最終達到88%精度,然后使用遷移學習將預訓練的模型應用到當前標注的訓練集進行訓練。模型輸出5維信息(x,y,w,h,score),使用Leaky Relu作為激活函數,全連接層后添加Dropout層防止過擬合。在得到輸出值之后,我們需要計算每個box與ground true的Iou值,然后通過非極大值抑制篩選box。
YOLO-v1損失函數損失函數包含三部分分別是:坐標損失,置信度損失(7x7x2),類別損失(7x7x20)。
坐標損失:
我們使用SSE損失函數(就是MSE損失函數的累加版本),如圖所示我們在“w,h”中加了根號,加根號的原因是,“w,h”的損失在大框和小框之間“權重”應該不同。因為,對應圖像中較大的物體而言,box有些偏移一般并不會影響預測結果。但是對應小物體而言,同樣的偏移可能會脫離預測目標。
置信度損失:
如圖所示,損失函數分為兩部分:有物體,沒有物體,其中沒有物體損失部分還增加了權重系數。添加權重系數的原因是,對于一幅圖像,一般而言大部分內容是不包含待檢測物體的,這樣會導致沒有物體的計算部分貢獻會大于有物體的計算部分,這會導致網絡傾向于預測單元格不含有物體。因此,我們要減少沒有物體計算部分的貢獻權重,比如取值為:0.5。
類別損失:
當有物體的中心點落在單元格中,此單元格就負責預測該物體。
YOLO-v2改進使用批標準化:隨著神經網絡的訓練,網絡層的輸入分布會發生變動,逐漸向激活函數取值兩端靠攏,如:sigmoid激活函數,此時會進入飽和狀態,梯度更新緩慢,對輸入變動不敏感,甚至梯度消失導致模型難以訓練。BN,在網絡層輸入激活函數輸入值之前加入,可以將分布拉到均值為0,標準差為1的正態分布,從而使激活函數處于對輸入值敏感的區域,從而加快模型訓練。此外,BN還能起到類似dropout的正則化作用,由于我們會有‘強拉’操作,所以對初始化要求沒有那么高,可以使用較大的學習率。
High Resolution Classifier:在介紹YOLO-v1的時候我們說到,模型需要先在ImageNet上預訓練模型,因此,此時圖像輸入為224x224,使用遷移學習訓練后我們的圖像輸入是448x448,因此模型需要適應圖像分辨率的改變。在YOLO-v2中,我們在預訓練模型中先224x224訓練160個epoch,然后將輸入調整到448x448,再跑10個epoch,也就是在ImageNet數據集中兩種分辨率跑兩次。YOLO大神作者實現表明,這樣操作可以提高4%的map。
Convolutional With Anchor Boxes:
1,加入anchor boxes,提高box數量。
2,刪除全連接層和最后一個池化層,保留更高分辨率特征。
3,用416x416代替448x448輸入大小,使特征圖有奇數大小的高和寬。
Dimension Clusters:使用k-means的方式對訓練集的bounding boxes做聚類,但是該方法存在不同尺寸的box誤差權重不同,我們希望誤差與尺寸沒有關系,因此通過IOU定義如下函數:
Multi-Scale Training:訓練階段,采用32的倍數作為圖像尺寸動態輸入,如【320,352。。。608】。這種網絡訓練方式使得相同網絡可以對不同分辨率的圖像做detection。
使用Darknet-19作為后端網絡:
YOLO-v3YOLO-v3結構圖以來自木盞,表示感謝,也歡迎關注他的博客。
DBL:指Darknetconv2d_BN_Leaky。
resn:指:n代表數字,有res1,res2, … ,res8等等,表示這個res_block里含有多少個res_unit,使用殘差結構可以讓網絡更深。
concat:張量拼接。將darknet中間層和后面的某一層的上采樣進行拼接。拼接的操作和殘差層add的操作是不一樣的,拼接會擴充張量的維度,而add只是直接相加不會導致張量維度的改變。
后端網絡使用darknet-53:
我們發現,在YOLO-v3網絡中沒有池化層和全連接層,那么張量尺寸的變化是通過改變卷積核步長來實現。同YOLO-v2一樣,輸出尺寸為輸入尺寸的1/32,即:一般要求輸入圖像尺寸是32的倍數。
類別預測由softmax改為logistic(使用sigmoid):用于處理預測物體之間存在包含關系問題,解決多標簽對象支持。比如woman和person,softmax輸出:person,logistic輸出兩者。
使用多尺度特征預測物體:
上圖是YOLO-v3在COCO數據集上使用聚類得到的9種先驗框,一個代表寬度一個代表高度。在不同的感受野中使用不同的先驗框。如果先驗框不是最佳的,即使超過預設定的閾值,也不會進行預測。logistic回歸用來從9個先驗框中找到最佳的那個。
補充:Iou計算 總結YOLO好不好,我們就以一張圖作為總結吧:
祝大家2018年圣誕節快樂!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/19878.html
摘要:將圖像到作為輸入,輸出,即將圖片劃分為,每個單元格獨立檢測。類別損失當有物體的中心點落在單元格中,此單元格就負責預測該物體。 YOLO-v1介紹 YOLO是一個端到端的目標檢測算法,不需要預先提取region proposal(RCNN目標檢測系列),通過一個網絡就可以輸出:類別,置信度,坐標位置,檢測速度很快,不過,定位精度相對低些,特別是密集型小目標。 showImg(https:...
摘要:近幾年來,目標檢測算法取得了很大的突破。本文主要講述算法的原理,特別是算法的訓練與預測中詳細細節,最后將給出如何使用實現算法。但是結合卷積運算的特點,我們可以使用實現更高效的滑動窗口方法。這其實是算法的思路。下面將詳細介紹算法的設計理念。 1、前言當我們談起計算機視覺時,首先想到的就是圖像分類,沒錯,圖像分類是計算機視覺最基本的任務之一,但是在圖像分類的基礎上,還有更復雜和有意思的任務,如目...
閱讀 3034·2023-04-25 18:06
閱讀 3289·2021-11-22 09:34
閱讀 2863·2021-08-12 13:30
閱讀 2049·2019-08-30 15:44
閱讀 1666·2019-08-30 13:09
閱讀 1634·2019-08-30 12:45
閱讀 1720·2019-08-29 11:13
閱讀 3614·2019-08-28 17:51