劉逸康 熊新紅,, 林培元 楊晶明 馮 偉
1武漢理工大學交通與物流工程學院 武漢 430063 2美利林科技有限公司 黃石 435000 3中國科學院深圳先進技術研究院 深圳 518055
隨著我國經濟的快速發(fā)展,進出口貿易正在逐年增加,對碼頭吞吐能力和裝卸效率的要求也大大提高。岸邊集裝箱起重機(以下簡稱岸橋)是港口最大的建設投資部分,是關乎港口裝卸效率的關鍵設備[1]。在碼頭岸橋生產作業(yè)事故中,有57%以上與人的因素有關[2],且這種比例有明顯上升的趨勢。因此,保證岸橋司機的規(guī)范化操作,避免不規(guī)范操作行為的發(fā)生,對于提高港口作業(yè)效率具有重要意義。
當前,基于司機行為的安全管理主要通過事前操作培訓、現場巡查、視頻監(jiān)控等方法,干預并約束工人進行安全的生產操作。趙勇等[3]建立岸橋司機基本動作序列和HCR模型提高岸橋司機的可靠性,進而提高生產效率;施笑畏等[4]利用模糊算法構建橋吊司機操作行為規(guī)范庫,為橋吊司機駕駛員培訓提供重要依據;倪麗莎等[5]采用VC嵌入OpenGL技術,設計了起重機安全監(jiān)管信息系統,為作業(yè)現場人與物的精細管理提供依據。
然而,現場安全巡查通常需要安全員或技術員長時間對工人作業(yè)行為進行觀察,費時費力,且觀察區(qū)域有限,不免出現遺漏的情況。此外,雖然視頻監(jiān)控覆蓋區(qū)域較大,但也需要對視頻進行人工判斷。因此,本文提出了一種基于主動式人體姿態(tài)識別的集裝箱起重機司機危險操作預警方法,能對司機生產行為進行自動識別,實時監(jiān)控作業(yè)安全并給出判斷意見,指導司機進行安全和合規(guī)生產。
人體姿態(tài)估計[6]方面的研究實際細分為2部分,單人姿態(tài)估計和多人姿態(tài)估計。人體姿態(tài)估計較為靜態(tài)概念,在單幀圖像的基礎上對人體預設的各關節(jié)做預測,得到1組預測的坐標點集,最終在原圖中進行可視化操作。本文聚焦于單人人體姿態(tài)估計,具體為集裝箱岸橋司機作業(yè)場景下的單工人作業(yè)姿態(tài)估計,輸入為單幀RGB圖像,喂送進姿態(tài)預測網絡,基于工人各個肢體的協作是否符合標準[7],給出各個關節(jié)的預測坐標,再與人工標注的真實坐標進行比對,計算損失函數用以衡量預測的準確度。
當前運用于岸橋司機作業(yè)的樣本數據集較少,而在新的作業(yè)場景下重新制作一個新的數據集需經過數據采集、數據清洗處理、數據篩選、數據標注等步驟,這期間每一個步驟都需要耗費大量的人力物力財力,成本過于高昂[7]。主動式學習(Active Learning)很好地解決了這一難題,其致力于研究如何通過標記盡可能少的樣本來獲得盡可能多的性能提升,契合當前岸橋司機作業(yè)的應用場景。
主動式學習采用基于池(Pool-based)的熵值袋查詢算法(Entropy query-by-bagging)。基于池的判別方法會同時維護2個數據池,已標注池(Labeled Pool)和未標注池(Unlabeled Pool)。每次循環(huán)開始都會從未標注池中批量提交一定的數據到判別器中,選中最具信息量的數據進行標注,最后加入到已標注池中進行訓練。同時,熵值袋查詢算法的基本思路是使用可獲得標記的樣本集合訓練一組分類器,以構成判別委員會,決定未標記池中數據的分類,選出最具信息量的數據。其中最具信息量的判別依據是投票熵[8]。
如圖1所示,熵值袋查詢算法先從初始已標注池中選取k個訓練集,然后根據這些訓練集訓練出k個分類器,使用這些分類器對未標注池中的每一個數據進行分類標記,從而每一個樣本都會有k個標簽,使用這些標簽來衡量某一樣本的信息熵值[9]。
圖1 熵值袋查詢算法
投票熵為
所有分類器模型的概率值相加,即得到投票熵。當所有的分類模型對樣本所屬于的類別都相同時HBAG(xi)=0,說明此未標注的數據與已標注數據池中的數據高度相似,將它加入到已標注池中加以訓練很可能不會對模型訓練有正向幫助。投票熵HBAG(xi)越大,說明已有分類器之間的分歧越大,這類數據的不確定性就越大,將它標注好加入到已標注池內進入下輪訓練則越能幫助模型優(yōu)化。
主動式學習框架對于本文的人體姿態(tài)估計問題并非完美契合。作業(yè)場景下的危險預警需要第一時間作出判斷,而運行單人體姿態(tài)估計網絡的預測延遲為17幀左右,如果主動式學習框架的參數量過大,進一步大幅增加延遲,工人的生命安全就難以得到保障[10]。為此本文提出了一種基于池的主動式學習判別框架,節(jié)省了數據標注的成本,加快人體標注框架對于新場景的適應速度[8]。
圖2描述了基于池的主動式學習框架流程??傮w框架的輸入為RGB圖像,輸出為人體關鍵節(jié)點的坐標集,一共有13個關鍵節(jié)點,還輸出數據為已標注數據的概率值[11]??傮w一共分為4個階段。
圖2 基于池的主動式學習框架
1)未標注池和已標注池中的數據一同輸入到共享編碼器中進行特征提取,同時提取2類數據的特征,共享編碼器的處理思想與Open-pose模型中使用VGG的想法類似,將共享特征中提取到的特征進行卷積,得到1組不同尺度的特征值。
2)已標注數據的特征直接進入人體姿態(tài)網絡,輸出人體姿態(tài)預測結果(13個身體關鍵節(jié)點的坐標點集),然后進行可視化。
3)經過人體姿態(tài)檢測網絡提取進一步特征之后,已標注數據流在經過人體姿態(tài)預警預測模型判定動作危險等級,綠燈為安全,黃燈為警示,紅燈為危險動作。
4)主動式判別器的輸入同時含有未標注與已標注的數據流,輸出所選數據是已標注數據的概率值,概率值越高,說明該數據與已標注數據集中的數據越相似,這種數據對網絡模型性能的提升幫助越小,概率越低說明模型之前可能沒有見過這種信息類別的數據,對網絡性能提升的幫助就會越明顯。
經過碼頭實地調研,基于可探測性、科學性的特點,將司機存在不安全行為整理,如未佩戴安全帽、開始作業(yè)前未鳴笛等行為可能會誘發(fā)危險,但不會立即對生產產生危害,故劃分為警示行為。作業(yè)時單手操作設備、在作業(yè)平臺內使用手機、操作時未面向設備、操作手柄進行塔臂快速回轉動作等行為都可能立即造成生產事故,故劃分為危險操作。其余正常工作姿態(tài)都劃分為安全操作,具體分類如表1所示。
表1 不安全作業(yè)行為
危險等級預警指的是在完成人體姿態(tài)預測的基礎上,對姿態(tài)是否可能誘發(fā)危險進行風險等級判斷。一共分為3個級別,0為危險,1為警示,2為安全。如圖3所示,工人的姿態(tài)分別屬于危險、警示、安全操作。
圖3 操作危險等級示意圖
本危險等級判斷網絡的特征提取部分直接使用人體姿態(tài)估計階段輸出的128維度的特征圖。將特征圖輸入到全連接層,轉換為特征向量,之后經過分類網絡的處理,輸出分類結果。具體網絡參數如表2所示。
表2 危險等級判斷網絡
如表2所示,128×46×46的特征圖輸入到危險等級判斷網絡當中,最終輸出一個3×1×1的特征向量,分別對應著3個危險等級的可能性,將這個概率值使用Sigmoid函數處理,映射到0~1之間,便于觀測計算。
圖4為危險等級判斷系統的運行流程圖。使用RealSense采集到作業(yè)工人的圖像后,輸入到共享特征提取器提取基本特征,然后輸入到危險級別判斷網絡進行危險判斷,輸出分類結果[12]。
圖4 危險等級判斷系統運行流程圖
具體學習參數如表3所示。由于硬件條件有限,顯卡顯存不夠大,每次輸入到網絡中的圖像數量為10張;為了防止學習率過大,導致梯度爆炸,基礎學習率為5×10-5;權重值初始值為5×10-4;權重值修正初始值為0.01;主動式學習框架數據篩選輪數共10輪。
表3 實驗參數
在本文場景下,面向人體姿態(tài)預測實驗由3個主要模塊構建,RGB數據采集模塊、神經網絡預測模塊、人體姿態(tài)評估模塊。系統的輸入為RGB三通道數據,如果傳入PNG格式的數據,需要將其額外的透明度通道進行處理,最終轉碼成RGB格式。系統輸出為預測體姿態(tài)與標準姿態(tài)庫直接的匹配損失值。人體姿態(tài)評估模塊工作時,可得網絡模型給出的最佳人體姿態(tài),首先判斷其合法性,然后根據制作的標準人體姿態(tài)庫以及損失函數,計算評估損失,損失值越小,說明預測值與真值之間的差距越小,預測結果越準確。
本實驗所有的網絡訓練以及數據采集處理都是基于Python語言。模型的搭建與訓練使用Pytorch框架,實驗環(huán)境均在Ubuntu 16.04的基礎上建立1個獨立的Docker容器[13]。
輸入設備采用的攝像頭為RealSense相機的RGB部分,真實場景下的應用使用的CPU為Intel CORE i5-8600,GPU為NVIDIA GTX 1050Ti,顯存為4 G,模型平均估計時間為15.3 fps。實驗使用的拍攝桿長度為1.2 m(見圖5a),側向面對岸橋司機(見圖5b)。關于攝像頭的自身參數,RealSense擁有2000萬像素的RGB攝像頭,拍攝最大實時幀率為90 fps,最大幀率下的分辨率可達848×480,在30 fps的速度下清晰度可達2 000萬像素,焦距在3.1 mm以下,接口為USB 3.0。
圖5 拍攝示意圖
利用Microsoft COCO數據集與碼頭內采集的工人作業(yè)視頻資料作為擴充訓練數據集進行主動式人體姿態(tài)識別模型訓練。
圖6為在COCO擴充數據集上的人體姿態(tài)精確度實驗結果,其中橫軸表示訓練輪數,縱軸表示準確率??梢园l(fā)現在0~25輪(Epoch)訓練過程中,識別精度有較大幅度的增長;在25~150輪,精確度開始緩慢上升,期間有一定波動,幅度在可接受范圍內;在150~200輪時,識別精度開始趨于平穩(wěn)。數據集劃分出80%作為訓練數據集,20%作為測試數據集[14]。
圖6 COCO擴充數據集上的精確度實驗結果
由圖6可知,人體姿態(tài)預測模塊在經過訓練之后,最終的檢測準確率保持在80%左右浮動。因此,如果一種主動式學習策略能夠使最終的準確率達到80%,說明這種策略有存在的意義,因為其在節(jié)省大量標注成本的同時,訓練出了同樣性能的網絡。
圖7為模型訓練200輪之后的背身狀態(tài)人體姿態(tài)預測結果??梢园l(fā)現這種情形下光線狀態(tài)良好,人體姿態(tài)沒有遮擋,所以模型的預測精度很高,幾乎所有的人體關鍵節(jié)點都附著在了正確的位置上。
圖7 人體姿態(tài)識別
如圖8所示為危險分級實驗可視化的結果,圖8a中司機作業(yè)時未面向前方,十分危險,網絡模型將其分類為危險操作;圖8b中司機作業(yè)時未佩戴安全帽,但不至于立刻發(fā)生險情,網絡模型將其分類為警示操作。圖8c中為正常操作,網絡模型將其分類為安全。
圖8 操作危險分級實驗可視化
本文提出了一種適用于人體姿態(tài)估計的主動式判別器,能對數據信息量進行有效判別,從而找到未標注池數據中與已標注池數據最不相似的數據進行標注;接著提出了一個輕量級的人體姿態(tài)估計網絡,能對岸橋司機作業(yè)場景的工人人體關鍵節(jié)點進行識別檢測,檢測準確率達到80%以上;最后依據主動式人體姿勢估計判別器設計了危險等級判斷模型,在人體姿態(tài)預測的基礎上對司機作業(yè)姿態(tài)危險性進行評估分級??梢园l(fā)現,在光照條件良好的情況下,人體關鍵節(jié)點預測和操作危險等級分類十分精準,實時監(jiān)控作業(yè)安全,本操作預警方法能指導司機進行合規(guī)生產操作,對提高港口生產效率,保障作業(yè)安全具有積極意義。