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

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

這篇具有很好參考價(jià)值的文章主要介紹了基于Yolov5+Deepsort+SlowFast算法實(shí)現(xiàn)視頻目標(biāo)識(shí)別、追蹤與行為實(shí)時(shí)檢測(cè)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

前言

前段時(shí)間打算做一個(gè)目標(biāo)行為檢測(cè)的項(xiàng)目,翻閱了大量資料,也借鑒了不少項(xiàng)目,最終感覺(jué)Yolov5+Deepsort+Slowfast實(shí)現(xiàn)實(shí)時(shí)動(dòng)作檢測(cè)這個(gè)項(xiàng)目不錯(cuò),因此進(jìn)行了實(shí)現(xiàn)。

一、核心功能設(shè)計(jì)

總的來(lái)說(shuō),我們需要能夠?qū)崿F(xiàn)實(shí)時(shí)檢測(cè)視頻中的人物,并且能夠識(shí)別目標(biāo)的動(dòng)作,所以我們拆解需求后,整理核心功能如下所示:

  1. yolov5實(shí)現(xiàn)目標(biāo)檢測(cè),確定目標(biāo)坐標(biāo)
  2. deepsort實(shí)現(xiàn)目標(biāo)跟蹤,持續(xù)標(biāo)注目標(biāo)坐標(biāo)
  3. slowfast實(shí)現(xiàn)動(dòng)作識(shí)別,并給出置信率
  4. 用框持續(xù)框住目標(biāo),并將動(dòng)作類(lèi)別以及置信度顯示在框上

我做的一個(gè)效果如下:

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

二、核心實(shí)現(xiàn)步驟

1.yolov5實(shí)現(xiàn)目標(biāo)檢測(cè)

“YOLO”是一種運(yùn)行速度很快的目標(biāo)檢測(cè)AI模型,YOLO將對(duì)象檢測(cè)重新定義為一個(gè)回歸問(wèn)題。它將單個(gè)卷積神經(jīng)網(wǎng)絡(luò)(CNN)應(yīng)用于整個(gè)圖像,將圖像分成網(wǎng)格,并預(yù)測(cè)每個(gè)網(wǎng)格的類(lèi)概率和邊界框。YOLO非常快,它比“R-CNN”快1000倍,比“Fast R-CNN”快100倍。YOLOv5是YOLO比較新的一個(gè)版本。
所以我們把視頻分解成多幅圖像,并利用yolov5算法進(jìn)行目標(biāo)檢測(cè)并逐幀執(zhí)行時(shí),可以看到目標(biāo)跟蹤框隨目標(biāo)移動(dòng)。
效果如下所示:

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

2.deepsort實(shí)現(xiàn)目標(biāo)跟蹤

但是,如果視頻幀中有多個(gè)目標(biāo),如何知道一幀中的目標(biāo)和上一幀是同一個(gè)對(duì)象?這就是目標(biāo)跟蹤的工作,應(yīng)用多個(gè)檢測(cè)來(lái)識(shí)別特定目標(biāo)隨時(shí)間的變化,實(shí)現(xiàn)目標(biāo)跟蹤。
Deepsort是實(shí)現(xiàn)目標(biāo)跟蹤的算法,從sort(simple online and realtime tracking)演變而來(lái),其使用卡爾曼濾波器預(yù)測(cè)所檢測(cè)對(duì)象的運(yùn)動(dòng)軌跡,匈牙利算法將它們與新的檢測(cè)目標(biāo)相匹配。Deepsort易于使用且運(yùn)行速度快,成為AI目標(biāo)檢測(cè)跟蹤之熱門(mén)算法。

首先來(lái)看一下DeepSORT的核心流程:
預(yù)測(cè)(track)——>觀測(cè)(detection+數(shù)據(jù)關(guān)聯(lián))——>更新

  • 預(yù)測(cè):預(yù)測(cè)下一幀的目標(biāo)的bbox,即后文中的tracks
  • 觀測(cè):對(duì)當(dāng)前幀進(jìn)行目標(biāo)檢測(cè),僅僅檢測(cè)出目標(biāo)并不能與上一幀的目標(biāo)對(duì)應(yīng)起來(lái),所以還要進(jìn)行數(shù)據(jù)關(guān)聯(lián)
  • 更新:預(yù)測(cè)Bbox和檢測(cè)Bbox都會(huì)有誤差,所以進(jìn)行更新,更新后的跟蹤結(jié)果通常比單純預(yù)測(cè)或者單純檢測(cè)的誤差小很多。

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

3.slowfast動(dòng)作識(shí)別

我們將視頻序列和檢測(cè)框信息輸入行為分類(lèi)模型,輸出每個(gè)檢測(cè)框的行為類(lèi)別,達(dá)到行為檢測(cè)的目的。
而行為分類(lèi)模型我們采用的是slowfast算法,其包括一個(gè)Slow路徑,以低幀速率操作,以捕捉空間語(yǔ)義,以及一個(gè)Fast路徑,以高幀速率操作,以精細(xì)的時(shí)間分辨率捕捉運(yùn)動(dòng)??焖俾窂娇梢酝ㄟ^(guò)減少信道容量而變得非常輕量級(jí),同時(shí)還可以學(xué)習(xí)有用的時(shí)間信息用于視頻識(shí)別。
基于Yolov5+Deepsort+SlowFast算法實(shí)現(xiàn)視頻目標(biāo)識(shí)別、追蹤與行為實(shí)時(shí)檢測(cè),Python,YOLO

三、核心代碼解析

1.參數(shù)

if __name__=="__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument('--input', type=str, default="D:/temporary2/person.mp4", help='test imgs folder or video or camera')
    parser.add_argument('--output', type=str, default="output1.mp4", help='folder to save result imgs, can not use input folder')
    # object detect config
    parser.add_argument('--imsize', type=int, default=640, help='inference size (pixels)')
    parser.add_argument('--conf', type=float, default=0.4, help='object confidence threshold')
    parser.add_argument('--iou', type=float, default=0.4, help='IOU threshold for NMS')
    parser.add_argument('--device', default='cuda', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')
    parser.add_argument('--classes', default=0, nargs='+', type=int, help='filter by class: --class 0, or --class 0 2 3')
    parser.add_argument('--show', action='store_true', help='show img')
    config = parser.parse_args()
    
    if config.input.isdigit():
        print("using local camera.")
        config.input = int(config.input)
        
    print(config)
    main(config)

從__main__開(kāi)始分析,設(shè)置了輸入輸出參數(shù)以及目標(biāo)檢測(cè)的一些參數(shù),包括輸入路徑、輸出路徑、尺寸大小、置信度、iou值、以及目標(biāo)檢測(cè)的類(lèi)別,其中0是人。

2.主函數(shù)

對(duì)輸入的config參數(shù)解析并使用,模型使用yolov5l6,權(quán)重下載到本地

    model = torch.hub.load('ultralytics/yolov5', 'yolov5l6') #加載yolov5模型
    model.conf = config.conf
    model.iou = config.iou
    model.max_det = 200
    model.classes = config.classes
    device = config.device
    imsize = config.imsize
    video_model = slowfast_r50_detection(True).eval().to(device) #加載slowfast_r50_detection模型
    # video_model = slowfast_r50_detection(False).eval().to(device)
    # video_model.load_state_dict(torch.load("SLOWFAST_8x8_R50_DETECTION.pyth")['model_state'])

加載Slowfast、Deepsort模型,使用的Slowfast是在AVA2.2上訓(xùn)練的,通過(guò)AvaLabeledVideoFramePaths函數(shù)獲得id到動(dòng)作的mapping

    deepsort_tracker = DeepSort("deep_sort/deep_sort/deep/checkpoint/ckpt.t7") #加載DeepSort模型
    ava_labelnames,_ = AvaLabeledVideoFramePaths.read_label_map("selfutils/temp.pbtxt") #加載類(lèi)別標(biāo)簽
    ava_labelnames_abnormal,_ = AvaLabeledVideoFramePaths.read_label_map("selfutils/ava_action_abnormal.pbtxt") #加載類(lèi)別標(biāo)簽

    coco_color_map = [[random.randint(0, 255) for _ in range(3)] for _ in range(80)]

首先對(duì)視頻進(jìn)行抽幀處理,通過(guò)get_clip()對(duì)一秒內(nèi)的視頻進(jìn)行抽幀,只保留視頻圖片,將tensor轉(zhuǎn)numpy數(shù)組,BGR格式

    a=time.time()
    for i in range(0,math.ceil(video.duration),1): #截視頻
        video_clips=video.get_clip(i, i+1-0.04)
        video_clips=video_clips['video']
        if video_clips is None:
            continue
        img_num=video_clips.shape[1]
        imgs=[]
        for j in range(img_num):
            imgs.append(tensor_to_numpy(video_clips[:,j,:,:]))
            # "video": A tensor of the clip's RGB frames with shape: (channel, time, height, width).
        	# 將tensor轉(zhuǎn)為numpy數(shù)組,BGR格式

通過(guò)yolov5網(wǎng)絡(luò)進(jìn)行目標(biāo)檢測(cè)

        yolo_preds=model(imgs, size=imsize)
        # 每25幀后插入1幀作為預(yù)測(cè)圖像
        yolo_preds.files=[f"img_{i*25+k}.jpg" for k in range(img_num)]
        print(i,video_clips.shape,img_num)

使用預(yù)訓(xùn)練的Deepsort權(quán)重,以yolo預(yù)測(cè)結(jié)果作為輸入,用Deepsort的結(jié)果代替yolo預(yù)測(cè)的結(jié)果,這里Deepsort是用來(lái)給相同id的目標(biāo)分配動(dòng)作label的。

        deepsort_outputs=[]
        for j in range(len(yolo_preds.pred)):
            temp=deepsort_update(deepsort_tracker,yolo_preds.pred[j].cpu(),yolo_preds.xywh[j][:,0:4].cpu(),yolo_preds.imgs[j])
            if len(temp)==0:
                temp=np.ones((0,8))
            deepsort_outputs.append(temp.astype(np.float32))
        yolo_preds.pred=deepsort_outputs

通過(guò)ava_inference_transform()函數(shù)對(duì)預(yù)測(cè)輸入進(jìn)行預(yù)處理,然后通過(guò)調(diào)用Slowfast模型進(jìn)行預(yù)測(cè),最后為每個(gè)id分配動(dòng)作類(lèi)別

        id_to_ava_labels={}
        if yolo_preds.pred[img_num//2].shape[0]:
            inputs,inp_boxes,_=ava_inference_transform(video_clips,yolo_preds.pred[img_num//2][:,0:4],crop_size=imsize)
            inp_boxes = torch.cat([torch.zeros(inp_boxes.shape[0],1), inp_boxes], dim=1)
            if isinstance(inputs, list): #判斷類(lèi)型
                inputs = [inp.unsqueeze(0).to(device) for inp in inputs]
            else:
                inputs = inputs.unsqueeze(0).to(device)
            with torch.no_grad():
                slowfaster_preds = video_model(inputs, inp_boxes.to(device)) #預(yù)測(cè)動(dòng)作
                slowfaster_preds = slowfaster_preds.cpu()
            for tid,avalabel,avapred in zip(yolo_preds.pred[img_num//2][:,5].tolist(),np.argmax(slowfaster_preds,axis=1).tolist(),torch.max(slowfaster_preds,axis=1).values.tolist()):
                # if(avalabel in ava_labelnames_abnormal):
                    # id_to_ava_labels[tid]=ava_labelnames[avalabel+1]+'_abnormal'
                id_to_ava_labels[tid]=[ava_labelnames[avalabel+1],avapred]            # print(avalabel)

        # print(avalabel)
        # print(ava_labelnames[avalabel+1])
        if((avalabel+1) in ava_labelnames_abnormal):
            isnormal=False
        else:
            isnormal=True
        save_yolopreds_tovideo(yolo_preds,id_to_ava_labels,coco_color_map,outputvideo,isnormal)
    print("total cost: {:.3f}s, video clips length: {}s".format(time.time()-a,video.duration))
        
    outputvideo.release()
    print('saved video to:', vide_save_path)

3.將結(jié)果保存成視頻

def save_yolopreds_tovideo(yolo_preds,id_to_ava_labels,color_map,output_video,isnormal):
    for i, (im, pred) in enumerate(zip(yolo_preds.imgs, yolo_preds.pred)):
        im=cv2.cvtColor(im,cv2.COLOR_BGR2RGB)
        if pred.shape[0]:
            for j, (*box, cls, trackid, vx, vy) in enumerate(pred):
                if int(cls) != 0:
                    ava_label = ''
                    ava_pred=0.0

                elif trackid in id_to_ava_labels.keys():
                    ava_label = id_to_ava_labels[trackid][0].split(' ')[0]
                    ava_pred=id_to_ava_labels[trackid][1]
                else:
                    ava_label = 'Unknow'
                    ava_pred=0.0

                if(isnormal):
                    text = '{:.4f} {} {}'.format(ava_pred,yolo_preds.names[int(cls)],ava_label)
                    color = [40,113,62]
                else:
                    text = '{:.4f} {} {} {}'.format(ava_pred,yolo_preds.names[int(cls)],ava_label,'abnormal')
                    color = [43,44,124]

                # print(cls)
                im = plot_one_box(box,im,color,text)
        output_video.write(im.astype(np.uint8))

四、復(fù)現(xiàn)與配置過(guò)程

1.首先配置好自己的Anaconda虛擬環(huán)境在這里不再詳細(xì)說(shuō)了,不會(huì)的可以參考我另一篇博客中有介紹,YOLOv8目標(biāo)跟蹤環(huán)境配置筆記(完整記錄一次成功)

2.下載好源碼,將項(xiàng)目文件配置好,并用Pycharm打開(kāi)

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

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

3.在虛擬環(huán)境中下載所需要的庫(kù)

pip install opencv-python==4.5.3.56
pip install natsort
pip install ultralytics
pip install pytorchvideo

當(dāng)然這里還需要下載torch 庫(kù),最好配置GPU版本,配置方法我上面分享的我的另一篇博客里也有教程,跟著來(lái)就好。

我用的虛擬環(huán)境python版本是3.7,我的環(huán)境中所用到的庫(kù)目錄如下,如果沒(méi)有配置出來(lái)可以對(duì)照我的庫(kù),看看是不是版本不對(duì)或缺少什么庫(kù)

Package                       Version
----------------------------- --------------------
absl-py                       1.3.0
altgraph                      0.17.4
astor                         0.8.1
astroid                       2.15.8
atomicwrites                  1.4.1
attrs                         23.2.0
av                            10.0.0
backcall                      0.2.0
bidict                        0.21.2
Bottleneck                    1.3.5
cached-property               1.5.2
certifi                       2022.12.7
cffi                          1.15.1
charset-normalizer            3.3.2
clang                         5.0
click                         8.0.4
colorama                      0.4.6
cryptography                  38.0.2
cycler                        0.11.0
Cython                        0.29.33
decorator                     4.4.2
dill                          0.3.6
easydict                      1.11
exceptiongroup                1.2.0
ffmpeg-python                 0.2.0
Flask                         2.2.2
Flask-SocketIO                5.1.0
Flask-SQLAlchemy              3.0.2
flatbuffers                   1.12
flit_core                     3.6.0
fonttools                     4.38.0
future                        0.18.3
fvcore                        0.1.5.post20221221
gast                          0.5.3
greenlet                      2.0.1
grpcio                        1.34.1
h11                           0.14.0
h5py                          3.7.0
idna                          3.6
imageio                       2.31.2
imageio-ffmpeg                0.4.9
importlib-metadata            4.11.3
imutils                       0.5.4
iniconfig                     2.0.0
install                       1.3.5
iopath                        0.1.10
ipython                       7.34.0
isort                         5.11.5
itsdangerous                  2.0.1
jedi                          0.18.2
Jinja2                        3.1.2
Keras-Applications            1.0.8
keras-nightly                 2.5.0.dev2021032900
Keras-Preprocessing           1.1.2
kiwisolver                    1.4.4
lap                           0.4.0
lazy-object-proxy             1.9.0
libclang                      16.0.0
Markdown                      3.4.1
MarkupSafe                    2.1.1
matplotlib                    3.5.3
matplotlib-inline             0.1.6
mccabe                        0.7.0
mediapipe                     0.9.0.1
mkl-fft                       1.3.1
mkl-random                    1.2.2
mkl-service                   2.4.0
more-itertools                9.1.0
moviepy                       1.0.3
multiprocess                  0.70.14
munkres                       1.1.4
natsort                       8.4.0
networkx                      2.6.3
numexpr                       2.8.4
numpy                         1.21.6
opencv-contrib-python         3.4.2.16
opencv-python                 4.5.3.56
opencv-python-headless        4.1.2.30
packaging                     23.0
pandas                        1.3.5
pandas-stubs                  1.2.0.62
parameterized                 0.9.0
parso                         0.8.3
pefile                        2023.2.7
pickleshare                   0.7.5
Pillow                        9.4.0
pip                           22.3.1
platformdirs                  4.0.0
pluggy                        1.2.0
portalocker                   2.7.0
proglog                       0.1.10
prompt-toolkit                3.0.38
protobuf                      3.20.3
psutil                        5.9.4
py                            1.11.0
py-cpuinfo                    9.0.0
pycparser                     2.21
pygame                        2.5.2
Pygments                      2.14.0
pyinstaller                   5.13.2
pyinstaller-hooks-contrib     2023.12
pylint                        2.17.7
PyMySQL                       1.0.2
pyparsing                     3.0.9
PyQt5                         5.15.10
PyQt5-Qt5                     5.15.2
PyQt5-sip                     12.13.0
pytest                        4.0.0
python-dateutil               2.8.2
python-engineio               4.1.0
python-ffmpeg-video-streaming 0.1.14
python-socketio               5.3.0
pytorchvideo                  0.1.5
pytz                          2022.7.1
pywin32                       306
pywin32-ctypes                0.2.2
PyYAML                        6.0
requests                      2.31.0
scipy                         1.7.3
seaborn                       0.12.2
setuptools                    65.6.3
simple-websocket              0.10.0
six                           1.16.0
SQLAlchemy                    1.4.39
tabulate                      0.9.0
tensorboard                   1.14.0
tensorflow                    1.14.0
tensorflow-estimator          2.5.0
tensorflow-io-gcs-filesystem  0.31.0
termcolor                     2.1.0
thop                          0.1.1.post2209072238
tomli                         2.0.1
tomlkit                       0.12.3
torch                         1.13.1+cu116
torchaudio                    0.13.1+cu116
torchvision                   0.14.1+cu116
tqdm                          4.64.1
traitlets                     5.9.0
typed-ast                     1.5.5
typing_extensions             4.7.1
ultralytics                   8.0.145
urllib3                       1.23
wcwidth                       0.2.6
Werkzeug                      2.2.2
wheel                         0.38.4
wincertstore                  0.2
wrapt                         1.14.1
wsproto                       1.2.0
yacs                          0.1.8
zipp                          3.11.0

其實(shí)主要就是numpy、opencv、torch這幾個(gè)庫(kù)和版本要注意

4.修改要進(jìn)行檢測(cè)的視頻路徑,這里以本地視頻為例

    parser.add_argument('--input', type=str, default="D:/temporary2/person.mp4", help='test imgs folder or video or camera')

5.按照官網(wǎng)還要自己再下載一個(gè)東西,放在指定文件夾下:

download weights file(ckpt.t7) from?[deepsort]?to this folder:

./deep_sort/deep_sort/deep/checkpoint/

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

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

這個(gè)checkpoint文件夾要自己建,然后把下載的ckpt.t7放進(jìn)去,否則運(yùn)行會(huì)因缺少文件而報(bào)錯(cuò)。

6.其他地方不需要改動(dòng),點(diǎn)擊運(yùn)行yolo_slowfast.py,報(bào)錯(cuò)

OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized

解決辦法:

import os
os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE"

7.再運(yùn)行會(huì)顯示

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

這是因?yàn)闆](méi)有用魔法,一些相關(guān)依賴(lài)需要下載,不用魔法訪問(wèn)不了

8.用魔法后再運(yùn)行,會(huì)顯示這個(gè)樣子

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

發(fā)現(xiàn)它會(huì)自動(dòng)將slowfast模型文件和yolov5這個(gè)模型包括權(quán)重文件下載到你本地這個(gè)地方

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

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

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

為什么它自己會(huì)自動(dòng)下載yolov5和slowfast所需依賴(lài)文件,而且默認(rèn)在C盤(pán)默認(rèn)位置

Using cache found in C:\Users\MY/.cache\torch\hub\ultralytics_yolov5_master

因?yàn)橄旅孢@行命令中的?torch.hub.load,具體含義可以自己百度

 model = torch.hub.load('ultralytics/yolov5', 'yolov5l6').to(device)

9.下載完之后它會(huì)自動(dòng)檢測(cè),可能還會(huì)自動(dòng)更新你的兩個(gè)庫(kù),以滿(mǎn)足要求

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

requirements: Ultralytics requirements ['gitpython>=3.1.30', 'Pillow>=10.0.1'] not found, attempting AutoUpdate...

記住在更新下載這兩個(gè)庫(kù)的時(shí)候,如果你之前虛擬環(huán)境下載庫(kù),都是通過(guò)國(guó)內(nèi)鏡像下載的,那么此時(shí)一定要及時(shí)把魔法先關(guān)了,它才能繼續(xù)找到清華源庫(kù),并繼續(xù)升級(jí)和更新相關(guān)庫(kù),否則會(huì)因?yàn)闆_突下載安裝不了,導(dǎo)致升級(jí)失敗

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

WARNING: There was an error checking the latest version of pip.
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Could not fetch URL https://pypi.tuna.tsinghua.edu.cn/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.tuna.tsinghua.edu.cn', port=443):?

10.更新完那兩個(gè)庫(kù)之后,終止程序,再開(kāi)啟魔法,重新運(yùn)行程序,就會(huì)顯示滿(mǎn)足條件,開(kāi)始運(yùn)行了

Requirement already satisfied: gitpython>=3.1.30 in d:\anaconda3\lib\site-packages (3.1.41)
Requirement already satisfied: Pillow>=10.0.1 in d:\anaconda3\lib\site-packages (10.2.0)
Requirement already satisfied: gitdb<5,>=4.0.1 in d:\anaconda3\lib\site-packages (from gitpython>=3.1.30) (4.0.11)
Requirement already satisfied: smmap<6,>=3.0.1 in d:\anaconda3\lib\site-packages (from gitdb<5,>=4.0.1->gitpython>=3.1.30) (5.0.1)

requirements: AutoUpdate success ?24.9s, installed 2 packages: ['gitpython>=3.1.30', 'Pillow>=10.0.1']

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

10.成功之后的檢測(cè)視頻會(huì)保存為output.mp4在根目錄下,也可以根據(jù)下行命令自己進(jìn)行更改

parser.add_argument('--output', type=str, default="output2.mp4", help='folder to save result imgs, can not use input folder')

結(jié)果如下

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

11.但是每次運(yùn)行的時(shí)候都需要開(kāi)啟魔法才能成功跑起來(lái),原因就在第8步,它每次都會(huì)重新檢索并啟用,可以嘗試把第8步它自動(dòng)下載的依賴(lài)文件復(fù)制到自己yolo-slowfast項(xiàng)目根目錄下,然后修改

model = torch.hub.load('ultralytics/yolov5', 'yolov5l6').to(device)

改為以下加載本地路徑下的模型

model_path = "D:/temporary2/yolo_slowfast-master/yolov5l6.pt"
model = torch.load(model_path, map_location=device)
model = model.to(device).eval()

修改

video_model = slowfast_r50_detection(True).eval().to(device)

改為

video_model_path = "D:/temporary2/checkpoints/SLOWFAST_8x8_R50_DETECTION.pyth"
video_model = torch.load(video_model_path, map_location=device)
video_model = video_model.to(device).eval()

12.如果有報(bào)錯(cuò)


if config.input.isdigit():

AttributeError: 'int' object has no attribute 'isdigit'

則將

if config.input.isdigit():

改為

if isinstance(config.input, str):#如果要改為實(shí)時(shí)攝像頭用這行

最后,如果還有什么問(wèn)題,歡迎大家評(píng)論區(qū)一起交流~

參考鏈接:

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

2. Yolov5+Deepsort+Slowfast實(shí)現(xiàn)實(shí)時(shí)動(dòng)作檢測(cè)

3.?YOLOv5算法詳解

4.?pytorch yolo5+Deepsort實(shí)現(xiàn)目標(biāo)檢測(cè)和跟蹤

5.?Windows10下SlowFast環(huán)境安裝和運(yùn)行

6.?行為識(shí)別. slowfast算法文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-808793.html

到了這里,關(guān)于基于Yolov5+Deepsort+SlowFast算法實(shí)現(xiàn)視頻目標(biāo)識(shí)別、追蹤與行為實(shí)時(shí)檢測(cè)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 【Yolov5+Deepsort】訓(xùn)練自己的數(shù)據(jù)集(3)| 目標(biāo)檢測(cè)&追蹤 | 軌跡繪制 | 報(bào)錯(cuò)分析&解決

    【Yolov5+Deepsort】訓(xùn)練自己的數(shù)據(jù)集(3)| 目標(biāo)檢測(cè)&追蹤 | 軌跡繪制 | 報(bào)錯(cuò)分析&解決

    ??前言: 本篇是關(guān)于 如何使用YoloV5+Deepsort訓(xùn)練自己的數(shù)據(jù)集 ,從而實(shí)現(xiàn)目標(biāo)檢測(cè)與目標(biāo)追蹤,并繪制出物體的運(yùn)動(dòng)軌跡。本章講解的為第三部分內(nèi)容:數(shù)據(jù)集的制作、Deepsort模型的訓(xùn)練以及動(dòng)物運(yùn)動(dòng)軌跡的繪制。本文中用到的數(shù)據(jù)集均為自采,實(shí)驗(yàn)動(dòng)物為斑馬魚(yú)。 ??環(huán)境

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

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

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

    2023年04月15日
    瀏覽(16)
  • 目標(biāo)檢測(cè)論文解讀復(fù)現(xiàn)之十六:基于改進(jìn)YOLOv5的小目標(biāo)檢測(cè)算法

    目標(biāo)檢測(cè)論文解讀復(fù)現(xiàn)之十六:基于改進(jìn)YOLOv5的小目標(biāo)檢測(cè)算法

    前言 此前出了目標(biāo)改進(jìn)算法專(zhuān)欄,但是對(duì)于應(yīng)用于什么場(chǎng)景,需要什么改進(jìn)方法對(duì)應(yīng)與自己的應(yīng)用場(chǎng)景有效果,并且多少改進(jìn)點(diǎn)能發(fā)什么水平的文章,為解決大家的困惑,此系列文章旨在給大家解讀最新目標(biāo)檢測(cè)算法論文,幫助大家解答疑惑。解讀的系列文章,本人已進(jìn)行創(chuàng)

    2024年02月03日
    瀏覽(21)
  • 【目標(biāo)檢測(cè)】YOLOv5算法實(shí)現(xiàn)(八):模型驗(yàn)證

    【目標(biāo)檢測(cè)】YOLOv5算法實(shí)現(xiàn)(八):模型驗(yàn)證

    ??本系列文章記錄本人碩士階段YOLO系列目標(biāo)檢測(cè)算法自學(xué)及其代碼實(shí)現(xiàn)的過(guò)程。其中算法具體實(shí)現(xiàn)借鑒于ultralytics YOLO源碼Github,刪減了源碼中部分內(nèi)容,滿(mǎn)足個(gè)人科研需求。 ??本系列文章主要以YOLOv5為例完成算法的實(shí)現(xiàn),后續(xù)修改、增加相關(guān)模塊即可實(shí)現(xiàn)其他版本的

    2024年01月22日
    瀏覽(20)
  • 【目標(biāo)檢測(cè)】YOLOv5算法實(shí)現(xiàn)(九):模型預(yù)測(cè)

    【目標(biāo)檢測(cè)】YOLOv5算法實(shí)現(xiàn)(九):模型預(yù)測(cè)

    ??本系列文章記錄本人碩士階段YOLO系列目標(biāo)檢測(cè)算法自學(xué)及其代碼實(shí)現(xiàn)的過(guò)程。其中算法具體實(shí)現(xiàn)借鑒于ultralytics YOLO源碼Github,刪減了源碼中部分內(nèi)容,滿(mǎn)足個(gè)人科研需求。 ??本系列文章主要以YOLOv5為例完成算法的實(shí)現(xiàn),后續(xù)修改、增加相關(guān)模塊即可實(shí)現(xiàn)其他版本的

    2024年01月21日
    瀏覽(24)
  • 【目標(biāo)檢測(cè)】YOLOv5算法實(shí)現(xiàn)(七):模型訓(xùn)練

    【目標(biāo)檢測(cè)】YOLOv5算法實(shí)現(xiàn)(七):模型訓(xùn)練

    ??本系列文章記錄本人碩士階段YOLO系列目標(biāo)檢測(cè)算法自學(xué)及其代碼實(shí)現(xiàn)的過(guò)程。其中算法具體實(shí)現(xiàn)借鑒于ultralytics YOLO源碼Github,刪減了源碼中部分內(nèi)容,滿(mǎn)足個(gè)人科研需求。 ??本系列文章主要以YOLOv5為例完成算法的實(shí)現(xiàn),后續(xù)修改、增加相關(guān)模塊即可實(shí)現(xiàn)其他版本的

    2024年01月22日
    瀏覽(37)
  • 【目標(biāo)檢測(cè)算法實(shí)現(xiàn)之yolov5】 一、YOLOv5環(huán)境配置,將yolov5部署到遠(yuǎn)程服務(wù)器上

    【目標(biāo)檢測(cè)算法實(shí)現(xiàn)之yolov5】 一、YOLOv5環(huán)境配置,將yolov5部署到遠(yuǎn)程服務(wù)器上

    在官網(wǎng):https://github.com/ultralytics/yolov5上下載yolov5源代碼 下載成功如下: 在配置基礎(chǔ)環(huán)境之前,提前壓縮自己的代碼文件,并通過(guò)winscp傳輸給linux端,傳輸之后,解壓該文件。解壓前,先創(chuàng)建一個(gè)文件夾,再解壓。 winscp下載使用教程參考上一篇博客:使用WinSCP下載和文件傳輸

    2024年01月15日
    瀏覽(30)
  • 智能交通系統(tǒng)-yolov5+deepsort車(chē)輛跟蹤、計(jì)數(shù)、測(cè)速、碰撞檢測(cè)、違規(guī)駛?cè)霗z測(cè)(算法-畢業(yè)設(shè)計(jì))

    智能交通系統(tǒng)-yolov5+deepsort車(chē)輛跟蹤、計(jì)數(shù)、測(cè)速、碰撞檢測(cè)、違規(guī)駛?cè)霗z測(cè)(算法-畢業(yè)設(shè)計(jì))

    本項(xiàng)目效果展示視頻:https://www.bilibili.com/video/BV1E3411G7cP/ 1、本項(xiàng)目通過(guò)yolov8/yolov7/yolov5 5.0和deepsort實(shí)現(xiàn)了一個(gè)多功能智能交通監(jiān)控系統(tǒng),可為一些同學(xué)的課設(shè)、大作業(yè)等提供參考。分別實(shí)現(xiàn)了不同車(chē)輛的跟蹤,統(tǒng)計(jì)不同車(chē)型“上行”和“下行”的數(shù)量,實(shí)時(shí)檢測(cè)車(chē)輛速度,檢

    2023年04月09日
    瀏覽(24)
  • Yolov5-Lite + Sort算法實(shí)現(xiàn)邊緣目標(biāo)跟蹤

    昨天挖了個(gè)坑,那么今天的話(huà)把坑填上,只要是實(shí)現(xiàn)Sort算法和Yolov5-Lite的一個(gè)整合。當(dāng)然先前的話(huà),我們?cè)赮olov3–Tiny的時(shí)候,也做了一個(gè),不過(guò)當(dāng)時(shí)的話(huà),有幾個(gè)問(wèn)題沒(méi)有解決。第一就是當(dāng)時(shí)以中心點(diǎn)進(jìn)行預(yù)測(cè)的,這樣做的結(jié)果就是如果目標(biāo)框的波動(dòng)比較大的話(huà),影響會(huì)很大

    2024年02月15日
    瀏覽(26)
  • 【計(jì)算機(jī)視覺(jué)面經(jīng)四】基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法面試必備(RCNN~YOLOv5)

    【計(jì)算機(jī)視覺(jué)面經(jīng)四】基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法面試必備(RCNN~YOLOv5)

    目標(biāo)檢測(cè)算法主要包括:【兩階段】目標(biāo)檢測(cè)算法、【多階段】目標(biāo)檢測(cè)算法、【單階段】目標(biāo)檢測(cè)算法。 什么是兩階段目標(biāo)檢測(cè)算法,與單階段目標(biāo)檢測(cè)有什么區(qū)別? 兩階段目標(biāo)檢測(cè)算法因需要進(jìn)行兩階段的處理:1)候選區(qū)域的獲取,2)候選區(qū)域分類(lèi)和回歸,也稱(chēng)為基于

    2024年03月27日
    瀏覽(26)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包