# YOLOv3 (2018) YOLOv3 與 YOLOv2 有下列幾種不同之處 ### 1. New Network: Darknet-53 YOLOv3 提出一個新的 backbone - Darknet-53,其中包含了 53 個卷積層,每個卷積層後面都會接 BatchNorm 層與 LeakyReLu 層。而網路的加深會容易導致梯度消失或爆炸,因此需要使用 ResNet 網路的技巧來克服這個問題,其中包含了 Residual blocks, Skip connections Darknet-53 的網絡架構如下圖所示  YOLOv3 網路中將 pooling 層移除,並透過改變 filter 與 stride 來改變特徵圖大小。下面是 YOLOv2 與 YOLOv3 的比較。  由下圖的比較圖中可以看到 Darknet-19 在速度上仍然佔據很大的優勢,但其實 YOLOv3 並沒有那麼追求速度,而是在保持 real-time (fps>36) 的基礎下追求精準度。若要追求速度,作者有提供 darknet-tiny 的 backbone 用來取代 darknet-53。  ### 2. Predictions Across Scales YOLOv3 最顯著的特點就是借鑒了 FPN (Feature Pyramid Networks)的方法,在 3 個不同 Scale 的 feature maps 上做預測。將 upsampling 層與前一層 Feature map 相連接,有助於保留細粒度特徵,使得能夠檢測小對象。這 3 種不同 Scale 的 feature maps 負責預測不同尺寸的物體。 例如我們輸入圖像為 416x416 意味著我們在 52×52 (416/8) 、26×26 (416/16)、13×13 (416/32) 這三種 Scale 上進行預測。 - Scale 1: 13x13 層負責偵測大物體 - Scale 2: 26x26 層負責偵測中物體 - Scale 3: 52x52 層負責偵測小物體  而每個 Scale 需要分別預測出 3 個 Bbox,因此總共需要 9 個 anchor box 去幫助我們預測,在這邊 YOLOv3 引用了 YOLOv2 中的技巧,使用 K-means 對訓練集進行 clustering ,進而得到類別中心點的 9 個 anchor box。在 COCO 資料集中 (原始圖片全部 resize 為 416x416),9 個 anchor box 分別是 (10x13)、(16x30)、(33x23)、(30x61)、(62x45)、(59x119)、(116x90)、(156x198)、(373x326)。 另外,COCO 資料集中的類別個數是 80 個, 因此每種 Scale 的 每個 cell 都需要預測出 255 的深度。  下圖為網路架構:  這邊有一個實例的網路架構如下圖:  - 第一次預測:在 82 層,feature map 大小為 13x13x255。 - 第二次預測:對 79 層的 feature map 進行幾層卷積,再進行 2x up sampling 得到 26x26 維,然後和 61 層連接起來,再對它進行幾個 1x1 卷積處理用以融合 61 層的特徵,最後生成 26x26x255 的 feature map - 第三次預測:對 91 層的 feature map 進行幾層卷積,再進行 2x up sampling 得到 52x52 維,然後和 36 層連接起來,再對它進行幾個 1x1 卷積處理用以融合 36 層的特徵,最後生成 52x52x255 的 feature map ### 3. Bounding Box Prediction YOLOv3 在 Detect 之前用 logistic regression 為每一個 bounding box 預測一個 confidence score。即這塊位置是目標的可能性有多大,可以去掉不必要的 anchor,可以減少計算量,對每個 ground truth 只分配一個最好的bounding box 與其對應。而 logistic 回歸就是用來從 9 個 anchor priors 中找到 confidence score (目標存在可能性得分) 最高的那一個 - 當某個 bounding box 與 ground truth 的 IOU 大於其他所有的 bounding box 時,則設 target 值為 1 - 如果某個 bounding box 不是 IOU 最大的那個,但是 IOU 也大於了某個閾值 (default 0.5),那麼忽略這個框,既不懲罰也不獎勵。 - 如果某個 bounding box 沒有與任何一個 ground truth 對應,那麼這個框對邊框位置大小的回歸和類別預測沒有幫助,只會懲罰他的 objects,試圖減小他的 confidence ### 4. Class Prediction YOLOv3 不使用 softmax 對每個框進行分類,因為 softmax 強加一個假設,使得每個框只包含一個類別。而很多東西是重疊的標籤,比如預測的是女生,也屬於人這一個類別,這是一個多標籤問題,而 softmax 不適合多標籤分類。因此YOLOv3 將 softmax 替換成可預測多標籤多分類的 binary cross-entropy $$loss=-\mathop{\sum_{i=1}^{n}} \hat{y_{i}}log \hat{y_{i}}+(1-y_{i})log(1-y_{i})$$ ### 5. Loss Function YOLOv2 直接預測座標位置,不僅速度慢,而且 sigmoid 轉換中還會消除部分的 difference,  - 根據他這個 Bbox 裡面是否存在這個物件,並做二元分類預測,二元的意思是指 1.有這個類別 2.沒有這個類別,而他的 BCE 總和便是針對所有可能出現的類別,各做一次預測 - YOLOv3 將 object confidence 和 class predictions 部分的 loss 改用 binary cross-entropy loss 而不是使用 mean square error 去計算分類誤差。於是採用一種方式直接對偏移量進行預測  YOLOv3 的性能  ###### tags: `Object detection`
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.