# YOLOv3 論文閱讀 YOLOv3: An Incremental Improvement: https://arxiv.org/pdf/1804.02767.pdf ## Introduction 前言作者講說他沒甚麼時間更進一步研究YOLO演算法,不過他有提出一些改善的方法,因此本篇會比較像是以技術報告方式呈現XD。 ## The Deal YOLOv3從既有的論文中截長補短 ### Bounding Box Prediction YOLOv3遵循YOLOv2中4個座標的算法即bx, by, bw, bh並採用平方誤差和計算loss:  YOLOv3中以logistic regression來預測每個預測框的信心值,並以預測框與真實物件(ground truth)的重疊情形來判斷(若某個預測框與真實物件重疊較其他預測框多,則設為1),而其他的預測框(IOU>threshold),在預測時會被忽略,YOLOv3中僅指派一個預測框給真實物件,而若某預測框並沒有被指派給真實物件則不會計算其loss。 ### Class Prediction 因softmax適用於單標籤多分類的情況(類別互斥),然而預測目標中可能會有重疊的標籤如人、女人等情況,因此YOLOv3採用多個logistic regression分類器,並採用binary cross entropy 作為loss function。 ### Predictions Across Scales YOLOv3預測了3個輸出:bounding box、是否為物件、類別,而每一個scale會預測3個box,因此最後的輸出量為:$N*N*[3*(4+1+80)]$ ,其中80為類別數量。  在feature extraction之後,YOLOv3中採用FPN來擷取3個不同scale的feature map,第一層的feature map(scale最小)會先經由一系列卷積層處理後輸出預測值,之後該層feature map會經上採樣取得2倍大小的特徵層並與其前一層做concat,再經一系列卷積處理後輸出預測值,最後一層feature map也會以相同方法輸出最後的預測值,由圖可知,最後會得到3層feature map的預測值,此方法是為了從不同scale的特徵層獲取更多有意義的語意資訊。 YOLOv3中也是使用K-means來決定先驗框(anchor box or prior box),在COCO dataset中選取了9個群集(3 boxes for 3 scales)。  ### Feature Extractor 與YOLOv2不同,YOLOv3的backbone採用Darknet-53,其架構如下:  ### Training 訓練方法沒有太大更動,都有使用multi-scale training, data augmentation及batch norm等等。 ## Things We Tried That Didn't Work * Anchor box x,y offset predictions 文中探討使用正常的anchor box預測機制,即使用linear激活函數預測x,y 偏移量作為框的長與寬,而這樣做會降低模型的問定性。 * Linear x,y predictions instead of logistic 文中探討使用linear激活函數來取代logistic激活函數來計算x,y偏移量,而這樣做會降低整體經度。 * Focal loss 使用focal loss會降低2mAP。 ## Evaluation   在不同AP值的比較上,可以看到YOLOv3較YOLOv2與SSD來的好,卻略遜於RetinaNet,然而在下圖中可以看到YOLOv3系列的inference time遠低於其他演算法。因此總體而言,YOLOv3在維持高精度的同時也降低了inference的時間。 ## Comment YOLOv3中替換了Darknet-53作為backbone並使用FPN作為neck來預測bounding box,而類別分類也採用Logistic regression作為分類器,其他部分如訓練方法等幾乎沒有太大的變動,不過卻還是能取得很好的成果。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up