沈剛 袁鵬泰
摘? 要: 為了滿足廚房智能監(jiān)控的需求,保證食品衛(wèi)生安全,開發(fā)了一個基于姿態(tài)估計算法的廚房智能監(jiān)控系統(tǒng)。該系統(tǒng)將深度神經(jīng)網(wǎng)絡(luò)與視頻監(jiān)控技術(shù)相融合,實現(xiàn)人臉識別以及衣帽識別等功能,采用Openpose姿態(tài)估計算法對人體部位進行有效定位,并針對Openpose算法會出現(xiàn)誤判人體關(guān)鍵點的問題進行了改進。實驗表明,改進后的姿態(tài)估算法能夠有效地避免誤判問題。
關(guān)鍵詞: 深度學(xué)習(xí); 姿態(tài)估計; 目標檢測; 視頻監(jiān)控
中圖分類號:TP391.41? ? ? ? ? 文獻標識碼:A? ? ?文章編號:1006-8228(2020)12-33-05
Abstract: In order to meet the needs of kitchen intelligent monitoring and ensure food safety, a kitchen intelligent monitoring system using pose estimation algorithm is developed in this paper. The system combines with the deep neural network and video monitoring technologies to realize the functions of face recognition and clothing recognition. The Openpose pose estimation algorithm is used to locate the parts of human body effectively, and the improvement is made to solve the problem that the openpose algorithm may misjudge the key points of human body. Experimental results show that the improved pose estimation algorithm can effectively avoid the misjudgment.
Key words: deep learning; pose estimation; object recognition; video monitoring
1 相關(guān)工作
本文將姿態(tài)估計算法應(yīng)用在對廚房的智能監(jiān)控中,通過監(jiān)控食堂后廚,以確保食品的健康安全。該系統(tǒng)包含人臉識別、衣帽識別以及物品識別等功能。人臉識別功能需要對人臉進行識別,而衣帽識別功能則需要對人體的頭部位置以及身體位置進行識別,這需要算法能夠有效的對人體部位進行定位,本文選用了姿態(tài)估計算法對人體部位進行定位。
近年來,國內(nèi)外學(xué)者提出了諸多的姿態(tài)估計算法。根據(jù)算法的結(jié)構(gòu),姿態(tài)估計算法可以劃分成自頂向下的姿態(tài)估計算法和自底向上的姿態(tài)估計算法。
1.1 自頂向下姿態(tài)估計算法
自頂向下估計算法的工作原理是首先確定圖像中的各個人的位置,之后對各個人的關(guān)鍵點確定,并以此來復(fù)原各個人的姿態(tài)(即姿態(tài)估計)。
Papandreou團隊[1]采用這種方式并將其命名為G-RMI,先利用faster-rcnn目標檢測算法[2]對圖像中的人進行邊框檢測;然后通過一個全卷積殘差網(wǎng)絡(luò)(fully convolutional resnet)[3-4]預(yù)測出每一個檢測框內(nèi)的人的稠密熱圖(dense heatmap)和偏置(offset),將兩者融合以定位出關(guān)鍵點的位置。Shaoli Huang等人[5]提出了一種粗糙-精細化神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)CFN(Coarse-Fine Network),利用多層級監(jiān)督來實現(xiàn)關(guān)鍵點定位功能;在姿態(tài)估計前進行目標檢測,會出現(xiàn)邊框定位偏差和反復(fù)檢測等問題,針對此難題,上海交大的盧策吾等[6]提出了RMPE(Regional Multi-Person Pose Estimation)方法,使用空間變換網(wǎng)絡(luò)(STN)將屬于同一個人的不同候選區(qū)域都轉(zhuǎn)化成一個比較好的候選區(qū)域,如果人體處在候選區(qū)域的正中央,那么對于同一個人就不會產(chǎn)生不同的關(guān)鍵點檢測結(jié)果,此方法采用SSD[7]目標檢測算法;何凱明[8]提出的Mask R-CNN網(wǎng)絡(luò)雖然是用于目標檢測的結(jié)構(gòu),但其泛化能力很強,可以廣泛用于多種任務(wù),人體姿態(tài)估計就是其中一種應(yīng)用;Yilun與Chen等人[9]提出了級聯(lián)金字塔網(wǎng)絡(luò)CPN,此方法主要結(jié)合精煉網(wǎng)絡(luò)(RefineNet)與全局網(wǎng)絡(luò)(GlobalNet),其中全局網(wǎng)絡(luò)的主要工作是對簡單的關(guān)鍵點進行檢測并提供上下文信息,精煉網(wǎng)絡(luò)通過對全局網(wǎng)絡(luò)得到的所有級別的特征進行整合,以便定位較難識別的關(guān)鍵點。
1.2 自底向上姿態(tài)估計算法
自底向上姿態(tài)估計算法的主要思想是先檢測圖像中所有關(guān)鍵點,之后,將檢測到的關(guān)鍵點做聚類,也就是將關(guān)鍵點和圖像中的人進行對應(yīng)。
InsafutdinovEldar等人的DeepCut[10]和DeeperCut[11]首先利用卷積神經(jīng)網(wǎng)絡(luò)進行所有關(guān)鍵點的檢測工作并將這些關(guān)鍵點組成一幅圖,之后再對圖中的這些關(guān)鍵點進行聚類,將關(guān)鍵點的聚類問題轉(zhuǎn)化成了優(yōu)化問題。Zhe Cao[12]等人提出Openpose算法,包括兩個分支協(xié)調(diào)工作,一個分支利用置信度圖預(yù)判關(guān)鍵點,而另一個對其關(guān)鍵點的相關(guān)性進行預(yù)判,最后建立起關(guān)鍵點的圖并進行分析;Xia, Fangting等人[13]的Part Segmentation方法,首先拆分人身體的不同位置,然后根據(jù)關(guān)鍵點之間的關(guān)系完成建模;Newell,Alejandro及其團隊[14]提出了一種單階段關(guān)鍵點檢測的方法,把檢測關(guān)鍵點和分組一同進行,是一種端到端(end-to-end)的方法;Papandreou,George等人[15]則通過直接回歸兩個關(guān)鍵點之間的偏差來對這兩個關(guān)鍵點之間的關(guān)系進行建模,但是這種方法只可以用于兩個關(guān)鍵點周圍較小范圍內(nèi)的偏差。
2 Openpose姿態(tài)估計算法
姿態(tài)估計算法中,自底向上結(jié)構(gòu)的算法運行效率不會因圖像中的人數(shù)而改變,而自頂向下結(jié)構(gòu)算法的運行效率則會隨視頻中人數(shù)的增加而降低,因此我們選擇自底向上結(jié)構(gòu)的姿態(tài)估計算法。
自底向上的姿態(tài)估計的算法有很多種,其中最典型的是Openpose,該方法采用置信度圖(confidence map)來檢測關(guān)鍵點,利用部分親和字段(PAF)連接身體關(guān)節(jié)點。作者使用分支網(wǎng)絡(luò)結(jié)構(gòu)來同時獲取人體的關(guān)鍵點與親和區(qū)域。算法的檢測流程為:首先將完整的圖像作為輸入,通過一個二分支網(wǎng)絡(luò)同時檢測出人體的關(guān)節(jié)點置信度圖和人體部分親和字段,然后將人體關(guān)節(jié)點的連接問題轉(zhuǎn)換為一個二部圖匹配問題,最后將圖像中所有人人體骨骼關(guān)鍵點輸出。
Openpose網(wǎng)絡(luò)先利用VGGNet[16]對圖像進行特征提取,然后把這些特征輸入到二分支網(wǎng)格做預(yù)測工作。其中一個分支負責(zé)預(yù)測人體關(guān)節(jié)點的置信度圖,另一個則負責(zé)預(yù)測人體部分親和字段。兩個分支都設(shè)置了迭代級聯(lián)機制,第一級的輸入是VGGNet提取的特征,其后的每一級的輸入都是上一級的輸出加上第一級的輸入。具體實行結(jié)構(gòu)如圖1所示。由于輸入圖像具備固定尺寸,所以很難對細節(jié)預(yù)測,若將輸入圖像的尺寸加大又會增加參數(shù)的數(shù)量,而進行迭代的級聯(lián)機制可以對前面的預(yù)測結(jié)果不斷的進行精煉,會有力的提升系統(tǒng)對細節(jié)的識別度。
圖1中上方的分支用于預(yù)測人體關(guān)鍵點的置信度圖S(confidence map),下方分支的工作是對人體的部分親和字段[L](PAF)進行預(yù)測,[ρ]是置信度圖S進行檢測的卷積神經(jīng)網(wǎng)絡(luò),[?]的工作是對部分親和字段[L]進行檢測工作的卷積神經(jīng)網(wǎng)絡(luò)。
在對Openpose算法進行更加深入的研究過程中,我們也發(fā)現(xiàn)了Openpose算法的一個缺陷:Openpose算法有時會在無人存在之處檢測出關(guān)節(jié)點。這就會干擾后續(xù)人臉識別和衣帽識別的準確度,為了解決這一問題我們對Openpose算法進行了改進。
3 改進的Openpose姿態(tài)估計算法
為解決Openpose算法存在的問題,我們決定在姿態(tài)估計前對圖像內(nèi)容進行一個篩選過濾,將確定存在人體的圖像傳入到Openpose姿態(tài)估計算法中。
這樣,我們便將改進的Openpose姿態(tài)估計算法分成了三個步驟:人體檢測、人體區(qū)域融合和姿態(tài)估計。人體檢測是定位出圖像中人體所在的位置;人體區(qū)域融合是為了將相互靠的較近的人體區(qū)域進行融合,由于我們后續(xù)采用了一個自底向上的姿態(tài)估計算法,因此不需要在圖像中精確定位到每一個人的位置,而將人體區(qū)域進行融合還能夠提高改進的姿態(tài)估計算法的識別效率。
3.1 人體檢測
本文采用的是自底向上的結(jié)構(gòu)進行人體姿態(tài)估計,檢測過程中多個人允許共同使用一個檢測框,因此人體檢測算法的檢測效率便成了一個很重要的參考標準,綜上選擇yolo[17]算法來作為本文的人體檢測算法,其具有較高的檢測速度和較高的檢測精度。
Yolo算法首先把圖像縮放至448×448以方便后續(xù)處理。隨后把縮放的圖像分為[S×S]個網(wǎng)格(cell),某個目標的實際中心處于某一個cell上的時候,這個cell就負責(zé)對這個目標進行預(yù)測。每個cell對B個邊界框(bounding box)及其置信度(confidence scores)進行預(yù)測,此外,還要預(yù)測C個類別的條件概率P。每個邊界框都含有5個值,分別是表示位置的[x,y,w,h]和置信度[C],[x,y]為邊界框中心相對于網(wǎng)格左上角坐標的偏移值,[w,h]表示邊界框的高和寬,這里的置信度指的是預(yù)測的邊界框和實際的邊界框(ground truth)位置IOU值。其中S取7,B取2,C取20。yolo的預(yù)測過程如圖2所示。
3.2 人體區(qū)域融合
通過執(zhí)行上一步中介紹的人體檢測算法,我們已經(jīng)獲得了人體在圖像中所處的區(qū)域的位置。當預(yù)測到的人體檢測框偏大時,算法會有較高的容錯能力,但當人體檢測框偏小而無法截取整個人體時,會影響后續(xù)姿態(tài)估計的結(jié)果,因此,對前一步的人體檢測框進行放大,其公式如下:
3.3 實驗結(jié)果展示
識別結(jié)果的對比圖展示,圖3為改進前姿態(tài)估計的結(jié)果,圖4為改進后的姿態(tài)估計結(jié)果。我們將兩張圖中差異的地方用橢圓框標注。從圖中可以看出圖3中在橢圓標注處存在誤檢的情況,而圖4在對應(yīng)的位置則沒有這一情況出現(xiàn)。由此可見本文提出的改進的Openpose算法有效的解決了這一問題。
4 姿態(tài)估計算法在視頻監(jiān)控中的應(yīng)用
本文所提算法在視頻監(jiān)控中主要用于對人體頭部、身體等部位進行定位并將對應(yīng)部位的圖像切割出來,以便其他功能模塊做進一步的處理。
利用姿態(tài)估算法可以獲得圖像中人體關(guān)鍵點位置。獲得關(guān)鍵點后,以這些關(guān)鍵點為依據(jù)進行人體部位的切割。在進行切割時,依據(jù)的人體關(guān)鍵點是人體的右耳、左耳、右肩、左肩、右髖和左髖。
我們將人體頭部的切割寬度與高度定義如下:
5 結(jié)束語
本文對Openpose姿態(tài)估計算法進行了改進,通過將人體檢測以及人體區(qū)域融合算法相結(jié)合,解決了Openpose算法在某些情況下在無人區(qū)域誤檢出關(guān)鍵點的問題。之后我們在視頻監(jiān)控系統(tǒng)中使用改進的Openpose算法,并通過改進的Openpose算法獲得人體的關(guān)鍵點位置,然后根據(jù)關(guān)鍵點的位置對人體的身體部位進行切割,為視頻監(jiān)控的人臉識別模塊和衣帽識別模塊提供了準確的人體頭部和身體部位圖像。
參考文獻(References):
[1] PAPANDREOU G, ZHU T, KANAZAWA N, et al.Towards Accurate Multi-Person Pose Estimation in the Wild[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. Honolulu, Hawaii: IEEE,2017:4903-4911