那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

OpenCV中八種不同的目標(biāo)追蹤算法

3D視覺工坊 ? 來源:新機器視覺 ? 2023-03-30 10:22 ? 次閱讀

目標(biāo)跟蹤作為機器學(xué)習(xí)的一個重要分支,加之其在日常生活、軍事行動中的廣泛應(yīng)用,受到極大的關(guān)注。在AI潮流中,大家對于深度學(xué)習(xí),目標(biāo)跟蹤肯定都會有過接觸了解:在GPU上通過大量的數(shù)據(jù)集訓(xùn)練出自己想使用的垂直場景后再在實際場景中使用。但麻煩的是,大數(shù)人擁有的是CPU,有沒有辦法能在自己的電腦上用CPU就能實現(xiàn)自己的目標(biāo)跟蹤能力。OpenCV的跟蹤API給出了答案:我行。

在這篇文章中,我們會介紹在OpenCV上的8種目標(biāo)檢測算法,優(yōu)勢和局限性, 然后會給出代碼示例,如何使用它。我們的目標(biāo)不是對每一個跟蹤器都有深入的理論理解,而是從實際使用的角度來理解它們。

目標(biāo)跟蹤基本原則

視頻目標(biāo)跟蹤中的期望是在當(dāng)前幀中正確找到跟蹤的對象,因為我們已經(jīng)在所有(或幾乎所有)以前的幀中成功跟蹤了該對象,所以我們知道對象是如何移動的。換句話說,我們知道運動模型的參數(shù)。運動模型只是一種奇特的表達(dá)方式,它會知道物體在前一幀中的位置和速度(速度+運動方向)。而如果對這個物體一無所知,則可以根據(jù)當(dāng)前的運動模型來預(yù)測新的位置,從而非常接近物體的新位置。

我們還可以建立一個外觀模型來編碼對象的外觀。外觀模型可用于在運動模型預(yù)測的位置的鄰域內(nèi)搜索,以便更準(zhǔn)確地預(yù)測物體的位置。

目標(biāo)跟蹤可以描述為:運動模型預(yù)測物體的大致位置。外觀模型微調(diào)此估計,以便根據(jù)外觀提供更準(zhǔn)確的估計。

如果對象非常簡單,并且沒有改變它的外觀,我們可以使用一個簡單的模板作為外觀模型并查找該模板。然而,現(xiàn)實生活并不那么簡單。對象的外觀可能會發(fā)生顯著變化。為了解決這個問題,在許多現(xiàn)代追蹤器中,這個外觀模型是一個在線訓(xùn)練的分類器。

分類器的任務(wù)是將圖像的矩形區(qū)域分類為對象或背景。分類器接受圖像區(qū)域作為輸入,并返回介于0和1之間的分?jǐn)?shù),以指示圖像區(qū)域包含對象的概率。如果確定圖像區(qū)域是背景,則分?jǐn)?shù)為0;如果確定區(qū)域是對象,則分?jǐn)?shù)為1。

在機器學(xué)習(xí)中,我們使用“在線”這個詞來指的是在運行時動態(tài)訓(xùn)練的算法。離線分類器可能需要數(shù)千個示例來訓(xùn)練分類器,但是在線分類器通常在運行時使用很少的示例進(jìn)行訓(xùn)練。

分類器是通過向其提供正(對象)和負(fù)(背景)示例來訓(xùn)練的。如果您想構(gòu)建一個用于檢測貓的分類器,您可以使用包含貓的數(shù)千個圖像和不包含貓的數(shù)千個圖像對其進(jìn)行訓(xùn)練。通過這種方式,分類器學(xué)習(xí)區(qū)分什么是貓,什么不是貓。

OpenCV八種目標(biāo)跟蹤算法

1、GOTURN Tracker

Goturn是一種基于深度學(xué)習(xí)的對象跟蹤算法。最初的實現(xiàn)是在Caffe,目前已經(jīng)移植到OpenCV跟蹤API。

Goturn是一種基于深度學(xué)習(xí)的跟蹤算法,是回歸網(wǎng)絡(luò)的一般對象跟蹤的縮寫。大多數(shù)跟蹤算法都是在線訓(xùn)練的。換句話說,跟蹤算法學(xué)習(xí)運行時跟蹤的對象的外觀。

因此,許多實時追蹤器依賴于在線學(xué)習(xí)算法,這通常比基于深度學(xué)習(xí)的解決方案快得多。

Goturn改變了我們將深度學(xué)習(xí)應(yīng)用于跟蹤問題的方式,通過離線方式學(xué)習(xí)對象的運動。Goturn模型接受了數(shù)千個視頻序列的訓(xùn)練,不需要在運行時執(zhí)行任何學(xué)習(xí)。

Goturn如何工作?

Goturn由David Holded、Sebastian Thrun和Silvio Savarese在題為“用深度回歸網(wǎng)絡(luò)學(xué)習(xí)100 fps跟蹤”的論文中介紹。

48e8a60c-ce86-11ed-bfe3-dac502259ad0.jpg

圖1 GoTurn示意圖

如圖1所示,Goturn使用一對來自數(shù)千個視頻的裁剪幀進(jìn)行培訓(xùn)。

在第一幀(也稱為前一幀)中,對象的位置是已知的,幀被裁剪為對象周圍邊界框大小的兩倍。第一個裁剪幀中的對象始終居中。

需要預(yù)測對象在第二幀(也稱為當(dāng)前幀)中的位置。用于裁剪第一幀的邊界框也用于裁剪第二幀。因為對象可能已移動,所以對象可能未在第二幀中居中是大概率事件。

訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò)(CNN)預(yù)測第二幀邊界框的位置。

Goturn架構(gòu)

在Goturn如何工作,看到的是一個黑盒,Goturn架構(gòu)則讓我們了解了盒子里面藏著什么。

48ee3ac2-ce86-11ed-bfe3-dac502259ad0.jpg

圖2 Goturn架構(gòu)

圖2顯示了Goturn的體系結(jié)構(gòu)。如前所述,它將兩個裁剪的幀作為輸入。

注:在圖2中,上一幀顯示在底部,是居中的,我們的目標(biāo)是找到當(dāng)前幀的邊界框,顯示在頂部。

兩幀都通過一組卷積層。這些層只是caffenet架構(gòu)的前五個卷積層。這些卷積層(即pool5特性)的輸出被連接成長度為4096的單個矢量。這個向量被輸入到3個完全連接的層中。最后一個完全連接的層最終連接到包含4個節(jié)點的輸出層,這些節(jié)點表示邊界框的頂部和底部點。

( 每當(dāng)我們看到一組卷積層,并對其含義感到困惑時,可將它們視為改變原始圖像的過濾器,這樣可以保留重要信息,并丟棄圖像中不重要的信息。

通過簡單地展開張量,將卷積濾波器末端獲得的多維圖像(張量)轉(zhuǎn)換成一個長的數(shù)字矢量。這個向量作為輸入到幾個完全連接的層,最后是輸出層。全連通層可以看作是一種學(xué)習(xí)算法,它利用卷積層從圖像中提取的有用信息來解決現(xiàn)有的分類或回歸問題。)

與其他基于深度學(xué)習(xí)的追蹤器相比,Goturn速度更快。它在caffe的gpu上以100fps的速度運行,在opencv cpu上以20fps的速度運行。盡管跟蹤器是通用的,但理論上,通過將傳輸集與特定類型的對象進(jìn)行偏移,可以在特定對象(例如行人)上獲得更好的結(jié)果。

局限性:神經(jīng)網(wǎng)絡(luò)體現(xiàn)的優(yōu)勢,往往就是它的劣勢。神經(jīng)網(wǎng)絡(luò)依賴于訓(xùn)練集中樣本所能代表的場景種類,對于不存在的場景,就會存在問題。如在實際使用中,希望跟蹤手掌,把手掌移到臉上時,跟蹤器鎖定在臉上,并不會在手掌上。而跟蹤臉,并用手堵遮住臉,但追蹤器能夠跟蹤通過遮擋的臉,這說明訓(xùn)練集存在大量的手掌遮臉的場景。

2、BOOSTING Tracker助推跟蹤器

該跟蹤器基于ADaboost的在線版本,ADaboost是基于HAAR級聯(lián)的人臉檢測器內(nèi)部使用的算法。這個分類器需要在運行時用對象的正負(fù)示例進(jìn)行培訓(xùn)。以用戶(或其他對象檢測算法)提供的初始邊界框為對象的正例,邊界框外的許多圖像部位作為背景。給定一個新的幀,分類器在前一個位置附近的每個像素上運行,并記錄分類器的得分。對象的新位置是得分最大的位置。

缺點:速度較慢,并且表現(xiàn)不好,跟蹤失敗后,不能及時呈現(xiàn)錯誤報告。

3、MIL Tracker 密爾跟蹤器

這個跟蹤器的概念與上面描述的BOOSTING Tracker相似。最大的區(qū)別是,它不只是將對象的當(dāng)前位置視為一個正示例,還會在當(dāng)前位置周圍的一個小鄰域中查找,以生成幾個潛在的正示例。你可能認(rèn)為這是一個壞主意,因為在這些“積極”的例子中,大多數(shù)的對象都不是中心

這就是多實例學(xué)習(xí)(mil)來拯救的地方。在mil中,您不指定正負(fù)示例,而是指定正負(fù)“bags”。正面的圖像收集并非都是正面的例子。一個正面的bag包含了以對象當(dāng)前位置為中心的區(qū)域,以及它周圍的一個小鄰域中的區(qū)域。即使被跟蹤對象的當(dāng)前位置不準(zhǔn)確,當(dāng)來自當(dāng)前位置附近的樣本放入正袋中時,很有可能該袋至少包含一個圖像,并且該對象很好地居中。

優(yōu)點:性能不錯。它不會像助推跟蹤器那樣漂移,并且在部分遮擋下也能正常工作。

缺點:失敗率較高。

4、KCF跟蹤器

KCF代表kernelized correlation filters。這個追蹤器建立在前兩個追蹤器中提出的想法之上。該跟蹤器利用了這樣一個事實:在MIL跟蹤器中使用的多個正樣本具有較大的重疊區(qū)域。這些重疊的數(shù)據(jù)導(dǎo)致了一些很好的數(shù)學(xué)特性,這些特性被跟蹤器利用,從而使跟蹤速度更快、更準(zhǔn)確。

優(yōu)點:準(zhǔn)確度和速度都比MIL跟蹤器好,它報告跟蹤故障比BOOSTING和MIL這兩個追蹤算法好。

缺點:無法從完全遮擋中恢復(fù)。

5、TLD跟蹤器

TLD代表跟蹤、學(xué)習(xí)和檢測。顧名思義,這個跟蹤器將長期跟蹤任務(wù)分解為三個組件(短期)跟蹤、學(xué)習(xí)和檢測。在作者的論文中,“跟蹤器跟蹤對象從一幀到另一幀。探測器定位到目前為止觀察到的所有外觀,并在必要時糾正跟蹤器。學(xué)習(xí)估計檢測器的錯誤并更新它以避免將來出現(xiàn)這些錯誤。”這個跟蹤器的輸出有點跳躍。例如,如果您正在跟蹤一個行人,并且場景中還有其他行人,則此跟蹤器有時可以臨時跟蹤一個與您要跟蹤的行人不同的行人。在積極的一面,這條軌跡似乎是在更大的比例、運動和遮擋上跟蹤一個對象。如果你有一個隱藏在另一個物體后面的視頻序列,這個跟蹤器可能是個不錯的選擇。

優(yōu)點:在多幀遮擋下效果最好。此外,跟蹤最佳的超比例變化。

缺點:很多誤報使它幾乎不可用。

6、MEDIANFLOW跟蹤器

在內(nèi)部,這個跟蹤器可以實時地跟蹤物體的前后方向,并測量這兩個軌跡之間的差異。最大限度地減少這種向前向后的誤差,使他們能夠可靠地檢測跟蹤故障,并在視頻序列中選擇可靠的軌跡。

在測試中發(fā)現(xiàn)這個跟蹤器在運動可預(yù)測和對象小的情況下工作得最好。與其他跟蹤者不同的是,即使跟蹤明顯失敗,跟蹤者也知道跟蹤何時失敗。

優(yōu)點:出色的跟蹤故障報告。當(dāng)運動是可預(yù)測的并且沒有遮擋時,效果非常好。

缺點:大幅度運動跟蹤,模型會失效。

7、MOSSE 莫斯跟蹤器

最小平方誤差輸出和(mosse)使用自適應(yīng)相關(guān)進(jìn)行對象跟蹤,當(dāng)使用單幀進(jìn)行初始化時,可產(chǎn)生穩(wěn)定的相關(guān)濾波器。Mosse跟蹤器對光照、比例、姿勢和非剛性變形的變化具有魯棒性。對于遮擋,跟蹤器能夠在對象重新出現(xiàn)時暫停并恢復(fù)到停止的位置。

優(yōu)點:速度快。

缺點:準(zhǔn)確率不如CSRT和KCF高。

8、CSRT跟蹤器

在具有信道和空間可靠性的鑒別相關(guān)濾波器(DCF-CSR)中,我們使用空間可靠性圖從幀中調(diào)整濾波器支持到所選區(qū)域的一部分進(jìn)行跟蹤。這樣可以確保選定區(qū)域的放大和定位,并改進(jìn)對非矩形區(qū)域或?qū)ο蟮母?。它只使用兩個標(biāo)準(zhǔn)功能(HoGs and Colornames)。它也在相對較低的fps(25 fps)下工作,但提供了更高的目標(biāo)跟蹤精度。

優(yōu)點:比KCR精度高。

缺點:速度較慢。

OpenCV跟蹤算法使用代碼實現(xiàn)(C)

1、創(chuàng)建跟蹤算法

48ffa9ec-ce86-11ed-bfe3-dac502259ad0.jpg

2、對跟蹤算法做初始化操作

492aae3a-ce86-11ed-bfe3-dac502259ad0.jpg

3、跟蹤監(jiān)測刷新,獲取到下一幀跟蹤目標(biāo)的坐標(biāo)(x、y、寬、高)

494003fc-ce86-11ed-bfe3-dac502259ad0.jpg

4、利用坐標(biāo)做跟蹤所需要的操作,如畫框等

4946fec8-ce86-11ed-bfe3-dac502259ad0.jpg

實際檢測結(jié)果對比

494ef24a-ce86-11ed-bfe3-dac502259ad0.jpg

圖片1起始跟蹤;圖片2運動后跟蹤

如上跟蹤算法顯示,以CBA比賽作為跟蹤對象。從跟蹤過程中兩幀數(shù)據(jù)可以感知不同跟蹤算法在對動態(tài)人物變動所體現(xiàn)的差異。

1、MEDIANFLOW、BOOSTING、MIL在針對人物大小有變化時跟蹤比較不理想,跟蹤不到目標(biāo)。

2、CSRT、KCF能對運動畫面有較好跟蹤,但是在遮擋場景下,不能支持,效果較差。

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4630

    瀏覽量

    93358
  • 分類器
    +關(guān)注

    關(guān)注

    0

    文章

    152

    瀏覽量

    13225
  • OpenCV
    +關(guān)注

    關(guān)注

    31

    文章

    635

    瀏覽量

    41556

原文標(biāo)題:OpenCV中八種不同的目標(biāo)追蹤算法

文章出處:【微信號:3D視覺工坊,微信公眾號:3D視覺工坊】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    仿人足球機器人目標(biāo)定位技術(shù)與追蹤算法改進(jìn)

    移動機器人視覺的研究主要集中在顏色模型建立、目標(biāo)識別、定位以及跟蹤等方面。目標(biāo)的實時識別與定位是足球機器人在足球賽精確踢球的前提。文章主要是針對目前足球機器人在視覺系統(tǒng)上所存在的問題進(jìn)行了顏色模型建立及
    發(fā)表于 09-19 11:18 ?2724次閱讀

    基于OPENCV的運動目標(biāo)跟蹤實現(xiàn)

    CAMSHIFT算法是一基于顏色直方圖的目標(biāo)跟蹤算法。在視頻跟蹤過程,CAMSHIFT算法
    發(fā)表于 12-23 14:21

    基于FPGA的實時移動目標(biāo)追蹤

    運動目標(biāo)的檢測算法:1)幀間差分法 是采用視頻序列的相鄰兩幀圖像做差的方法,來檢測視頻序列的移動目標(biāo)。但是受運動
    發(fā)表于 08-10 09:15

    基于QT+OpenCv目標(biāo)跟蹤算法實現(xiàn)

    目標(biāo)跟蹤算法作為一有著非常廣泛的應(yīng)用的算法,在航空航天、智能交通、智能設(shè)備等領(lǐng)域有著非常廣泛的應(yīng)用。本系列博客將教大家在410c開發(fā)板上基于linux操作系統(tǒng)環(huán)境,采用QT+
    發(fā)表于 09-21 10:42

    【方案分享】基于C6678+Zynq-7045 的目標(biāo)追蹤視覺技術(shù)

    GFLOP,算法能力強,滿足目標(biāo)追蹤算法要求。ZYNQ Z-7045/7100集成PS端雙核ARM Cortex-A9 + PL端Kintex-7架構(gòu)28nm可編程邏輯資源,ARM主
    發(fā)表于 05-19 17:10

    什么是純追蹤算法?

    什么是純追蹤算法
    發(fā)表于 11-22 06:08

    移動信源追蹤活動目標(biāo)的方法

    摘要:無線網(wǎng)絡(luò)的出現(xiàn)使移動追蹤并定位正在運動的目標(biāo)變?yōu)榭赡?,在多傳感器網(wǎng)絡(luò),測距定位是目標(biāo)定位的一常用手段。利用測距定位的移動
    發(fā)表于 02-23 13:24 ?38次下載

    基于OPENCV的運動目標(biāo)跟蹤實現(xiàn)

    CAMSHIFT算法是一基于顏色直方圖的目標(biāo)跟蹤算法。在視頻跟蹤過程,CAMSHIFT算法
    發(fā)表于 11-07 14:47 ?924次下載
    基于<b class='flag-5'>OPENCV</b>的運動<b class='flag-5'>目標(biāo)</b>跟蹤實現(xiàn)

    OpenCV3編程入門-源碼例程全集-點追蹤

    OpenCV3編程入門-源碼例程全集-點追蹤
    發(fā)表于 09-18 16:38 ?0次下載

    仿人足球機器人目標(biāo)定位與追蹤算法改進(jìn)方案免費下載

    熱點,目標(biāo)的實時識別與定位是足球機器人在足球賽精確踢球的前提。文章主要是針對目前足球機器人在視覺系統(tǒng)上所存在的問題進(jìn)行了顏色模型建立及目標(biāo)定位算法的改進(jìn),加入了
    發(fā)表于 09-21 11:31 ?52次下載

    QT+Opencv粒子濾波算法實現(xiàn)視頻目標(biāo)跟蹤——(三)QT環(huán)境安裝及配置

    在QT+OpenCV實現(xiàn)在410c開發(fā)板上實現(xiàn)視頻目標(biāo)追蹤預(yù)研系列內(nèi)容呢的前面兩個博客已經(jīng)對目標(biāo)跟蹤
    發(fā)表于 02-23 10:33 ?3104次閱讀

    QT+Opencv粒子濾波算法實現(xiàn)視頻目標(biāo)跟蹤——如何選擇跟蹤算法

    目標(biāo)跟蹤算法作為一有著非常廣泛的應(yīng)用的算法,在航空航天、智能交通、智能設(shè)備等領(lǐng)域有著非常廣泛的應(yīng)用。本系列博客將教大家在410c開發(fā)板上基于linux操作系統(tǒng)環(huán)境,采用QT+
    發(fā)表于 02-27 10:32 ?5434次閱讀
    QT+<b class='flag-5'>Opencv</b>粒子濾波<b class='flag-5'>算法</b>實現(xiàn)視頻<b class='flag-5'>目標(biāo)</b>跟蹤——如何選擇跟蹤<b class='flag-5'>算法</b>

    光線追蹤算法匯總

    在基本光線追蹤算法,只追蹤有限數(shù)目的光線。
    的頭像 發(fā)表于 05-11 15:58 ?1.7w次閱讀
    光線<b class='flag-5'>追蹤</b><b class='flag-5'>算法</b>匯總

    OpenCV不同的目標(biāo)追蹤算法

    對于3.3以上的版本,每個追蹤器可以用各自的函數(shù)創(chuàng)造,如cv2. TrackerKCF_create。詞典OPENCV_OBJECT_TRACKERS包含了7OpenCV
    的頭像 發(fā)表于 08-05 09:03 ?3.3w次閱讀

    基于多智能體協(xié)同強化學(xué)習(xí)的多目標(biāo)追蹤方法

    針對現(xiàn)有多目標(biāo)追蹤方法通常存在學(xué)習(xí)速度慢、追蹤效率低及協(xié)同追蹤策略設(shè)計困難等問題,提岀一改進(jìn)的多目標(biāo)
    發(fā)表于 03-17 11:08 ?20次下載
    一<b class='flag-5'>種</b>基于多智能體協(xié)同強化學(xué)習(xí)的多<b class='flag-5'>目標(biāo)</b><b class='flag-5'>追蹤</b>方法
    百家乐官网园会员注册| 百家乐官网怎么玩请指教| 百家乐官网官网下载| 百家乐官网微笑玩法| 百家乐游戏机博彩正网| 全讯网开奖直播| 永发娱乐城| 百家乐官网看大路| 申博百家乐公式软件| 门赌场百家乐的规则| 真钱棋牌导航网| 百家乐线上代理网站| 襄樊市| 励骏会百家乐官网的玩法技巧和规则 | 百家乐官网方案| 百家乐tt娱乐城娱乐城| 金龙棋牌下载| 太阳城百家乐官网红利| 百家乐现金网平台排行| 东山县| 百家乐长龙如何判断| 岢岚县| 百家乐博送彩金18| 战神娱乐场| 跨国际百家乐官网的玩法技巧和规则| 百家乐游戏补牌规则| 七匹狼娱乐城开户| 百家乐官网五湖四海赌场娱乐网规则 | 试玩百家乐官网1000| 威尼斯人娱乐城网络博彩| 百家乐官网真人荷官网| 最新皇冠网| 真人百家乐网西陆| 淘金盈开户| 百家乐筹码样式| 网络龙虎| 哪个百家乐玩法平台信誉好| 金川县| 娱乐城百家乐可以代理吗 | 战神国际娱乐城| 属狗与属龙做生意好吗|