導航:首頁 > 源碼編譯 > 傳統的目標檢測演算法由兩部分構成

傳統的目標檢測演算法由兩部分構成

發布時間:2023-11-13 03:57:21

Ⅰ 目標檢測-YOLOv3

傳統的目標檢測演算法適用的場景有限,而且維護成本很大。深度學習方法應用於目標檢測,不僅演算法適應性好,還可以進行遷移學習,降低成本。

深度學習目標檢測演算法中,基於錨框(Anchor)的方法主要分為 一階段 方法和 兩階段 方法。

兩階段 方法先對感興趣的區域進行選擇,然後進一步對候選框內做分類和回歸,最終輸出選擇的框以及對應的分類。兩階段的模型有R-CNN系列,比如 R-CNN,Fast-RCNN,Faster-RCNN 等。兩階段模型的優點是精度高,但是速度及較慢。

一階段 方法直接對anchor進行回歸和分類,得到最終目標框和類別,演算法有 YOLOv2,v3,SSD,RetinaNet 等。一階段模型的推理速度較快,但是相對的精度會下降一些。

此外還有一些 anchor-free 的方法,包括基於關鍵點的檢測演算法以及基於中心檢測演算法等。

下面是一些基礎概念和縮寫:
BBox :Bounding Box 邊界框
Anchor :錨框
RoI : Region of Interest 特定的感興趣區域
Region Proposal : 候選區域
RPN : Region proposal network 提取候選區域的網路
IoU : Intersaction over Union (Area of Overlap/ Area of Union) 交並比,預測框的質量
mAP :mean average precision
NMS :non-maximum suppression 非極大值抑制

YOLO系列的模型在保有一定精度的基礎上擁有很快的推理速度,在下面圖中YOLOv3的推理速度遠超其他模型,因此在實時監測領域中有很好的應用。

YOLO的名字來源於you only look once,從名字上就道出了YOLO的精髓。

YOLOv1將圖像劃分為S*S個網路,物體真實框的中心落在哪個網格上,哪個網格對應的錨框就負責檢測物體。
每個網格會預測一個邊界框以及對應的置信度,這里的置信度反映的是模型認為這個框里包含著物體的把握以及它預測到這個物體的精確程度。所以置信度就等於 。如果物體不存在,那麼置信度應該等於零。
每個邊界框會預測5個值 。(x,y)坐標表示框相對於網格單元邊界的中心。 w,y是相對於整個圖像預測寬度和高度。 最後,置信度預測表示預測框與任何真實框之間的IOU。

YOLOv2在v1的基礎上進行了優化,骨幹網路使用了DarkNet19,並且將輸入圖片給尺寸從224增大到448,並且將網路結構設為全卷積網路結構加上Batch Norm,使用了Kmeans聚類方法來計算anchor,引入了多尺度訓練,使網路在訓練過程中學習不同尺度的圖像。不過待改進的地方有在小目標上召回率不高,靠近的群體目標檢測效果不好,檢測精度還有優化空間。

YOLOv3使用了更加深的骨幹網路DarkNet53,同時加入了多尺度預測,在COCO數據集上聚類; 9中不同尺度的anchor,在分類上使用sigmoid激活函數,支持了目標的多分類。YOLOv3的優點是推理速度快,性價比高,通用性強;缺點是召回率較低,定位精度較差,對於靠近或者遮擋的群體、小物體的檢測能力相對較弱。

YOLOv3在v1的基礎上做了很多改動。

邊界框預測
YOLOv3使用聚類預測到的邊界框作為錨框。網路為邊界框預測4個坐標值 ,如果單元格從圖像的左上角偏移了 ,並且先驗邊界框的寬度和高度為 ,則預測如下圖:

YOLOv3給每個邊界框用邏輯回歸預測一個objectness score,如果某個邊界框和真實框重合度比其他都高,那麼它的objectness score應該是1。而其他框雖然也與真實框有重疊,會被忽略掉。

類別預測
使用的是sigmoid函數,沒有用softmax因為沒必要。

不同尺度的預測
YOLOv3使用k-means聚類來確定bounding box priors,選擇了9個clusters和3個scales,然後在整個scales上均勻分割clusters。在COCO數據集上,9個cluster分別為(10×13),(16×30),(33×23),(30×61),(62×45),(59×119),(116×90) ,(156×198),(373×326)。

特徵提取
YOLOv3使用了Darknet-53,特點是加入了殘差,比之前的網路更深了(有53層卷積層所以叫Darknet-53)。

借一張圖看一下YOLOv3的整個流程:

每個輸出分支上對應著三個尺寸的先驗框(總共3 3=9種尺度)。經過32倍下采樣的網格,每一個網格對應著輸入圖像上32 32的區域,適合檢測尺寸較大的目標,而8倍下采樣的網格適合檢測尺寸小的目標。

輸出特徵的高度H和寬度W,相當於將圖像劃分為H*W個網格,而不是直接在圖像上畫網格。也就是說32倍下采樣之後得到的 ,相當於在輸入圖像上劃一個 的網格,每一個網格對應著輸出特徵圖上的一個點。

特徵圖的C通道上表示預測框的信息,包括坐標信息 ,目標置信度,分類。
C=B*(1+4+class_num),B為特徵圖上分配的錨框個數。

損失函數有三個,分類損失,定位損失和objectness損失。分類使用sigmoid激活函數,loss是sigmoid cross entropy。定位損失在x,y上使用sigmoid函數和sigmoid cross entropy損失,在w,h上使用L1損失。objectness損失用的是sigmoid激活函數和sigmoid cross entropy損失。

對於與真實框重疊的框,三種損失都要計算
對於沒有真實框重疊的框,只計算objectness(0);對於與真實框重疊但不是最匹配的框,忽略它們。

Ⅱ 經典目標檢測演算法介紹

姓名:牛曉銀;學號:20181213993;學院:計算機科學與技術

轉自:https://zhuanlan.hu.com/p/34142321

【嵌牛導讀】:目標檢測,也叫目標提取,是一種基於目標幾何和統計特徵的圖像分割。隨著計算機技術的發展和計算機視覺原理的廣泛應用,利用計算機圖像處理技術對目標進行實時跟蹤研究越來越熱門,對目標進行動態實時跟蹤定位在智能化交通系統、軍事目標檢測及醫學導航手術中手術器械定位等方面具有廣泛的應用價值。

【嵌牛鼻子】:目標檢測、檢測模型、計算機視覺

【嵌牛提問】:你知道或者用過哪些目標檢測演算法?

【嵌牛正文】:

(一)目標檢測經典工作回顧

本文結構

兩階段模型因其對圖片的兩階段處理得名,也稱為基於區域(Region-based)的方法,我們選取R-CNN系列工作作為這一類型的代表。

R-CNN: R-CNN系列的開山之作

論文鏈接:  Rich feature hierarchies for accurate object detection and semantic segmentation

本文的兩大貢獻:1)CNN可用於基於區域的定位和分割物體;2)監督訓練樣本數緊缺時,在額外的數據上預訓練的模型經過fine-tuning可以取得很好的效果。第一個貢獻影響了之後幾乎所有2-stage方法,而第二個貢獻中用分類任務(Imagenet)中訓練好的模型作為基網路,在檢測問題上fine-tuning的做法也在之後的工作中一直沿用。

傳統的計算機視覺方法常用精心設計的手工特徵(如SIFT, HOG)描述圖像,而深度學習的方法則倡導習得特徵,從圖像分類任務的經驗來看,CNN網路自動習得的特徵取得的效果已經超出了手工設計的特徵。本篇在局部區域應用卷積網路,以發揮卷積網路學習高質量特徵的能力。

R-CNN將檢測抽象為兩個過程,一是基於圖片提出若干可能包含物體的區域(即圖片的局部裁剪,被稱為Region Proposal),文中使用的是Selective Search演算法;二是在提出的這些區域上運行當時表現最好的分類網路(AlexNet),得到每個區域內物體的類別。

另外,文章中的兩個做法值得注意。

一是數據的准備。輸入CNN前,我們需要根據Ground Truth對提出的Region Proposal進行標記,這里使用的指標是IoU(Intersection over Union,交並比)。IoU計算了兩個區域之交的面積跟它們之並的比,描述了兩個區域的重合程度。

文章中特別提到,IoU閾值的選擇對結果影響顯著,這里要談兩個threshold,一個用來識別正樣本(如跟ground truth的IoU大於0.5),另一個用來標記負樣本(即背景類,如IoU小於0.1),而介於兩者之間的則為難例(Hard Negatives),若標為正類,則包含了過多的背景信息,反之又包含了要檢測物體的特徵,因而這些Proposal便被忽略掉。

另一點是位置坐標的回歸(Bounding-Box Regression),這一過程是Region Proposal向Ground Truth調整,實現時加入了log/exp變換來使損失保持在合理的量級上,可以看做一種標准化(Normalization)操作。

小結

R-CNN的想法直接明了,即將檢測任務轉化為區域上的分類任務,是深度學習方法在檢測任務上的試水。模型本身存在的問題也很多,如需要訓練三個不同的模型(proposal, classification, regression)、重復計算過多導致的性能問題等。盡管如此,這篇論文的很多做法仍然廣泛地影響著檢測任務上的深度模型革命,後續的很多工作也都是針對改進這一工作而展開,此篇可以稱得上"The First Paper"。

Fast R-CNN: 共享卷積運算

論文鏈接: Fast R-CNN

文章指出R-CNN耗時的原因是CNN是在每一個Proposal上單獨進行的,沒有共享計算,便提出將基礎網路在圖片整體上運行完畢後,再傳入R-CNN子網路,共享了大部分計算,故有Fast之名。

上圖是Fast R-CNN的架構。圖片經過feature extractor得到feature map, 同時在原圖上運行Selective Search演算法並將RoI(Region of Interset,實為坐標組,可與Region Proposal混用)映射到到feature map上,再對每個RoI進行RoI Pooling操作便得到等長的feature vector,將這些得到的feature vector進行正負樣本的整理(保持一定的正負樣本比例),分batch傳入並行的R-CNN子網路,同時進行分類和回歸,並將兩者的損失統一起來。

RoI Pooling 是對輸入R-CNN子網路的數據進行准備的關鍵操作。我們得到的區域常常有不同的大小,在映射到feature map上之後,會得到不同大小的特徵張量。RoI Pooling先將RoI等分成目標個數的網格,再在每個網格上進行max pooling,就得到等長的RoI feature vector。

文章最後的討論也有一定的借鑒意義:

multi-loss traing相比單獨訓練classification確有提升

multi-scale相比single-scale精度略有提升,但帶來的時間開銷更大。一定程度上說明CNN結構可以內在地學習尺度不變性

在更多的數據(VOC)上訓練後,精度是有進一步提升的

Softmax分類器比"one vs rest"型的SVM表現略好,引入了類間的競爭

更多的Proposal並不一定帶來精度的提升

小結

Fast R-CNN的這一結構正是檢測任務主流2-stage方法所採用的元結構的雛形。文章將Proposal, Feature Extractor, Object Classification&Localization統一在一個整體的結構中,並通過共享卷積計算提高特徵利用效率,是最有貢獻的地方。

Faster R-CNN: 兩階段模型的深度化

論文鏈接: Faster R-CNN: Towards Real Time Object Detection with Region Proposal Networks

Faster R-CNN是2-stage方法的奠基性工作,提出的RPN網路取代Selective Search演算法使得檢測任務可以由神經網路端到端地完成。粗略的講,Faster R-CNN = RPN + Fast R-CNN,跟RCNN共享卷積計算的特性使得RPN引入的計算量很小,使得Faster R-CNN可以在單個GPU上以5fps的速度運行,而在精度方面達到SOTA(State of the Art,當前最佳)。

本文的主要貢獻是提出Regional Proposal Networks,替代之前的SS演算法。RPN網路將Proposal這一任務建模為二分類(是否為物體)的問題。

第一步是在一個滑動窗口上生成不同大小和長寬比例的anchor box(如上圖右邊部分),取定IoU的閾值,按Ground Truth標定這些anchor box的正負。於是,傳入RPN網路的樣本數據被整理為anchor box(坐標)和每個anchor box是否有物體(二分類標簽)。RPN網路將每個樣本映射為一個概率值和四個坐標值,概率值反應這個anchor box有物體的概率,四個坐標值用於回歸定義物體的位置。最後將二分類和坐標回歸的損失統一起來,作為RPN網路的目標訓練。

由RPN得到Region Proposal在根據概率值篩選後經過類似的標記過程,被傳入R-CNN子網路,進行多分類和坐標回歸,同樣用多任務損失將二者的損失聯合。

小結

Faster R-CNN的成功之處在於用RPN網路完成了檢測任務的"深度化"。使用滑動窗口生成anchor box的思想也在後來的工作中越來越多地被採用(YOLO v2等)。這項工作奠定了"RPN+RCNN"的兩階段方法元結構,影響了大部分後續工作。

單階段(1-stage)檢測模型

單階段模型沒有中間的區域檢出過程,直接從圖片獲得預測結果,也被成為Region-free方法。

YOLO

論文鏈接: You Only Look Once: Unified, Real-Time Object Detection

YOLO是單階段方法的開山之作。它將檢測任務表述成一個統一的、端到端的回歸問題,並且以只處理一次圖片同時得到位置和分類而得名。

YOLO的主要優點:

快。

全局處理使得背景錯誤相對少,相比基於局部(區域)的方法, 如Fast RCNN。

泛化性能好,在藝術作品上做檢測時,YOLO表現比Fast R-CNN好。

YOLO的工作流程如下:

1.准備數據:將圖片縮放,劃分為等分的網格,每個網格按跟Ground Truth的IoU分配到所要預測的樣本。

2.卷積網路:由GoogLeNet更改而來,每個網格對每個類別預測一個條件概率值,並在網格基礎上生成B個box,每個box預測五個回歸值,四個表徵位置,第五個表徵這個box含有物體(注意不是某一類物體)的概率和位置的准確程度(由IoU表示)。測試時,分數如下計算:

等式左邊第一項由網格預測,後兩項由每個box預測,以條件概率的方式得到每個box含有不同類別物體的分數。 因而,卷積網路共輸出的預測值個數為S×S×(B×5+C),其中S為網格數,B為每個網格生成box個數,C為類別數。

3.後處理:使用NMS(Non-Maximum Suppression,非極大抑制)過濾得到最後的預測框

損失函數的設計

損失函數被分為三部分:坐標誤差、物體誤差、類別誤差。為了平衡類別不均衡和大小物體等帶來的影響,損失函數中添加了權重並將長寬取根號。

小結

YOLO提出了單階段的新思路,相比兩階段方法,其速度優勢明顯,實時的特性令人印象深刻。但YOLO本身也存在一些問題,如劃分網格較為粗糙,每個網格生成的box個數等限制了對小尺度物體和相近物體的檢測。

SSD: Single Shot Multibox Detector

論文鏈接: SSD: Single Shot Multibox Detector

SSD相比YOLO有以下突出的特點:

多尺度的feature map:基於VGG的不同卷積段,輸出feature map到回歸器中。這一點試圖提升小物體的檢測精度。

更多的anchor box,每個網格點生成不同大小和長寬比例的box,並將類別預測概率基於box預測(YOLO是在網格上),得到的輸出值個數為(C+4)×k×m×n,其中C為類別數,k為box個數,m×n為feature map的大小。

小結

SSD是單階段模型早期的集大成者,達到跟接近兩階段模型精度的同時,擁有比兩階段模型快一個數量級的速度。後續的單階段模型工作大多基於SSD改進展開。

檢測模型基本特點

最後,我們對檢測模型的基本特徵做一個簡單的歸納。

檢測模型整體上由基礎網路(Backbone Network)和檢測頭部(Detection Head)構成。前者作為特徵提取器,給出圖像不同大小、不同抽象層次的表示;後者則依據這些表示和監督信息學習類別和位置關聯。檢測頭部負責的類別預測和位置回歸兩個任務常常是並行進行的,構成多任務的損失進行聯合訓練。

相比單階段,兩階段檢測模型通常含有一個串列的頭部結構,即完成前背景分類和回歸後,把中間結果作為RCNN頭部的輸入再進行一次多分類和位置回歸。這種設計帶來了一些優點:

對檢測任務的解構,先進行前背景的分類,再進行物體的分類,這種解構使得監督信息在不同階段對網路參數的學習進行指導

RPN網路為RCNN網路提供良好的先驗,並有機會整理樣本的比例,減輕RCNN網路的學習負擔

這種設計的缺點也很明顯:中間結果常常帶來空間開銷,而串列的方式也使得推斷速度無法跟單階段相比;級聯的位置回歸則會導致RCNN部分的重復計算(如兩個RoI有重疊)。

另一方面,單階段模型只有一次類別預測和位置回歸,卷積運算的共享程度更高,擁有更快的速度和更小的內存佔用。讀者將會在接下來的文章中看到,兩種類型的模型也在互相吸收彼此的優點,這也使得兩者的界限更為模糊。

Ⅲ OCR 概述

OCR技術作為機器視覺領域一個非常重要的研究反向,涉及的應用領域多種多樣。現今,各應用領域已經出現了非常多的產品,包括卡片證件類識別、票據類識別、文字信息結構化視頻類識別、自然場景下的文字識別等。本文主要從數據、演算法兩個方面概述目前OCR較為成熟的解決方案。

深度學習演算法是非常依賴於數據數量與質量的,OCR也不例外。一般OCR任務中不僅需要識別具體的文字內容,還要識別文字具體所在位置,甚至結構化組織識別信息,所以圖像數據中的監督信息就包括文字位置坐標和相應文本內容。標注數據的來源一般分為兩類:人工標注和程序(模型)自動生成。

一般人工標注的成本比較大,首先需要搭建合適的標注平台,好在github上有幾個開源的關於目標檢測任務的標注平台供選擇(參見 十個最常用深度學習圖像/視頻數據標注工具 或者 深度學習圖像標注工具匯總 )。其次,構建專業的標注團隊,尤其是涉及垂直領域的任務。另外還要設計數據質量監控機制,如標注數據交叉驗證等。

數據自動生成的數據量大,成本小,唯一需要擔心的就是生成的數據分布與真實數據分布有顯著差異。針對文本檢測和文本識別,目前的數據生成方案基本都是模擬真實背景,同時平滑地嵌入文本內容。

那麼標注或生成多少數據量合適呢?當然,高質量數據肯定是越多越好的,如果非要給一個下限,一般文本檢測任務圖片數據量在萬張級別,文本識別任務在百萬張級別。

整體OCR識別演算法一般是分為兩個部分:文本檢測和文本識別。

文本檢測與目標檢測演算法的發展是息息相關的。目前主流的目標檢測演算法分為兩類:

通用的目標檢測演算法對文本一般檢測都不精準,原因主要包括大多數文本沒有閉合邊緣、文本行方向任意、文本排列不規則等,需要結合文本的結構與分布特點優化檢測模塊,其中包括 CTPN SegLink Rotation RPN Textboxes 等。

文本識別模型一般分為特徵提取器(編碼器)和解碼器。

目前針對不同識別場景的都有相應的演算法調優方案,模型擬合能力方面已經有了長足進步。相較於演算法,如何獲取高質量數據很大程度上影響著整個OCR項目成敗,打通整個數據鏈路會是深度學習項目的關鍵,也會成為企業的核心競爭力。

Ⅳ 目標檢測演算法是什麼

目標檢測演算法是先通過訓練集學習一個分類器,然後在測試圖像中以不同scale的窗口滑動掃描整個圖像;每次掃描做一下分類,判斷一下當前的這個窗口是否為要檢測的目標。檢測演算法的核心是分類,分類的核心一個是用什麼特徵,一個是用哪種分類器。

(4)傳統的目標檢測演算法由兩部分構成擴展閱讀:

目標檢測演算法可以分為:

1、背景建模法,包含時間平均模型、混合高斯模型、動態紋理背景、PCA模型、時一空聯合分布背景模型

2、點檢測法,包含Moravec檢測器、Harris檢測器 、仿射不變點檢測、S IFT

3、圖像分割法,包含Mean Shift方法 、Graph-cut方法、Active Contours方法

4、聚類分析法,包含支持向量機、神經網路、Adaptive Boosting

5、運動矢量場法,包含基於運動矢量場的方法

Ⅳ 目標跟蹤檢測演算法(一)——傳統方法

姓名:劉帆;學號:20021210609;學院:電子工程學院

https://blog.csdn.net/qq_34919792/article/details/89893214

【嵌牛導讀】目標跟蹤演算法研究難點與挑戰在於實際復雜的應用環境 、背景相似干擾、光照條件的變化、遮擋等外界因素以及目標姿態變化,外觀變形,尺度變化、平面外旋轉、平面內旋轉、出視野、快速運動和運動模糊等。而且當目標跟蹤演算法投入實際應用時,不可避免的一個問題——實時性問題也是非常的重要。正是有了這些問題,才使得演算法研究充滿著難點和挑戰。

【嵌牛鼻子】目標跟蹤演算法,傳統演算法

【嵌牛提問】利用目標跟蹤檢測演算法要達到何目的?第一階段的單目標追蹤演算法包括什麼?具體步驟有哪些?它們有何特點?

【嵌牛正文】

第一階段

目標跟蹤分為兩個部分,一個是對指定目標尋找可以跟蹤的特徵,常用的有顏色,輪廓,特徵點,軌跡等,另一個是對目標特徵進行跟蹤。

1、靜態背景

1)背景差: 對背景的光照變化、雜訊干擾以及周期性運動等進行建模。通過當前幀減去背景圖來捕獲運動物體的過程。

2)幀差: 由於場景中的目標在運動,目標的影像在不同圖像幀中的位置不同。該類演算法對時間上連續的兩幀或三幀圖像進行差分運算,不同幀對應的像素點相減,判斷灰度差的絕對值,當絕對值超過一定閾值時,即可判斷為運動目標,從而實現目標的檢測功能。

與二幀差分法不同的是,三幀差分法(交並運算)去除了重影現象,可以檢測出較為完整的物體。幀間差分法的原理簡單,計算量小,能夠快速檢測出場景中的運動目標。但幀間差分法檢測的目標不完整,內部含有「空洞」,這是因為運動目標在相鄰幀之間的位置變化緩慢,目標內部在不同幀圖像中相重疊的部分很難檢測出來。幀間差分法通常不單獨用在目標檢測中,往往與其它的檢測演算法結合使用。

3)Codebook

演算法為圖像中每一個像素點建立一個碼本,每個碼本可以包括多個碼元(對應閾值范圍),在學習階段,對當前像素點進行匹配,如果該像素值在某個碼元的學習閾值內,也就是說與之前出現過的某種歷史情況偏離不大,則認為該像素點符合背景特徵,需要更新對應點的學習閾值和檢測閾值。

如果新來的像素值與每個碼元都不匹配,則可能是由於動態背景導致,這種情況下,我們需要為其建立一個新的碼元。每個像素點通過對應多個碼元,來適應復雜的動態背景。

在應用時,每隔一段時間選擇K幀通過更新演算法建立CodeBook背景模型,並且刪除超過一段時間未使用的碼元。

4)GMM

混合高斯模型(Gaussian of Micture Models,GMM)是較常用的背景去除方法之一(其他的還有均值法、中值法、滑動平均濾波等)。

首先我們需要了解單核高斯濾波的演算法步驟:

混合高斯建模GMM(Gaussian Mixture Model)作為單核高斯背景建模的擴展,是目前使用最廣泛的一種方法,GMM將背景模型描述為多個分布,每個像素的R、G、B三個通道像素值的變化分別由一個混合高斯模型分布來刻畫,符合其中一個分布模型的像素即為背景像素。作為最常用的一種背景建模方法,GMM有很多改進版本,比如利用紋理復雜度來更新差分閾值,通過像素變化的劇烈程度來動態調整學習率等。

5)ViBe(2011)

ViBe演算法主要特點是隨機背景更新策略,這和GMM有很大不同。其步驟和GMM類似。具體的思想就是為每個像素點存儲了一個樣本集,樣本集中采樣值就是該像素點過去的像素值和其鄰居點的像素值,然後將每一個新的像素值和樣本集進行比較來判斷是否屬於背景點。

其中pt(x)為新幀的像素值,R為設定值,p1、p2、p3….為樣本集中的像素值,以pt(x)為圓心R為半徑的圓被認為成一個集,當樣本集與此集的交集大於設定的閾值#min時,可認為此為背景像素點(交集越大,表示新像素點與樣本集越相關)。我們可以通過改變#min的值與R的值來改變模型的靈敏度。

Step1:初始化單幀圖像中每個像素點的背景模型。假設每一個像素和其鄰域像素的像素值在空域上有相似的分布。基於這種假設,每一個像素模型都可以用其鄰域中的像素來表示。為了保證背景模型符合統計學規律,鄰域的范圍要足夠大。當輸入第一幀圖像時,即t=0時,像素的背景模型。其中,NG(x,y)表示空域上相鄰的像素值,f(xi,yi)表示當前點的像素值。在N次的初始化的過程中,NG(x,y)中的像素點(xi,yi)被選中的可能次數為L=1,2,3,…,N。

Step2:對後續的圖像序列進行前景目標分割操作。當t=k時,像素點(x,y)的背景模型為BKm(x,y),像素值為fk(x,y)。按照下面判斷該像素值是否為前景。這里上標r是隨機選的;T是預先設置好的閾值。當fk(x,y)滿足符合背景#N次時,我們認為像素點fk(x,y)為背景,否則為前景。

Step3:ViBe演算法的更新在時間和空間上都具有隨機性。每一個背景點有1/ φ的概率去更新自己的模型樣本值,同時也有1/ φ的概率去更新它的鄰居點的模型樣本值。更新鄰居的樣本值利用了像素值的空間傳播特性,背景模型逐漸向外擴散,這也有利於Ghost區域的更快的識別。同時當前景點計數達到臨界值時將其變為背景,並有1/ φ的概率去更新自己的模型樣本值(為了減少緩慢移動物體的影響和攝像機的抖動)。

可以有如下總結,ViBe中的每一個像素點在更新的時候都有一個時間和空間上隨機影響的范圍,這個范圍很小,大概3x3的樣子,這個是考慮到攝像頭抖動時會有坐標的輕微來回變化,這樣雖然由於ViBe的判別方式仍認為是背景點,但是也會對後面的判別產生影響,為了保證空間的連續性,隨機更新減少了這個影響。而在樣本值保留在樣本集中的概率隨著時間的增大而變小,這就保證了像素模型在時間上面的延續特性。

6)光流

光流是由物體或相機的運動引起的圖像對象在兩個連續幀之間的視在運動模式。它是2D矢量場,其中每個矢量是一個位移矢量,顯示點從第一幀到第二幀的移動。

光流實際上是一種特徵點跟蹤方法,其計算的為向量,基於三點假設:

1、場景中目標的像素在幀間運動時亮度(像素值或其衍生值)不發生變化;2、幀間位移不能太大;3、同一表面上的鄰近點都在做相同的運動;

光流跟蹤過程:1)對一個連續視頻幀序列進行處理;2)對每一幀進行前景目標檢測;3)對某一幀出現的前景目標,找出具有代表性的特徵點(Harris角點);4)對於前後幀做像素值比較,尋找上一幀在當前幀中的最佳位置,從而得到前景目標在當前幀中的位置信息;5)重復上述步驟,即可實現目標跟蹤

2、運動場(分為相機固定,但是視角變化和相機是運動的)

1)運動建模(如視覺里程計運動模型、速度運動模型等)

運動學是對進行剛性位移的相機進行構型,一般通過6個變數來描述,3個直角坐標,3個歐拉角(橫滾、俯仰、偏航)。

Ⅰ、對相機的運動建模

由於這個不是我們本次所要討論的重點,但是在《概率機器人》一書中提出了很多很好的方法,相機的運動需要對圖像內的像素做位移矩陣和旋轉矩陣的坐標換算。除了對相機建立傳統的速度運動模型外,也可以用視覺里程計等通關過置信度的更新來得到概率最大位置。

Ⅱ、對於跟蹤目標的運動建模

該方法需要提前通過先驗知識知道所跟蹤的目標對象是什麼,比如車輛、行人、人臉等。通過對要跟蹤的目標進行建模,然後再利用該模型來進行實際的跟蹤。該方法必須提前知道要跟蹤的目標對象是什麼,然後再去跟蹤指定的目標,這是它的局限性,因而其推廣性相對比較差。(比如已知跟蹤的物體是羽毛球,那很容易通過前幾幀的取點,來建立整個羽毛球運動的拋物線模型)

2)核心搜索演算法(常見的預測演算法有Kalman(卡爾曼)濾波、擴展卡爾曼濾波、粒子濾波)

Ⅰ、Kalman 濾波

Kalman濾波器是通過前一狀態預測當前狀態,並使用當前觀測狀態進行校正,從而保證輸出狀態平穩變化,可有效抵抗觀測誤差。因此在運動目標跟蹤中也被廣泛使用。

在視頻處理的運動目標跟蹤里,每個目標的狀態可表示為(x,y,w,h),x和y表示目標位置,w和h表示目標寬高。一般地認為目標的寬高是不變的,而其運動速度是勻速,那麼目標的狀態向量就應該擴展為(x,y,w,h,dx,dy),其中dx和dy是目標當前時刻的速度。通過kalman濾波器來估計每個時刻目標狀態的大致過程為:

對視頻進行運動目標檢測,通過簡單匹配方法來給出目標的第一個和第二個狀態,從第三個狀態開始,就先使用kalman濾波器預測出當前狀態,再用當前幀圖像的檢測結果作為觀測值輸入給kalman濾波器,得到的校正結果就被認為是目標在當前幀的真實狀態。(其中,Zt為測量值,為預測值,ut為控制量,Kt為增益。)

Ⅱ、擴展卡爾曼濾波(EKF)和無跡卡爾曼濾波(UKF)

由於卡爾曼濾波的假設為線性問題,無法直接用在非線性問題上,EKF和UKF解決了這個問題(這個線性問題體現在用測量量來計算預測量的過程中)。EKF是通過構建線性函數g(x),與非線性函數相切,並對每一時刻所求得的g(x)做KF,如下圖所示。

UKF與EKF去求解雅可比矩陣擬合線性方程的方法不同,通過對那個先驗分布中的採集點,來線性化隨機變數的非線性函數。與EKF所用的方法不同,UKF產生的高斯分布和實際高斯分布更加接近,其引起的近似誤差也更小。

Ⅲ、粒子濾波

1、初始狀態:基於粒子濾波的目標追蹤方法是一種生成式跟蹤方法,所以要有一個初始化的階段。對於第一幀圖像,人工標定出待檢測的目標,對該目標區域提出特徵;

2、搜索階段:現在已經知道了目標的特徵,然後就在目標的周圍撒點(particle), 如:a)均勻的撒點;b)按高斯分布撒點,就是近的地方撒得多,遠的地方撒的少。論文里使用的是後一種方法。每一個粒子都計算所在區域內的顏色直方圖,如初始化提取特徵一樣,然後對所有的相似度進行歸一化。文中相似性使用的是巴氏距離;

3、重采樣:根據粒子權重對粒子進行篩選,篩選過程中,既要大量保留權重大的粒子,又要有一小部分權重小的粒子;

4、狀態轉移:將重采樣後的粒子帶入狀態轉移方程得到新的預測粒子;

5、測量及更新:對目標點特徵化,並計算各個粒子和目標間的巴氏距離,更新粒子的權重;

6、決策階段:每個粒子都獲得一個和目標的相似度,相似度越高,目標在該范圍出現的可能性越高,將保留的所有粒子通過相似度加權後的結果作為目標可能的位置。

3)Meanshift演算法

MeanShift演算法屬於核密度估計法,它不需要任何先驗知識而完全依靠特徵空間中樣本點的計算其密度函數值。對於一組采樣數據,直方圖法通常把數據的值域分成若干相等的區間,數據按區間分成若干組,每組數據的個數與總參數個數的比率就是每個單元的概率值;核密度估計法的原理相似於直方圖法,只是多了一個用於平滑數據的核函數。採用核函數估計法,在采樣充分的情況下,能夠漸進地收斂於任意的密度函數,即可以對服從任何分布的數據進行密度估計。

Meanshift演算法步驟

1、通過對初始點(或者上一幀的目標點)為圓心,繪制一個半徑為R的圓心,尋找特徵和該點相似的點所構成的向量;

2、所有向量相加,可以獲得一個向量疊加,這個向量指向特徵點多的方向;

3、取步驟二的向量終點為初始點重復步驟一、二,直到得到的向量小於一定的閾值,也就是說明當前位置是特徵點密度最密集的地方,停止迭代,認為該點為當前幀的目標點;

4)Camshift演算法

Camshift演算法是MeanShift演算法的改進,稱為連續自適應的MeanShift演算法。Camshift 是由Meanshift 推導而來 Meanshift主要是用在單張影像上,但是獨立一張影像分析對追蹤而言並無意義,Camshift 就是利用MeanShift的方法,對影像串列進行分析。

1、首先在影像串列中選擇目標區域。

2、計算此區域的顏色直方圖(特徵提取)。

3、用MeanShift演演算法來收斂欲追蹤的區域。

4、通過目標點的位置和向量信息計算新的窗口大小,並標示之。

5、以此為參數重復步驟三、四。

Camshift 關鍵就在於當目標的大小發生改變的時候,此演算法可以自適應調整目標區域繼續跟蹤。

3、小結

第一階段的單目標追蹤演算法基本上都是傳統方法,計算量小,在嵌入式等設備中落地較多,opencv中也預留了大量的介面。通過上面的兩節的介紹,我們不難發現,目標檢測演算法的步驟分為兩部分,一部分是對指定目標尋找可以跟蹤的特徵,常用的有顏色,輪廓,特徵點,軌跡等,另一部分是對目標特徵進行跟蹤,如上文所提及的方法。所以目標檢測方法的發展,也可總結為兩個方面,一個是如何去獲得更加具有區分性的可跟蹤的穩定特徵,另一個是如何建立幀與幀之間的數據關聯,保證跟蹤目標是正確的。

隨著以概率為基礎的卡爾曼濾波、粒子濾波或是以Meanshift為代表向量疊加方法在目標檢測的運用,使得目標檢測不再需要假設自身的一個狀態為靜止的,而是可以是運動的,更加符合復雜場景中的目標跟蹤。

Ⅵ 目標檢測演算法(R-CNN,fast R-CNN,faster R-CNN,yolo,SSD,yoloV2,yoloV3)

深度學習目前已經應用到了各個領域,應用場景大體分為三類:物體識別,目標檢測,自然語言處理。  目標檢測可以理解為是物體識別和物體定位的綜合 ,不僅僅要識別出物體屬於哪個分類,更重要的是得到物體在圖片中的具體位置。

2014年R-CNN演算法被提出,基本奠定了two-stage方式在目標檢測領域的應用。它的演算法結構如下圖

演算法步驟如下:

R-CNN較傳統的目標檢測演算法獲得了50%的性能提升,在使用VGG-16模型作為物體識別模型情況下,在voc2007數據集上可以取得66%的准確率,已經算還不錯的一個成績了。其最大的問題是速度很慢,內存佔用量很大,主要原因有兩個

針對R-CNN的部分問題,2015年微軟提出了Fast R-CNN演算法,它主要優化了兩個問題。

R-CNN和fast R-CNN均存在一個問題,那就是 由選擇性搜索來生成候選框,這個演算法很慢 。而且R-CNN中生成的2000個左右的候選框全部需要經過一次卷積神經網路,也就是需要經過2000次左右的CNN網路,這個是十分耗時的(fast R-CNN已經做了改進,只需要對整圖經過一次CNN網路)。這也是導致這兩個演算法檢測速度較慢的最主要原因。

faster R-CNN 針對這個問題, 提出了RPN網路來進行候選框的獲取,從而擺脫了選擇性搜索演算法,也只需要一次卷積層操作,從而大大提高了識別速度 。這個演算法十分復雜,我們會詳細分析。它的基本結構如下圖

主要分為四個步驟:

使用VGG-16卷積模型的網路結構:

卷積層採用的VGG-16模型,先將PxQ的原始圖片,縮放裁剪為MxN的圖片,然後經過13個conv-relu層,其中會穿插4個max-pooling層。所有的卷積的kernel都是3x3的,padding為1,stride為1。pooling層kernel為2x2, padding為0,stride為2。

MxN的圖片,經過卷積層後,變為了(M/16) x (N/16)的feature map了。

faster R-CNN拋棄了R-CNN中的選擇性搜索(selective search)方法,使用RPN層來生成候選框,能極大的提升候選框的生成速度。RPN層先經過3x3的卷積運算,然後分為兩路。一路用來判斷候選框是前景還是背景,它先reshape成一維向量,然後softmax來判斷是前景還是背景,然後reshape恢復為二維feature map。另一路用來確定候選框的位置,通過bounding box regression實現,後面再詳細講。兩路計算結束後,挑選出前景候選框(因為物體在前景中),並利用計算得到的候選框位置,得到我們感興趣的特徵子圖proposal。

卷積層提取原始圖像信息,得到了256個feature map,經過RPN層的3x3卷積後,仍然為256個feature map。但是每個點融合了周圍3x3的空間信息。對每個feature map上的一個點,生成k個anchor(k默認為9)。anchor分為前景和背景兩類(我們先不去管它具體是飛機還是汽車,只用區分它是前景還是背景即可)。anchor有[x,y,w,h]四個坐標偏移量,x,y表示中心點坐標,w和h表示寬度和高度。這樣,對於feature map上的每個點,就得到了k個大小形狀各不相同的選區region。

對於生成的anchors,我們首先要判斷它是前景還是背景。由於感興趣的物體位於前景中,故經過這一步之後,我們就可以舍棄背景anchors了。大部分的anchors都是屬於背景,故這一步可以篩選掉很多無用的anchor,從而減少全連接層的計算量。

對於經過了3x3的卷積後得到的256個feature map,先經過1x1的卷積,變換為18個feature map。然後reshape為一維向量,經過softmax判斷是前景還是背景。此處reshape的唯一作用就是讓數據可以進行softmax計算。然後輸出識別得到的前景anchors。

另一路用來確定候選框的位置,也就是anchors的[x,y,w,h]坐標值。如下圖所示,紅色代表我們當前的選區,綠色代表真實的選區。雖然我們當前的選取能夠大概框選出飛機,但離綠色的真實位置和形狀還是有很大差別,故需要對生成的anchors進行調整。這個過程我們稱為bounding box regression。

假設紅色框的坐標為[x,y,w,h], 綠色框,也就是目標框的坐標為[Gx, Gy,Gw,Gh], 我們要建立一個變換,使得[x,y,w,h]能夠變為[Gx, Gy,Gw,Gh]。最簡單的思路是,先做平移,使得中心點接近,然後進行縮放,使得w和h接近。如下:

我們要學習的就是dx dy dw dh這四個變換。由於是線性變換,我們可以用線性回歸來建模。設定loss和優化方法後,就可以利用深度學習進行訓練,並得到模型了。對於空間位置loss,我們一般採用均方差演算法,而不是交叉熵(交叉熵使用在分類預測中)。優化方法可以採用自適應梯度下降演算法Adam。

得到了前景anchors,並確定了他們的位置和形狀後,我們就可以輸出前景的特徵子圖proposal了。步驟如下:

1,得到前景anchors和他們的[x y w h]坐標。

2,按照anchors為前景的不同概率,從大到小排序,選取前pre_nms_topN個anchors,比如前6000個

3,剔除非常小的anchors。

4,通過NMS非極大值抑制,從anchors中找出置信度較高的。這個主要是為了解決選取交疊問題。首先計算每一個選區面積,然後根據他們在softmax中的score(也就是是否為前景的概率)進行排序,將score最大的選區放入隊列中。接下來,計算其餘選區與當前最大score選區的IOU(IOU為兩box交集面積除以兩box並集面積,它衡量了兩個box之間重疊程度)。去除IOU大於設定閾值的選區。這樣就解決了選區重疊問題。

5,選取前post_nms_topN個結果作為最終選區proposal進行輸出,比如300個。

經過這一步之後,物體定位應該就基本結束了,剩下的就是物體識別了。

和fast R-CNN中類似,這一層主要解決之前得到的proposal大小形狀各不相同,導致沒法做全連接。全連接計算只能對確定的shape進行運算,故必須使proposal大小形狀變為相同。通過裁剪和縮放的手段,可以解決這個問題,但會帶來信息丟失和圖片形變問題。我們使用ROI pooling可以有效的解決這個問題。

ROI pooling中,如果目標輸出為MxN,則在水平和豎直方向上,將輸入proposal劃分為MxN份,每一份取最大值,從而得到MxN的輸出特徵圖。

ROI Pooling層後的特徵圖,通過全連接層與softmax,就可以計算屬於哪個具體類別,比如人,狗,飛機,並可以得到cls_prob概率向量。同時再次利用bounding box regression精細調整proposal位置,得到bbox_pred,用於回歸更加精確的目標檢測框。

這樣就完成了faster R-CNN的整個過程了。演算法還是相當復雜的,對於每個細節需要反復理解。faster R-CNN使用resNet101模型作為卷積層,在voc2012數據集上可以達到83.8%的准確率,超過yolo ssd和yoloV2。其最大的問題是速度偏慢,每秒只能處理5幀,達不到實時性要求。

針對於two-stage目標檢測演算法普遍存在的運算速度慢的缺點, yolo創造性的提出了one-stage。也就是將物體分類和物體定位在一個步驟中完成。 yolo直接在輸出層回歸bounding box的位置和bounding box所屬類別,從而實現one-stage。通過這種方式, yolo可實現45幀每秒的運算速度,完全能滿足實時性要求 (達到24幀每秒,人眼就認為是連續的)。它的網路結構如下圖:

主要分為三個部分:卷積層,目標檢測層,NMS篩選層。

採用Google inceptionV1網路,對應到上圖中的第一個階段,共20層。這一層主要是進行特徵提取,從而提高模型泛化能力。但作者對inceptionV1進行了改造,他沒有使用inception mole結構,而是用一個1x1的卷積,並聯一個3x3的卷積來替代。(可以認為只使用了inception mole中的一個分支,應該是為了簡化網路結構)

先經過4個卷積層和2個全連接層,最後生成7x7x30的輸出。先經過4個卷積層的目的是為了提高模型泛化能力。yolo將一副448x448的原圖分割成了7x7個網格,每個網格要預測兩個bounding box的坐標(x,y,w,h)和box內包含物體的置信度confidence,以及物體屬於20類別中每一類的概率(yolo的訓練數據為voc2012,它是一個20分類的數據集)。所以一個網格對應的參數為(4x2+2+20) = 30。如下圖

其中前一項表示有無人工標記的物體落入了網格內,如果有則為1,否則為0。第二項代表bounding box和真實標記的box之間的重合度。它等於兩個box面積交集,除以面積並集。值越大則box越接近真實位置。

分類信息: yolo的目標訓練集為voc2012,它是一個20分類的目標檢測數據集 。常用目標檢測數據集如下表:

| Name | # Images (trainval) | # Classes | Last updated |

| --------------- | ------------------- | --------- | ------------ |

| ImageNet | 450k | 200 | 2015 |

| COCO | 120K | 90 | 2014 |

| Pascal VOC | 12k | 20 | 2012 |

| Oxford-IIIT Pet | 7K | 37 | 2012 |

| KITTI Vision | 7K | 3 | |

每個網格還需要預測它屬於20分類中每一個類別的概率。分類信息是針對每個網格的,而不是bounding box。故只需要20個,而不是40個。而confidence則是針對bounding box的,它只表示box內是否有物體,而不需要預測物體是20分類中的哪一個,故只需要2個參數。雖然分類信息和confidence都是概率,但表達含義完全不同。

篩選層是為了在多個結果中(多個bounding box)篩選出最合適的幾個,這個方法和faster R-CNN 中基本相同。都是先過濾掉score低於閾值的box,對剩下的box進行NMS非極大值抑制,去除掉重疊度比較高的box(NMS具體演算法可以回顧上面faster R-CNN小節)。這樣就得到了最終的最合適的幾個box和他們的類別。

yolo的損失函數包含三部分,位置誤差,confidence誤差,分類誤差。具體公式如下:

誤差均採用了均方差演算法,其實我認為,位置誤差應該採用均方差演算法,而分類誤差應該採用交叉熵。由於物體位置只有4個參數,而類別有20個參數,他們的累加和不同。如果賦予相同的權重,顯然不合理。故yolo中位置誤差權重為5,類別誤差權重為1。由於我們不是特別關心不包含物體的bounding box,故賦予不包含物體的box的置信度confidence誤差的權重為0.5,包含物體的權重則為1。

Faster R-CNN准確率mAP較高,漏檢率recall較低,但速度較慢。而yolo則相反,速度快,但准確率和漏檢率不盡人意。SSD綜合了他們的優缺點,對輸入300x300的圖像,在voc2007數據集上test,能夠達到58 幀每秒( Titan X 的 GPU ),72.1%的mAP。

SSD網路結構如下圖:

和yolo一樣,也分為三部分:卷積層,目標檢測層和NMS篩選層

SSD論文採用了VGG16的基礎網路,其實這也是幾乎所有目標檢測神經網路的慣用方法。先用一個CNN網路來提取特徵,然後再進行後續的目標定位和目標分類識別。

這一層由5個卷積層和一個平均池化層組成。去掉了最後的全連接層。SSD認為目標檢測中的物體,只與周圍信息相關,它的感受野不是全局的,故沒必要也不應該做全連接。SSD的特點如下。

每一個卷積層,都會輸出不同大小感受野的feature map。在這些不同尺度的feature map上,進行目標位置和類別的訓練和預測,從而達到 多尺度檢測 的目的,可以克服yolo對於寬高比不常見的物體,識別准確率較低的問題。而yolo中,只在最後一個卷積層上做目標位置和類別的訓練和預測。這是SSD相對於yolo能提高准確率的一個關鍵所在。

如上所示,在每個卷積層上都會進行目標檢測和分類,最後由NMS進行篩選,輸出最終的結果。多尺度feature map上做目標檢測,就相當於多了很多寬高比例的bounding box,可以大大提高泛化能力。

和faster R-CNN相似,SSD也提出了anchor的概念。卷積輸出的feature map,每個點對應為原圖的一個區域的中心點。以這個點為中心,構造出6個寬高比例不同,大小不同的anchor(SSD中稱為default box)。每個anchor對應4個位置參數(x,y,w,h)和21個類別概率(voc訓練集為20分類問題,在加上anchor是否為背景,共21分類)。如下圖所示:

另外,在訓練階段,SSD將正負樣本比例定位1:3。訓練集給定了輸入圖像以及每個物體的真實區域(ground true box),將default box和真實box最接近的選為正樣本。然後在剩下的default box中選擇任意一個與真實box IOU大於0.5的,作為正樣本。而其他的則作為負樣本。由於絕大部分的box為負樣本,會導致正負失衡,故根據每個box類別概率排序,使正負比例保持在1:3。SSD認為這個策略提高了4%的准確率

另外,SSD採用了數據增強。生成與目標物體真實box間IOU為0.1 0.3 0.5 0.7 0.9的patch,隨機選取這些patch參與訓練,並對他們進行隨機水平翻轉等操作。SSD認為這個策略提高了8.8%的准確率。

和yolo的篩選層基本一致,同樣先過濾掉類別概率低於閾值的default box,再採用NMS非極大值抑制,篩掉重疊度較高的。只不過SSD綜合了各個不同feature map上的目標檢測輸出的default box。

SSD基本已經可以滿足我們手機端上實時物體檢測需求了,TensorFlow在android上的目標檢測官方模型ssd_mobilenet_v1_android_export.pb,就是通過SSD演算法實現的。它的基礎卷積網路採用的是mobileNet,適合在終端上部署和運行。

針對yolo准確率不高,容易漏檢,對長寬比不常見物體效果差等問題,結合SSD的特點,提出了yoloV2。它主要還是採用了yolo的網路結構,在其基礎上做了一些優化和改進,如下

網路採用DarkNet-19:19層,裡麵包含了大量3x3卷積,同時借鑒inceptionV1,加入1x1卷積核全局平均池化層。結構如下

yolo和yoloV2隻能識別20類物體,為了優化這個問題,提出了yolo9000,可以識別9000類物體。它在yoloV2基礎上,進行了imageNet和coco的聯合訓練。這種方式充分利用imageNet可以識別1000類物體和coco可以進行目標位置檢測的優點。當使用imageNet訓練時,只更新物體分類相關的參數。而使用coco時,則更新全部所有參數。

YOLOv3可以說出來直接吊打一切圖像檢測演算法。比同期的DSSD(反卷積SSD), FPN(feature pyramid networks)准確率更高或相仿,速度是其1/3.。

YOLOv3的改動主要有如下幾點:

不過如果要求更精準的預測邊框,採用COCO AP做評估標準的話,YOLO3在精確率上的表現就弱了一些。如下圖所示。

當前目標檢測模型演算法也是層出不窮。在two-stage領域, 2017年Facebook提出了mask R-CNN 。CMU也提出了A-Fast-RCNN 演算法,將對抗學習引入到目標檢測領域。Face++也提出了Light-Head R-CNN,主要探討了 R-CNN 如何在物體檢測中平衡精確度和速度。

one-stage領域也是百花齊放,2017年首爾大學提出 R-SSD 演算法,主要解決小尺寸物體檢測效果差的問題。清華大學提出了 RON 演算法,結合 two stage 名的方法和 one stage 方法的優勢,更加關注多尺度對象定位和負空間樣本挖掘問題。

目標檢測領域的深度學習演算法,需要進行目標定位和物體識別,演算法相對來說還是很復雜的。當前各種新演算法也是層不出窮,但模型之間有很強的延續性,大部分模型演算法都是借鑒了前人的思想,站在巨人的肩膀上。我們需要知道經典模型的特點,這些tricks是為了解決什麼問題,以及為什麼解決了這些問題。這樣才能舉一反三,萬變不離其宗。綜合下來,目標檢測領域主要的難點如下:

一文讀懂目標檢測AI演算法:R-CNN,faster R-CNN,yolo,SSD,yoloV2

從YOLOv1到v3的進化之路

SSD-Tensorflow超詳細解析【一】:載入模型對圖片進行測試  https://blog.csdn.net/k87974/article/details/80606407

YOLO    https://pjreddie.com/darknet/yolo/      https://github.com/pjreddie/darknet   

C#項目參考:https://github.com/AlturosDestinations/Alturos.Yolo

項目實踐貼個圖。

閱讀全文

與傳統的目標檢測演算法由兩部分構成相關的資料

熱點內容
如何登錄別人的伺服器 瀏覽:626
調度系統軟體python 瀏覽:205
微信大轉盤抽獎源碼 瀏覽:497
壓縮機損壞的表現 瀏覽:862
同步數據伺服器怎麼用 瀏覽:634
163郵箱伺服器的ip地址 瀏覽:50
伺服器跟域是什麼 瀏覽:128
rails啟動命令 瀏覽:465
logistic命令怎麼用 瀏覽:738
c語言點滴pdf 瀏覽:747
linuxrtc編程 瀏覽:258
linux打包並壓縮命令 瀏覽:644
aes加密的證書格式 瀏覽:99
oracledbcalinux 瀏覽:844
酬勤任務app怎麼被特邀 瀏覽:199
android應用文件夾 瀏覽:1002
平面設計法則pdf 瀏覽:339
3d圓角命令怎麼用 瀏覽:569
程序員買意外險還是重疾險 瀏覽:621
遼寧的dns伺服器地址雲空間 瀏覽:448