1. 程式人生 > >手把手教你用深度學習做物體檢測(七):YOLOv3介紹

手把手教你用深度學習做物體檢測(七):YOLOv3介紹

YOLOv3

論文:《 YOLOv3: An Incremental Improvement 》
地址: https://arxiv.org/pdf/1804.02767.pdfyolov3

相比之前版本的改進

  • 網路的特徵提取部分
    由 Darknet-19改成了 Darknet-53,更深了,速度確有下降,但是相比ResNet來說仍然高很多。
    b799f7151e3a56e0c6678fdae50a3c00.png
    9d554116caf26a6a91d11ab2569aec06.png

  • 跨尺度預測
    yolov3網路在3個不同尺寸的特徵圖下,每個尺寸的特徵圖預測出3個boxes,anchor box還是採用聚類的方法得到9個anchor box,然後3個不同的尺寸特徵圖各得到3個anchor box。 這樣就得到了N ×N ×[3∗(4+1+80)] ,N為格子大小(13*13、26*26、52*52),3為每個格子得到的邊界框數量, 4是邊界框引數數量(x,y,w,h),1是置信度(包含類別和邊界框位置),80是類別數量(這裡coco資料集是80類)。
    dc15c8d08efd69014003e733f7459377.png
    yolo3會利用第82、94、106層的特徵圖來進行不同尺寸的目標檢測。
    82層的影象小(解析度低),感受野大,可以到檢測影象中較大的目標;
    94層的影象中等,感受野中等,可以檢測到影象中不大也不小的目標;
    106層的影象大(解析度高),但感受野相對最小,可以檢測到影象中較小的目標。
    所以如果訓練過程中,發現某層的輸出值是非數,這只是說明在這層沒有檢測到目標物件,只要三層中至少有一層能輸出正常的數字,就是正常的。
    從圖上也可以看到,為了能同時學到淺層和深層的特徵,上面的82、94層特徵圖自身經過上取樣後還會和早期層的特徵圖做一些拼接(concat)操作。用論文原話說就是:這樣的方法讓我們從上取樣特徵中得到更多有意義的語義資訊;從更早期的特徵中得到紋理資訊(finer-grained information)。

  • 類別預測
    因為每個邊界框都採用多標籤分類器來預測包含的類別,所以作者 沒有使用softmax,而是為每個類別的預測使用了相互獨立的邏輯迴歸分類器。該方法使得yolov3可以訓練類像Open Images資料集那麼複雜的資料,該資料集有許多包含屬性的標籤,比如(比如對影象中的一個人進行標註,可以有“女人”和“人”等多個標籤)。

yolov3效能對比圖表:

02eb463917889391964e568f7b1d0deb.png

總結一下:

  • YOLOv1提出了一個端到端的目標檢測模型,輸入圖片,僅跑一個網路,即可識別出圖片中的目標型別和目標的位置。
  • YOLOv1相比其他模型,更快,已經可以達到實時檢測的水品;泛化能力更強,即使在自然圖片上訓練,然後在藝術圖片上測試也能有很好的表現。
  • YOLOv1的缺點也很明顯:在目標位置的預測上還不夠準確;很難檢測小目標(比如鳥群);很難泛化到新的或不常見的縱橫比圖片上;
  • YOLOv2在學習速度、準確度、對小目標的檢測、對不同尺度圖片的檢測上都有提升;
  • YOLOv3採用了更深的網路來提取特徵,準確度提升了2%以上,速度下降了,但是仍然比其他模型要高很多;
  • YOLOv3採用了跨尺度預測和FPN( feature pyramid networks)的結構,綜合考慮了淺層的特徵和深層的特徵,使得位置資訊和語義資訊都能更準確的預測;
  • YOLOv3可以訓練類像Open Images那樣複雜的資料集,因為作者 沒有使用softmax,而是為每個類別的預測使用了相互獨立的邏輯迴歸分類器。

ok,yolo的原理和各版本差異就介紹到這裡啦,還想了解更多細節的朋友建議親自讀一讀原論文,然後結合之前筆者寫的幾篇目標檢測系列的文章親自上手操作一下,會有更深的理解。

參考文獻:
https://arxiv.org/pdf/1506.02640.pdf
https://arxiv.org/pdf/1612.08242v1.pdf
https://arxiv.org/pdf/1804.02767.pdfyolov3
https://towardsdatascience.com/yolo-v3-object-detection-53fb7d3bfe6b

相關推薦

手把手深度學習物體檢測()YOLOv3介紹

YOLOv3 論文:《 YOLOv3: An Incremental Improvement 》 地址: https://arxiv.org/pdf/1804.02767.pdfyolov3 相比之前版本的改進 網路的特徵提取部分 由 Darknet-19改成了&n

手把手深度學習物體檢測(五)YOLOv1介紹

之前寫物體檢測系列文章的時候說過,關於YOLO演算法,會在後續的文章中介紹,然而,由於YOLO歷經3個版本,其論文也有3篇,想全面的講述清楚還是太難了,本週終於能夠抽出時間寫一些YOLO演算法相關的東西。本篇文章,我會先帶大家完整的過一遍YOLOv1的論文,理解了YOLOv1才能更好的理解它的後續版本,YO

手把手深度學習物體檢測(二)資料標註

  “本篇文章將開始我們訓練自己的物體檢測模型之旅的第一步—— 資料標註。”   上篇文章介紹瞭如何基於訓練好的模型檢測圖片和視訊中的物體,若你也想先感受一下物體檢測,可以看看上篇文章:《手把手教你用深度學習做物體檢測(一):快速感受物體檢測的酷炫 》。   其實,網上關於資料標註的文章已有很多,但

手把手深度學習物體檢測(三)模型訓練

本篇文章旨在快速試驗使用yolov3演算法訓練出自己的物體檢測模型,所以會重過程而輕原理,當然,原理是非常重要的,只是原理會安排在後續文章中專門進行介紹。所以如果本文中有些地方你有原理方面的疑惑,也沒關係,可以自行網上搜索相關資料,也可以先留著問題,相信你會在後續文章中找到答案。    

手把手深度學習物體檢測(四)模型使用

上一篇《手把手教你用深度學習做物體檢測(三):模型訓練》中介紹瞭如何使用yolov3訓練我們自己的物體檢測模型,本篇文章將重點介紹如何使用我們訓練好的模型來檢測圖片或視訊中的物體。   如果你看過了上一篇文章,那麼就知道我們用的是 AlexeyAB/darknet專案,該專案雖然提供了物體檢測的

零基礎可上手 | 手把手Cloud AutoML毒蜘蛛分類器

原作:Matt Fraser安妮 編譯自 Shine Solutions量子位 出品 | 公眾號

超有趣!手把手Python實現實時“人臉檢測

  Instagram 的聯合創始人兼首席技術官 Mike Kreiger 說:“計算機視覺和機器學習其實已開始流行起來,但是對於大多數人來說,計算機看了影象後看到了什麼這方面還是比較模糊。”     近年來,計算機視覺這個神奇的領

深度學習命名實體識別(六)-BERT介紹

什麼是BERT? BERT,全稱是Bidirectional Encoder Representations from Transformers。可以理解為一種以Transformers為主要框架的雙向編碼表徵模型。所以要想理解BERT的原理,還需要先理解什麼是Transformers。 Transforme

深度學習物體檢測——YOLO(一)_介紹

##YOLO網路結構 YOLO把檢測問題看成是端到端的迴歸問題。把輸入圖片劃分成一個個的小格子,讓物體中心點所在的格子負責檢測到該物體。 YOLO採用的是GoogLeNet結構,但是用1*1和3*3的卷積層來替代GoogLeNet的inception層。網路

手把手matlab深度學習(一)- --CNN

1.使用深度學習做目標檢測 上一篇部落格已經講解了怎麼用matlab匯入資料。 [trainingImages,trainingLabels,testImages,testLabels] = helperCIFAR10Data.load('cifar10Data');

手把手Python實踐深度學習|深度學習視頻教程

視頻 ref ati pan 人工神經網絡 com 深度學習 encoder auto 手把手教你用Python實踐深度學習網盤地址:https://pan.baidu.com/s/1mkoC9ELXDglvTNN_xPUWlQ 提取碼: zgpy備用地址(騰訊微雲):ht

深度學習入門篇——手把手 TensorFlow 訓練模型

Tensorflow在更新1.0版本之後多了很多新功能,其中放出了很多用tf框架寫的深度網路結構,大大降低了開發難度,利用現成的網路結構,無論fine-tuning還是重新訓練方便了不少。最近筆者終於跑通TensorFlow Object Detection API的ssd_mobilenet_v1模型,

深度學習入門篇--手把手 TensorFlow 訓練模型

歡迎大家前往騰訊雲技術社群,獲取更多騰訊海量技術實踐乾貨哦~ 作者:付越 導語 Tensorflow在更新1.0版本之後多了很多新功能,其中放出了很多用tf框架寫的深度網路結構(https://github.com/tensorflow/mode

手把手 | 幾行Python和消費資料客戶細分

    細分客戶群是向客戶提供個性化體驗的關鍵。它可以提供關於客戶行為、習慣與偏好的相關資訊,幫助企業提供量身定製的營銷活動從而改善客戶體驗。在業界人們往往把他吹噓成提高收入的萬能藥,但實際上這個操作並不複雜,本文就將帶你用簡單的程式碼實現這一專案。 客戶

手把手 幾行Python和消費資料客戶細分

  細分客戶群是向客戶提供個性化體驗的關鍵。它可以提供關於客戶行為、習慣與偏好的相關資訊,幫助企業提供量身定製的營銷活動從而改善客戶體驗。在業界人們往往把他吹噓成提高收入的萬能藥,但實際上這個操作並不複雜,本文就將帶你用簡單的程式碼實現這一專案。 我們需要建立什麼?

【Python量化】手把手python股票分析入門

內容來自:微信公眾號:python金融量化 關注可瞭解更多的金融與Python乾貨。 目前,獲取股票資料的渠道有很多,而且基本上是免費的,比如,行情軟體有同花順、東方財富等,入口網站有新浪財經、騰訊財經、和訊網等。Python也有不少免費的開源api可以獲取交易行情資料,如pandas自

手把手GAN實現半監督學習

引言 本文主要介紹如何在tensorflow上僅使用200個帶標籤的mnist影象,實現在一萬張測試圖片上99%的測試精度,原理在於使用GAN做半監督學習。前文主要介紹一些原理部分,後文詳細介紹程式碼及其實現原理。前文介紹比較簡單,有基礎的同學請掠過直接看第二

手把手R實現標記化(附程式碼、學習資料、語料庫)

作者:Rachael Tatman翻譯:樑傅淇本文長度為1600字,建議閱讀4分鐘標記化是自然語

手把手圖靈機器人微信公眾號自動回覆助手

本文首發於我的個人部落格:尾尾部落 閱讀這篇文章,你將會學會以下內容: 如何用flask搭建微信公眾平臺服務 如何將在微信公眾平臺呼叫圖靈機器人 如何用uwsgi+supervisor+nginx部署flask應用 實驗