當前位置:
首頁 > 最新 > 介紹一個相對小眾的深度學習框架Darknet,其YOLO神經網路演算法對目標檢測效果顯著

介紹一個相對小眾的深度學習框架Darknet,其YOLO神經網路演算法對目標檢測效果顯著

Darknet——一個源碼為C的神經網路框架

今天路同學介紹一個相對小眾的深度學習框架——Darknet。

與流行的Tensorflow以及Caffe框架相比,Darknet框架在某些方面有著自己獨特的優勢。

關於Darknet深度學習框架

Darknet深度學習框架是由Joseph Redmon提出的一個用C和CUDA編寫的開源神經網路框架。它安裝速度快,易於安裝,並支持CPU和GPU計算。

你可以在GitHub上找到源代碼:

https://github.com/pjreddie/darknet

你也可以在官網上閱讀完成更多事情:

https://pjreddie.com/darknet/

YOLO演算法

YOLO(You Only Look Once)是Joseph Redmon針對這一框架提出的核心目標檢測演算法。

作者在YOLO演算法中把物體檢測問題處理成回歸問題,用一個卷積神經網路結構就可以從輸入圖像直接預測bounding box和類別概率。

YOLO演算法的優點

1、YOLO的速度非常快。在Titan X GPU上的速度是45 fps(frames per second),加速版的YOLO差不多是150fps。

2、YOLO是基於圖像的全局信息進行預測的。這一點和基於sliding window以及region proposal等檢測演算法不一樣。與Fast R-CNN相比,YOLO在誤檢測(將背景檢測為物體)方面的錯誤率能降低一半多。

3、可以學到物體的generalizable-representations。可以理解為泛化能力強。

4、準確率高。有實驗證明。

事實上,目標檢測的本質就是回歸,因此一個實現回歸功能的CNN並不需要複雜的設計過程。YOLO沒有選擇滑窗或提取proposal的方式訓練網路,而是直接選用整圖訓練模型。這樣做的好處在於可以更好的區分目標和背景區域,相比之下,採用proposal訓練方式的Fast-R-CNN常常把背景區域誤檢為特定目標。當然,YOLO在提升檢測速度的同時犧牲了一些精度。

YOLO的設計理念遵循端到端訓練和實時檢測。YOLO將輸入圖像劃分為S*S個網格,如果一個物體的中心落在某網格(cell)內,則相應網格負責檢測該物體。

在訓練和測試時,每個網路預測B個bounding boxes,每個bounding box對應5個預測參數,即bounding box的中心點坐標(x,y),寬高(w,h),和置信度評分。

這裡的置信度評分(Pr(Object)*IOU(predtruth))綜合反映基於當前模型bounding box內存在目標的可能性Pr(Object)和bounding box預測目標位置的準確性IOU(predtruth)。如果bouding box內不存在物體,則Pr(Object)=0。如果存在物體,則根據預測的bounding box和真實的bounding box計算IOU,同時會預測存在物體的情況下該物體屬於某一類的後驗概率Pr(Class_iObject)。

假定一共有C類物體,那麼每一個網格只預測一次C類物體的條件類概率Pr(Class_iObject), i=1,2,...,C;每一個網格預測B個bounding box的位置。即這B個bounding box共享一套條件類概率Pr(Class_iObject), i=1,2,...,C。基於計算得到的Pr(Class_iObject),在測試時可以計算某個bounding box類相關置信度:Pr(Class_iObject)*Pr(Object)*IOU(predtruth)=Pr(Class_i)*IOU(predtruth)。

如果將輸入圖像劃分為7*7網格(S=7),每個網格預測2個bounding box (B=2),有20類待檢測的目標(C=20),則相當於最終預測一個長度為S*S*(B*5+C)=7*7*30的向量,從而完成檢測+識別任務,整個流程可以通過下圖理解。

YOLO網路設計遵循了GoogleNet的思想,但與之有所區別。YOLO使用了24個級聯的卷積(conv)層和2個全連接(fc)層,其中conv層包括3*3和1*1兩種Kernel,最後一個fc層即YOLO網路的輸出,長度為S*S*(B*5+C)=7*7*30.此外,作者還設計了一個簡化版的YOLO-small網路,包括9個級聯的conv層和2個fc層,由於conv層的數量少了很多,因此YOLO-small速度比YOLO快很多。如下圖所示給出了YOLO網路的架構。

YOLO演算法的缺點

1、位置精確性差,對於小目標物體以及物體比較密集的也檢測不好,比如一群小鳥。

2、YOLO雖然可以降低將背景檢測為物體的概率,但同時導致召回率較低。

路同學最近就在使用這一深度學習框架,親測好用!

最後,附上關於YOLO的論文原文:

https://www.cv-foundation.org/openaccess/content_cvpr_2016/papers/Redmon_You_Only_Look_CVPR_2016_paper.pdf

愛胡思亂想

渴望成為優秀學生的

路同學願和你談談心。

路同學

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

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 全球大搜羅 的精彩文章:

耐克鞋子批發怎麼不容易,為什麼耐克鞋子比較好得到
《股票買賣學》基礎:從宇宙學中獲得靈感

TAG:全球大搜羅 |