基于YOLOv7算法的高精度實(shí)時(shí)行人摔倒檢測(cè)識(shí)別系統(tǒng)(PyTorch+Pyside6+YOLOv7)

摘要:基于YOLOv7算法的高精度實(shí)時(shí)行人摔倒檢測(cè)系統(tǒng)可用于日常生活中檢測(cè)與定位行人摔倒行為,此系統(tǒng)可完成對(duì)輸入圖片、視頻、文件夾以及攝像頭方式的目標(biāo)檢測(cè)與識(shí)別,同時(shí)本系統(tǒng)還支持檢測(cè)結(jié)果可視化與導(dǎo)出。本系統(tǒng)采用YOLOv7目標(biāo)檢測(cè)算法來(lái)訓(xùn)練數(shù)據(jù)集,使用Pysdie6框架來(lái)搭建桌面頁(yè)面系統(tǒng),支持PT、ONNX等模型權(quán)重作為系統(tǒng)的預(yù)測(cè)模型加載。本系統(tǒng)實(shí)現(xiàn)的功能包括:模型權(quán)重的選擇與初始化;檢測(cè)置信度與后處理IOU閾值的調(diào)節(jié);圖像的導(dǎo)入、檢測(cè)、檢測(cè)結(jié)果的可視化與目標(biāo)統(tǒng)計(jì);視頻的導(dǎo)入、檢測(cè)、檢測(cè)結(jié)果的可視化與目標(biāo)統(tǒng)計(jì);文件夾的圖像批量導(dǎo)入、檢測(cè)、檢測(cè)結(jié)果的可視化與目標(biāo)統(tǒng)計(jì);設(shè)備攝像頭的導(dǎo)入、檢測(cè)、檢測(cè)結(jié)果的可視化與目標(biāo)統(tǒng)計(jì);單張圖像、視頻、攝像的推理用時(shí)展示。本博文詳細(xì)介紹系統(tǒng)的環(huán)境搭建過(guò)程、整體功能介紹與演示,用時(shí)也提供了完整的Python源碼和使用教程,適合新入門(mén)的朋友參考同時(shí)支持二次開(kāi)發(fā),整個(gè)系統(tǒng)的完整代碼以及資源文件請(qǐng)轉(zhuǎn)至文末的下載鏈接來(lái)獲取。

YOLOv7算法原理介紹
2022年7月YOLOv7被提出與發(fā)布,論文發(fā)表在2023的計(jì)算機(jī)視覺(jué)頂級(jí)會(huì)議CVPR上,在YOLOv3和YOLOv4的官網(wǎng)上均掛上了YOLOv7的鏈接和說(shuō)明,這說(shuō)明YOLOv7已得到了大佬的認(rèn)可。官方版的YOLOv7相同體量下比YOLOv5精度更高,速度快120%(FPS),比 YOLOX 快180%(FPS),比 Dual-Swin-T 快1200%(FPS),比 ConvNext 快550%(FPS),比 SWIN-L快500%(FPS)。在5FPS到160FPS的范圍內(nèi),無(wú)論是速度或是精度,YOLOv7都超過(guò)了目前已知的檢測(cè)器,并且在GPU V100上進(jìn)行測(cè)試,精度為56.8% AP的模型可達(dá)到30 FPS(batch=1)以上的檢測(cè)速率,與此同時(shí),這是目前唯一一款在如此高精度下仍能超過(guò)30FPS的檢測(cè)器。
論文地址:https://arxiv.org/pdf/2207.02696.pdf
源碼地址:https://github.com/WongKinYiu/yolov7

YOLOv7模型結(jié)構(gòu)
YOLOv7模型的整體結(jié)構(gòu)如下,與YOLOv5相似,整體可分為Input、Backbone、Neck、Head以及Prediction模塊

本節(jié)介紹YOLOv7相關(guān)模型里的新的模塊:
(1)ReOrg:位于yolov7-w6.yaml文件中
這個(gè)模塊其實(shí)是對(duì)輸入的信息進(jìn)行切片操作,與YOLOv2算法的PassThrough層以及YOLOv5(v5.0版本)的Focus操作類(lèi)似,對(duì)輸入圖層盡可能保持原信息并進(jìn)行下采樣。(這部分代碼具體位于models/common.py文件的48行)
(2)多路卷積模塊
這部分主要還是大量復(fù)用1×1的point Conv和3×3的standard Conv,每個(gè)Conv 的輸出不僅作為下一個(gè)Conv的輸入,還會(huì)和所有其他的Conv輸出進(jìn)行Concat相連操作,類(lèi)似于DenseNet里面的操作
(3)SPPCSPC模塊
這是一種利用金字塔池化操作和CSP結(jié)構(gòu)得到的模塊,依舊包含了大量支路;總的輸入會(huì)被分成三段進(jìn)入不同的分支,最中間的分支其實(shí)就是金字塔池化操作,左側(cè)分支類(lèi)似于 depthwise Conv,但是請(qǐng)注意中間的3×3卷積并未進(jìn)行分組,依舊是標(biāo)準(zhǔn)卷積,右側(cè)則為一個(gè)point onv,最后將所有分支輸出的信息流進(jìn)行 concat向量(這部分代碼具體位于models/common.py文件的262行)。
(4)RepConv模塊
RepVGG是一種基于VGG網(wǎng)絡(luò)設(shè)計(jì)的多分支模型,在訓(xùn)練過(guò)程中可以通過(guò)多分支提升性能,推理可以通過(guò)結(jié)構(gòu)重新參數(shù)化轉(zhuǎn)換為具有3×3卷積和ReLU的連續(xù)直筒型VGG類(lèi)網(wǎng)絡(luò),實(shí)現(xiàn)推理速度的加快(這部分代碼具體位于models/common.py文件的463行)。
(5)E-ELAN模塊
這部分是對(duì)多路卷積模塊的補(bǔ)充,在更大更深的模型才會(huì)用到(yolov7-e6e模型中)。在大多數(shù)關(guān)于設(shè)計(jì)高效網(wǎng)絡(luò)的論文中,主要考慮的因素是參數(shù)量、計(jì)算量和計(jì)算密度。但從內(nèi)存訪存的角度出發(fā)出發(fā),還可以分析輸入 / 輸出信道比、架構(gòu)的分支數(shù)和元素級(jí)操作對(duì)網(wǎng)絡(luò)推理速度的影響(shufflenet 論文提出)。在執(zhí)行模型縮放時(shí)還需考慮激活函數(shù),即更多地考慮卷積層輸出張量中的元素?cái)?shù)量。在大規(guī)模 ELAN 中,無(wú)論梯度路徑長(zhǎng)度和計(jì)算模塊數(shù)量如何,都達(dá)到了穩(wěn)定的狀態(tài)。但如果更多計(jì)算模塊被無(wú)限地堆疊,這種穩(wěn)定狀態(tài)可能會(huì)被破壞,參數(shù)利用率也會(huì)降低。作者進(jìn)一步提出E-ELAN,采用 expand、shuffle、merge cardinality 結(jié)構(gòu),實(shí)現(xiàn)在不破壞原始梯度路徑的情況下,提高網(wǎng)絡(luò)的學(xué)習(xí)能力(具體在 cfg/training/yolov7-e6e.yaml可看到拆散成單獨(dú)算子的結(jié)構(gòu)配置)
YOLOv7損失函數(shù)
YOLOv7整體和YOLOv5保持一致,分為坐標(biāo)損失、目標(biāo)置信度損失(GT就是訓(xùn)練階段的普通IoU)和分類(lèi)損失三部分。其中目標(biāo)置信度損失和分類(lèi)損失采用BCEWithLogitsLoss(帶log的二值交叉熵?fù)p失),坐標(biāo)損失采用CIoU損失。詳細(xì)參見(jiàn)utils/loss.py 里面的 ComputeLossOTA函數(shù)。
IoU_Loss:主要考慮檢測(cè)框和目標(biāo)框重疊面積。
GIoU_Loss:在IoU的基礎(chǔ)上,解決邊界框不重合時(shí)的問(wèn)題。
DIoU_Loss:在IoU和GIoU的基礎(chǔ)上,考慮邊界框中心點(diǎn)距離的信息。
CIoU_Loss:在DIoU的基礎(chǔ)上,考慮邊界框?qū)捀弑鹊某叨刃畔ⅰ?/span>
系統(tǒng)環(huán)境搭建
(1)打開(kāi)Anaconda Prompt(如果電腦沒(méi)有anaconda軟件,需下載安裝)
(2)創(chuàng)建yolo7的conda環(huán)境(conda create -n yolo7 python=3.8),并激活yolo7環(huán)境(conda activate yolo7)
(3)進(jìn)入到項(xiàng)目目錄(本文演示目錄為:E:\Pyside6_yolov7\yolov7)
(4)安裝環(huán)境依賴(lài)包:pip install -r requirements.txt
(5)在環(huán)境中輸入:python base_camera,py ???來(lái)打開(kāi)系統(tǒng)界面


系統(tǒng)界面及功能展示
在本博文中將展示設(shè)計(jì)的軟件界面,整體界面設(shè)計(jì)簡(jiǎn)潔大方,提供了直觀的操作體驗(yàn),主要功能包括以下幾個(gè)方面:
l?模型權(quán)重的導(dǎo)入與初始化
l?檢測(cè)置信分與后處理IoU閾值的調(diào)節(jié)
l?已檢測(cè)目標(biāo)的信息展示
l?檢測(cè)用時(shí)的統(tǒng)計(jì)與展示
l?圖像的導(dǎo)入、檢測(cè)、結(jié)果可視化展示及導(dǎo)出
l?視頻的導(dǎo)入、檢測(cè)、結(jié)果可視化展示及導(dǎo)出
l?文件夾下圖像的批量導(dǎo)入、檢測(cè)、結(jié)果可視化展示及導(dǎo)出
l?攝像頭的導(dǎo)入、檢測(cè)、結(jié)果可視化展示及導(dǎo)出
軟件的初始界面示例如下圖展示:

模型權(quán)重選擇與初始化
?用戶(hù)可以通過(guò)點(diǎn)擊“模型選擇”按鈕來(lái)上傳已訓(xùn)練好的模型權(quán)重,支持的權(quán)重格式包括.pt以及.onnx等。在上傳了模型權(quán)重后,用戶(hù)可以單擊“模型初始化”按鈕,實(shí)現(xiàn)對(duì)已選擇模型權(quán)重的初始化信息配置。此外,用戶(hù)還可以通過(guò)調(diào)整各種參數(shù),如置信度閾值(Confidence)、檢測(cè)后處理閾值(IoU)等,來(lái)優(yōu)化檢測(cè)結(jié)果的準(zhǔn)確性與速度。在Confidence或IoU下方的輸入框中改變值即可同步改變滑動(dòng)條的進(jìn)度,同時(shí)改變滑動(dòng)條的進(jìn)度值也可同步改變輸入框的值;Confidence或IOU值的改變將同步到模型里的配置來(lái)改變檢測(cè)置信度閾值與IOU閾值。在完成所有設(shè)置后,用戶(hù)可以輕松地啟動(dòng)檢測(cè)過(guò)程,并查看檢測(cè)結(jié)果的可視化展示。在完成相應(yīng)的操作后,系統(tǒng)的狀態(tài)欄(系統(tǒng)右下方)也會(huì)顯示對(duì)應(yīng)操作的返回結(jié)果。

圖像的選擇、檢測(cè)、展示與導(dǎo)出
用戶(hù)可以通過(guò)點(diǎn)擊“圖像選擇”按鈕,輕松上傳單張圖片進(jìn)行檢測(cè)與識(shí)別。接下來(lái),只需單擊“檢測(cè)”按鈕(系統(tǒng)右下角的按鈕,詳見(jiàn)上面圖例),系統(tǒng)便會(huì)自動(dòng)完成目標(biāo)檢測(cè)任務(wù)。在檢測(cè)過(guò)程中,系統(tǒng)將在“檢測(cè)用時(shí)”欄顯示完成檢測(cè)的推理時(shí)間,并在“目標(biāo)數(shù)量”欄顯示已檢測(cè)到的目標(biāo)數(shù)量。用戶(hù)還可以通過(guò)下拉框選擇已檢測(cè)目標(biāo),并查看相應(yīng)的位置信息(即左上角x坐標(biāo)xmin、左上角y坐標(biāo)ymin、左下角x坐標(biāo)xmax以及左下角y坐標(biāo)ymax)標(biāo)簽值的變化。在檢測(cè)完成后,系統(tǒng)的右方會(huì)顯示輸入圖像的檢測(cè)結(jié)果。
如果用戶(hù)希望將檢測(cè)結(jié)果保存的話(huà),可以點(diǎn)擊“圖像結(jié)果導(dǎo)出”按鈕,然后在彈出的對(duì)話(huà)框中輸入保存文件名及后綴(如1.jpg),即可實(shí)現(xiàn)檢測(cè)結(jié)果圖像的保存。
當(dāng)用戶(hù)點(diǎn)擊結(jié)束按鈕(系統(tǒng)右下角的按鈕,詳見(jiàn)上面圖例)時(shí),系統(tǒng)將退出當(dāng)前檢測(cè)任務(wù)并刷新界面,清空所有輸出信息。此外,用戶(hù)還可以繼續(xù)點(diǎn)擊“圖像選擇”或“視頻選擇”按鈕來(lái)上傳圖像或視頻進(jìn)行相應(yīng)的檢測(cè)與識(shí)別??傊?,這個(gè)系統(tǒng)為用戶(hù)提供了一個(gè)簡(jiǎn)單易用的界面,讓用戶(hù)可以快速地完成圖像檢測(cè)任務(wù),并方便地查看與導(dǎo)出檢測(cè)結(jié)果。具體的操作示例如下圖所示。

視頻的選擇、檢測(cè)、展示與導(dǎo)出
用戶(hù)可以點(diǎn)擊“視頻選擇”按鈕來(lái)上傳視頻進(jìn)行檢測(cè)與識(shí)別。接下來(lái),用戶(hù)只需單擊“檢測(cè)”按鈕(系統(tǒng)右下角的按鈕,詳見(jiàn)上面圖例),系統(tǒng)便會(huì)自動(dòng)完成視頻目標(biāo)檢測(cè)任務(wù)。在檢測(cè)過(guò)程中,系統(tǒng)將在“檢測(cè)用時(shí)”欄顯示單幀目標(biāo)檢測(cè)的推理時(shí)間,并在“目標(biāo)數(shù)量”欄顯示單幀檢測(cè)到的目標(biāo)數(shù)量,同時(shí)本系統(tǒng)采取進(jìn)度條來(lái)直觀地顯示當(dāng)前檢測(cè)進(jìn)度。用戶(hù)還可以通過(guò)下拉框選擇已檢測(cè)目標(biāo),并查看相應(yīng)的位置信息(即左上角x坐標(biāo)xmin、左上角y坐標(biāo)ymin、左下角x坐標(biāo)xmax以及左下角y坐標(biāo)ymax)標(biāo)簽值的變化。在檢測(cè)完成后,系統(tǒng)的右方會(huì)顯示輸入視頻的檢測(cè)結(jié)果。
為了方便用戶(hù)暫停觀察視頻檢測(cè)結(jié)果,系統(tǒng)提供了“暫?!卑粹o(系統(tǒng)右下角的按鈕,詳見(jiàn)上面圖例)。用戶(hù)點(diǎn)擊后系統(tǒng)將會(huì)暫停視頻檢測(cè),此時(shí)用戶(hù)可以通過(guò)下拉目標(biāo)框選擇已檢測(cè)目標(biāo)的坐標(biāo)位置信息,然后再點(diǎn)擊“繼續(xù)”按鈕(系統(tǒng)右下角的按鈕,詳見(jiàn)上面圖例),即可實(shí)現(xiàn)輸入視頻的繼續(xù)檢測(cè)。
如果用戶(hù)希望將視頻檢測(cè)結(jié)果保存,可以點(diǎn)擊“視頻結(jié)果導(dǎo)出”按鈕,然后在彈出的對(duì)話(huà)框中輸入保存文件名及后綴(如2.mp4),即可實(shí)現(xiàn)檢測(cè)結(jié)果視頻的保存。當(dāng)用戶(hù)點(diǎn)擊“結(jié)束”按鈕時(shí)(系統(tǒng)右下角的按鈕,詳見(jiàn)上面圖例),系統(tǒng)將退出當(dāng)前視頻檢測(cè)任務(wù)并刷新界面,清空所有輸出信息。

文件夾的批量圖像導(dǎo)入、檢測(cè)、展示與導(dǎo)出
用戶(hù)可以通過(guò)點(diǎn)擊“文件夾”按鈕,輕松完成批量圖片的上傳。接下來(lái),只需單擊“檢測(cè)”按鈕(系統(tǒng)右下角的按鈕,詳見(jiàn)上面圖例),系統(tǒng)便會(huì)自動(dòng)完成目標(biāo)檢測(cè)任務(wù)對(duì)所有文件夾下的圖片進(jìn)行檢測(cè)。在檢測(cè)過(guò)程中,系統(tǒng)在“檢測(cè)用時(shí)”欄顯示完成檢測(cè)的推理時(shí)間,并在“目標(biāo)數(shù)量”欄顯示已檢測(cè)到的目標(biāo)數(shù)量,同時(shí)本系統(tǒng)采取進(jìn)度條來(lái)直觀地顯示當(dāng)前檢測(cè)進(jìn)度。用戶(hù)還可以通過(guò)下拉框選擇已檢測(cè)目標(biāo),并查看相應(yīng)的位置信息(即左上角x坐標(biāo)xmin、左上角y坐標(biāo)ymin、左下角x坐標(biāo)xmax以及左下角y坐標(biāo)ymax)標(biāo)簽值的變化。在檢測(cè)完成后,系統(tǒng)的右方會(huì)顯示輸入圖像的檢測(cè)結(jié)果。
如果用戶(hù)希望將檢測(cè)結(jié)果批量保存的話(huà),可以點(diǎn)擊“文件夾導(dǎo)出”按鈕,然后在彈出的對(duì)話(huà)框中選擇輸出文件夾,即可實(shí)現(xiàn)批量檢測(cè)結(jié)果圖像的保存。當(dāng)用戶(hù)點(diǎn)擊結(jié)束按鈕(系統(tǒng)右下角的按鈕,詳見(jiàn)上面圖例)時(shí),系統(tǒng)將退出當(dāng)前檢測(cè)任務(wù)并刷新界面,清空所有輸出信息。具體的操作示例如下圖所示

攝像頭的檢測(cè)、展示與導(dǎo)出
用戶(hù)可以通過(guò)點(diǎn)擊“攝像頭打開(kāi)”按鈕來(lái)啟動(dòng)攝像頭設(shè)備(默認(rèn)開(kāi)始本機(jī)設(shè)備的第一個(gè)攝像頭)。接下來(lái),用戶(hù)只需單擊“檢測(cè)”按鈕(系統(tǒng)右下角的按鈕,詳見(jiàn)上面圖例),系統(tǒng)便會(huì)自動(dòng)完成攝像頭目標(biāo)檢測(cè)任務(wù)。在檢測(cè)過(guò)程中,系統(tǒng)將在“檢測(cè)用時(shí)”欄顯示消耗的時(shí)間,并在“目標(biāo)數(shù)量”欄顯示已檢測(cè)到的目標(biāo)數(shù)量。用戶(hù)還可以通過(guò)下拉框選擇已檢測(cè)目標(biāo),并查看相應(yīng)的位置信息(即左上角x坐標(biāo)xmin、左上角y坐標(biāo)ymin、左下角x坐標(biāo)xmax以及左下角y坐標(biāo)ymax)標(biāo)簽值的變化。
如果用戶(hù)希望將攝像頭檢測(cè)結(jié)果保存,可以點(diǎn)擊“攝像頭導(dǎo)出”按鈕,然后在彈出的對(duì)話(huà)框中輸入保存文件名及后綴(如22.mp4),即可實(shí)現(xiàn)攝像頭檢測(cè)結(jié)果視頻的保存。當(dāng)用戶(hù)點(diǎn)擊“結(jié)束”按鈕時(shí)(系統(tǒng)右下角的按鈕,詳見(jiàn)上面圖例),系統(tǒng)將退出當(dāng)前攝像頭檢測(cè)任務(wù)并刷新界面,清空所有輸出信息。總之,這個(gè)系統(tǒng)為用戶(hù)提供了一個(gè)簡(jiǎn)單易用的界面,讓他們可以快速地完成攝像頭檢測(cè)任務(wù),并方便地查看與導(dǎo)出檢測(cè)結(jié)果。

數(shù)據(jù)集介紹
本系統(tǒng)使用的人體摔倒行為數(shù)據(jù)集手動(dòng)標(biāo)注了人體摔倒這1個(gè)類(lèi)別,數(shù)據(jù)集總計(jì)4367張圖片。該數(shù)據(jù)集中類(lèi)別都有大量的旋轉(zhuǎn)和不同的光照條件,有助于訓(xùn)練出更加魯棒的檢測(cè)模型。本文實(shí)驗(yàn)的人體摔倒行為檢測(cè)識(shí)別數(shù)據(jù)集包含訓(xùn)練集3642張圖片,驗(yàn)證集925張圖片,選取部分?jǐn)?shù)據(jù)部分樣本數(shù)據(jù)集如下圖所示。為了更好地展示數(shù)據(jù)集的分布,選取驗(yàn)證集中部分?jǐn)?shù)據(jù)樣本如下圖所示。從圖片中可以看出,數(shù)據(jù)集中的目標(biāo)有著豐富的多樣性,這將有助于模型學(xué)習(xí)到更加魯棒的特征。同時(shí)為了進(jìn)一步提高模型的泛化能力和魯棒性,我們還采用了數(shù)據(jù)增強(qiáng)技術(shù)。數(shù)據(jù)增強(qiáng)包括隨機(jī)旋轉(zhuǎn)、縮放、裁剪和顏色變換等,可以擴(kuò)充數(shù)據(jù)集,同時(shí)降低過(guò)擬合風(fēng)險(xiǎn)。通過(guò)這些操作,我們期望模型能夠更好地適應(yīng)不同的場(chǎng)景,并在實(shí)際應(yīng)用中表現(xiàn)更優(yōu)越。

關(guān)鍵代碼解析
本系統(tǒng)采用PyTorch來(lái)實(shí)現(xiàn)目標(biāo)檢測(cè)算法,基于YOLOv7算法進(jìn)行目標(biāo)檢測(cè)。在訓(xùn)練階段,我們使用了預(yù)訓(xùn)練模型作為初始模型進(jìn)行訓(xùn)練,然后通過(guò)多次迭代優(yōu)化網(wǎng)絡(luò)參數(shù),以達(dá)到更好的檢測(cè)性能。在訓(xùn)練過(guò)程中,我們采用了學(xué)習(xí)率衰減和數(shù)據(jù)增強(qiáng)等技術(shù),以增強(qiáng)模型的泛化能力和魯棒性。為了更好地評(píng)估模型的性能,我們?cè)谟?xùn)練集和驗(yàn)證集上進(jìn)行了大量的實(shí)驗(yàn)。通過(guò)調(diào)整超參數(shù),如學(xué)習(xí)率、批量大小等,我們最終找到了一個(gè)適合本任務(wù)的參數(shù)設(shè)置。同時(shí),為了提高模型的泛化能力,我們還采用了數(shù)據(jù)增強(qiáng)技術(shù),如隨機(jī)旋轉(zhuǎn)、縮放、裁剪和顏色變換等,以擴(kuò)充數(shù)據(jù)集,同時(shí)降低過(guò)擬合風(fēng)險(xiǎn)。
在測(cè)試階段,我們使用了訓(xùn)練好的模型來(lái)對(duì)新的圖片和視頻進(jìn)行檢測(cè)。通過(guò)設(shè)置閾值,將置信度低于閾值的檢測(cè)框過(guò)濾掉,最終得到檢測(cè)結(jié)果。同時(shí),我們還可以將檢測(cè)結(jié)果保存為圖片或視頻格式,以便進(jìn)行后續(xù)分析和應(yīng)用。本系統(tǒng)基于YOLOv7算法,使用PyTorch實(shí)現(xiàn)。代碼中用到的主要庫(kù)包括PyTorch、NumPy、OpenCV、Pyside6等。本系統(tǒng)實(shí)現(xiàn)的一些關(guān)鍵代碼如下圖所示。

Pyside6界面設(shè)計(jì)
PySide6是一款免費(fèi)的Python跨平臺(tái)GUI庫(kù),它是Python的綁定庫(kù),用于開(kāi)發(fā)跨平臺(tái)GUI應(yīng)用程序。PySide6是基于Qt5和PyQt5庫(kù)的下一代Python跨平臺(tái)GUI庫(kù),它為開(kāi)發(fā)人員提供了一個(gè)強(qiáng)大的工具集,以構(gòu)建跨平臺(tái)的用戶(hù)界面。PySide6的主要目標(biāo)是提高性能,簡(jiǎn)化開(kāi)發(fā)人員的工作,并提供更好的用戶(hù)體驗(yàn)。PySide6的主要特點(diǎn)包括:
l?跨平臺(tái)支持:PySide6支持Windows、MacOS和Linux等多個(gè)平臺(tái),可以輕松地開(kāi)發(fā)跨平臺(tái)的GUI應(yīng)用程序。
l?高性能:PySide6采用了Qt5和PyQt5庫(kù)的最新技術(shù),為開(kāi)發(fā)人員提供了更高的性能。
l?簡(jiǎn)單易用:PySide6提供了豐富的API和工具,使開(kāi)發(fā)人員能夠快速地開(kāi)發(fā)GUI應(yīng)用程序,而無(wú)需過(guò)多的編碼。
l?可擴(kuò)展性:PySide6支持多種GUI組件和控件,可以輕松地?cái)U(kuò)展和定制應(yīng)用程序的用戶(hù)界面。
l?社區(qū)支持:PySide6有一個(gè)活躍的社區(qū),提供了豐富的文檔和示例代碼,幫助開(kāi)發(fā)人員快速上手。
?
總的來(lái)說(shuō),PySide6是一款強(qiáng)大的Python跨平臺(tái)GUI庫(kù),它為開(kāi)發(fā)人員提供了一個(gè)簡(jiǎn)單易用的工具集,以構(gòu)建跨平臺(tái)的用戶(hù)界面。PySide6的性能、可擴(kuò)展性和社區(qū)支持使其成為一款非常適合開(kāi)發(fā)人員使用的庫(kù)。
實(shí)驗(yàn)結(jié)果與分析
在實(shí)驗(yàn)結(jié)果與分析部分,我們使用精度和召回率等指標(biāo)來(lái)評(píng)估模型的性能,還通過(guò)損失曲線(xiàn)和PR曲線(xiàn)來(lái)分析訓(xùn)練過(guò)程。在訓(xùn)練階段,我們使用了YOLOv7算法對(duì)數(shù)據(jù)集進(jìn)行訓(xùn)練,總計(jì)訓(xùn)練了300個(gè)epochs。從下圖可以看出,隨著訓(xùn)練次數(shù)的增加,模型的訓(xùn)練損失和驗(yàn)證損失都逐漸降低,說(shuō)明模型不斷地學(xué)習(xí)到更加精準(zhǔn)的特征。在訓(xùn)練結(jié)束后,我們使用模型在數(shù)據(jù)集的驗(yàn)證集上進(jìn)行了評(píng)估,得到了以下結(jié)果。

下圖展示了我們訓(xùn)練的YOLOv7模型在驗(yàn)證集上的PR曲線(xiàn),從圖中可以看出,模型取得了較高的召回率和精確率,整體表現(xiàn)良好。

綜上,本博文訓(xùn)練得到的YOLOv7模型在數(shù)據(jù)集上表現(xiàn)良好,具有較高的檢測(cè)精度和魯棒性,可以在實(shí)際場(chǎng)景中應(yīng)用。另外本博主對(duì)整個(gè)系統(tǒng)進(jìn)行了詳細(xì)測(cè)試,最終開(kāi)發(fā)出一版流暢的高精度目標(biāo)檢測(cè)系統(tǒng)界面,就是本博文演示部分的展示,完整的UI界面、測(cè)試圖片視頻、代碼文件等均已打包上傳,感興趣的朋友可以關(guān)注我私信獲取下載鏈接。另外本博文的PDF與更多的目標(biāo)檢測(cè)識(shí)別系統(tǒng)請(qǐng)關(guān)注筆者的微信公眾號(hào) BestSongC (目前已發(fā)布基于YOLOv5算法和YOLOv8算法開(kāi)發(fā)的系統(tǒng)界面,以及目標(biāo)檢測(cè)算法改進(jìn)系列)來(lái)獲取。
其他基于深度學(xué)習(xí)的目標(biāo)檢測(cè)系統(tǒng)如西紅柿、貓狗、山羊、野生目標(biāo)、煙頭、二維碼、頭盔、交警、野生動(dòng)物、野外煙霧、人體摔倒識(shí)別、紅外行人、家禽豬、蘋(píng)果、推土機(jī)、蜜蜂、打電話(huà)、鴿子、足球、奶牛、人臉口罩、安全背心、煙霧檢測(cè)系統(tǒng)等有需要的朋友關(guān)注我,從博主其他視頻中獲取下載鏈接。
完整項(xiàng)目目錄如下所示:

?
?
?
?
?
?
?