#### 簡介
2020新冠爆發(fā)以來,疫情牽動(dòng)著全國人民的心,一線醫(yī)護(hù)工作者在最前線抗擊疫情的同時(shí),我們也可以看到很多科技行業(yè)和人工智能領(lǐng)域的從業(yè)者,也在貢獻(xiàn)著他們的力量。近些天來,曠視、商湯、??怠俣榷级嗉铱萍脊狙邪l(fā)出了帶有AI人臉檢測算法的紅外測溫、口罩佩戴檢測等設(shè)備,依圖、阿里也研發(fā)出了通過深度學(xué)習(xí)來自動(dòng)診斷新冠肺炎的醫(yī)療算法??梢哉f,各行各業(yè)的從業(yè)者都在為早日戰(zhàn)勝這場疫情貢獻(xiàn)著力量。
圖像口罩識(shí)別,絕對(duì)是一個(gè)能亮瞎你導(dǎo)師和同學(xué)的畢業(yè)設(shè)計(jì)。
項(xiàng)目運(yùn)行效果:
畢業(yè)設(shè)計(jì) 深度學(xué)習(xí)口罩佩戴檢測系統(tǒng)
項(xiàng)目獲?。?/strong>文章來源:http://www.zghlxwxcb.cn/news/detail-837972.html
https://gitee.com/sinonfin/algorithm-sharing文章來源地址http://www.zghlxwxcb.cn/news/detail-837972.html
效果展示
不多說, 先上效果
實(shí)現(xiàn)方法
模型介紹
在深度學(xué)習(xí)時(shí)代之前,人臉檢測一般采用傳統(tǒng)的、基于手動(dòng)設(shè)計(jì)特征的方法,其中最知名的莫過于Viola-Jones算法,至今部分手機(jī)和數(shù)碼相機(jī)內(nèi)置的人臉檢測算法,仍舊采用Viola-Jones算法。然而,隨著深度學(xué)習(xí)技術(shù)的蓬勃發(fā)展,基于深度學(xué)習(xí)的人臉檢測算法逐步取代了傳統(tǒng)的計(jì)算機(jī)視覺算法。
在人臉檢測最常用的數(shù)據(jù)集——WIDER Face數(shù)據(jù)集的評(píng)估結(jié)果上來看,使用深度學(xué)習(xí)的模型在準(zhǔn)確率和召回率上極大的超過了傳統(tǒng)算法。下圖的青線是Viola-Jones的Precision-Recall圖。
下圖是眾多基于深度學(xué)習(xí)的人臉檢測算法的性能評(píng)估PR曲線??梢钥吹交谏疃葘W(xué)習(xí)的人臉檢測算法的性能,大幅超過了VJ算法(曲線越靠右越好)。近兩年來,人臉檢測算法在WIDER Face的簡單測試集(easy 部分)上可以達(dá)到95%召回率下,準(zhǔn)確率也高達(dá)90%,作為對(duì)比,VJ算法在40%召回率下,準(zhǔn)確率只有75%左右。
其實(shí),基于深度學(xué)習(xí)的人臉檢測算法,多數(shù)都是基于深度學(xué)習(xí)目標(biāo)檢測算法進(jìn)行的改進(jìn),或者說是把通用的目標(biāo)檢測模型,為適應(yīng)人臉檢測任務(wù)而進(jìn)行的特定配置。而眾多的目標(biāo)檢測模型(Faster RCNN、SSD、YOLO)中,人臉檢測算法最常用的是SSD算法,例如知名的SSH模型、S3FD模型、RetinaFace算法,都是受SSD算法的啟發(fā),或者基于SSD進(jìn)行的任務(wù)定制化改進(jìn), 例如將定位層提到更靠前的位置,Anchor大小調(diào)整、Anchor標(biāo)簽分配規(guī)則的調(diào)整,在SSD基礎(chǔ)上加入FPN等。
在我個(gè)人看來,SSD是最優(yōu)雅、簡潔的目標(biāo)檢測模型,因此,我們實(shí)現(xiàn)的人臉口罩檢測模型,也是采用SSD的思想,限于篇幅原因,本文不會(huì)詳細(xì)介紹SSD的原理,只會(huì)進(jìn)行簡單的模型配置介紹。
在本項(xiàng)目中,我們使用的是SSD架構(gòu)的人臉檢測算法,相比于普通的人臉檢測模型只有人臉一個(gè)類別,而人臉口罩檢測,只不過是增加了一個(gè)類別,變成戴口罩人臉和不戴口罩的人臉兩個(gè)類別而已。
我們開源的模型是一個(gè)非常小的模型,輸入是260x260大小,主干網(wǎng)絡(luò)只有8層,有五個(gè)定位和分類層,一共只有28個(gè)卷積層。而每個(gè)卷積層的通道數(shù),是32、64、128這三種,所有這個(gè)模型總的參數(shù)量只有101.5萬個(gè)參數(shù)。下圖是網(wǎng)絡(luò)的結(jié)構(gòu)圖。
其中,上面八個(gè)卷積層是主干網(wǎng)絡(luò),也就是特征提取層,下面20層是定位和分類層(注意,為了方便顯示,我們沒有畫出BN層)。
訓(xùn)練目標(biāo)檢測模型,最重要的合理的設(shè)置anchor的大小和寬高比,筆者個(gè)人在做項(xiàng)目時(shí),一般會(huì)統(tǒng)計(jì)數(shù)據(jù)集的目標(biāo)物體的寬高比和大小來設(shè)置anchor的大小和寬高比。例如,在我們標(biāo)注的口罩人臉數(shù)據(jù)集上,我們讀取了所有人臉的標(biāo)注信息,并計(jì)算每個(gè)人臉高度與寬度的比值,統(tǒng)計(jì)得到高度與寬比的分布直方圖,如下:
因?yàn)槿四樀囊话闶情L方形的,而很多圖片是比較寬的,例如16:9的圖片,人臉的寬度和高度歸一化后,有很多圖片的高度是寬度的2倍甚至更大。從上圖也可以看出,歸一化后的人臉高寬比集中在1~2.5之間。所以,根據(jù)數(shù)據(jù)的分布,我們將五個(gè)定位層的anchor的寬高比統(tǒng)一設(shè)置為1,0.62, 0.42。(轉(zhuǎn)換為高寬比,也就是約1,1.6:1,2.4:1)
五個(gè)定位層的配置信息如下表所示:
筆者使用基于Keras實(shí)現(xiàn)的目標(biāo)檢測微框架訓(xùn)練的人臉口罩檢測模型,為了避免一些網(wǎng)友提到的使用手擋住嘴巴就會(huì)欺騙部分口罩檢測系統(tǒng)的情況,我們?cè)跀?shù)據(jù)集中加入了部分嘴巴被手捂住的數(shù)據(jù),另外,我們還在訓(xùn)練的過程中,隨機(jī)的往嘴巴部分粘貼一些其他物體的圖片,從而避免模型認(rèn)為只要露出嘴巴的就是沒戴口罩,沒露出嘴巴的就是帶口罩這個(gè)問題,通過這兩個(gè)規(guī)避方法,我們很好的解決了這個(gè)問題,大家可以在aizoo.com體驗(yàn)我們的模型效果。
后處理部分主要就是非最大抑制(NMS),我們使用了單類的NMS,也就是戴口罩人臉和不戴口罩人臉兩個(gè)類別一起做NMS,從而提高速度。
獲取數(shù)據(jù)集
人臉口罩?jǐn)?shù)據(jù)集下載
下載人臉口罩?jǐn)?shù)據(jù)集的目的是利用OpenCV進(jìn)行模型訓(xùn)練,這里采用口罩?jǐn)?shù)據(jù)集的正負(fù)比列為1:3,即500張戴口罩的人臉圖片和1500張不戴口罩的人臉圖片。
數(shù)據(jù)集獲?。郝?lián)系博主獲取
解壓之后,將壓縮包中的mask文件自行選擇文件夾放置,以便之后的操作。
如下:
上面帶口罩的人臉圖像我們命名為正樣本,相反,沒帶口罩的數(shù)據(jù)集合命名為負(fù)樣本, 如下:
由于數(shù)據(jù)集解壓后樣本圖像命名是亂序的,我們要進(jìn)行重命名,上面兩幅圖是已經(jīng)處理好的, 下面給出示例代碼
#對(duì)數(shù)據(jù)集重命名
#coding:utf-8
import os
path = "E:\\facemask\\mask\\have_mask" #人臉口罩?jǐn)?shù)據(jù)集正樣本的路徑
filelist = os.listdir(path)
count=1000 #開始文件名1000.jpg
for file in filelist:
Olddir=os.path.join(path,file)
if os.path.isdir(Olddir):
continue
filename=os.path.splitext(file)[0]
filetype=os.path.splitext(file)[1]
Newdir=os.path.join(path,str(count)+filetype)
os.rename(Olddir,Newdir)
count+=1
#對(duì)數(shù)據(jù)集重命名
#coding:utf-8
import os
path = "E:\\facemask\\mask\\no_mask" #人臉口罩?jǐn)?shù)據(jù)集的路徑
filelist = os.listdir(path)
count=10000 #開始文件名1000.jpg
for file in filelist:
Olddir=os.path.join(path,file)
if os.path.isdir(Olddir):
continue
filename=os.path.splitext(file)[0]
filetype=os.path.splitext(file)[1]
Newdir=os.path.join(path,str(count)+filetype)
os.rename(Olddir,Newdir)
count+=1
最后
項(xiàng)目運(yùn)行效果:
畢業(yè)設(shè)計(jì) 深度學(xué)習(xí)口罩佩戴檢測系統(tǒng)
項(xiàng)目獲?。?/strong>
https://gitee.com/sinonfin/algorithm-sharing
到了這里,關(guān)于大數(shù)據(jù)畢設(shè)分享 深度學(xué)習(xí)行人口罩佩戴檢測的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!