五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

基于深度學(xué)習(xí)的口罩檢測(cè)系統(tǒng)(Python+清新界面+數(shù)據(jù)集)

2023-03-15 20:57 作者:思緒亦無限  | 我要投稿

摘要:口罩檢測(cè)系統(tǒng)用于日常生活中檢測(cè)行人是否規(guī)范佩戴口罩,利用深度學(xué)習(xí)算法可實(shí)現(xiàn)圖片、視頻、連接攝像頭等方式的口罩檢測(cè),另外支持和結(jié)果可視化。在介紹算法原理的同時(shí),給出Python的實(shí)現(xiàn)代碼以及PyQt的UI界面。口罩檢測(cè)系統(tǒng)可用于路口、商場(chǎng)等公共場(chǎng)合檢測(cè)人臉是否佩戴口罩,佩戴和未佩戴口罩的數(shù)目、位置、預(yù)測(cè)置信度等;連接攝像頭設(shè)備可開啟實(shí)時(shí)檢測(cè)功能,另外對(duì)圖片、視頻等文件也可進(jìn)行測(cè)試和檢測(cè);登錄系統(tǒng)提供用戶注冊(cè)、登錄、管理功能;訓(xùn)練和調(diào)優(yōu)的模型可有效檢測(cè)口罩佩戴情況,模型可選擇切換;可選擇單個(gè)目標(biāo)進(jìn)行單獨(dú)顯示和標(biāo)注,結(jié)果一鍵保存。博文提供了完整的Python代碼和使用教程,適合新入門的朋友參考,完整代碼資源文件請(qǐng)轉(zhuǎn)至下載鏈接。

完整代碼下載https://mbd.pub/o/bread/mbd-ZJaXk51w

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

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

前言

????????在公眾場(chǎng)合需要佩戴口罩已經(jīng)成為常識(shí),新型冠狀病毒的主要傳播途徑就是飛沫傳播,戴上口罩就可以有效的阻隔病毒的傳播。口罩是預(yù)防呼吸道傳染病的重要防線,可以降低新型冠狀病毒感染風(fēng)險(xiǎn)。口罩不僅可以防止病人噴射飛沫,降低飛沫量和噴射速度,還可以阻擋含病毒的飛沫核,防止佩戴者吸入。有研究顯示,只要雙方都佩戴口罩且間隔1.8米以上,造成感染的幾率幾乎為0。

????????但是,未規(guī)范佩戴口罩的情況也很常見,無論是進(jìn)出商場(chǎng)、教室、街道、地下停車場(chǎng)等公共場(chǎng)所,還是在人員密集的會(huì)議室里,都可能有人未戴口罩的情況??谡謾z測(cè)系統(tǒng)基于機(jī)器視覺深度學(xué)習(xí)技術(shù),運(yùn)用YOLOv5訓(xùn)練出來的口罩檢測(cè)模型進(jìn)行檢測(cè),能夠?qū)崿F(xiàn)無人值守的不間斷工作,并且系統(tǒng)可以主動(dòng)發(fā)現(xiàn)監(jiān)控區(qū)域內(nèi)的未佩戴口罩情況,并以最及時(shí)的方式進(jìn)行告警,同時(shí)最大限度降低誤報(bào)和漏報(bào)現(xiàn)象;極大的節(jié)約了人員成本,提高了工作效率。

????????近年來,機(jī)器學(xué)習(xí)和深度學(xué)習(xí)取得了較大的發(fā)展,深度學(xué)習(xí)方法在檢測(cè)精度和速度方面與傳統(tǒng)方法相比表現(xiàn)出更良好的性能。YOLOv5是單階段目標(biāo)檢測(cè)算法YOLO的第五代,根據(jù)實(shí)驗(yàn)得出結(jié)論,其在速度與準(zhǔn)確性能方面都有了明顯提升,其論文可參考TPH-YOLOv5: Improved YOLOv5 Based on Transformer Prediction Head for Object Detection on Drone-captured Scenarios?(https://ieeexplore.ieee.org/document/9607487/),開源的代碼可見(https://github.com/ultralytics/yolov5)(官方源碼倉(cāng)庫(kù))。因此,有了應(yīng)用YOLOv5進(jìn)行口罩檢測(cè)的想法,關(guān)注到近期YOLO算法的最新進(jìn)展已有YOLOv6、YOLOv7、YOLOv8等算法相繼出現(xiàn),將本系統(tǒng)中檢測(cè)算法替換為最新算法的代碼也將在后面發(fā)布,歡迎關(guān)注。

????????說完檢測(cè)算法,對(duì)于界面的展示同樣非常重要,這里給出博主設(shè)計(jì)的軟件界面,與前期發(fā)布的系統(tǒng)界面保持同款的清新簡(jiǎn)約風(fēng),功能也可以滿足圖片、視頻和攝像頭的識(shí)別檢測(cè),希望大家可以喜歡,初始界面如下圖:

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

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


1.?效果演示

????????首先我們還是通過動(dòng)圖看一下識(shí)別的效果,系統(tǒng)設(shè)計(jì)了一個(gè)簡(jiǎn)單的登錄注冊(cè)界面和功能主界面,實(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)證碼等等。

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

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

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

????????有時(shí)候我們需要識(shí)別一段視頻中是否佩戴口罩,這里設(shè)計(jì)了視頻選擇功能。點(diǎn)擊視頻按鈕可選擇待檢測(cè)的視頻,系統(tǒng)會(huì)自動(dòng)解析視頻逐幀識(shí)別人臉,并將結(jié)果記錄在右下角表格中,效果如下圖所示:

2.?口罩?jǐn)?shù)據(jù)集及訓(xùn)練

????????以上系統(tǒng)的技術(shù)構(gòu)成主要為兩大塊:YOLOv5算法、UI界面設(shè)計(jì)。YOLOv5算法提供深度學(xué)習(xí)的檢測(cè)模型,這一部分需要構(gòu)建口罩?jǐn)?shù)據(jù)集并訓(xùn)練模型,為后續(xù)界面中口罩識(shí)別提供算法支持;UI界面利用PyQt5進(jìn)行界面設(shè)計(jì),并為各控件模塊寫入執(zhí)行邏輯,在選中圖片或視頻時(shí)調(diào)用前面訓(xùn)練好的YOLOv5模型進(jìn)行預(yù)測(cè),將結(jié)果顯示在界面上。整個(gè)系統(tǒng)涉及的主要工作如下圖所示。

????????這里我們使用的口罩識(shí)別數(shù)據(jù)集,每張圖片除包括類別標(biāo)簽外,還有一個(gè)標(biāo)注的物體邊框(Bounding Box),其中包括訓(xùn)練集1200張、驗(yàn)證集400張、測(cè)試集400張,共計(jì)2000張圖片。


????????每張圖像均提供了圖像類標(biāo)記信息,其中的標(biāo)注文件已轉(zhuǎn)換為YOLO算法使用的txt格式,算法可以直接使用其進(jìn)行訓(xùn)練,數(shù)據(jù)集并解壓后得到的部分截圖如下圖所示。

????????數(shù)據(jù)集準(zhǔn)備好,接下來可執(zhí)行訓(xùn)練程序,首先要安裝本系統(tǒng)所需的依賴庫(kù),配置一個(gè)Python3.8然后按照requirements.txt里面的依賴裝環(huán)境就可以運(yùn)行了。

#請(qǐng)按照給定的python版本配置環(huán)境,否則可能會(huì)因依賴不兼容而出錯(cuò)conda create -n env_rec python=3.8#激活環(huán)境activate env_rec#使用pip安裝所需的以來,可通過requirements.txtpip install -r requirements.txt

????????有些人可能會(huì)在裝pycocotools>=2.0這個(gè)包有問題,這里博主在文章底部也提供了離線庫(kù)的鏈接,也可通過離線包安裝。到這,深度學(xué)習(xí)所需的環(huán)境和依賴包就準(zhǔn)備好了。

????????現(xiàn)在對(duì)YOLO代碼的部分做一個(gè)介紹,下圖為本項(xiàng)目的目錄:

????????data:主要是存放一些超參數(shù)的配置文件(這些文件(yaml文件)是用來配置訓(xùn)練集和測(cè)試集還有驗(yàn)證集的路徑的,其中還包括目標(biāo)檢測(cè)的種類數(shù)和種類的名稱)

????????里面主要是一些網(wǎng)絡(luò)構(gòu)建的配置文件和函數(shù),其中包含了該項(xiàng)目的四個(gè)不同的版本,分別為是s、m、l、x。從名字就可以看出,這幾個(gè)版本的大小。他們的檢測(cè)測(cè)度分別都是從快到慢,但是精確度分別是從低到高。如果訓(xùn)練自己的數(shù)據(jù)集的話,就需要修改這里面相對(duì)應(yīng)的yaml文件來訓(xùn)練自己模型。

????????utils:存放的是工具類的函數(shù),里面有l(wèi)oss函數(shù),metrics函數(shù),plots函數(shù)等等。

????????weights:放置訓(xùn)練好的權(quán)重參數(shù)。

????????detect.py:利用訓(xùn)練好的權(quán)重參數(shù)進(jìn)行目標(biāo)檢測(cè),可以進(jìn)行圖像、視頻和攝像頭的檢測(cè)。

????????UI_rec:這個(gè)文件夾下存放有UI界面、圖標(biāo)及界面相關(guān)的代碼程序,可運(yùn)行runMain.py進(jìn)入主界面,使用loginUI.py進(jìn)入登錄注冊(cè)界面。

????????train.py:訓(xùn)練自己的數(shù)據(jù)集的函數(shù)。

????????testPicture.py:讀取設(shè)置的圖片進(jìn)行預(yù)測(cè);testVideo.py:讀取自定義路徑的視頻文件進(jìn)行檢測(cè)。

????????requirements.txt:這是一個(gè)文本文件,里面寫著使用本項(xiàng)目的環(huán)境依賴包的一些版本,可以利用該文本導(dǎo)入相應(yīng)版本的包。

????????以上就是本項(xiàng)目代碼的整體介紹。我們訓(xùn)練和測(cè)試自己的數(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ì)圖。下圖為博主訓(xùn)練口罩類識(shí)別的模型訓(xùn)練曲線圖。

????????一般我們會(huì)接觸到兩個(gè)指標(biāo),分別是召回率recall和精度precision,兩個(gè)指標(biāo)p和r都是簡(jiǎn)單地從一個(gè)角度來判斷模型的好壞,均是介于0到1之間的數(shù)值,其中接近于1表示模型的性能越好,接近于0表示模型的性能越差,為了綜合評(píng)價(jià)目標(biāo)檢測(cè)的性能,一般采用均值平均密度map來進(jìn)一步評(píng)估模型的好壞。我們通過設(shè)定不同的置信度的閾值,可以得到在模型在不同的閾值下所計(jì)算出的p值和r值,一般情況下,p值和r值是負(fù)相關(guān)的,繪制出來可以得到如下圖所示的曲線,其中曲線的面積我們稱AP,目標(biāo)檢測(cè)模型中每種目標(biāo)可計(jì)算出一個(gè)AP值,對(duì)所有的AP值求平均則可以得到模型的mAP值。

????????以PR-curve為例,可以看到我們的模型在驗(yàn)證集上的均值平均準(zhǔn)確率為0.727。當(dāng)然我們這里沒有過多的調(diào)優(yōu)訓(xùn)練過程,所以訓(xùn)練模型的結(jié)果還有待提升。

3.?口罩檢測(cè)識(shí)別

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

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

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


????????跑通了這個(gè)預(yù)測(cè)程序,我們可以將其封裝到界面中,利用PyQt5設(shè)計(jì)一個(gè)UI界面,在運(yùn)行圖片、視頻檢測(cè)時(shí)調(diào)用這個(gè)方法。博主對(duì)整個(gè)系統(tǒng)進(jìn)行了詳細(xì)測(cè)試,最終開發(fā)出一版流暢得到清新界面,就是博文演示部分的展示,完整的UI界面、測(cè)試圖片視頻、代碼文件,以及Python離線依賴包(方便安裝運(yùn)行,也可自行配置環(huán)境),均已打包上傳,感興趣的朋友可以通過參考文章里面給出的下載鏈接或B站視頻簡(jiǎn)介處的下載鏈接獲取。

下載鏈接

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

????在文件夾下的資源顯示如下,其中包含了Python的離線依賴包,讀者可在正確安裝Anaconda和Pycharm軟件后,進(jìn)行安裝,詳細(xì)演示也可見本人B站視頻。


注意:該代碼采用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文件;

環(huán)境配置與界面中文字、圖片、logo等的修改方法請(qǐng)見視頻,項(xiàng)目完整文件下載:???

完整代碼下載https://mbd.pub/o/bread/mbd-ZJaXk51w

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

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


結(jié)束語(yǔ)

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

基于深度學(xué)習(xí)的口罩檢測(cè)系統(tǒng)(Python+清新界面+數(shù)據(jù)集)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
平凉市| 庆城县| 乌兰浩特市| 思南县| 五家渠市| 长阳| 沙湾县| 潞西市| 江达县| 江安县| 纳雍县| 梅州市| 罗源县| 鄂伦春自治旗| 宁武县| 保亭| 璧山县| 三明市| 瓮安县| 新余市| 新绛县| 那曲县| 太谷县| 香格里拉县| 嵊州市| 财经| 慈利县| 霍林郭勒市| 威宁| 荆州市| 山东| 余庆县| 汉中市| 大田县| 正宁县| 精河县| 高邮市| 临高县| 喀喇| 黔东| 元朗区|