李欣寧,陳雪松,李秀瀅,胡浩通,陳星漢
(北京電子科技學院,北京100070)
在工程建設過程中,對于工人的人身安全保護始終是不容忽視的問題,安全帽的佩戴則是保護生命安全最基礎的防線。但在實際施工過程中,由于工地占地龐大、內部結構復雜、人員流動量大,單純依靠人力難以實現對施工現場工人佩戴安全帽情況的實時監控。
當前,隨著嵌入式技術和人工智能(AI)技術的深度融合,端側人工智能得到了廣泛的發展,與人工智能相結合的智慧化監測系統應運而生。從前瞻產業研究院整理的數據[1]可以看出,“AI+安防”一直是現階段人工智能的主要賦能領域。但是,以施工現場為核心區域的“AI+安防”卻少之又少。
隨著物聯網技術的飛速發展,在為數不多的高端施工現場,也部署了安全帽佩戴檢測設備。從整體上看,其監測模式一般有兩種,一種是在工地門口與門禁系統相結合,對進入工地的人員進行正確佩戴安全帽的檢查;另一種是通過工地的監控攝像頭進行視頻的錄制,并將影像傳送給后臺的管理服務器進行視頻處理,進而檢查安全帽佩戴情況。
以上兩種模式雖然能實現對特定施工現場佩戴安全帽情況的監測和報警,但對于臨時搭建的工地來說成本較高,且不可避免地存在監控設備無法部署的死角。
針對上述情況,本文以端側AI技術為依托,提出了一款與手機端相結合的安全帽佩戴檢測應用系統。利用手機這個人人必備的無線端側平臺,協助施工現場的管理人員進行流動式、定點式、抽查式的安全帽佩戴監測工作。
近年來,隨著深度學習技術的突破,第三次人工智能的浪潮洶涌而來。現在,通過模擬大腦的神經網絡結構,直接從案例和經驗中就可以進行算法的學習[2]。結合著算力的芯片化,在智能終端上搭載AI技術,已成為業界共識。
麒麟980芯片是華為第二代人工智能芯片,更加擅長處理視頻、圖像類的多媒體數據。
980芯片性能卓越,內含CPU(中央處理器單元)、GPU(圖形處理器單元)和NPU(神經網絡處理器單元)。其中,CPU采用ARM Cortex-A76架構,屬于多核CPU,由包含了2個超大核、2個大核和4個小核(Cortex-A55)的三檔能效架構組成。超大核用于處理急速任務,大核用于處理持續時間長的任務,小核則用于日常功能的使用。GPU采用ARM Mali-G76架構。在圖像處理加速方面,麒麟980采用了自主研發的雙ISP4.0技術,使得圖像處理能力顯著提升。NPU采用寒武紀1 M的人工智能芯片,可顯著提升圖像識別效率。麒麟980芯片內部具體結構如圖1所示。

圖1 麒麟980芯片結構
HiAI2.0是華為于2018年發布的人工智能開發引擎,包括了HiAI Foundation芯片能力、HiAI Engine應用能力和HiAIService服務能力。支持在麒麟980(及其以上版本)芯片上,為開發者提供開放的AI平臺生態。
本設計使用HiAIFoundation提供的芯側計算接口,能夠借助麒麟980芯片中的雙核NPU,提高圖像識別能力,每分鐘可識別4 500張圖片。并且支持大量的AI開發模型和算子,讓手機AI應用程序運行更快,體驗更好[3]。
另外,本設計使用HiAIEngine提供的應用能力開放接口[4],借助其人臉檢測模塊檢測圖像中的人臉,返回結果中包含人臉特征點坐標、位置坐標和人臉數量等參數。該功能可作為關鍵模塊,通過對人臉特征的提取、分析及位置的定位,廣泛應用于各類涉及人臉識別的場景[5]。此模塊已經被華為進行了封裝和集成,開發者使用時需要去官網下載對應的開發包。
基于HiAI2.0引擎開發具有AI能力的安全帽佩戴檢測系統,需要在華為DevEco Studio集成開發環境下設計實現軟件,最后將應用系統(APP)部署到麒麟980芯片(或以上版本)的手機中[6]。使用時,APP會調用手機芯片中AI計算模塊進行處理,底層會使用搭載的NPU加速運算,最終利用GPU加速顯示輸出結果。
華為HiAIFoundation提供的Model Creator功能,可為開發者提供圖像分類、文本分類、表格分類、物體檢測等遷移學習能力。通過訓練深度學習模型,讓應用者對圖像、文本等進行精確識別。本課題的圖像識別功能就是利用HiAI Foundation深度學習算法的良好泛化能力,針對大量圖像數據進行分鐘級的學習訓練,自動生成安全帽佩戴圖像分類識別的AI模型。本系統在圖像分類時使用到的機器學習模型算法是深度級可分離卷積神經網絡算法——MobileNetV2。
1.2.1 深度級可分離卷積神經網絡
MobileNets網絡結構的特點在于采用了深度級可分離卷積單元以達到模型壓縮的目的,采用這種卷積方式可以減少參數數量、提升運算速度,是一種小巧而高效的卷積神經網絡。
深度級可分離卷積算法是將標準卷積運算分成兩步:Depthwise convolution和Pointwise convolution。Depthwise convolution與標準卷積運算的不同之處在于,標準卷積是將卷積核用在所有的輸入通道上,而Depthwiseconvolution是針對每個輸入通道采用不同的卷積核,也就是說一個卷積核對應一個輸入通道。Pointwise convolution就是普通卷積,其采用1×1的卷積核[7]。
1.2.2 相比于MobileNetV1的優點
MobileNetV2模型與MobileNetV1相比,進行了兩方面的改進:采用倒置殘差結構和線性瓶頸[8]。兩個模型簡易對比如圖2所示。

圖2 MobileNetV2與MobileNetV1對比
從圖2可以看出,算法模型使用了先“擴張”再“壓縮”的方式,即倒置殘差結構;將原有的ReLU激活函數(非線性),改為線性激活函數,即線性瓶頸。
倒置殘差結構與MobileNetV1網絡結構的不同在于添加了Expansion layer和 Projection layer[9]。Expansion layer的目的是將低維特征映射到高維空間,即維度擴展功能。本設計采用默認參數,即擴展6倍。Projection layer可以將高維特征映射到低維空間,即壓縮功能,這樣就形成了一個中間胖兩頭窄的紡錘形模型結構。MobileNetsV2網絡結構可以滿足各種圖像識別的需求。先通過Expansion layer運算擴展特征維度,之后用深度可分離卷積算法提取特征,最后使用Projection layer運算來壓縮數據,讓網絡重新變小。
在MobileNetV1中使用的ReLU激活函數是非線性的激活函數,當計算低維度數據時極有可能會使得激活空間坍塌,丟失信息,因此,MobileNetV2使用Linear bottlenecks線性變換函數替換了原本的非線性激活函數,以防止非線性方式破壞太多信息,同時又可以保證在低維度使用。
本系統基于華為麒麟980芯片的HiAI 2.0平臺開發,主體設計包括兩部分:AI模型訓練和應用軟件(APP)設計。
通過手機平臺采集來的圖像數據,要進行AI模型的圖像識別和分類的處理。而AI模型應用之前需要做好兩件事情:一方面是選擇或構建合適的AI深度學習算法模型;另一方面是在指定數據集上進行算法模型的參數訓練,以期AI模型具有超強的泛化識別能力。
2.1.1 數據集分析
訓練所用到的數據集需要先進行圖片分類,即打標簽。這里需要在每個分類的目錄下,放入大小合適的、對應類別的清晰圖片。我們將收集來的圖片先進行數據格式和大小的處理,然后分為戴安全帽(has_helmet)和不戴安全帽(no_helmet)兩類,前者129張,后者103張,均為.jpg格式,數據集大小約為24 MB。
2.1.2 模型訓練
利用HiAIFoundation中的“模型創建”功能來訓練所需的AI模型。首先啟動華為DevEco Studio,從以下路徑Tools→EMUIKit→Kit Assistant,打開HiAIFoundation中的Model Creator功能,選擇操作類型為Model Created。將分好類的訓練集放入該模塊中,設置好訓練參數,選擇輸出模型的路徑,點擊Create Model開始訓練模型。之后,該模塊會利用遷移學習算法在基座分類模型MobileNetV2的基礎上,進行安全帽圖像分類模型的參數訓練。模型訓練完成后,可以查看模型學習的結果,主要為訓練精度、驗證精度、學習參數和訓練數據等信息。最后放入測試集,進行訓練模型的測試,以確定安全帽識別模型的應用效果。本系統的模型參數和測試結果如圖3所示。

圖3 模型參數和測試結果
由返回結果可知,模型的預測正確率達到了98%以上,精確度可以滿足本設計的需求。
將訓練好的模型生成API,為模型應用到系統作準備。在模型訓練結果中點擊“Generate API”,DevEco Studio開發工具就會將訓練模型的依賴包、模型文件、API接口示例源文件自動添加到工程的相應目錄中,并且在模塊的“build.gradle”文件中自動增加依賴信息。之后可以通過調用圖像分類識別模型對應的API接口,將圖像分類識別的能力集成到APP中。
2.2.1 系統的邏輯流程
APP的功能邏輯流程如圖4所示。當用戶采集圖像后,系統先判斷圖像中是否存在人臉,如果不存在人臉,則輸出“沒有人臉(no get face)”;如果存在人臉,則先框出人臉,再判斷圖像中人臉是否佩戴安全帽,對應輸出結果:“戴安全帽(has_helmet)”或“沒戴安全帽(no_helmet)”,并顯示結果準確率。

圖4 APP的功能邏輯流程
2.2.2 系統的GUI界面布局
系統界面上設計了“SELECTAN IMAGE”和“TAKEA PHOTO”兩個按鈕,分別用于實現從圖庫中選擇圖像和拍照獲取圖像兩種操作:一個圖像顯示框,用于顯示采集或選取的圖像;一個文本顯示框,用于以文本形式顯示檢測結果,即說明是否有人臉、是否戴安全帽。APP的GUI布局如圖5所示。

圖5 APP的GUI布局
2.2.3 安全帽檢測實現
參照華為官方發布的人臉檢測開發指南和DevEco Studio使用指南,向開發工程文件中添加需要的軟件依賴包,并通過調用HiAI的API接口函數和相關類函數,實現人臉檢測和圖像分類的功能。APP程序基本流程如圖6所示。

圖6 程序流程圖
根據流程圖,首先調用requestPermissions()函數進行權限申請,包括圖庫、相機的使用權限;獲得權限后,按照華為HiAI的要求,將應用VisionBase靜態類進行初始化,得到服務連接的結果,為之后調用人臉檢測API做準備。
調用onActivityResult()函數獲取圖像,并將其轉換成位圖的形式保存在變量中;之后進入FaceDetectTask進程,調用人臉檢測API,實現detect接口,使用檢測算法獲取結果。同時,使用ImageClassifierDetector類調用訓練好的AI模型,執行模型預處理、申請CPU、模型裝載、圖像識別、模型卸載和釋放CPU的功能,最后將檢測結果返回。
最后,onTaskCompleted()函數會對結果進行處理和輸出。當返回結果表明“沒有人臉”時,會在界面下端的文本框中輸出“not get face”。
當返回結果表明“有人臉”時,根據圖像分類的結果,在GUI界面的文本框中輸出“no_helmet”或“has_helmet”以及預測正確率,同時會用綠色矩形框框出圖像中人臉的部分。
系統的運行效果如圖7所示,會有3種輸出結果,分別為“has_helmet+正確率”“no_helmet+正確率”和“not get face”。從圖7中可以看到系統檢測安全帽佩戴情況的3種輸出結果的效果,系統能正確運行。
為了測試APP的準確率,這里選取8張戴安全帽與8張不戴安全帽的圖片。測試結果如表1所示。
由測試結果的標簽值可知,該APP能準確分辨出安全帽佩戴情況,預測正確率在90%以上。
經過大量測試研究,影響預測正確率的因素主要有以下3方面:①圖像場景的復雜程度。場景越復雜,預測正確率越低,因此在較為簡單的場景中能提高預測正確率。②圖像中的人臉占比。圖像中的人臉占比越大,預測正確率越高,因此采集圖像時應盡可能提高人臉占比。③訓練算法模型所用到的數據集大小。訓練所用的數據集越大,預測正確率越高,因此在訓練AI模型時應盡可能擴大數據集。

圖7 系統運行結果

表1 正確率測試結果
本文介紹了基于麒麟980芯片的安全帽檢測系統的設計實現方案。系統設計重點部分為:人臉檢測模塊與安全帽圖像分類模塊。人臉檢測模塊調用華為HiAI中的Huawei HiAIEngine接口實現。圖像分類模塊是利用DevEco Studio平臺的遷移學習工具,訓練生成圖像分類模型,并封裝成API接口實現。本系統充分利用了華為HiAI引擎和麒麟980芯片的優點,全面提升了檢測速度和準確率。系統方案的實施成本低、可行性強,為解決臨時工地中安全帽佩戴的監管問題提供了實用的解決方案。