精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何使用質心法進行目標追蹤--文末送書

OpenCV學堂 ? 來源:OpenCV學堂 ? 2023-10-31 15:47 ? 次閱讀

如今,“圖像分類”、“目標檢測”、“語義分割”、“實例分割”和“目標追蹤”等5大領域是計算機視覺的熱門應用。其中“圖像分類”與“目標檢測”是最基礎的應用,在此基礎上,派生出了“語義分割”、“實例分割”和“目標跟蹤”等相對高級的應用。

、基于目標檢測的追蹤概述

基于目標檢測的目標追蹤方法(Tracking By Detecting,簡稱TBD)一般使用目標檢測模型(如YOLO),在每個視頻幀上進行目標檢測,然后將檢測出來的目標進行關聯,找到每個目標的運行軌跡。如圖1所示,先使用目標檢測模型檢測出7個目標,然后通過算法,將5b7dfc4c-77c1-11ee-939d-92fbcf53809c.png5b91784e-77c1-11ee-939d-92fbcf53809c.png進行關聯,從而追蹤到這兩個足球的運行軌跡。

5b9d6492-77c1-11ee-939d-92fbcf53809c.png

1基于目標檢測的目標追蹤方法

TBD方法完整的流程如圖2所示,該方法共有5個步驟,其中最關鍵的是“目標檢測”和“目標關聯”兩個步驟,“目標檢測”需要一個訓練好的目標檢測模型,用來發現圖像中的各個目標,“目標關聯”需要一個關聯算法,用來進行目標的配對。

(1)目標檢測,檢測出要追蹤目標的位置坐標、目標分類等信息,初始化每個目標的軌跡。

2)目標關聯,使用算法,給當前幀中的目標和前一幀的目標進行配對。

3)關聯成功,在上一幀中找到了當前幀中檢測到的目標,配對成功,記錄目標的軌跡。

4)新出現目標,在上一幀中沒有找到當前幀中檢測到的目標,初始化新目標的軌跡。

5)目標消失,在當前幀中沒有找到上一幀中檢測出來的目標,刪除該目標的軌跡。

5bae60b2-77c1-11ee-939d-92fbcf53809c.png

2 基于目標檢測的目標追蹤方法(TBD)流程圖

在基于目標檢測的目標追蹤方法中,為了實現目標的關聯,容易想到的方法是“通過目標識別進行目標關聯”:對每一幀圖像進行目標檢測,然后對每一個目標提取特征,通過特征識別出每一個目標,從而實現目標關聯。

但是,“通過目標識別進行目標關聯”需要在每一幀圖像中,提取出每一個目標的特征,這需要大量的計算資源,同時還需要穩定的特征提取器,在實際場景中很難做到,因此,通常采用其他方法進行目標的關聯,如常用的質心法。

二、使用質心法進行目標關聯

質心法是一種基于目標檢測的目標追蹤方法,只在目標首次出現的時候,對目標進行識別,在后續的視頻幀中,通過歐氏距離將檢測到的目標進行關聯,如圖3所示。

1)目標檢測,使用深度學習模型,對視頻幀進行目標檢測。

2)計算質心坐標,使用目標預測框的中心點作為質心坐標。

3)計算質心距離,計算視頻的上一幀和當前幀中目標之間的歐式距離。

4)目標關聯,距離相近的為同一目標,如AC是同一目標,B是新出現目標。

(5)目標更新,更新已知目標的坐標,生成新目標ID,如果有目標消失,則注銷消失目標ID。

5bb8f0fe-77c1-11ee-939d-92fbcf53809c.png

3 使用質心法實現目標關聯

三、質心法使用示例

質心法是目標關聯算法,在進行目標追蹤時,還需要配合目標檢測模型使用,下面代碼使用YOLO模型進行目標檢測(已經在coco數據集上訓練好的YOLO模型),使用質心法進行目標關聯,實現目標的追蹤。

在以下代碼中,詳細介紹了兩幀圖像中的目標(足球)的追蹤過程,在本書配套的源代碼中,還演示了對視頻中的目標進行追蹤的方法。

(1)導入庫用到的庫(在配套代碼目錄下的yolo_detect.py文件里,封裝了YOLO模型的使用)

1 import cv2,math
  2 import numpy as np
  3 import IPython.display as display
  4 from yolo_detect import Init_Yolo,Detect,Draw #封裝YOLO模型的檢測操作
  5 from matplotlib import pyplot as plt
  6 plt.rcParams['font.sans-serif']=['SimHei'] #在統計圖上顯示中文

2)初始化YOLO模型(模型的初始化方法請查看yolo_detect.py文件中的Init_Yolo函數)。

1 model,labels = Init_Yolo('./models/yolov3-tiny.cfg',
  2                          './models/yolov3-tiny.weights',
3'./models/coco.names')

(3)讀取兩幀圖像,并轉換為RGB格式,其中frame_1是上一幀圖像,frame_2是當前幀圖像。

 1 frame_1 = cv2.imread('./images/ball_1.png')
  2 frame_1 = cv2.cvtColor(frame_1, cv2.COLOR_BGR2RGB)
  3 frame_2 = cv2.imread('./images/ball_2.png')
4frame_2=cv2.cvtColor(frame_2,cv2.COLOR_BGR2RGB)

4)檢測兩幀圖像中的足球目標(調用yolo_detect.py文件中的Detect函數)。

1 #使用YOLO檢測兩幀圖像中的目標
  2 b1 = Detect(model,labels,frame_1)
  3 b2 = Detect(model,labels,frame_2)
  4 #只保留足球的檢測結果
  5 filter=np.where(b1[:,-1]=='sports ball')
  6 bbox1 = b1[filter]
  7 filter=np.where(b2[:,-1]=='sports ball')
8bbox2=b2[filter]

(5)計算質心坐標,根據第4步檢測結果bbox1和bbox2,計算目標的質心(即綁定框的中心)。

1 A = (int(bbox1[0][0])+int(bbox1[0][2])/2,int(bbox1[0][1])+int(bbox1[0][3])/2)
  2 B = (int(bbox2[0][0])+int(bbox2[0][2])/2,int(bbox2[0][1])+int(bbox2[0][3])/2)
  3 C = (int(bbox2[1][0])+int(bbox2[1][2])/2,int(bbox2[1][1])+int(bbox2[1][3])/2)
4print("第一幀目標A",A,"第二幀目標B",B,"第二幀目標C",C)

使用第4和第5步代碼,在第一幀圖像中檢測到目標A,在第二幀圖像中檢測到目標BC,并分別計算這3個目標的質心。如圖4所示,圖中白色邊框為檢測到的目標邊界框,中間的綠點為目標的質心(即邊界框的中心)。

5bca9980-77c1-11ee-939d-92fbcf53809c.png

4 檢測到的目標與質心

6)計算第一幀中的目標和后一幀中目標的歐氏距離,根據最近距離,確定AB是同一目標。

 1 AB = math.sqrt(math.pow((A[0]-B[0]),2)+math.pow((A[1]-B[1]),2))
  2 AC = math.sqrt(math.pow((A[0]-C[0]),2)+math.pow((A[1]-C[1]),2))
3print("AB距離",AB,"AC距離",AC,"AB是同一目標")

(7)顯示追蹤的結果,將兩幀圖像合并到一起,用連線表示目標的運行軌跡,如圖5所示。

 1 mask1 = Draw(frame_1,bbox1)  #繪制在第一幀中檢測到的目標
  2 mask2 = Draw(frame_2,bbox2)  #繪制在第二幀中檢測到的目標
  3 all_img = np.hstack((mask1, mask2)) #將兩幀圖像合并成一幅圖像
  4 #繪制運動軌跡
  5 H,W = mask1.shape[:2]
  6 cv2.line(all_img,(int(A[0]),int(A[1])),(W+int(C[0]),int(C[1])),(0,255,255),2)
  7 ##顯示追蹤結果
  8 plt.title('目標運行軌跡')
9plt.imshow(all_img)

5bd94f5c-77c1-11ee-939d-92fbcf53809c.png

5目標的運行軌跡


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 模型
    +關注

    關注

    1

    文章

    3178

    瀏覽量

    48729
  • 圖像分類
    +關注

    關注

    0

    文章

    90

    瀏覽量

    11907
  • 目標檢測
    +關注

    關注

    0

    文章

    205

    瀏覽量

    15590

原文標題:如何使用質心法進行目標追蹤--文末送書

文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學堂】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    【11月狂歡】PCB充值即現金券,充多多,上不封項!

    為回饋廣大客戶對華秋的厚愛2024年11月特惠狂歡火熱開啟~PCB充值即現金券!充多多,福利加倍!充值1萬元,即300元現金券,相當于返3個點充值3萬元,即1200元現金券,相
    的頭像 發表于 11-08 01:02 ?129次閱讀
    【11月狂歡】PCB充值即<b class='flag-5'>送</b>現金券,充多<b class='flag-5'>送</b>多,上不封項!

    鐳神智能激光雷達低空無人機目標追蹤光電系統:筑牢機場低空安防屏障

    近日,天津濱海機場遭遇無人機干擾,導致航班大面積無法起降,引發廣泛關注。這一事件再次凸顯了低空安防領域的重要性,以及高效、精準的監控系統對于保障航空安全的必要性。鐳神智能推出的激光雷達低空目標追蹤
    的頭像 發表于 10-01 08:07 ?246次閱讀
    鐳神智能激光雷達低空無人機<b class='flag-5'>目標</b><b class='flag-5'>追蹤</b>光電系統:筑牢機場低空安防屏障

    無線定位器追蹤器跟手機怎么連接

    無線定位器追蹤器與手機的連接方法主要取決于追蹤器的類型和功能。以下是一些常見的連接方式: 一、藍牙連接 確保兼容性 :首先,確保你的定位器追蹤器支持藍牙功能,并且手機的藍牙也已開啟。 進行
    的頭像 發表于 09-29 10:01 ?1145次閱讀

    如何遠離網絡追蹤

    ?隨著科技不斷發展,生活、工作等都離不開網絡。但網絡追蹤技術也隨著科技的進步不斷發展,人們在網絡上的在線活動越來越容易被追蹤和監控。這會威脅到個人隱私、信息泄露、身份盜竊等嚴重后果。所以,今天我想
    的頭像 發表于 09-03 16:57 ?334次閱讀
    如何遠離網絡<b class='flag-5'>追蹤</b>

    基于迅為RK3588【RKNPU2項目實戰1】:YOLOV5實時目標分類

    [/url] 【RKNPU2 人工智能開發】 【AI深度學習推理加速器】——RKNPU2 從入門到實踐(基于RK3588和RK3568) 【RKNPU2項目實戰1】:YOLOV5實時目標分類 【RKNPU2項目實戰2】:SORT目標追蹤
    發表于 08-15 10:51

    迅為RK3588開發板RKNPU2項目實戰2SORT目標追蹤

    1.介紹和視頻演示 2.在模擬器實現圖片的目標追蹤 3.連板推理和嵌入式部署 4.視頻目標追蹤的實現(python) 5.C++實現目標
    發表于 07-10 11:08

    如何使用CAN盒測出目標CAN設備的波特率

    要使用CAN盒測出目標CAN設備的波特率,可以按照以下步驟進行: (1)硬件準備: 準備一個與目標CAN設備兼容的CAN盒。 確保CAN盒的接口與目標CAN設備的CAN通信接口相匹配,
    的頭像 發表于 06-26 16:41 ?719次閱讀

    卡爾曼濾波是什么 卡爾曼濾波與目標追蹤技術分析

    卡爾曼濾波以及其擴展算法能夠應用于目標狀態估計,如果這個目標是行人,那么就是行人狀態估計(或者說行人追蹤),如果這個目標是自身,那么就是車輛自身的
    的頭像 發表于 04-29 09:46 ?849次閱讀
    卡爾曼濾波是什么 卡爾曼濾波與<b class='flag-5'>目標</b><b class='flag-5'>追蹤</b>技術分析

    追蹤跳線都用哪些場景

    鷹眼追蹤跳線是一種用于機房管理的工具,可以查詢銅纜和光纜(包括超五類、六類、超六類屏蔽/非屏蔽,單模/多模光纖等)。其應用場景包括但不限于: 機房管理:機房是網絡設備的核心區域,鷹眼追蹤跳線可用
    的頭像 發表于 03-21 10:03 ?394次閱讀

    手持激光焊接機帶絲的價格是多少?

    標題:《手持激光焊接機帶絲的價格是多少?》 手持激光焊接機是一種高效、便捷的焊接設備,廣泛應用于金屬加工、汽車制造、航空航天、電子電器等領域。帶絲功能的手持激光焊接機可以實現自動絲,提高焊接
    的頭像 發表于 03-06 11:54 ?538次閱讀
    手持激光焊接機帶<b class='flag-5'>送</b>絲的價格是多少?

    手持激光焊接機絲機不自動絲?不妨試試這幾個方法

    標題:《手持激光焊接機絲機不自動絲怎么辦?》 手持激光焊接機絲機是激光焊接機的重要組成部分,它的作用是將焊絲自動送給焊接部位,以保證焊接的連續性和穩定性。然而,在使用手持激光焊接機
    的頭像 發表于 03-06 11:50 ?1455次閱讀
    手持激光焊接機<b class='flag-5'>送</b>絲機不自動<b class='flag-5'>送</b>絲?不妨試試這幾個方法

    在ELF 1 開發板上實現讀取攝像頭視頻進行目標檢測

    當前,將AI或深度學習算法(如分類、目標檢測和軌跡追蹤)部署到嵌入式設備,進而實現邊緣計算,正成為輕量級深度學習算法發展的一個重要趨勢。今天將與各位小伙伴分享一個實際案例:在ELF1開發板上成功部署
    的頭像 發表于 01-24 10:38 ?658次閱讀
    在ELF 1 開發板上實現讀取攝像頭視頻<b class='flag-5'>進行</b><b class='flag-5'>目標</b>檢測

    西門子PLC進行連續數據采集、時序和故障追蹤的方法

    西門子可以通過博圖軟件進行PLC數據的采集和狀態記錄,但是,僅適用于S7-1200和S7-1500,且不能連續錄波。如果需要連續記錄PLC內的數據,或者進行長時間的時序和故障追蹤,可以采用第三方的軟件。
    的頭像 發表于 01-05 10:30 ?1507次閱讀

    什么是像素流?像素流如何應用?

    又是如何應用的呢? 簡單來說, 像素流利用云計算和低延遲傳輸技術,通過在云端服務器上部署應用程序和操作內容,并以視頻流的形式傳輸到終端設備進行顯示和操作。 這種技術方案帶來了一種新的改變,將原本對硬件要求
    的頭像 發表于 12-13 15:43 ?506次閱讀

    追蹤器arduino原理

    追蹤器 (LDR) 是一種基于光敏電阻的光測量器件,常用于測量光強度和控制感應器。在 Arduino 上使用 LDR,可以實現對光線進行檢測、測量和控制的功能。本文將詳細介紹 LDR
    的頭像 發表于 12-08 10:22 ?1422次閱讀