當前位置:
首頁 > 知識 > 目標檢測演算法之YOLOv3及YOLOV3-Tiny

目標檢測演算法之YOLOv3及YOLOV3-Tiny

本文來自@BBuf的社區專欄GianPandaCV,文末掃碼即可訂閱專欄。

前言

昨天稍微填上了YOLOv2損失函數的坑,然後我在知乎關注了一個有趣的問題,地址是:https://www.zhihu.com/question/357005177 。這是我在上面寫的一個回答:

因此,這一節我們只用關注YOLOv3演算法本身,訓練的時候將它的損失函數認為和YOLOv2一樣就好,Darknet以及很多開源代碼都是這樣來做的。

演算法原理

YOLOv3應該是現在YOLO系列應用的最廣泛的演算法了,基本就很少有人做工程還用V2了。而YOLOv3的演算法原理也很簡單,就引入了2個東西,一個是殘差模型,一個是FPN架構。FPN我們已經介紹過了,推文在這:目標檢測演算法之FPN殘差結構後面梳理經典網路的時候應該會再介紹一遍。

殘差模型Darknet-53

YOLOv3在YOLOv2提出的Darknet-19的基礎上引入了殘差模塊,並進一步加深了網路,改進後的網路有53個卷積層,命名為Darknet-53,網路結構如下:

同時為了說明Darknet-53的有效性,作者給出了在TitanX上,使用相同的條件將

的圖片分別輸入到以Darknet-19,Resnet-101,以及Resnet-152以及Darknet-53為基礎網路的分類模型總,實驗結果如下表:

從結果來看,Darknet-53比ResNet-101的性能更好,而且速度是其1.5倍,Darknet-53與ResNet-152性能相似但速度幾乎是其2倍。同時,Darknet-53相比於其它網路結構實現了每秒最高的浮點數計算量,說明其網路結構可以更好的利用GPU。

YOLOV3結構

一張非常詳細的結構圖,其中YOLOv3有三個輸出,維度分別是:

這裡的75介紹過,代表的

,其中20代表的是COCO數據集目標類別數,5代表的是每個目標預測框的

,3代表的是某一個特徵圖的Anchor,也即先驗框的數目。所以YOLOv3一共有9個Anchor,不過被平均分在了3個特徵層中,這也實現了多尺度檢測。。。一不小心就講完了?

多尺度檢測?

上一節講完了。。。總結一下,YOLOv3借鑒了FPN的思想,從不同尺度提取特徵。相比YOLOv2,YOLOv3提取最後3層特徵圖,不僅在每個特徵圖上分別獨立做預測,同時通過將小特徵圖上採樣到與大的特徵圖相同大小,然後與大的特徵圖拼接做進一步預測。用維度聚類的思想聚類出9種尺度的anchor box,將9種尺度的anchor box均勻的分配給3種尺度的特徵圖。

補充:YOLOv3-Tiny

或許對於速度要求比較高的項目,YOLOV3-tiny才是我們的首要選擇,這個網路的原理不用多說了,就是在YOLOv3的基礎上去掉了一些特徵層,只保留了2個獨立預測分支,具體的結構圖如下:

這個是工程下更加常用的。

後記

YOLOv3和YOLOv3-Tiny就講完了,感覺就是水文,後面有機會就更新一下如何使用NCNN部署YOLOv3或者YOLOv3-tiny模型,如果我還記得住這件事情的話,哈哈。順便說一句,目標檢測系列的講解還遠遠沒有結束,不信可以看我公眾號work那一欄裡面的深度學習里的目標檢測學習路線,還有超多坑需要慢慢填!!!如果看到這裡,不妨在右下角點個在看吧,謝謝。

掃碼訂閱專欄

關於專欄

AI 研習社專欄旨在滿足有持續創作能力的的知名學者、技術專家、優秀博主、講師和人工智慧人才文字創作和打造專屬個人IP的需求。AI 研習社希望能夠幫助大咖見證求知,分享洞見~

歡迎大家來AI研習社訂閱/開通專欄:https://www.yanxishe.com/column

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!


請您繼續閱讀更多來自 AI研習社 的精彩文章:

目標檢測演算法之YOLOv2損失函數詳解
人工智慧及其演算法&雲原生技術的前世今生