YOLOv1學習筆記

2022-10-09 08:42:10 字數 3562 閱讀 9352

(大部分內容)

(補充)

核心思想

rcnn系列核心思想是proposal(建議區域)+分類;

yolo系列核心思想是直接在輸出層回歸bounding box位置和bounding box的所屬類別;

大致流程

resize:resize成448*448,分割成7*7網格的cell;

cnn提取特徵和**:卷積負責提取特徵,全連線層負責**;(s=7,是引數可以改)

7*7*2=98個bounding box(bbox)的座標xcenter,ycenter,w,h,confidence;

7*7=49個cell所屬類別;(每個cell負責乙個物體,所以最多可**49個物體)

使用nms非極大值抑制過濾bounding box數量;

網路設計

網路結構借鑑googlenet,由於來自《object detection networks on convolutional feature maps》提到說在訓練網路中增加卷積和全鏈結層可以改善效能,所以在20個卷積層的基礎之上,新增了4個卷積層和2個全連線層。

檢測要求細粒度的視覺資訊,所以把網路輸入也又224*224變成448*448。

每個網格向量

單個網格的責任

整幅影象劃分為7*7的網格grid cell,若是某個物體的中心位置落在這個網格內,那麼這個網格就負責**這個物體;

座標維度資訊

網路最後一層輸出是7*7*30個維度,每個1*1*30的維度對應乙個網格cell所含的資訊,也就是座標資訊和confidence類別資訊;

每個cell要**2個bbox,每個bbox有(x,y,w,h,c),也就是說 2*5=10,就是1*1*30的前10個;

x,y,w,h需要歸一化到0-1之間,加快網路收斂;

confidence值表示所**的box中含有object的置信度和這個box**準確率的兩種含義;

confidence=pr(object)*iou-truth/pred;

第一項表示如果cell有物體就等於1,否則等於0;

第二項表示**bounding box和真實ground truth box的iou值;

回歸offset偏移量代替回歸座標

直接回歸整數(2.3.4.6)比較困難,所以先歸一化到0-1之間,然後得到(0.3,0.6)然後加上(2,4)【也就是當前cell網格的頂點座標】就獲得了當前cell負責**物體的中心座標了。

**類別維度資訊

資料集一共有20個類別,所以輸出就是,7*7*(5*2+20);

通用公式表示輸出就是s*s(5*b+c)的乙個tensor;

損失函式

位置損失

rcoord引數:為了防止背景干擾造成的訓練樣本樣本,設定引數為5,增強正樣本作用;

yolo面臨的物體檢測問題,是乙個典型的類別數目不均衡的問題。

此時如果不採取點措施,那麼物體檢測的map不會太高,因為模型更傾向於不含有物體的格點。

這個控制引數的作用,就是讓含有物體的格點,在損失函式中的權重更大,讓模型更加「重視」含有物體的格點所造成的損失。

1-obj/ij引數:第i個cell的第j個bbox有沒有obj,有就是等於1,沒有等於0;也就是只對那些有真實物體所屬的格點進行損失計算,若該格點不包含物體,那麼**數值不對損失函式造成影響。

座標引數是兩個數相減再平方,圖中有誤;(簡單的平方和誤差)

長寬損失

開根號引數:開根號後,小目標框表示的差值更大,更適用於小目標框對位置更敏感這一特點;

不取根號會更傾向於大尺寸的**框。

取根號是為了盡可能的消除大尺寸框與小尺寸框之間的差異。

含obj的bbox的confidence損失

**是物體的概率*iou

不含obj的bbox的confidence損失

rnoobj引數:設定為0.5,消除負樣本影響;

類別**損失

物體類別概率p,對應的類別位置,該標籤數值為1,其餘位置為0,與分類網路相同。

**某個類別

每個網格**的class資訊(pr項)和bbox**的confidence資訊(pr*iou項)相乘,得到每個bbox的confidence score;

等式左邊第一項就是每個網格**的類別資訊;

第二三項就是每個bounding box**的confidence。

這個乘積的結果即encode了**的box屬於某一類的概率,也有該box準確度的資訊。

每個cell

對每乙個網格的每乙個bbox執行同樣操作: 7x7x2 = 98 bbox (每個bbox既有對應的class資訊又有座標資訊)

設閾值&nms

得到每個bbox的class-specific confidence score以後,設定閾值,濾掉得分低的boxes,對保留的boxes進行nms處理,就得到最終的檢測結果。

缺陷

每個cell只能**乙個物體,如果兩個物體靠的比較近,檢測效果不好;

固定的**框長寬比,在遇到不常見物體的長寬時,泛化能力差;

損失函式在定位誤差和檢測大小物體上需要改進;

特點

位置定位錯誤率高,但是對背景誤檢率低;

對小目標效果差;

利用整幅影象**,而不是基於滑動框的建議框做**;

YOLOv1解讀筆記

當前最好系統相比,yolo目標區域定位誤差更大,但是背景 的假陽性優於當前最好的方法.注1 bounding box是怎麼來的呢?其實是在檢測每個grid cell時,若檢測到目標,則會將其標出來 圖中的紅色框 這就是bounding box。注2 設定多個anchor boxes幹嘛呢?是這樣的,...

目標檢測之YOLOv1

you only look once unified,real time object detection yolo 一體化的,實時的物體檢測 翻譯 詳解 1 2 1 yolov1框架 步驟 1 resize成448 448,分割得到7 7網格 cell 2 cnn提取特徵和 卷積層負責提取特徵。全...

目標檢測 YOLOv1總結

yolov1筆記 faster rcnn筆記 還存在什麼問題?yolov1檢測精度低於當時的先進網路演算法 yolov1容易產生物體定位錯誤 yolov1對小目標的檢測效果不好 每網格只能 兩個物體 概述 1.abstract 乙個單一的神經網路在一次檢測中直接從完整的影象 邊界框和類別概率 單一的...