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

基于深度學(xué)習(xí)的跌倒檢測(cè)系統(tǒng)(UI界面+YOLOv5+訓(xùn)練數(shù)據(jù)集)

這篇具有很好參考價(jià)值的文章主要介紹了基于深度學(xué)習(xí)的跌倒檢測(cè)系統(tǒng)(UI界面+YOLOv5+訓(xùn)練數(shù)據(jù)集)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

基于深度學(xué)習(xí)的跌倒檢測(cè)系統(tǒng)(UI界面+YOLOv5+訓(xùn)練數(shù)據(jù)集)

摘要:跌倒監(jiān)測(cè)系統(tǒng)用于智能化監(jiān)測(cè)是否有行人跌倒,通過YOLOv5的深度學(xué)習(xí)技術(shù)對(duì)視頻、圖片、攝像頭等畫面進(jìn)行跌倒檢測(cè),分析并安全提醒。在介紹算法原理的同時(shí),給出Python的實(shí)現(xiàn)代碼、PyQt的UI界面及訓(xùn)練數(shù)據(jù)集。跌倒監(jiān)測(cè)系統(tǒng)主要用于日常生活中行人跌倒情況的識(shí)別,監(jiān)測(cè)畫面中可能已經(jīng)出現(xiàn)跌倒的行人位置、數(shù)目、置信度等;模型易于更換和改進(jìn),系統(tǒng)設(shè)計(jì)有注冊(cè)登錄功能,方便用戶進(jìn)行管理和使用;跌倒監(jiān)測(cè)結(jié)果實(shí)時(shí)顯示,可用于安防監(jiān)控,也可用于跌倒情況自動(dòng)化分析。博文提供了完整的Python代碼和使用教程,適合新入門的朋友參考,完整代碼資源文件請(qǐng)轉(zhuǎn)至文末的下載鏈接。本博文目錄如下:

?點(diǎn)擊跳轉(zhuǎn)至文末所有涉及的完整代碼文件下載頁(yè)?

基于深度學(xué)習(xí)的跌倒檢測(cè)系統(tǒng)演示與介紹


前言

????????基于深度學(xué)習(xí)的跌倒檢測(cè)系統(tǒng)是指利用深度學(xué)習(xí)算法對(duì)監(jiān)控視頻中的人體動(dòng)作進(jìn)行實(shí)時(shí)分析和處理,以便實(shí)現(xiàn)對(duì)跌倒事件的檢測(cè)和預(yù)警。該系統(tǒng)主要通過使用深度學(xué)習(xí)模型對(duì)監(jiān)控視頻中的人體姿態(tài)、動(dòng)作等特征進(jìn)行學(xué)習(xí)和識(shí)別,以實(shí)現(xiàn)對(duì)跌倒事件的自動(dòng)檢測(cè)和識(shí)別。

????????跌倒檢測(cè)系統(tǒng)的主要功能包括實(shí)時(shí)監(jiān)測(cè)人體姿態(tài)和動(dòng)作,識(shí)別跌倒事件,及時(shí)預(yù)警,并提供相關(guān)的信息和數(shù)據(jù)支持,以便進(jìn)行后續(xù)的處理和分析。該系統(tǒng)可以廣泛應(yīng)用于醫(yī)療、養(yǎng)老、安防等領(lǐng)域,有助于提高老年人、殘障人士等弱勢(shì)群體的生活質(zhì)量和安全保障。同時(shí),基于深度學(xué)習(xí)的跌倒檢測(cè)系統(tǒng)還可以結(jié)合其他技術(shù)手段,如無線傳感器網(wǎng)絡(luò)、機(jī)器人等,實(shí)現(xiàn)更加智能化的監(jiān)測(cè)和預(yù)警,促進(jìn)智慧醫(yī)療、智慧養(yǎng)老等領(lǐng)域的發(fā)展。

????????這里給出博主設(shè)計(jì)的跌倒監(jiān)測(cè)系統(tǒng)界面,UI界面已做了一定美化,功能也可以滿足圖片、視頻和攝像頭的識(shí)別檢測(cè),初始界面如下圖:

基于深度學(xué)習(xí)的跌倒檢測(cè)系統(tǒng)(UI界面+YOLOv5+訓(xùn)練數(shù)據(jù)集)

????????檢測(cè)跌倒時(shí)的界面截圖如下,可識(shí)別畫面中存在的多個(gè)可能目標(biāo),也可開啟攝像頭或視頻檢測(cè):

基于深度學(xué)習(xí)的跌倒檢測(cè)系統(tǒng)(UI界面+YOLOv5+訓(xùn)練數(shù)據(jù)集)

???????? 詳細(xì)的功能演示效果參見博主的B站視頻或下一節(jié)的動(dòng)圖演示,覺得不錯(cuò)的朋友敬請(qǐng)點(diǎn)贊、關(guān)注加收藏!系統(tǒng)UI界面的設(shè)計(jì)工作量較大,界面美化更需仔細(xì)雕琢,大家有任何建議或意見和可在下方評(píng)論交流。


1. 效果演示

????????首先我們還是通過動(dòng)圖看一下監(jiān)測(cè)跌倒的效果,系統(tǒng)主要實(shí)現(xiàn)的功能是對(duì)圖片、視頻和攝像頭畫面中的人進(jìn)行識(shí)別,識(shí)別的結(jié)果可視化顯示在界面和圖像中,另外提供多個(gè)目標(biāo)的顯示選擇功能,演示效果如下。

(一)用戶注冊(cè)登錄界面

????????這里設(shè)計(jì)了一個(gè)登錄界面,可以注冊(cè)賬號(hào)和密碼,然后進(jìn)行登錄。界面還是參考了當(dāng)前流行的UI設(shè)計(jì),左側(cè)是一個(gè)動(dòng)圖,右側(cè)輸入賬號(hào)、密碼、驗(yàn)證碼等等。

基于深度學(xué)習(xí)的跌倒檢測(cè)系統(tǒng)(UI界面+YOLOv5+訓(xùn)練數(shù)據(jù)集)

(二)選擇跌倒圖片識(shí)別

????????系統(tǒng)中可選擇圖片文件進(jìn)行識(shí)別,點(diǎn)擊圖片選擇按鈕圖標(biāo)選擇圖片后,顯示所有跌倒識(shí)別的結(jié)果,可通過下拉選框查看單個(gè)的結(jié)果。本功能的界面展示如下圖所示:

基于深度學(xué)習(xí)的跌倒檢測(cè)系統(tǒng)(UI界面+YOLOv5+訓(xùn)練數(shù)據(jù)集)

(三)跌倒視頻識(shí)別效果展示

????????對(duì)于一段視頻中的跌倒情況,這里設(shè)點(diǎn)擊視頻按鈕選擇待檢測(cè)的視頻文件,系統(tǒng)會(huì)自動(dòng)解析視頻逐幀識(shí)別跌倒行為,并將結(jié)果記錄在下方表格中,效果如下圖所示:

基于深度學(xué)習(xí)的跌倒檢測(cè)系統(tǒng)(UI界面+YOLOv5+訓(xùn)練數(shù)據(jù)集)


2. 跌倒檢測(cè)模型訓(xùn)練

????????我們選取YoloV5作為網(wǎng)絡(luò)模型,一方面是因?yàn)閺淖罱K效果來看YOLOv5已經(jīng)相當(dāng)優(yōu)秀,是發(fā)展的比較完備、使用比較廣泛的一個(gè)版本;而更重要的是YOLOv5的調(diào)用、訓(xùn)練和預(yù)測(cè)都十分方便,為初學(xué)者提供了良好的練手工具。YOLOv5的另一個(gè)特點(diǎn)就是它為不同的設(shè)備需求和不同的應(yīng)用場(chǎng)景提供了大小和參數(shù)數(shù)量不同的網(wǎng)絡(luò)。

????????如下圖所示,大一點(diǎn)的模型比如YOLOv5l和YOLOv5x參數(shù)更多,在大規(guī)模的COCO數(shù)據(jù)集上有更高的預(yù)測(cè)準(zhǔn)確率;而小模型比如YOLOv5n或YOLOv5s占空間更小,適合部署在移動(dòng)設(shè)備上,且推理速度更快,適合于高幀 率視頻的實(shí)時(shí)檢測(cè)。
基于深度學(xué)習(xí)的跌倒檢測(cè)系統(tǒng)(UI界面+YOLOv5+訓(xùn)練數(shù)據(jù)集)

????????這里我們使用的跌倒數(shù)據(jù)集,取自網(wǎng)絡(luò)上收集的各類跌倒圖像并使用LabelImg工具進(jìn)行標(biāo)注,共計(jì)包含1440個(gè)圖像數(shù)據(jù)。每張圖片除包括類別標(biāo)簽外,還有一個(gè)標(biāo)注的物體邊框(Bounding Box),其中訓(xùn)練數(shù)據(jù)集包含1110張圖片,驗(yàn)證集330張圖片,部分圖像及標(biāo)注如下圖所示。

基于深度學(xué)習(xí)的跌倒檢測(cè)系統(tǒng)(UI界面+YOLOv5+訓(xùn)練數(shù)據(jù)集)

????????在訓(xùn)練模型之前,為了讓我們的數(shù)據(jù)能夠被YOLO找到,我們需要寫一個(gè)pedfal.yaml文件存儲(chǔ)在案例目錄下,在其中記錄下數(shù)據(jù)的路徑和模型要識(shí)別的標(biāo)記類別,文件內(nèi)容如下所示。YOLO通過讀取目錄下的pedfall.yaml文件,進(jìn)而找到我們數(shù)據(jù)集存儲(chǔ)的位置才能讀取數(shù)據(jù)進(jìn)行訓(xùn)練驗(yàn)證。

# 數(shù)據(jù)集存儲(chǔ)位置
train: ./PedFall/images/train
val: ./PedFall/images/val

nc: 1
names: ['fall']

????????訓(xùn)練模型通過調(diào)用模型文件夾下的train.py進(jìn)行,可以通過–batch參數(shù)和–epochs參數(shù)調(diào)整訓(xùn)練批次大小和訓(xùn)練輪數(shù)。YOLOv5提供了在COCO數(shù)據(jù)集上預(yù)訓(xùn)練后的參數(shù),我們可以通過參數(shù)–weights yolov5s.pt加載預(yù)訓(xùn)練參數(shù)進(jìn)行遷移學(xué)習(xí),或在訓(xùn)練大數(shù)據(jù)集(比如COCO)時(shí)用一個(gè)空的–weights ''參數(shù)從零開始訓(xùn)練。

python train.py --batch 32 --epochs 300 

????????部分訓(xùn)練過程如圖所示:

基于深度學(xué)習(xí)的跌倒檢測(cè)系統(tǒng)(UI界面+YOLOv5+訓(xùn)練數(shù)據(jù)集)

????????在深度學(xué)習(xí)中,我們通常通過損失函數(shù)下降的曲線來觀察模型訓(xùn)練的情況。而YOLOv5訓(xùn)練時(shí)主要包含三個(gè)方面的損失:矩形框損失(box_loss)、置信度損失(obj_loss)和分類損失(cls_loss),在訓(xùn)練結(jié)束后,我們也可以在logs/目錄下找到生成對(duì)若干訓(xùn)練過程統(tǒng)計(jì)圖。
基于深度學(xué)習(xí)的跌倒檢測(cè)系統(tǒng)(UI界面+YOLOv5+訓(xùn)練數(shù)據(jù)集)

????????我們通過設(shè)定不同的置信度的閾值,可以得到在模型在不同的閾值下所計(jì)算出的p值和r值,一般情況下,p值和r值是負(fù)相關(guān)的,繪制出來可以得到如下圖所示的曲線,其中曲線的面積我們稱AP,目標(biāo)檢測(cè)模型中每種目標(biāo)可計(jì)算出一個(gè)AP值,對(duì)所有的AP值求平均則可以得到模型的mAP值。以下是模型的P-R曲線

基于深度學(xué)習(xí)的跌倒檢測(cè)系統(tǒng)(UI界面+YOLOv5+訓(xùn)練數(shù)據(jù)集)

3. 跌倒檢測(cè)識(shí)別

????????在訓(xùn)練完成后得到最佳模型,接下來我們將幀圖像輸入到這個(gè)網(wǎng)絡(luò)進(jìn)行預(yù)測(cè),從而得到預(yù)測(cè)結(jié)果,預(yù)測(cè)方法(predict.py)部分的代碼如下所示:

def predict(img):
    img = torch.from_numpy(img).to(device)
    img = img.half() if half else img.float()
    img /= 255.0
    if img.ndimension() == 3:
        img = img.unsqueeze(0)

    t1 = time_synchronized()
    pred = model(img, augment=False)[0]
    pred = non_max_suppression(pred, opt.conf_thres, opt.iou_thres, classes=opt.classes,
                               agnostic=opt.agnostic_nms)
    t2 = time_synchronized()
    InferNms = round((t2 - t1), 2)

    return pred, InferNms

????????得到預(yù)測(cè)結(jié)果我們便可以將幀圖像中的跌倒行人框出,然后在圖片上用opencv繪圖操作,輸出類別和置信度值。以下是讀取一個(gè)跌倒視頻進(jìn)行檢測(cè)的腳本,首先將圖片數(shù)據(jù)進(jìn)行預(yù)處理后送predict進(jìn)行檢測(cè),然后計(jì)算標(biāo)記框的位置并在圖中標(biāo)注出來。

if __name__ == '__main__':
    # video_path = 0
    video_path = "./UI_rec/test_/跌倒測(cè)試視頻.mp4"
    # 初始化視頻流
    vs = cv2.VideoCapture(video_path)
    (W, H) = (None, None)
    frameIndex = 0  # 視頻幀數(shù)

    try:
        prop = cv2.CAP_PROP_FRAME_COUNT
        total = int(vs.get(prop))
        # print("[INFO] 視頻總幀數(shù):{}".format(total))
    # 若讀取失敗,報(bào)錯(cuò)退出
    except:
        print("[INFO] could not determine # of frames in video")
        print("[INFO] no approx. completion time can be provided")
        total = -1

    fourcc = cv2.VideoWriter_fourcc(*'XVID')
    ret, frame = vs.read()
    vw = frame.shape[1]
    vh = frame.shape[0]
    print("[INFO] 視頻尺寸:{} * {}".format(vw, vh))
    output_video = cv2.VideoWriter("./results.avi", fourcc, 20.0, (vw, vh))  # 處理后的視頻對(duì)象

    # 遍歷視頻幀進(jìn)行檢測(cè)
    while True:
        # 從視頻文件中逐幀讀取畫面
        (grabbed, image) = vs.read()

        # 若grabbed為空,表示視頻到達(dá)最后一幀,退出
        if not grabbed:
            print("[INFO] 運(yùn)行結(jié)束...")
            output_video.release()
            vs.release()
            exit()
        # 獲取畫面長(zhǎng)寬
        if W is None or H is None:
            (H, W) = image.shape[:2]
        image = cv2.resize(image, (850, 500))
        img0 = image.copy()
        img = letterbox(img0, new_shape=imgsz)[0]
        img = np.stack(img, 0)
        img = img[:, :, ::-1].transpose(2, 0, 1)  # BGR to RGB, to 3x416x416
        img = np.ascontiguousarray(img)

        pred, useTime = predict(img)

        det = pred[0]
        p, s, im0 = None, '', img0
        if det is not None and len(det):  # 如果有檢測(cè)信息則進(jìn)入
            det[:, :4] = scale_coords(img.shape[1:], det[:, :4], im0.shape).round()  # 把圖像縮放至im0的尺寸
            number_i = 0  # 類別預(yù)編號(hào)
            detInfo = []
            for *xyxy, conf, cls in reversed(det):  # 遍歷檢測(cè)信息
                c1, c2 = (int(xyxy[0]), int(xyxy[1])), (int(xyxy[2]), int(xyxy[3]))
                # 將檢測(cè)信息添加到字典中
                detInfo.append([names[int(cls)], [c1[0], c1[1], c2[0], c2[1]], '%.2f' % conf])
                number_i += 1  # 編號(hào)數(shù)+1

                label = '%s %.2f' % (names[int(cls)], conf)

                # 畫出檢測(cè)到的目標(biāo)物
                plot_one_box(image, xyxy, label=label, color=colors[int(cls)])

        # 實(shí)時(shí)顯示檢測(cè)畫面
        cv2.imshow('Stream', image)
        image = cv2.resize(image, (vw, vh))
        output_video.write(image)  # 保存標(biāo)記后的視頻
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break

        # print("FPS:{}".format(int(0.6/(end-start))))
        frameIndex += 1

????????執(zhí)行得到的結(jié)果如下圖所示,圖中跌倒和置信度值都標(biāo)注出來了,預(yù)測(cè)速度較快?;诖四P臀覀兛梢詫⑵湓O(shè)計(jì)成一個(gè)帶有界面的系統(tǒng),在界面上選擇圖片、視頻或攝像頭然后調(diào)用模型進(jìn)行檢測(cè)。

基于深度學(xué)習(xí)的跌倒檢測(cè)系統(tǒng)(UI界面+YOLOv5+訓(xùn)練數(shù)據(jù)集)

????????博主對(duì)整個(gè)系統(tǒng)進(jìn)行了詳細(xì)測(cè)試,最終開發(fā)出一版流暢得到清新界面,就是博文演示部分的展示,完整的UI界面、測(cè)試圖片視頻、代碼文件,以及Python離線依賴包(方便安裝運(yùn)行,也可自行配置環(huán)境),均已打包上傳,感興趣的朋友可以通過下載鏈接獲取。

基于深度學(xué)習(xí)的跌倒檢測(cè)系統(tǒng)(UI界面+YOLOv5+訓(xùn)練數(shù)據(jù)集)


下載鏈接

????若您想獲得博文中涉及的實(shí)現(xiàn)完整全部程序文件(包括測(cè)試圖片、視頻,py, UI文件等,如下圖),這里已打包上傳至博主的面包多平臺(tái),見可參考博客與視頻,已將所有涉及的文件同時(shí)打包到里面,點(diǎn)擊即可運(yùn)行,完整文件截圖如下:

基于深度學(xué)習(xí)的跌倒檢測(cè)系統(tǒng)(UI界面+YOLOv5+訓(xùn)練數(shù)據(jù)集)

????在文件夾下的資源顯示如下,下面的鏈接中也給出了Python的離線依賴包,讀者可在正確安裝Anaconda和Pycharm軟件后,復(fù)制離線依賴包至項(xiàng)目目錄下進(jìn)行安裝,離線依賴的使用詳細(xì)演示也可見本人B站視頻:win11從頭安裝軟件和配置環(huán)境運(yùn)行深度學(xué)習(xí)項(xiàng)目、Win10中使用pycharm和anaconda進(jìn)行python環(huán)境配置教程。

基于深度學(xué)習(xí)的跌倒檢測(cè)系統(tǒng)(UI界面+YOLOv5+訓(xùn)練數(shù)據(jù)集)

注意:該代碼采用Pycharm+Python3.8開發(fā),經(jīng)過測(cè)試能成功運(yùn)行,運(yùn)行界面的主程序?yàn)閞unMain.py和LoginUI.py,測(cè)試圖片腳本可運(yùn)行testPicture.py,測(cè)試視頻腳本可運(yùn)行testVideo.py。為確保程序順利運(yùn)行,請(qǐng)按照requirements.txt配置Python依賴包的版本。Python版本:3.8,請(qǐng)勿使用其他版本,詳見requirements.txt文件;

完整資源中包含數(shù)據(jù)集及訓(xùn)練代碼,環(huán)境配置與界面中文字、圖片、logo等的修改方法請(qǐng)見視頻,項(xiàng)目完整文件下載請(qǐng)見參考博客文章里面,或參考視頻的簡(jiǎn)介處給出:???

參考博客文章:https://www.cnblogs.com/sixuwuxian/p/17227694.html

參考視頻演示:https://www.bilibili.com/video/BV1M24y1t7S7/

離線依賴庫(kù)下載鏈接:https://pan.baidu.com/s/1hW9z9ofV1FRSezTSj59JSg?pwd=oy4n (提取碼:oy4n )


界面中文字、圖標(biāo)和背景圖修改方法:

????????在Qt Designer中可以徹底修改界面的各個(gè)控件及設(shè)置,然后將ui文件轉(zhuǎn)換為py文件即可調(diào)用和顯示界面。如果只需要修改界面中的文字、圖標(biāo)和背景圖的,可以直接在ConfigUI.config文件中修改,步驟如下:
????????(1)打開UI_rec/tools/ConfigUI.config文件,若亂碼請(qǐng)選擇GBK編碼打開。
????????(2)如需修改界面文字,只要選中要改的字符替換成自己的就好。
????????(3)如需修改背景、圖標(biāo)等,只需修改圖片的路徑。例如,原文件中的背景圖設(shè)置如下:

mainWindow = :/images/icons/back-image.png

????????可修改為自己的名為background2.png圖片(位置在UI_rec/icons/文件夾中),可將該項(xiàng)設(shè)置如下即可修改背景圖:

mainWindow = ./icons/background2.png

結(jié)束語

????????由于博主能力有限,博文中提及的方法即使經(jīng)過試驗(yàn),也難免會(huì)有疏漏之處。希望您能熱心指出其中的錯(cuò)誤,以便下次修改時(shí)能以一個(gè)更完美更嚴(yán)謹(jǐn)?shù)臉幼?,呈現(xiàn)在大家面前。同時(shí)如果有更好的實(shí)現(xiàn)方法也請(qǐng)您不吝賜教。文章來源地址http://www.zghlxwxcb.cn/news/detail-417152.html

到了這里,關(guān)于基于深度學(xué)習(xí)的跌倒檢測(cè)系統(tǒng)(UI界面+YOLOv5+訓(xùn)練數(shù)據(jù)集)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(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)文章

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包