?

行人檢測和姿態估計系統幀數優化*

2023-05-12 02:25戶慶凱萬舒暢朱命冬
計算機與數字工程 2023年1期
關鍵詞:攝像頭姿態分辨率

戶慶凱 萬舒暢 朱命冬

(河南工學院計算機科學與技術學院 新鄉 453000)

1 引言

通過對現有行人檢測[1]和姿態估計系統[2]進行了研究,現在的基于機器學習,視覺技術應運而生的行人檢測和姿態估計系統在運行在不同配置的計算機上時會有較大的效果差異,不同性能的計算機,可能會出現幀數過剩,精確度不夠,或者精確度足夠,卻幀數過低,那以實現行人檢測和姿態估計的實時性。因為系統的默認解決方案不能完美地適配在各種不同的計算機上,所以在一臺計算機上進行了多種不同的配置方案,找到一種幀數精確度最高的解決方案。

2 相關工作

對于行人檢測與姿態估計[3]的應用,CVPR 2016 Convolutional Pose Machine (CPM) 和CVPR2017 realtime multi-person pose estimation 算法是其基礎,兩種算法的模型效果很好,并且取得了較好的魯棒性,當行人被遮擋了一部分后還是能夠估計出來。

1)CMP[4](單人姿態估計)的模型采用的大卷積核來獲得大的感受野,這對于推斷被遮擋的關節是很有效的。

整個算法流程:

(1)首先對圖像中出現的所有人進行回歸,回歸各個人的關節的點;

(2)然后根據center map 來去除掉對其他人的響應;

(3)最后通過重復地對預測出來的heatmap 進行refine 得到最終的結果,在進行refine 的時候,需要引入中間層的loss,從而保證較深的網絡仍然可以訓練下去,不至于梯度彌散或者爆炸。

2)realtime multi-person pose estimation(多 人姿態估計)[5]算法是基于CMP 構造的,所以計算量較大,需要較好計算性能的顯卡進行計算。該網絡的結構與CPM 很類似,也是通過CPM 的方式先將所有人的關節點都回歸出來,然后再對這些關鍵節點進行劃分,這樣就可以把關節分配到每個人。

以下是幾種常見的人體姿態識別算法。

2.1 DensePose

2018 年2 月Facebook 開源了人體姿態識別系統DensePose[6]。Facebook公布了這一框架的代碼、模型和數據集,同時發布了DensePose-COCO,這是一個為了估計人類姿態的大型真實數據集,其中包括了對5萬張COCO圖像手動標注的由圖像到表面的對應。這對深度學習研究者來說是非常詳細的資源,它對姿態估計、身體部位分割等任務提供了良好的數據源。

DensePose 的論文中提出了DensePose-RCNN,這是Mask-RCNN 的一種變體,可以以每秒多幀的速度在每個人體區域內密集地回歸特定部位的UV坐標。它是基于一種能將圖像像素通過卷積網絡映射到密集網格的系統——DenseReg。模型的目標是決定每個像素在表面的位置以及它所在部分相對應的2D參數。

DensePose 借用了Mask-RCNN[7]的架構,同時帶有Feature Pyramid Network(FPN)的特征,以及ROI-Align 池化。除此之外,他們在ROI 池化的頂層搭建了一個全卷積網絡。

2.2 OpenPose

OpenPose[8]是由卡內基梅隆大學認知計算研究室提出的一種對多人身體、面部和手部形態進行實時估計的框架。

OpenPose 同時提供2D 和3D 的多人關鍵點檢測,同時還有針對估計具體區域參數的校準工具箱。OpenPose可接受的輸入格式有很多種,可以是圖片、視頻、網絡攝像頭等。同樣,它的輸出格式也是多種多樣,可以是PNG、JPG、AVI,也可以是JSON、XML 和YML。輸入和輸出的參數同樣可以針對不同需要進行調整。

2.3 Human Body Pose Estimation

該模型利用MPII[9]人類姿勢數據集進行訓練,這是一個內容十分豐富的數據集,專門針對人類姿態估計。目前只有TensorFlow的實現。

這項研究將人類姿態估計的任務應用到真實的圖片中,該方法既可以進行動作識別,也能進行估計,與之前先檢測人類動作再對此進行推測的技術有所區分。在實施過程中用到了基于CNN 的探測器和整數線性規劃法。

2.4 UniPose

基于“瀑布”收縮空間池架構(WASP),Artacho 等提出了一個統一的人體姿態估計框架(UniPose)[10]。UniPose 不需要單獨的分支來進行對邊界框和關節檢測,結合上下文分割和聯合定位功能,確定了人體檢測的關節點和邊界框的位置。在不依賴統計后處理方法的情況下以高精度估計人體姿勢。

默認的openpose[11]參數和自己電腦的配置不完全匹配,會導致電腦性能資源的浪費或溢出,導致軟件在運算處理行人態勢時,無法充分使用電腦性能,無法跑出最大FPS。甚至有時因為參數設置不當和優化不足,會導致FPS 數值非常低。針對openpose 默認的參數進行優化,使程序跑的過程中,將電腦性能發揮到極致,將沒必要的處理減到最少,處理精度和震蕩率減小到最合理范圍,open?pose 的默認處理分辨率的精度較高,識別精度很高,但如果GPU 性能不好的話,就會讓FPS[12]非常不理想。本文結合這些問題進行分析和調試,尋找最優的參數解決方案。

3 平臺設計

本系統平臺的硬件部分包括一部手機、一臺GPU性能較好PC機,手機進行視頻錄制和拍照片,把錄制好的視頻和圖片導入到PC 里,PC 端利用OpenPose 系統進行處理,如圖1。手機端和電腦端分別下載DroidCam,此軟件可以實現通過無線網絡,把手機作為PC端攝像頭的功能,將電腦和手機連接好,實現實時的攝像畫面功能,PC 端利用OpenPose 系統,進行實時攝像畫面人體姿態識別,如圖2。

圖1 視頻圖片處理流程

圖2 攝像實時處理流程

4 系統實現

綜合前面的開發環境搭建和算法分析,本章主要任務是設計并實現基于OpenPose[13]的圖片、視頻和實時攝像頭的人體姿態識別系統。深度學習訓練數據集模型文件采用預先訓練好的COCO[14]模型,通過OpenPose 對圖片、視頻、實時攝像頭、進行姿態識別和圖片、關節點信息的輸出。

4.1 手機作為攝像頭與電腦連接

手機端和電腦端各自下載DroidCam 軟件,從而手機可作為電腦的攝像頭。

1)下載手機端DroidCam運行如圖3。

圖3 Android端DroidCam運行

手機屏幕上顯示的WIFI IP 為手機的IP 地址,Device IP為端口號。

2)下載電腦端DroidCam運行如圖4。

圖4 電腦端DroidCam運行結果

電腦端輸入手機端的IP 地址和端口號,如圖5。

圖5 輸入界面

將上面手機上的IP 地址和端口號輸入電腦端的對應位置,下面的Audio 可以設置是否通過手機錄制聲音。

4)連接后的效果如圖6。

圖6 連接效果

點擊“Start”后手機與電腦連接,手機攝像頭的畫面被同步到電腦上,視頻延遲很低,清晰度流暢度也不錯,電腦端視頻也是以攝像頭視頻流的方式被調用的,方便后面對調用攝像頭時,能夠調用到這個視頻流。

4.2 對圖片進行人體姿態識別處理

1)選取一張含有人物的圖片,如圖7。

圖7 人物圖

2)輸入命令行指令,輸入圖片地址和想要將處理好的圖片輸出的地址,如圖8。

圖8 指令圖1

其中”binOpenPoseDemo.exe”為運行OpenPose的命令,--write_images examples3”表示將處理的數據以圖片格式輸出,輸出地址為”examples3”。--image_dir examples2”表示處理的數據為圖片,讀取地址為”examples2”。

3)輸出的人體姿態圖像如圖9。

圖9 人物姿態識別圖

4.3 對圖片進行人體面部識別和手部識別

1)輸入命令行指令如圖10。

圖10 指令圖2

其中“--face”表示啟用人臉姿態識別,“--hand”表示啟用手部姿態識別,--face_net_reso?lution“256×256”表示面部識別的識別分辨率為‘256×256’,--hand_net_resolution“256×256”“表示手部姿態識別的識別分辨率為‘256×256’。

2)運行效果如圖11。

圖11 人體姿態面部手部識別圖

4.4 對視頻進行人體姿態識別

1)選取一段人物清晰的視頻如圖12。

圖12 人體視頻動圖

2)輸入命令行指令如圖13。

圖13 指令圖3

視頻地址為“examplesmediammexport162703 4-098799.mp4”,“write_images_examplesmedia_out”為設置輸出格式為圖片,輸出地址為“examplesme?dia_out”。

3)輸出的人體姿態圖片如圖14。

圖14 圖片輸出圖

因為視頻通過處理只能輸出為逐幀的圖片,所以此時該文件夾中輸出了兩千多張圖片,是逐幀處理輸出的。

4)逐幀圖片合成視頻

通過pr 等視頻剪輯軟件,將導出到“exam?plesmedia_out”路徑下的2847張進行視頻合成。

5)合成后視頻效果如圖15。

圖15 視頻合成效果動圖

6)視頻人體識別流程圖如圖16。

圖16 視頻處理流程圖

4.5 攝像頭實時人體姿態識別

1)手機作為攝像頭進行連接

手機端電腦端下載DroidCam 軟件,電腦端輸入手機端的IP 地址和端口,進行連接,效果如圖17所示。

圖17 攝像頭連接圖

2)輸入命令行命令,如圖18所示。

圖18 指令圖4

3)運行結果為如圖19。

圖19 實時人體姿態識別動圖

5 系統優化

5.1 攝像頭調用錯誤

在啟用攝像頭實時運行時,會出現攝像頭調用錯誤的情況,調用的不是自己想調用的手機攝像頭,而是電腦攝像頭,如圖20所示。

圖20 系統默認調用攝像頭

在運行時,需要將攝像頭指定為數組中的第二個攝像頭,如圖21所示。

圖21 指令圖5

改過攝像頭后運行程序如圖22。

圖22 改后攝像圖

將攝像頭改為1 后,OpenPose 的運行可以正常顯示手機作為攝像頭傳入的畫面。

5.2 運行時內存溢出

獨立運行Pose[15]模式時,OpenPose可以正常運行,但將face 和hand 添加進來時,程序就會出現溢出如圖23。

圖23 內存溢出提示圖

第6 行顯示“out of memory”表示內存溢出了。經過查詢研究發現,OpenPose 在默認情況下,對pose、face、hand 的解析分辨率設置的較高,設置成小一點的分辨率可以解決這個問題。對pose、face、hand重新設置分辨率參數,如圖24。

圖24 重新設定分辨率圖

運行效果如圖25所示。

圖25 人體臉部手部姿態識別動圖

5.3 優化調試

經過幾次討論和嘗試,鎖定了flags.hpp[17]文檔,里面有每個參數詳細注釋,如圖26。

圖26 文檔注釋圖

其中主要參數:

Pose:身體骨骼關鍵點檢測模式;

Face:臉部關鍵點檢測模式;

Hand:手部關鍵點檢測模式。

在不同模式下設置不同分辨參數,導致運行幀率不同和人體識別精度不同。通過調整參數,來提高骨骼還原度、面部還原度、手部還原度。通過實驗設置不同分辨率參數來找到一套最優參數設置。

發現是電腦GPU 配置太差,無法運行默認狀態的pose+hand/face[16],以上報錯信息也是內存溢出。

解決方案:

調整網絡的分辨率,其調整如表1。

表1 分辨率調整表格

實驗結果:

默認情況下如表2所示。

表2 默認情況表

第一次調整如表3所示。

表3 第一次調整表

第二次調整如表4所示。

表4 第二次調整表

第三次調整如表5。

表5 第三次調整表

由以上實驗結果,對每個列表的分辨率進行實驗,統計每個列表分辨率下運行的幀率,綜合考慮流暢性和識別精度兩方面,得到了一套比較合理的分辨率方案,如表6所示。

表6 最終方案表

為了使得行人檢測和姿態估計系統在精確度、時效性以及幀率之間達到了一個良好的平衡,通過實驗,本文總結出一套全新的參數優化策略:為了得到一套比較合理的分辨率方案,可以快速地去設置參數,初始分辨率為256*256,針對net_resolution模型,可以調整pose、pose+face、pose+hand、pose+face+hand 的參數;針對face_net_resolution 模型,只需要去調整post+face 參數或pose+face+hand 參數;針對hand_net_resolution 模型,只需要調整pose+hand或pose+face+hand參數。

6 結語

本論文研究了在各種不同檢測需求下和不同硬件環境下,最優的配置參數。實現性能利用最大化。

本文在基于深度學習的行人檢測姿態估計系統的基礎上主要做了以下工作:

1)對與不能調用其他非系統攝像頭的問題進行研究改進。

2)對不同精度需求和不同配置的電腦進行參數優化。

3)總結出一套全新的參數優化策略。

人體姿態識別做為一個研究方向,以后一定會進入我們每個人的生活,可以預測這個技術以后一定會改變我們的生活方式,為人類帶來巨大貢獻。

猜你喜歡
攝像頭姿態分辨率
浙江首試公路非現場執法新型攝像頭
攝像頭連接器可提供360°視角圖像
攀爬的姿態
EM算法的參數分辨率
原生VS最大那些混淆視聽的“分辨率”概念
全新一代宋的新姿態
跑與走的姿態
基于太赫茲技術的新一代攝像頭及其在安防領域的應用探討
基于深度特征學習的圖像超分辨率重建
一種改進的基于邊緣加強超分辨率算法
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合