国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于YOLOv5的視頻計(jì)數(shù) — 汽車計(jì)數(shù)實(shí)現(xiàn)

這篇具有很好參考價(jià)值的文章主要介紹了基于YOLOv5的視頻計(jì)數(shù) — 汽車計(jì)數(shù)實(shí)現(xiàn)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

在視頻中計(jì)數(shù)對象可能看起來有挑戰(zhàn)性,但借助Python和OpenCV的強(qiáng)大功能,變得令人意外地易于實(shí)現(xiàn)。在本文中,我們將探討如何使用YOLO(You Only Look Once)目標(biāo)檢測模型在視頻流或文件中計(jì)數(shù)對象。我們將該過程分解為簡單的步驟,使初學(xué)者能夠輕松跟隨。

本文將分為以下幾個(gè)部分:

  • 需求

  • 啟發(fā)式:汽車計(jì)數(shù)

  • 檢測過濾

  • 啟發(fā)式:實(shí)現(xiàn)

  • 結(jié)論

需求

在我們深入了解該過程之前,讓我們確保已安裝所需的庫。主要需要:

  • PyTorch:通過PyTorch Hub,我們將訪問Ultralytics存儲庫以下載Yolov5模型。

  • OpenCV:用于加載、操作和顯示視頻的所有實(shí)用程序。

  • Matplotlib(可選):我們將使用此實(shí)用程序在多邊形內(nèi)進(jìn)行點(diǎn)驗(yàn)證。

如代碼片段1所示,requirements.txt文件中列出了這些要求。

opencv-python==4.8.1.78
torch==2.1.0
matplotlib==3.8.0
ultralytics==8.0.203
pandas==2.1.2
requests==2.31.0

一旦我們查看了主要要求,就該了解我們將開發(fā)用于從視頻中計(jì)數(shù)對象的啟發(fā)式的時(shí)間了。

啟發(fā)式:汽車計(jì)數(shù)

在此示例中,我們將使用一個(gè)視頻場景,其中將對汽車進(jìn)行計(jì)數(shù)。圖2顯示了一個(gè)示例幀。

yolov5視頻計(jì)數(shù)統(tǒng)計(jì),YOLO,音視頻,汽車用于計(jì)數(shù)汽車的視頻幀

為了計(jì)數(shù)汽車,我們將使用Yolov5來檢測視頻中的對象。基于檢測到的對象,我們將過濾與汽車、公共汽車和卡車有關(guān)的類別。由于檢測基于邊界框(具有坐標(biāo)xmin、ymin、xmax、ymax的多邊形),我們將需要獲取每個(gè)邊界框的中心點(diǎn)(xc, yc),該中心點(diǎn)將是我們對象的參考點(diǎn)。

最后,我們將繪制一個(gè)多邊形,該多邊形將是計(jì)數(shù)對象的參考,也就是說,如果對象的參考點(diǎn)在多邊形內(nèi),我們將增加對象計(jì)數(shù)器,否則計(jì)數(shù)器不受影響。在下圖中,我們可以看到多邊形和多邊形內(nèi)的汽車數(shù)量的表示。

yolov5視頻計(jì)數(shù)統(tǒng)計(jì),YOLO,音視頻,汽車檢測(綠色點(diǎn))、多邊形(紅色線)和計(jì)數(shù)器

到此為止,我們已經(jīng)知道了需求是什么,以及我們將實(shí)施用于計(jì)數(shù)對象的啟發(fā)式的方法。現(xiàn)在可以加載模型:Yolov5 Nano

在本例中,我們將使用Yolov5的nano版本(即yolov5n),我們將通過PyTorch Hub從Ultralytics存儲庫中擴(kuò)展它。同樣,為了加載和在每一幀上生成迭代器,我們將使用OpenCV(即cv2),下述代碼是具體的實(shí)現(xiàn)方式:

import cv2
import torch


VIDEO_PATH="data/traffic.mp4"
HUB="ultralytics/yolov5"
YOLO="yolov5n"


def count_cars(cap: cv2.VideoCapture):


    model = torch.hub.load(HUB, model=YOLO, pretrained=True)


    while cap.isOpened():
        status, frame = cap.read()


        if not status:
            break


        # Detection filtering and heuristic
        # will be implemented here.


        cv2.imshow("frame", frame)


        if cv2.waitKey(10) & 0xFF == ord('q'):
             break


    cap.release()




if __name__ == '__main__':


    cap = cv2.VideoCapture(VIDEO_PATH)
    count_cars(cap)

正如我們所看到的,我們已經(jīng)定義了count_cars()函數(shù),我們將在整個(gè)項(xiàng)目中對其進(jìn)行更新。在4-6行,我們定義了視頻所在路徑、hub和模型名稱的變量。從那里,讓我們迅速跳到31-32行,在那里通過初始化cap對象加載視頻,然后將其傳遞給count_cars()函數(shù)。

返回到第10行,通過PyTorch Hub,我們下載并初始化了yolov5n模型。隨后,在第12行,我們生成一個(gè)迭代器,只要有要顯示的幀,它就會保持活動(dòng)狀態(tài)。一旦幀完成,與迭代器相關(guān)的對象就會被釋放(第26行)。

在第13行,我們讀取幀,驗(yàn)證是否成功讀取,并顯示它們(第21行)。在這一部分,將出現(xiàn)一個(gè)窗口,用于查看從此迭代器顯示的視頻。最后,第23行是在按q鍵時(shí)刪除彈出窗口。

檢測過濾

過濾檢測是指從Yolo預(yù)測中提取感興趣的類別的過程。在這種情況下,我們將過濾掉分?jǐn)?shù)大于0.5且類別為汽車、公共汽車或卡車的檢測。同樣,我們將需要找到邊界框的中心點(diǎn),我們將其用作對象的參考點(diǎn)。下面代碼顯示了這兩個(gè)函數(shù)的實(shí)現(xiàn)。

import pandas as pd


def get_bboxes(preds: object):
    df = preds.pandas().xyxy[0]
    df = df[df["confidence"] >= 0.5]
    df = df[df["name"].isin(["car", "bus", "truck"])]


    return df[["xmin", "ymin", "xmax", "ymax"]].values.astype(int)


def get_center(bbox):
    center = ((bbox[0] + bbox[2]) // 2, (bbox[1] + bbox[3]) // 2)
    return center

正如我們所看到的,我們定義了兩個(gè)函數(shù)get_bboxes()和get_center()。get_bboxes()函數(shù)(第3行)旨在提取所有分?jǐn)?shù)大于0.5并過濾掉已經(jīng)提到的類別的預(yù)測,返回一個(gè)坐標(biāo)形式的邊界框的numpy數(shù)組[xmin, ymin, xmax, ymax]。

get_center()函數(shù)(第10行)接收一個(gè)帶有邊界框坐標(biāo)的numpy數(shù)組,并使用方程xc, yc = (xmin + xmax) // 2, (ymin + ymax) // 2分別計(jì)算中心點(diǎn)。

在這一點(diǎn)上,我們已經(jīng)下載了模型,過濾了預(yù)測,并獲得了每個(gè)對象的中心點(diǎn)。現(xiàn)在,我們唯一需要的是生成決定啟發(fā)式區(qū)域的多邊形。因此,讓我們繼續(xù)下一節(jié)!

啟發(fā)式:實(shí)現(xiàn)

我們將定義的多邊形可能會因視頻、透視等而有所不同。在這種情況下,例如此示例,我們將使用8個(gè)點(diǎn),如下圖所示:

yolov5視頻計(jì)數(shù)統(tǒng)計(jì),YOLO,音視頻,汽車?具有坐標(biāo)的多邊形?

一旦我們定義了多邊形,我們唯一需要做的就是驗(yàn)證每個(gè)對象的參考點(diǎn)是否在多邊形內(nèi)。如果在多邊形內(nèi),我們就會增加一個(gè)計(jì)數(shù)器,如果不在,我們就繼續(xù)。

import cv2
import numpy as np
import matplotlib.path as mplPath


POLYGON = np.array([
    [333, 374],
    [403, 470],
    [476, 655],
    [498, 710],
    [1237, 714],
    [1217, 523],
    [1139, 469],
    [1009, 393],
])




def is_valid_detection(xc, yc):
    return mplPath.Path(POLYGON).contains_point((xc, yc))


def count_cars(cap: object):


    model = torch.hub.load(HUB, model=YOLO, pretrained=True)


    while cap.isOpened():
        status, frame = cap.read()


        if not status:
            break


        preds = model(frame)
        bboxes = get_bboxes(preds)


        detections = 0
        for box in bboxes:
            xc, yc = get_center(box)


            if is_valid_detection(xc, yc):
                detections += 1

讓我們注意到在第5行,我們定義了多邊形。在第17行,我們定義了關(guān)鍵函數(shù):is_valid_detection(),它旨在驗(yàn)證參考點(diǎn)(xc, yc)是否在多邊形內(nèi)。這個(gè)函數(shù)在第37行調(diào)用,如果為真,它會增加有效檢測計(jì)數(shù)器,否則什么也不做。

最后,為了可視化,我們將添加一些OpenCV行來顯示計(jì)數(shù)器、每輛檢測到的汽車的參考點(diǎn)和多邊形。

def count_cars(cap: object):


    model = torch.hub.load(HUB, model=YOLO, pretrained=True)
    
    while cap.isOpened():
        status, frame = cap.read()


        if not status:
            break


        preds = model(frame)
        bboxes = get_bboxes(preds)


        detections = 0
        for box in bboxes:
            xc, yc = get_center(box)
            
            if is_valid_detection(xc, yc):
                detections += 1
                
            # Draw poit of reference for each detection
            cv2.circle(img=frame, center=(xc, yc), radius=5, color=(0,255,0), thickness=-1)
            # Draw bounding boxes for each detection
            cv2.rectangle(img=frame, pt1=(box[0], box[1]), pt2=(box[2], box[3]), color=(255, 0, 0), thickness=1)
        # Draw the counter
        cv2.putText(img=frame, text=f"Cars: {detections}", org=(100, 100), fontFace=cv2.FONT_HERSHEY_PLAIN, fontScale=3, color=(0,0,0), thickness=3)
        # Draw the polygon
        cv2.polylines(img=frame, pts=[POLYGON], isClosed=True, color=(0,0,255), thickness=4)
        # Display frame
        cv2.imshow("frame", frame)

結(jié)論

在本文中,我們看到了如何從視頻中實(shí)現(xiàn)一個(gè)對象計(jì)數(shù)器。我們開發(fā)了一種計(jì)算汽車、卡車和公共汽車的實(shí)現(xiàn),基于一個(gè)定義的多邊形,即如果對象在多邊形內(nèi),計(jì)數(shù)器就會增加。

·? END? ·

HAPPY?LIFE

yolov5視頻計(jì)數(shù)統(tǒng)計(jì),YOLO,音視頻,汽車

本文僅供學(xué)習(xí)交流使用,如有侵權(quán)請聯(lián)系作者刪除文章來源地址http://www.zghlxwxcb.cn/news/detail-765807.html

到了這里,關(guān)于基于YOLOv5的視頻計(jì)數(shù) — 汽車計(jì)數(shù)實(shí)現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • yolov5無人機(jī)視頻檢測與計(jì)數(shù)系統(tǒng)(創(chuàng)新點(diǎn)和代碼)

    yolov5無人機(jī)視頻檢測與計(jì)數(shù)系統(tǒng)(創(chuàng)新點(diǎn)和代碼)

    標(biāo)題:基于YOLOv5的無人機(jī)視頻檢測與計(jì)數(shù)系統(tǒng) 無人機(jī)技術(shù)的快速發(fā)展和廣泛應(yīng)用給社會帶來了巨大的便利,但也帶來了一系列的安全隱患。為了實(shí)現(xiàn)對無人機(jī)的有效管理和監(jiān)控,本文提出了一種基于YOLOv5的無人機(jī)視頻檢測與計(jì)數(shù)系統(tǒng)。該系統(tǒng)通過使用YOLOv5目標(biāo)檢測算法,能夠

    2024年02月02日
    瀏覽(37)
  • YOLOv5實(shí)現(xiàn)目標(biāo)分類計(jì)數(shù)并顯示在圖像上

    YOLOv5實(shí)現(xiàn)目標(biāo)分類計(jì)數(shù)并顯示在圖像上

    ? ? ? ? 有同學(xué)后臺私信我,想用YOLOv5實(shí)現(xiàn)目標(biāo)的分類計(jì)數(shù),因此本文將在之前目標(biāo)計(jì)數(shù)博客的基礎(chǔ)上添加一些代碼,實(shí)現(xiàn)分類計(jì)數(shù)。閱讀本文前請先看那篇博客,鏈接如下: YOLOv5實(shí)現(xiàn)目標(biāo)計(jì)數(shù)_Albert_yeager的博客 ? ? ? ? 以coco數(shù)據(jù)集為例,其類別如下(共80類)。注意,每個(gè)

    2024年02月08日
    瀏覽(20)
  • 基于Yolov5+Deepsort+SlowFast算法實(shí)現(xiàn)視頻目標(biāo)識別、追蹤與行為實(shí)時(shí)檢測

    基于Yolov5+Deepsort+SlowFast算法實(shí)現(xiàn)視頻目標(biāo)識別、追蹤與行為實(shí)時(shí)檢測

    前段時(shí)間打算做一個(gè)目標(biāo)行為檢測的項(xiàng)目,翻閱了大量資料,也借鑒了不少項(xiàng)目,最終感覺Yolov5+Deepsort+Slowfast實(shí)現(xiàn)實(shí)時(shí)動(dòng)作檢測這個(gè)項(xiàng)目不錯(cuò),因此進(jìn)行了實(shí)現(xiàn)。 總的來說,我們需要能夠?qū)崿F(xiàn)實(shí)時(shí)檢測視頻中的人物,并且能夠識別目標(biāo)的動(dòng)作,所以我們拆解需求后,整理核心

    2024年01月20日
    瀏覽(26)
  • 兩百行C++代碼實(shí)現(xiàn)yolov5車輛計(jì)數(shù)部署(通俗易懂版)

    兩百行C++代碼實(shí)現(xiàn)yolov5車輛計(jì)數(shù)部署(通俗易懂版)

    本文是文章傳統(tǒng)圖像處理方法實(shí)現(xiàn)車輛計(jì)數(shù)的后續(xù)。這里用OpenCV實(shí)現(xiàn)了基于yolov5檢測器的單向車輛計(jì)數(shù)功能,方法是撞線計(jì)數(shù)。該代碼只能演示視頻demo效果,一些功能未完善,離實(shí)際工程應(yīng)用還有距離。 實(shí)現(xiàn)流程: (1)訓(xùn)練yolov5模型,這里就沒有自己訓(xùn)練了,直接使用官方

    2024年02月06日
    瀏覽(24)
  • 目標(biāo)檢測YOLOV5 添加計(jì)數(shù)功能

    目標(biāo)檢測YOLOV5 添加計(jì)數(shù)功能

    YOLOV5預(yù)測完圖片想顯示個(gè)數(shù)怎么辦呢? 一行代碼輕松解決?。。?! 原來的Detect 沒有計(jì)數(shù)功能 只需在源碼 上加上下面這一段代碼即可: 這樣就可以加上計(jì)數(shù)功能了?。。?! ?

    2024年02月16日
    瀏覽(26)
  • 視頻實(shí)時(shí)行為檢測——基于yolov5+deepsort+slowfast算法

    視頻實(shí)時(shí)行為檢測——基于yolov5+deepsort+slowfast算法

    前段時(shí)間打算做一個(gè)目標(biāo)行為檢測的項(xiàng)目,翻閱了大量資料,也借鑒了不少項(xiàng)目,于是打算通過 yolov5 實(shí)現(xiàn)目標(biāo)檢測, deepsort 實(shí)現(xiàn)目標(biāo)跟蹤以及 slowfast 實(shí)現(xiàn)動(dòng)作識別,最終實(shí)現(xiàn)端到端的目標(biāo)行為檢測模型。 總的來說,我們需要能夠?qū)崿F(xiàn)實(shí)時(shí)檢測視頻中的人物,并且能夠識別

    2024年02月03日
    瀏覽(24)
  • 使用YOLOv5實(shí)現(xiàn)圖片、視頻的目標(biāo)檢測

    使用YOLOv5實(shí)現(xiàn)圖片、視頻的目標(biāo)檢測

    接下來我將從官方代碼開始,一步一步展示如何進(jìn)行圖片、視頻識別 首先從GitHub下載官方代碼(也可以從下面鏈接獲取): 鏈接:https://pan.baidu.com/s/16wzV899D90TY2Xwhx4TwhA 提取碼:vzvj (你的環(huán)境名可能和我不一樣) 可以看到 \\\'--weights\\\' 參數(shù)(參數(shù)解讀詳見4.a)的默認(rèn)值為\\\'yolov

    2023年04月15日
    瀏覽(16)
  • YOLOv5訓(xùn)練自己的數(shù)據(jù)集實(shí)現(xiàn)視頻的識別

    YOLOv5訓(xùn)練自己的數(shù)據(jù)集實(shí)現(xiàn)視頻的識別

    寫在前面 我本來是使用這個(gè)模型進(jìn)行手寫簽名的定位,但是因?yàn)楸荣惖闹鬓k方原因,數(shù)據(jù)不允許公開,所以我使用動(dòng)物世界的一段開頭視屏來制作我的數(shù)據(jù)集。這整個(gè)模型跑通的過程中,我參考了很多不錯(cuò)的博客,寫這篇博客的原因是記錄一下我的所見所感。我的模型是在

    2024年02月02日
    瀏覽(94)
  • Yolov5實(shí)現(xiàn)視頻中的指針式儀表讀數(shù) [python]

    Yolov5實(shí)現(xiàn)視頻中的指針式儀表讀數(shù) [python]

    背景:根據(jù)巡航機(jī)器人拍攝的視頻,讀出其中兩個(gè)電流表和兩個(gè)電壓表的度數(shù)。 Yolov5的star數(shù)高達(dá)37.5k,是Yolo系列最為經(jīng)典的版本。本項(xiàng)目在Yolov5 v5.0的基礎(chǔ)上進(jìn)行修改,來實(shí)現(xiàn)指針式儀表的讀數(shù)功能。 prepare 數(shù)據(jù)集:對機(jī)器人拍攝的視頻進(jìn)行抽幀標(biāo)注。 標(biāo)注工具: labelImg 預(yù)

    2024年02月07日
    瀏覽(16)
  • 使用flask將Yolov5部署到前端頁面實(shí)現(xiàn)視頻檢測(保姆級)

    使用flask將Yolov5部署到前端頁面實(shí)現(xiàn)視頻檢測(保姆級)

    首先,開發(fā)工具我們選擇jetbrains公司的Pycharm,打開Pycharm,選擇new Project,flask,路徑根據(jù)自己的自身情況改,最好點(diǎn)擊create創(chuàng)建成功! 此時(shí),新建好的flask工程目錄長這樣 static文件夾下存放一些文件,比如css,js,images等,templates文件夾存放一些html的文件,便于日后flask部署。

    2024年01月24日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包