趙震
(西南科技大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,四川綿陽,621000)
基于OpenCV的人體安全帽檢測(cè)的實(shí)現(xiàn)
趙震
(西南科技大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,四川綿陽,621000)
隨著計(jì)算機(jī)視覺檢測(cè)技術(shù)的發(fā)展,施工者的安全防護(hù)措施保障可輔助以視覺檢測(cè)。人體安全帽檢測(cè)系統(tǒng)主要基于opencv的圖形圖像處理技術(shù),對(duì)特定的目標(biāo)物體進(jìn)行樣本收集訓(xùn)練后,可一定程度上對(duì)施工現(xiàn)場(chǎng)所產(chǎn)生的視頻或者圖片文件進(jìn)行掃描,在人體識(shí)別的基礎(chǔ)上,辨別出施工人員安全帽配帶情況一定程度上降低安全隱患。
OpenCV;目標(biāo)檢測(cè);AdaBoost算法;Haar訓(xùn)練
隨著計(jì)算機(jī)技術(shù)的發(fā)展,智能化、自動(dòng)化處理的項(xiàng)目作業(yè)越來越多。實(shí)際工程項(xiàng)目中,還存在相當(dāng)一部分高危工程作業(yè)的進(jìn)行需要人工完成。因此,工人的安全防護(hù)措施保障,也隨之成為現(xiàn)代化工程建設(shè)需要解決的問題之一。人體安全帽檢測(cè)系統(tǒng)主要基于opencv的圖形圖像處理技術(shù),對(duì)施工現(xiàn)場(chǎng)所產(chǎn)生的視頻或者圖片文件進(jìn)行預(yù)處理后,在人體識(shí)別的基礎(chǔ)上,辨別出施工人員安全帽配帶情況,在一定程度上將不安全因素降到最低,促進(jìn)項(xiàng)目作業(yè)的正常完成。
OpenCV是一個(gè)基于開源發(fā)行的跨平臺(tái)計(jì)算機(jī)視覺庫,可以運(yùn)行在Linux,Windows,MacOS操作系統(tǒng)上,對(duì)跨平臺(tái)支持良好[1]。它主要采用C語言進(jìn)行編寫。它提供了便捷且功能強(qiáng)大的一系列開發(fā)接口,最大程度上集成了視覺檢測(cè)和圖形圖像處理兩方面的很多算法。它設(shè)計(jì)目標(biāo)是在提高執(zhí)行速度的基礎(chǔ)上,聚焦實(shí)時(shí)應(yīng)用,與此同時(shí)構(gòu)建一個(gè)易用的計(jì)算機(jī)視覺框架,通過這個(gè)框架,程序開發(fā)人員可以方便地設(shè)計(jì)出復(fù)雜的計(jì)算機(jī)視覺方面的應(yīng)用程序。
Haar級(jí)聯(lián)訓(xùn)練[1]是一個(gè)基于Haar特征的級(jí)聯(lián)分類器的一種訓(xùn)練方法。它是通過之前預(yù)備好的正負(fù)樣本,提取檢測(cè)目標(biāo)的Haar特征值,生成若干個(gè)弱分類器,然后把這若干個(gè)弱分類器串聯(lián)成強(qiáng)分類器,最終使用這個(gè)強(qiáng)分類器進(jìn)行目標(biāo)物體的檢測(cè)。Haar級(jí)聯(lián)訓(xùn)練的結(jié)果是一個(gè)xml類型的文件,用戶可以通過加載這個(gè)文件來對(duì)窗口中的內(nèi)容進(jìn)行掃描。
2.1 Haar-Like特征
Haar級(jí)聯(lián)訓(xùn)練基于Haar-Like特征,因類似于Haar小波而得名。矩形特征的值指的圖像上兩個(gè)或者兩個(gè)以上形狀大小相同的矩形內(nèi)部所有像素灰度值之和的差值。擴(kuò)展之后的 Haar 特征可分為3 類:邊緣特征、線性特征和中心特征(如圖1所示)。將矩形黑色區(qū)域像素灰度值總和與白色區(qū)域像素灰度值總和進(jìn)行差值運(yùn)算,結(jié)果即為所求特征值,它反映圖像局部的灰度變化[1]。

圖1 Haar-Like特征
2.2 AdaBoost算法
AdaBoost算法是提高弱分類算法準(zhǔn)確度最優(yōu)秀的算法之一,有著堅(jiān)實(shí)的理論基礎(chǔ),在實(shí)踐中應(yīng)用廣泛。AdaBoost算法本質(zhì)上是一種弱分類器分類器組合算法,它的主要思想是對(duì)同一個(gè)樣本訓(xùn)練集合,分多個(gè)階段進(jìn)行訓(xùn)練,得到不同的分類器(即弱分類器),然后把這些弱分類器連接起來,組成一個(gè)功能更強(qiáng)大的分類器(即強(qiáng)分類器)。 與此同時(shí),AdaBoost 算法的優(yōu)點(diǎn)不僅在于它是一種高效的機(jī)器學(xué)習(xí)算法,還在于這三點(diǎn): (1) AdaBoost 算法使得 Boosting 從最初的猜想變成一種真正具有實(shí)用價(jià)值的算法; (2)算法采用的一些新穎的技巧, 如: 打破原有的樣本分布, 也為其他統(tǒng)計(jì)學(xué)習(xí)算法的設(shè)計(jì)帶來了一些重要啟示; (3)與此相關(guān)的理論研究成果在很大程度上促進(jìn)了集成學(xué)習(xí)的發(fā)展[3]。
3.1 檢測(cè)系統(tǒng)方案設(shè)計(jì)
綜合考慮檢測(cè)的對(duì)象,通過對(duì)多種的算法的比較,Haar級(jí)聯(lián)訓(xùn)練可控性較強(qiáng),對(duì)于檢測(cè)目標(biāo)可同過正負(fù)樣本的數(shù)量等進(jìn)行精度的控制,因此,使用Haar級(jí)聯(lián)訓(xùn)練對(duì)目標(biāo)物體進(jìn)行檢測(cè)。
整個(gè)系統(tǒng)主要分為三個(gè)模塊,樣本的收集與訓(xùn)練,人體檢測(cè),目標(biāo)物體(安全帽)的檢測(cè)。樣本的收集我們的采集1500張正樣本,和1000張負(fù)樣本,對(duì)其及逆行規(guī)格統(tǒng)一化處理后,使用OpenCV2.4.9自帶的opencv_traincascade.exe進(jìn)行級(jí)聯(lián)器的訓(xùn)練。對(duì)于最終目標(biāo)物體的檢測(cè),為了降低無關(guān)區(qū)域的檢測(cè),我們第二步使用OpenCV2.4.9自帶的HOGDescriptor::getDefaultP eopleDetector()獲取自帶SVM分類器進(jìn)行人體檢測(cè),在此基礎(chǔ)上獲取檢測(cè)到的人體坐標(biāo)區(qū)域,再對(duì)檢測(cè)到的人體區(qū)域進(jìn)行多窗口最大值化處理,進(jìn)行重復(fù)檢測(cè)結(jié)果的歸一化處理。最終,在相應(yīng)的人體區(qū)域內(nèi)進(jìn)行安全帽的檢測(cè)。
3.2 檢測(cè)系統(tǒng)方案實(shí)現(xiàn)
3.2.1 樣本的收集與訓(xùn)練
在樣本的手機(jī)上,我們手機(jī)正樣本數(shù)目2000(含有安全帽的樣本),負(fù)樣本1000(不含負(fù)樣本)。首先使用opencv_ createsamples.exe創(chuàng)建positiveVec.vec,參數(shù)如下:
-info positiveImages.txt -vec positiveVec.vec -w 24 -h 24 -num 2000
之后再使用opencv_traincascade.exe進(jìn)行訓(xùn)練,參數(shù)設(shè)置如下:
-vec positiveVec.vec -bg negetiveimages.txt -numPos 2000 -numNeg 1000 -numStages 15 -w 24 -h 24 -data data -maxFalseAlarmRate 0.5 -minHitRate 0.9999 -mode ALL
訓(xùn)練過程中的截圖如圖2所示,訓(xùn)練后在data文件內(nèi)生成cascade.xml,即為包含當(dāng)前檢測(cè)目標(biāo)haar特征值的文件。

圖2 Haar訓(xùn)練截圖
3.2.2 人體檢測(cè)與目標(biāo)物體
檢測(cè)系統(tǒng)的設(shè)計(jì)主要分為三個(gè)部分,人體檢測(cè),圖片處理,安全帽的檢測(cè),主要的結(jié)構(gòu)如圖3所示。

圖3 系統(tǒng)設(shè)計(jì)類圖
3.2.3 檢測(cè)結(jié)果展示與分析
系統(tǒng)測(cè)試結(jié)果如圖4所示。

圖4 測(cè)試結(jié)果展示
分析可得:檢測(cè)過程存在一定的誤差,同時(shí),隨著環(huán)境復(fù)雜度的增強(qiáng),檢測(cè)的誤差率有一定的提高。
通過采集訓(xùn)練樣本,人體檢測(cè),目標(biāo)物體檢測(cè),我們?cè)谝欢ㄕ`差的基礎(chǔ)上對(duì)人體安全做出了正確的檢測(cè)識(shí)別。在實(shí)際的應(yīng)用過程中,我們可以通過反轉(zhuǎn)思想,在檢測(cè)到的人體集合中,篩選掉攜帶安全帽的人員,從而展示出未攜帶安全帽的人員,在一定程度上排除項(xiàng)目作業(yè)過程中的不安全因素。同時(shí),此系統(tǒng)設(shè)計(jì)還有許多的不足之處,如在復(fù)雜環(huán)境中對(duì)安全帽進(jìn)行檢測(cè)時(shí),誤差率有大幅度的提升,針對(duì)系統(tǒng)的改進(jìn),擬采用顏色和haar級(jí)聯(lián)訓(xùn)練相結(jié)合的方式進(jìn)行識(shí)別,并有針對(duì)的提高政府樣本的數(shù)量,調(diào)整正負(fù)樣本的比例,可能會(huì)在一定程度上提高目標(biāo)物體檢測(cè)的正確率。
[1]邵翔,魏國亮,張彬,王建華.基于Raspberry Pi和Haar分類器的AUV目標(biāo)搜尋[J].電子科技,2017,30(2):130-134.
[2]曹瑩,苗啟廣,劉家辰,高 琳.AdaBoost 算法研究進(jìn)展與展望[J].自動(dòng)化學(xué)報(bào)2013,39(6):745-749.
Implementation of human helmet detection based on OpenCV
Zhao Zhen
(School of computer science and technology, Southwest University of Science and Technology, Mianyang Sichuan,621000)
With the development of computer vision detection technology, safety protection measures of the construction can be aided by visual inspection. The human body safety helmet detection system is mainly based on image processing technology of OpenCV, the sample collection training on specific objects, to a certain extent on the construction site of the resulting video or image files were scanned in based on the identification of the human body, to identify the safety helmet with the construction workers to some extent reduce security risks.
OpenCV; target detection; AdaBoost algorithm; Haar training