1. 程式人生 > >(一)目標檢測經典模型回顧

(一)目標檢測經典模型回顧

轉載自知乎:https://zhuanlan.zhihu.com/p/34142321

關於作者: @李家丞同濟大學數學系本科在讀,現為格靈深瞳演算法部實習生

-------------------------------------------------------------------------------------------------------

近年來,深度學習模型逐漸取代傳統機器視覺方法而成為目標檢測領域的主流演算法,本系列文章將回顧早期的經典工作,並對較新的趨勢做一個全景式的介紹,幫助讀者對這一領域建立基本的認識。由於作者學歷尚淺,水平有限,不實和不當之處也請指出和糾正,歡迎大家評論交流。

-------------------------------------------------------------------------------------------------------

導言:目標檢測的任務表述

如何從影象中解析出可供計算機理解的資訊,是機器視覺的中心問題。深度學習模型由於其強大的表示能力,加之資料量的積累和計算力的進步,成為機器視覺的熱點研究方向。

那麼,如何理解一張圖片?根據後續任務的需要,有三個主要的層次。

影象理解的三個層次

一是分類(Classification),即是將影象結構化為某一類別的資訊,用事先確定好的類別(string)或例項ID來描述圖片。這一任務是最簡單、最基礎的影象理解任務,也是深度學習模型最先取得突破和實現大規模應用的任務。其中,ImageNet是最權威的評測集,每年的ILSVRC催生了大量的優秀深度網路結構,為其他任務提供了基礎。在應用領域,人臉、場景的識別等都可以歸為分類任務。

二是檢測(Detection)。分類任務關心整體,給出的是整張圖片的內容描述,而檢測則關注特定的物體目標,要求同時獲得這一目標的類別資訊和位置資訊。相比分類,檢測給出的是對圖片前景和背景的理解,我們需要從背景中分離出感興趣的目標,並確定這一目標的描述(類別和位置),因而,檢測模型的輸出是一個列表,列表的每一項使用一個數據組給出檢出目標的類別和位置(常用矩形檢測框的座標表示)。

三是分割(Segmentation)。分割包括語義分割(semantic segmentation)和例項分割(instance segmentation),前者是對前背景分離的拓展,要求分離開具有不同語義的影象部分,而後者是檢測任務的拓展,要求描述出目標的輪廓(相比檢測框更為精細)。分割是對影象的畫素級描述,它賦予每個畫素類別(例項)意義,適用於理解要求較高的場景,如無人駕駛中對道路和非道路的分割。

本系列文章關注的領域是目標檢測,即影象理解的中層次。

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

本文結構

兩階段(2-stage)檢測模型

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

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

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

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

R-CNN網路結構

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

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

IoU的計算

一是資料的準備。輸入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: 共享卷積運算

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

Fast R-CNN網路結構

上圖是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圖示,來源:https://blog.deepsense.ai/region-of-interest-pooling-explained/

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是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這一任務建模為二分類(是否為物體)的問題。

Faster R-CNN網路結構

第一步是在一個滑動視窗上生成不同大小和長寬比例的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

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

YOLO的主要優點:

  • 快。
  • 全域性處理使得背景錯誤相對少,相比基於區域性(區域)的方法, 如Fast RCNN。
  • 泛化效能好,在藝術作品上做檢測時,YOLO表現比Fast R-CNN好。


YOLO網路結構

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的損失函式分解,來源:https://zhuanlan.zhihu.com/p/24916786

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

小結

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

SSD: Single Shot Multibox Detector

SSD網路結構

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改進展開。

檢測模型基本特點

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

兩階段檢測模型Pipeline,來源:https://tryolabs.com/blog/2018/01/18/faster-r-cnn-down-the-rabbit-hole-of-modern-object-detection/

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

檢測模型頭部並行的分支,來源同上

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

  • 對檢測任務的解構,先進行前背景的分類,再進行物體的分類,這種解構使得監督資訊在不同階段對網路引數的學習進行指導
  • RPN網路為RCNN網路提供良好的先驗,並有機會整理樣本的比例,減輕RCNN網路的學習負擔

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

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

在下一篇中,我們將介紹檢測模型的評測指標與評測資料集,並總結常用的訓練和建模技巧。

小補充:

•   RCNN

        RCNN(Regions with CNN features)是將CNN方法應用到目標檢測問題上的一個里程碑,由年輕有為的RBG大神提出,藉助CNN良好的特徵提取和分類效能,通過RegionProposal方法實現目標檢測問題的轉化。

        演算法可以分為四步:

        1)候選區域選擇

        Region Proposal是一類傳統的區域提取方法,可以看作不同寬高的滑動視窗,通過視窗滑動獲得潛在的目標影象,關於Proposal大家可以看下SelectiveSearch,一般Candidate選項為2k個即可,這裡不再詳述;

        根據Proposal提取的目標影象進行歸一化,作為CNN的標準輸入。

        2)CNN特徵提取

        標準CNN過程,根據輸入進行卷積/池化等操作,得到固定維度的輸出;

        3)分類與邊界迴歸

        實際包含兩個子步驟,一是對上一步的輸出向量進行分類(需要根據特徵訓練分類器);二是通過邊界迴歸(bounding-box regression) 得到精確的目標區域,由於實際目標會產生多個子區域,旨在對完成分類的前景目標進行精確的定位與合併,避免多個檢出。

RCNN存在三個明顯的問題:

1)多個候選區域對應的影象需要預先提取,佔用較大的磁碟空間;

2)針對傳統CNN需要固定尺寸的輸入影象,crop/warp(歸一化)產生物體截斷或拉伸,會導致輸入CNN的資訊丟失;

3)每一個ProposalRegion都需要進入CNN網路計算,上千個Region存在大量的範圍重疊,重複的特徵提取帶來巨大的計算浪費。

•   SPP-Net

智者善於提出疑問,既然CNN的特徵提取過程如此耗時(大量的卷積計算),為什麼要對每一個候選區域獨立計算,而不是提取整體特徵,僅在分類之前做一次Region擷取呢?智者提出疑問後會立即付諸實踐,於是SPP-Net誕生了。


SPP-Net在RCNN的基礎上做了實質性的改進:

1)取消了crop/warp影象歸一化過程,解決影象變形導致的資訊丟失以及儲存問題;

2)採用空間金字塔池化(SpatialPyramid Pooling )替換了 全連線層之前的最後一個池化層(上圖top),翠平說這是一個新詞,我們先認識一下它。

為了適應不同解析度的特徵圖,定義一種可伸縮的池化層,不管輸入解析度是多大,都可以劃分成m*n個部分。這是SPP-net的第一個顯著特徵,它的輸入是conv5特徵圖 以及特徵圖候選框(原圖候選框 通過stride對映得到),輸出是固定尺寸(m*n)特徵;

還有金字塔呢?通過多尺度增加所提取特徵的魯棒性,這並不關鍵,在後面的Fast-RCNN改進中該特徵已經被捨棄;

最關鍵的是SPP的位置,它放在所有的卷積層之後,有效解決了卷積層的重複計算問題(測試速度提高了24~102倍),這是論文的核心貢獻。


儘管SPP-Net貢獻很大,仍然存在很多問題:

1)和RCNN一樣,訓練過程仍然是隔離的,提取候選框 | 計算CNN特徵| SVM分類 | Bounding Box迴歸獨立訓練,大量的中間結果需要轉存,無法整體訓練引數;

2)SPP-Net在無法同時Tuning在SPP-Layer兩邊的卷積層和全連線層,很大程度上限制了深度CNN的效果;

3)在整個過程中,Proposal Region仍然很耗時。

•   Fast-RCNN

問題很多,解決思路同樣也非常巧妙,ok,再次感謝 RBG 大神的貢獻,直接引用論文原圖(描述十分詳盡)。

Fast-RCNN主要貢獻在於對RCNN進行加速,快是我們一直追求的目標(來個山寨版的奧運口號- 更快、更準、更魯棒),問題在以下方面得到改進:

1)賣點1 - 借鑑SPP思路,提出簡化版的ROI池化層(注意,沒用金字塔),同時加入了候選框對映功能,使得網路能夠反向傳播,解決了SPP的整體網路訓練問題;

2)賣點2 - 多工Loss層

    A)SoftmaxLoss代替了SVM,證明了softmax比SVM更好的效果;

    B)SmoothL1Loss取代Bouding box迴歸。

將分類和邊框迴歸進行合併(又一個開創性的思路),通過多工Loss層進一步整合深度網路,統一了訓練過程,從而提高了演算法準確度。

3)全連線層通過SVD加速

這個大家可以自己看,有一定的提升但不是革命性的。

4)結合上面的改進,模型訓練時可對所有層進行更新,除了速度提升外(訓練速度是SPP的3倍,測試速度10倍),得到了更好的檢測效果(VOC07資料集mAP為70,注:mAP,mean Average Precision)。

接下來分別展開這裡面的兩大賣點:

前面已經瞭解過可伸縮的池化層,那麼在訓練中引數如何通過ROI Pooling層傳導的?根據鏈式求導法則,對於yj = max(xi) 傳統的max pooling的對映公式:


其中 為判別函式,為1時表示選中為最大值,0表示被丟棄,誤差不需要回傳,即對應 權值不需要更新。如下圖所示,對於輸入 xi 的擴充套件公式表示為:


      (i,r,j) 表示 xi 在第 r 個框的第  j 個節點是否被選中為最大值(對應上圖 y0,8和 y1,0),xi引數在前向傳導時受後面梯度誤差之和的影響。


        多工Loss層(全連線層)是第二個核心思路,如上圖所示,其中cls_score用於判斷分類,bbox_reg計算邊框迴歸,label為訓練樣本標記。

        其中Lcls為分類誤差:


        px 為對應Softmax分類概率,pl 即為label所對應概率(正確分類的概率),pl = 1時,計算結果Loss為0, 越小,Loss值越大(0.01對應Loss為2)。

       Lreg為邊框迴歸誤差:

        即在正確分類的情況下,迴歸框與Label框之間的誤差(Smooth L1), 對應描述邊框的4個引數(上下左右or平移縮放),g對應單個引數的差異,|x|>1 時,變換為線性以降低離群噪聲:


        Ltotal為加權目標函式(背景不考慮迴歸Loss):


        細心的小夥伴可能發現了,我們提到的SPP的第三個問題還沒有解決,依然是耗時的候選框提取過程(忽略這個過程,Fast-RCNN幾乎達到了實時),那麼有沒有簡化的方法呢?

        必須有,搞學術一定要有這種勇氣。

•   Faster-RCNN

        對於提取候選框最常用的SelectiveSearch方法,提取一副影象大概需要2s的時間,改進的EdgeBoxes演算法將效率提高到了0.2s,但是這還不夠。

        候選框提取不一定要在原圖上做,特徵圖上同樣可以,低解析度特徵圖意味著更少的計算量,基於這個假設,MSRA的任少卿等人提出RPN(RegionProposal Network),完美解決了這個問題,我們先來看一下網路拓撲。


        通過新增額外的RPN分支網路,將候選框提取合併到深度網路中,這正是Faster-RCNN里程碑式的貢獻。

RPN網路的特點在於通過滑動視窗的方式實現候選框的提取,每個滑動視窗位置生成9個候選視窗(不同尺度、不同寬高),提取對應9個候選視窗(anchor)的特徵,用於目標分類和邊框迴歸,與FastRCNN類似。

        目標分類只需要區分候選框內特徵為前景或者背景。

        邊框迴歸確定更精確的目標位置,基本網路結構如下圖所示:


        訓練過程中,涉及到的候選框選取,選取依據:

1)丟棄跨越邊界的anchor;

2)與樣本重疊區域大於0.7的anchor標記為前景,重疊區域小於0.3的標定為背景;

      對於每一個位置,通過兩個全連線層(目標分類+邊框迴歸)對每個候選框(anchor)進行判斷,並且結合概率值進行捨棄(僅保留約300個anchor),沒有顯式地提取任何候選視窗,完全使用網路自身完成判斷和修正。

        從模型訓練的角度來看,通過使用共享特徵交替訓練的方式,達到接近實時的效能,交替訓練方式描述為:

1)根據現有網路初始化權值w,訓練RPN;

2)用RPN提取訓練集上的候選區域,用候選區域訓練FastRCNN,更新權值w;

3)重複1、2,直到收斂。

        因為Faster-RCNN,這種基於CNN的real-time 的目標檢測方法看到了希望,在這個方向上有了進一步的研究思路。至此,我們來看一下RCNN網路的演進,如下圖所示:

        Faster RCNN的網路結構(基於VGG16):


Faster實現了端到端的檢測,並且幾乎達到了效果上的最優,速度方向的改進仍有餘地,於是YOLO誕生了。

  • R-FCN

相關推薦

目標檢測經典模型回顧

轉載自知乎:https://zhuanlan.zhihu.com/p/34142321關於作者: @李家丞同濟大學數學系本科在讀,現為格靈深瞳演算法部實習生。-----------------------------------------------------------

目標檢測目標檢測評價指標

召回率(Recall),精確率(Precision),平均正確率(AP),交除並(IoU) 摘要 在訓練YOLO v2的過程中,系統會顯示出一些評價訓練效果的值,如Recall,IoU等等。為了怕以後忘了,現在把自己對這幾種度量方式的理解記錄一下。 這一文章首先假設一

tensorflow利用預訓練模型進行目標檢測:預訓練模型的使用

err sync numpy sna sta porting trac git int32 一、運行樣例 官網鏈接:https://github.com/tensorflow/models/blob/master/research/object_detection/obje

深度學習目標檢測經典模型比較RCNN、Fast RCNN、Faster RCNN

深度學習目標檢測經典模型比較(RCNN、Fast RCNN、Faster RCNN)   Faster rcnn是用來解決計算機視覺(CV)領域中目標檢測(Object Detection)的問題的。 區別目標分類、定位、檢測 一、傳統的目標檢測方法 其實目標檢

目標檢測經典模型R-CNN、Fast R-CNN、Faster R-CNN

目標檢測是深度學習的一個重要應用,就是在圖片中要將裡面的物體識別出來,並標出物體的位置,一般需要經過兩個步驟: 1、分類,識別物體是什麼 2、定位,找出物體在哪裡 除了對單個物體進行檢測,還要能支援對多個物體進行檢測,如下圖所示: 這個問題並不是那

目標檢測經典模型RCNN、Fast RCNN、Faster RCNN

目標檢測是深度學習的一個重要應用,就是在圖片中要將裡面的物體識別出來,並標出物體的位置,一般需要經過兩個步驟: 1、分類,識別物體是什麼  2、定位,找出物體在哪裡  除了對單個物體進行檢測,還要能支援對多個物體進行檢測,如下圖所示:  這個問題並不是那麼容易解決

大話目標檢測經典模型RCNN、Fast RCNN、Faster RCNN

目標檢測是深度學習的一個重要應用,就是在圖片中要將裡面的物體識別出來,並標出物體的位置,一般需要經過兩個步驟:1、分類,識別物體是什麼 2、定位,找出物體在哪裡 除了對單個物體進行檢測,還要能支援對多個物體進行檢測,如下圖所示: 這個問題並不是那麼容易解決,由於物體的尺寸變化

caffe目標檢測模型訓練全過程目標檢測第一步

遍歷整圖查詢蝴蝶位置 2018/04/22 訓練模型對於識別背景和蝴蝶有比較好的效果,基本對不會識別錯誤,接下來,將通過整圖遍歷的原始而又野蠻的方式對一張原始圖片進行處理,進而查詢到蝴蝶的具體位置。具體思路如下圖。對原圖進行縮放成理想大小,例如, 最小邊長縮放為227*6畫素,最大邊長等比

運動目標跟蹤--搜尋演算法預測模型之KF,EKF,UKF

這裡先總體介紹下,原文轉自: 任何感測器,鐳射也好,視覺也好,整個SLAM系統也好,要解決的問題只有一個:如何通過資料來估計自身狀態。每種感測器的測量模型不一樣,它們的精度也不一樣。換句話說,狀態估計問題,也就是“如何最好地使用感測器資料”。可以說,SLAM是狀態估計的一

一起學習Rviz——顯示簡單立體模型

edit ide tutorials setup tutorial 添加 tar dev als 先甩個鍋咯,手敲下來的難免有些小錯誤,錯別字啥的,理解哈~~~ Ubuntu 14.04,ROS版本 indigo 1、Rviz顯示簡單立體模型 首先,創建工作空間。 創建文件

真實感海洋的繪制:基於統計學模型的水面模擬方法詳解

最簡 自動生成 nbsp imu gif bubuko fourier div img 真實感海洋的繪制(一):基於統計學模型的水面模擬方法詳解 學習了基本的OpenGL和圖形學知識後,第一個想做的事情就是畫水(笑),因為對我而言各種遊戲裏面往往最令人印象深刻的就是那波光粼

Java併發:volatile的實現原理 Java併發:Java記憶體模型乾貨總結

synchronized是一個重量級的鎖,volatile通常被比喻成輕量級的synchronized volatile是一個變數修飾符,只能用來修飾變數。 volatile寫:當寫一個volatile變數時,JMM會把該執行緒對應的本地記憶體中的共享變數重新整理到主記憶體。 volatile讀:當讀一

Java簡單部落格系統基於實體聯絡模型設計資料庫

  基本概念 簡單屬性:不能劃分為更小的部分(其他屬性)。 單值屬性:一個特定實體有隻有單獨的一個值。 派生屬性:可以從別的相關屬性或實體派生出來。 最簡單的部落格系統 (一)實體集:使用者,部落格,評論,實體及其屬性列出如下: (二)聯絡集: 以上設計的實體集,聯絡集表示如

地圖投影系列淺析_ 地球空間模型

1、現實世界和座標空間的聯絡         任何空間特徵都表示為地球表面的一個特定位置,而位置依賴於既定的座標系來表示。         通過統一的座標系和高程系,可以使不同源的GIS資料疊加在一起顯示,以及執行空

卷積神經網路4----目標檢測

一、分類、定位和檢測 簡單來說,分類、定位和檢測的區別如下: 分類:是什麼? 定位:在哪裡?是什麼?(單個目標) 檢測:在哪裡?分別是什麼?(多個目標)       (1)目標分

卷積神經網絡4----目標檢測

使用 定義 fmt 應該 否則 vdh lan blog 檢測 一、分類、定位和檢測 簡單來說,分類、定位和檢測的區別如下: 分類:是什麽? 定位:在哪裏?是什麽?(單個目標) 檢測:在哪裏?分別是什麽?(多個目標) (1)目標分類

人臉目標檢測指標-FDDB

介紹 評價人臉目標檢測系統的效能指標 參考下面2010年的人臉資料庫文章FDDB 的評價章節 Jain V, Learned-Miller E. Fddb: A benchmark for face detection in unconstrained settings[R]. Tech

【計算機網路】OSI, TCP/IP模型 & 網路HTTP、TCP、UDP、Socket 基本知識總結

OSI 七層模型   我們一般使用的網路資料傳輸由下而上共有七層,分別為物理層、資料鏈路層、網路層、傳輸層、會話層、表示層、應用層,也被依次稱為 OSI 第一層、第二層、⋯⋯、 第七層。 如下圖: 各層功能簡介 1.物理層(Physical Layer)  

Java記憶體模型FAQ 什麼是記憶體模型

在多核系統中,處理器一般有一層或者多層的快取,這些的快取通過加速資料訪問(因為資料距離處理器更近)和降低共享記憶體在總線上的通訊(因為本地快取能夠滿足許多記憶體操作)來提高CPU效能。快取能夠大大提升效能,但是它們也帶來了許多挑戰。例如,當兩個CPU同時檢查相同的記憶體地址時會發生什麼?在什

Shiro系列專題-什麼是RBAC模型

       角色訪問控制(RBAC)引入了Role的概念,目的是為了隔離User(即動作主體,Subject)與Privilege(許可權,表示對Resource的一個操作,即Operation+Resource)。 Role作為一個使用者(User)與許可權(Privil