yolo演算法筆記

2022-05-06 23:21:09 字數 2230 閱讀 1301

yolo演算法筆記

目標檢測方法yolo(you only look once),看一眼就可識別目標。與r-cnn比,有以下特點(faster-rcnn 中rpn網路吸取了該特點):

速度很快

看到全域性資訊,而非r-cnn產生乙個個切割的目標,由此對背景的識別效率很高

可從產生的有代表性的特徵中學習。

流程:以pascal voc資料集為例。

1.  輸入448x448大小的,通過預訓練的卷積網路(vgg系列等)對特徵進行提取(如圖),最後輸出7x7大小的網路單元。

2.  每個網路單元**2個**框(不同長寬比),每個**框**該部分內包含的物體位置,分類和置信度**。所以整體資料維度為7x7x(2*(4+1)+20 ). 其中每個預       測單元包括4個位置資訊(x,y,w,h),1個置信度(與真實物體的iou),20個類別資訊為兩個**框共有。

3.  如果該物體中心在該**框內,則包含該物體。置信度為iou***框包含物體的概率,其中每個**框的置信度與類別資訊相乘,得到類別置信度。之後對所有的      **框,根據類別置信度進行nms。

nms過程:對每乙個類別,將類別置信度小於0.2的**框得分設定為0,對置信度按從大到小排序,將最大的保留,之後每乙個**框計算與最大置信度**框計算iou,將iou大於0.5的**框得分設定為0。最後部分即為**,損失函式如下(與rcnn相比略微複雜,之後的系列逐漸趨同):

訓練時現在imagenet上進行了預訓練,網路使用途中網路前20個卷積層加乙個平局池化和全連線層。預訓練之後,加上隨機初始化的4個卷積層和2個全連線層。

相對於yolov1,yolov2做了如下改進:

更好設定bn層。防止梯度消失及**。使資料分布更加相似,可提高訓練速度及泛化效能。

更高精度。yolov1使用224x224進行預訓練,yolov2直接使用448x448進行預訓練,之後在此基礎上在進行fine-tun

去除fc層及最後pooling層,直接使用卷積層單元來**,分成13x13(單數,因為發現大物體中心經常落在中心)。且引入anchor boxes概念, anchor boxes的數量及大小比例是通過聚類方式確定的。聚類後5為最優值

直接的位置**。如下圖,直接**出邊框位置。tx等為歸一化後的偏移,之後可直接算出**框位置即bx等(參考rcnn系列**位置偏移)。

5 不同尺度的預訓練,每隔10個epoch,輸入尺度增加32

6 網路結構採用fine-grained features,即採用不同的卷積特徵層,以便提取不同精細度的特徵。看原始碼含義為比如64*64可分為4個32*32然後疊加起來。與faster-rcnn的跨層聯結上有一點不同

更快引入darknet-19

分類和檢測分開,分類時先使用224x224訓練,之後將尺度改為448x448。之後檢測時去掉網路最後乙個卷積層,每個卷積層接3個3x3x1024  卷積,每個卷積接1x1卷積層。

更強即能檢測出9000個類別。對此段並不是很理解。翻譯**即採用樹狀結構,使用imagenet(分類)和coco(**)聯合訓練。訓練時,如果檢測樣本,按yolov2 loss計算誤差,對分類樣本,只計算分類誤差。**時,置信度為分類概率,同時會給出邊界框位置寄乙個樹狀概率圖,在這個概率圖中找到概率最高的路徑,當達到某一閾值時停止,就用當前節點表示**的類別。

改進:1. 引入殘差網路,使用darknet-53網路。

2. 採用3個不同尺度的卷積,yolov2是將兩個尺度的特徵圖連線起來。yolov3為三個特徵圖,且做了不同處理。每個尺度的卷積圖使用3個anchor。共3*3個anchor

3. 損失函式改進。類別**由softmax改為n個sigmoid.

更像是對yolo系列演算法的乙個總結,整體突破不太大。下個會對yolov3的tensorflow/keras原始碼進行解析

YOLO演算法總結

步驟 1.輸入 608,608,3 2.經過cnn處理,輸出 19,19,5,85 3.展開以上矩陣後為 19,19,425 每個19 19的網格裡有425個數字 425 5 85,每個網格裡有5個achor box,achor box中有85個數字 85 5 80,pc,bx,by,bw,bh,c...

Yolo系演算法

一 yolo系演算法 目前深度學習相關的目標檢測方法大致可以分為兩派 1 基於區域提名的 regin proposal 的,比如r cnn spp net fast r cnn faster r cnn r fcn。2 基於端到端 end to end 的,無需候選區域,如yolo ssd。二者發展...

目標檢測 YOLO演算法

r cnn系列目標檢測方法 r cnn,fast r cnn,faster r cnn 看做目標檢測,都是需要 看兩眼 的。即,第一眼做 region proposals 獲得所有候選目標框,第二眼對所有候選框做 box classifier候選框分類 才能完成目標檢測 事實上 第一眼 是挺費時間的...