基于深度學習技術的人員行為異常檢測系統設計
《基于深度學習技術的人員行為異常檢測系統設計》由會員分享,可在線閱讀,更多相關《基于深度學習技術的人員行為異常檢測系統設計(48頁珍藏版)》請在裝配圖網上搜索。
1、本科畢業論文(設計)專用 本科畢業論文(設計) 論 文 題 目 : 基于深度學習技術的人員行為異常檢 測系統設計 摘 要 隨著人工智能領域技術的不斷發展,人工智能與制造業的融合應用已具備一定的基礎。 現代工廠中人員基數較大,人員行為狀況復雜,發生突發意外事件的情況可能性較大,為 了方便企業對員工異常行為的判斷,提高工廠安防能力,本設計擬設計一款現代工廠作業 人員行為異常檢測系統。 本設計利用深度學習技術,對數據進行訓練與驗證,依靠 open pose 框架對權重進行 設置,以達到視覺檢測的效果,使用 Open Po
2、se 在做動作識別的時候可以有效的提高動作 識別度,增加視覺識別的準確性和數據交互能力。同時,利用 Open Pose 算法對目標進行 檢測與數據分析,并對所檢測的圖像中的人體骨架的關鍵信息點進行目標檢測和數據分析, 將算法檢測出的圖像中人體骨架進行信息關鍵點標注,將骨架關鍵點連接形成一個類似火 柴人的骨架,然后計算每一個關鍵點的夾角,以此來判斷人體動作的姿態顯示。 本設計系統通過 Visual Studio Code 軟件搭載 python3.75 進行程序設計實現對人體姿態 識別,并進行了實驗驗證,通過實驗表明:本系統結構簡單,設備需求量減小、數據集中, 系統穩定性好,與傳統人體姿態識別
3、方法相比,數據交互性強,使用成本較低,數據量較 小。 關鍵詞:Open pose;姿態識別;人體姿態;目標檢測 Abstract With the continuous development of artificial intelligence technology, the fusion application of artificial intelligence and manufacturing industry has a certain basis. In modern factories, the personnel base is large,
4、 the personnel behavior is complex, and the possibility of accidents is large. In order to facilitate the enterprise to judge the abnormal behavior of employees and improve the factory security ability, this design intends to design a modern factory personnel behavior abnormal detection system. T
5、his design uses deep learning technology to train and verify data, and relies on open pose framework to set weights, so as to achieve the effect of visual detection. Open Pose can effectively improve the degree of motion recognition, increase the accuracy of visual recognition and the ability of da
6、ta interaction when doing motion recognition. At the same time, the Open Pose algorithm was used for target detection and data analysis, and the key information points of human skeleton in the detected images were detected and data analysis. The key information points of human skeleton in the images
7、 detected by the algorithm were marked, and the skeleton key points were connected to form a skeleton similar to that of a match man, and then the included Angle of each key point was calculated. To judge the posture display of human movement. In this design system, the Visual Studio Code softw
8、are is equipped with python3.75 for program design to realize the recognition of human posture, and the experimental verification is carried out. The experiment shows that: The system has the advantages of simple structure, reduced equipment demand, stable data, good system stability and strong da
9、ta robustness. Compared with traditional human body posture recognition methods, the data interaction is strong, the use cost is low, and the data volume is small. Key words: Open pose;Gesture recognition;The body posture;Target detection 目 錄 1 引 論 1 1.1 研究目的及意義 1 1.2 國內外研究現狀 3
10、 1.3 設計的主要內容 4 2 行為異常檢測系統總體方案 5 2.1 系統需求與分析 5 2.2 系統總體方案設計 5 3 系統硬件設計 6 3.1 硬件方案設計 6 3.2 深度相機選型 7 3.3 視覺板卡選型 8 3.4 聲光報警裝置選型 10 3.5 光源裝置選型 11 4 行為異常檢測系統通訊設計 13 4.1 通信協議的選擇 13 4.2 深度相機與 JETSON NANO 板卡 TCP/IP 通訊 13 4.3 深度相機與 JETSON NANO 板卡 CSI 通訊 14 5 行為異常檢測系統軟件設計 16 5.1 軟件方案設計
11、 16 5.2 數據采集 18 5.3 數據集收集與圖片標注 18 5.4 圖片預處理 19 5.5 手部特征算法及程序設計 22 5.6 身體特征算法及程序設計 23 5.7 人體姿態識別算法及程序設計 25 6 行為異常檢測 27 6.1 識別權重準備 27 6.2 檢測系統識別準備 27 6.3 行為異常檢測系統 29 7 結 語 33 參考文獻 34 致 謝 35 附 錄 36 附錄一 36 附錄二 42 1 引 論 1.1 研究目的及意義 1.1.1 研究目的 隨著經濟發展,社會體系的逐步完善,社會治安的能
12、力得到大幅度提升,在 2020 年 11 月國家信息中心提出《全觀智慧城市白皮書》,首次提出全光智慧城市的發展理念。 隨著這一政策推出,各地方開始紛紛跟進“智慧城市”建設項目,由各大城市開始向鄉鎮 擴散。智慧城市是運用物聯網、云計算、大數據、空間地理信息集成等新一代信息技術, 促進城市規劃、建設、管理和服務智慧化的新理念和新模式。 至 2010 起年我國安防行業總收入已達 2350 億元,并逐年快速增長態勢。2013 年我 國安防行業總收入達到 3800 億元。到了 2016 年我國安防行業總收入達到了 5400 億元, 截止至 2017 年底,我國安防企業數量大約有 2.1 萬家,行
13、業總收入增長至突破 6000 億元, 年均增長 14.4%,全行業實現增加值 1960 億元,年均增長 12.7%。2018 年我國安防行業 總收入將達到 6678 億元左右。2020 年我國安防行業總收入將突破 8000 億元,達到了 8212 億元左右,如圖 1.1 所示。 圖 1.1 視覺市場分析 智能安防市場空間廣闊,視頻監控高增速。AI 技術賦予安防感知和認知能力,從人 臉識別、視頻行為分析到后端有效數據的提取及挖掘,協助解決安防場景中諸多復雜、動 態問題,推動安防行業智能化發展。據預測,全球智能視頻監控市場 2020-2025 年復合增 1 速為
14、7.1%,2025 年市場規模將達到 318 億美元,如圖 1.2 所示。 圖 1.2 視覺市場規模示意圖 由于深度學習算法在在語音和圖像識別領域的重大突破,通過攝像頭識別人臉開始成 為現實。伴隨安防監控系統的越發龐大,監控數據也隨之而來,針對視頻監控的中出現的 行為異常時間的檢測與事故發生的誘導因素,這需要安防人員時時刻刻的觀察各個監控數 據,但是人的精力是有限的,無法時時刻刻保持高度集中的注意力進行觀察各監控數據, 因此會產生各種因素導致漏檢與誤檢等情況,從而導致安防能力下降。如今,工廠人員密 集,人員活動范圍變大,在此過程中突發的異常行為事件就變得各式各樣,有的行為異常 很難去辨
15、認,甚至難以察覺,如此以來,大大的增加了視頻監控技術的技術難度。針對這 種情況本設計提出一種基于深度學習技術的現代工廠作業人員行為異常檢測系統設計,用 以輔助監控人員的工作,以此減少監控工作人員壓力提高安防能力。 5G 帶來了網絡環境的全新變革,多項智慧城市的標準體系的落地、加上 AI 技術條 件的逐漸成熟,智慧城市建設有望將進入快車道。人工智能改變了機器視覺在物理世界朝 數字世界轉換的方式,這兩大技術在安防領域的融合應用,目前正在構成“5G+AI+安防” 的全新的組合,助推視頻監控行業邁向超高清、AI 智能的新階段。 1.1.2 研究意義 異常事件檢測技術(或者稱為行為異常檢測技術)的
16、研究能不斷推進智能化技術的發 展,這對促進社會和諧意義重大。在社會治安方面;可以對視頻監控地點進行實時監控, 當檢測點發生打架,搶劫,斗毆等做出有違社會治安穩定的異常行為時通過視覺檢測進行 判斷其異常行為模式并及時向相關部門進行數據交互提醒,以此可以大幅度提升該地區安 防效率,有效避免惡性事件的發生;在交通監管方面,行人橫穿馬路,發生車禍,都可以 通過行為異常檢測技術進行監控識別;在工廠生產方面,能檢測出檢測區的作業人員發生 9 跌倒,違規攀爬,碰撞和突發性的異常行為動作進行報警提示,使監控人員第一時間注意 到,并給予解決,在關鍵時刻甚至可以挽救工作人員的生命;行為異常檢測
17、技術也可以運 用于商場,小區,銀行,景點園區,博物館等場景,通過及時有效的檢測監控中的異常行 為,降低突發事件造成的危害。將視頻識別與動作檢測,這種高效的行為異常檢測技術運 用在安防技術上,能減少人力物力 ,對群眾與社會治安提供一定量的保障。所以,對針 對這種行為異常檢測算法的研究顯得極為急迫和重要。 1.2 國內外研究現狀 1.2.1 國外研究現狀 人工智能技術通過搭載著大數據時代的帆船得到了飛速的發展,監控安防系統也越來 越智能化普及化,如圖 1.3 所示。研究人員基于這個實驗,發現動作和骨骼關鍵點的關系, 于是開始針對骨骼關鍵點進行研究。2019 年曾經開源 Open Pose 的
18、卡內基梅隆大學(CMU) 公布了 ICCV 2019 論文 Single-Network Whole-Body Pose Estimation,提出一種在單一網 絡實現全人體姿態估計的算法,相對 Open Pose 大幅提高了速度。在 Open Pose 只能達到 幀率 1.6 fps 的圖像上,該文提出的算法運行幀率可達到 13.2 fps,且精度還有改進。相對 與原來的人體姿態估計,即對人體軀干、人臉、手部都進行姿態估計,這可以通過先檢測 人體軀干關鍵點,然后再針對人臉和手部進行單獨的關鍵點定位實現,這種方法需要多個 姿態估計網絡,速度并不快。 卡內基梅隆大學在 Open Pose 算法框
19、架下,使用單一網絡 實現全人體的姿態估計并在論文 Open Pose: reatime multi-person 2D pose estimation using Part Affinity Fields 基礎上進行了改進,將原本人臉、手部 Part Affinity Fields 直接合并進 入人體的 Part Affinity Fields, 進行多任務學習,實現上述功能。 圖 1.3 全球視覺市場規模分布圖 1.2.2 國內研究現狀 2022 年由國內蘇波,柴自強,王莉[7]等學者提出針對人體姿態估計模型 Open Pose 計 算量大、檢測速度慢等問題,提出了一種
20、改進 Open Pose 模型,替換其主干網絡為八度卷 積與 Mobile Net 融合而成的 Oct - Mobile Net,并優化縮減預測階段的重復分支。實驗表 明,改進模型的計算量降低為原來的 12%且檢測速度提升 300%。應用改進 Open Pose 模 型提取標準視頻與測試視頻的姿態向量時間序列,其中姿態向量由關鍵點坐標經歸一化處 理后組合得到。采用姿態向量之間的余弦距離表征單幀動作相似度,通過動態時間規整算 法計算標準序列與測試序列之間的累積距離作為序列整體相似度。該評分方法計算復雜度 低且適用于視頻 時長不一致的情況,在八段錦健身動作評估中取得了較好應用效果,具 有一定的推廣
21、應用價值,如圖 1.4 所示。 1.3 設計的主要內容 圖 1.4 姿態估計 本文提出了一種基于深度學習技術的人員行為異常檢測系統設計,通過了解深度學習 技術的人員行為異常檢測系統的組成單元,首先對深度學習技術的人員行為異常檢測系統 進行功能分析,根據功能進行設備選型,選擇適當的視覺板卡和深度相機等硬件,合理構 建空連接布局。 通過運用 Open pose 算法對讀取的圖像進行關鍵點識別方法,該方法通過輕量化 Open pose 對視頻流進行骨骼圖像提取,中間通過對得到的圖像進行姿態數據集標注,最 后再通過 COCO 模型對標注圖像進行分類訓練,將訓練出來的權
22、重文件進行分類。根據 所需要的識別狀態更換合適的權重文件,然后利用 Python3.75 結合 Visual Studio Code 編 寫深度學習系統程序,最后通過識別檢測驗證程序調試,使深度相機可以實現實時的姿態 獲取,以檢測人體姿態。 2 行為異常檢測系統總體方案 2.1 系統需求與分析 由于現在人工智能技術的發展,企業與公司對安防意識的需求增大,參考??低暫?百度對視覺安防的技術攻堅,視覺安防得到了一定量的普及,人工智能視覺識別作為安防 監控的能力得到大幅度提升。針對這一發展需求與時代發展趨勢,提出一種基于深度學習 技術的現代工廠作業人員行為異常檢測系統設計來實
23、時監測定位人體,判斷特殊時段、核 心區域是否有人員入侵;基于人體關鍵點信息,進行二次開發,識別特定的異常行為,及 時預警管控。 學習技術的人員行為異常檢測系統,技術通過相機作為視覺采集裝置,在特定的工作 區域或指定的安裝位置進行數據采集,根據分析數據自動檢測區域內是否存在異常行為, 來提高安防效率,可以通過不同場景的實際需求更換不同的采集設備與視覺處理設備來實 現不同類型的異常行為識別。 2.2 系統總體方案設計 通過在各工作地點內安裝高清視覺攝像頭,實時監控工作人員的工作狀態。通過以太 網通信,將攝像頭的數據畫面實時傳播給 Jetson Nano 板卡進行視覺處理,通過算法的深度 學習
24、將視頻中的人分為若干個點,在拼合運用模型將人體進行姿態估計,形成一個由多個 關鍵點合成的人體骨架并更具視頻傳輸回來的畫面進行實時更新用以檢測,當工作人員出 現異常行為,身體姿態發生變化,Jetson Nano 視覺處理檢測到行為異常的姿態輸出信號。 聲光報警器接收到信號后報警觸發,人體姿態示意實時在 PC 端顯示。方案如圖 2.1 所示 圖 2.1 系統方案示意圖 3 系統硬件設計 3.1 硬件方案設計 本設計主要由 4 個部分組成,分別是采集點,處理點,報警點,反饋點四個部分組成。 首先通過攝像頭進行目標進行圖像檢測,然后通過通訊進行數據交互,將數據給于視覺板
25、 卡進行視覺處理。視覺板卡將得到的數據圖像通過 open pose 算法框架進行算法識別數據 通過對比已經訓練好的權重進行數據驗證,然后通過顯示設備將圖像處理處理,圖片中每 一個都變成了一幅幅由多個關鍵目標數據信息點組成的一副火柴人形狀的人體骨架,然后 通過骨架去判斷人體姿態。當人體發生異常的時候算法會輸出一個信號,該信號經過 Jetson Nano 內置 I/O 口輸出信號,使報警裝置進行報警等工作提示,硬件方案如圖 3.1~3.2 所示。 通過本方案的設計與需求的分析結合設計需求主要硬件產品表 3.1 所示; 表3.1 硬件設計產品序列表 產品名稱 產品型號 產品數量 海康威視
26、雙目行為分析攝像機 DS-2CD8426F/B-I 4 英偉達視覺板卡 Jetson Nano 1 聯想 TF 高速存儲卡 專業版 128G 1 施耐 Schneider Electric 信號燈帶蜂鳴器 Schneider XVR 多功能 LED 信號燈 1 圖 3.1 硬件設備整體連接示意圖 3.2 深度相機選型 圖 3.2 硬件設備控制連接示意圖 傳統相機,僅支持普通監控功能,脫離不了人員值守監控范疇,不能減少人員疲勞, 松懈,短時間離開,無法支持照顧多點的常規缺陷。傳統監控的圖像不能長時間顯示。攝 像機采
27、集到的海量視頻圖像傳輸到監控中心后,值班人員很可能沒看到重要的異常情況。 因為缺乏智能因素,錄像數據無法被有效地分類存儲,數據工作非常耗時,人們很難獲得 全部信息。 ??低?DS-2CD8426F/B-I 200 萬深眸雙目行為分析攝像機,內置高性能 GPU,內嵌 專為視頻監控場景設計、優化的深度學習算法和雙目立體視覺算法,具備了比人腦更精準 的安防大數據歸納能力,可以實現穿越警戒線、徘徊、奔跑檢測、人數異常檢測、間距異 常檢測、劇烈運動檢測、離崗檢測、倒地檢測、滯留檢測等 9 項人工智能視覺檢測技術。 只需要將權重訓練好則無需二次配置,該設備采用人體仿生雙目式設計,可以像人眼由于 立體識
28、別圖像而不是簡單的二維平面識別,如圖 3.3 所示。 當設備供電開始工作時一對雙目鏡頭實時獲取同一目標檢測的場景并各自獨立生成 的兩幅圖像,通過自帶的數據計算,目標在同一個空間點時所生成的兩幅圖像的視覺差距”, 用以來定位該目標場景的深度,通過數據算法對圖片的目標檢測圖像進行生成一種立體結 構的視圖,在雙目攝像頭在工作過程中識別到需要檢測的目標后,通過計算圖像對應點間位 置偏差,獲取目標的三維信息, 瞬間完成圖像獲取,大大提高了行為分析檢測的準確性。支 持手動標定、自動標定、智能標定三種標定方式 可滿足不同場景下的參數標定并且支持 單次報警或者定時循環報警功能和多種協議接入,方便和第三方系統
29、集成。 攝像機后端接口簡潔,包含 DC36V 電源接口、RJ45 10M/100M 自適應以太網口以及 1 路報警輸入/輸出、1 路音頻輸入/輸出,實測中功耗最大 27W,無需復雜的接線和配置, 安裝簡單便捷。 通過傳統相機與深度相機進行對比,如表 3.2 所示。 表3.2 傳統相機與深度相機 傳統相機 深度相機 功能 普通監控功能 視頻監控,多傳感器協調 應用 脫離不了人員值守監控范疇,不能減少 帶有計算機人工智能分析功能,無需人 人員疲勞,松懈,短時間離開 員值守,所有值守均由計算機執行 報警 只能監控,出現警況只能事后回放,不 實時預警,出
30、現警況第一時間進行自動 能及時預警 報警 回放 回放視頻只能播放全部時刻錄像,費時 可以根據多種條件線索智能檢索錄像, 費力 快速定位 儲存 錄像只能無差別存放,大量無效數據占 報警數據和無效數據分類存放,可以根 用空間,儲存服務器投資大 據需要自動清理無效數據 資料來源:辰啟智科 所以本論文工業相機選型選擇海康威視 DS-2CD8426F/B-I 的相機,其功能強,性價比 高,能實現本設計需求。 3.3 視覺板卡選型 圖 3.3 深度相機 樹莓派 3B+是在 2018 年 pi 日(3 月 14 日)發售的目前為止樹莓派家族當中最新
31、,性 能最強,也是功耗最高的一款產品=,Raspberry Pi 3 Model B +作為 Raspberry Pi 3 系列的最 終版本,擁有 1.4GHz 64 位 4 核 ARM Cortex-A53 CPU;1.4GHz 64 位 4 核 ARM Cortex-A53 CPU;千兆以太網 over USB 2.0;1G LPDDR2;PoE 支持(Power-over-Ethernet,with PoE HAT);改進 PXE 網絡與 USB 大容量存儲啟動,如圖 3.4 所示。 圖 3.4 樹莓派 3B+板卡 Jetson Nano 是一款功能強大
32、的人工智能(AI)開發板,可助你快速入門學習 AI 技術, 并將其應用到各種智能設備。它搭載四核 Cortex-A57 處理器,128 核 Maxwell GPU 及 4GB LPDDR 內存,擁有足夠的 AI 算力,可以并行運行多個神經網絡,適用于需要圖像分類、 目標檢測、分割、語音處理等功能的 AI 應用。它支持 NVIDIA Jet Pack,其中包括用于深 度學習,計算機視覺,GPU 計算,多媒體處理,CUDA,CUDNN 和 TensorRT 等軟件庫, 以及其他一系列流行的 AI 框架和算法,比如 TensorFlow,PyTorch,Caffe / Caffe2,Keras, M
33、XNet 等,如圖 3.5 所示。 圖 3.5 Jetson Nano 視覺板卡 1-SD 卡插槽;2-40 針膨脹針頭;3-MicroUSB 接口;4-以太網口;5-USB3.0 接口;6-HDMI 輸出 端口;7-視頻接口;8-供電口;9-攝像頭連接口;10-Poe 接口 首先主板正中上面是一個很大的散熱片,1 是主存儲 SD 卡插槽;2 是 40 引腳的 CPIO; 3 是個 5V2A 的 Micro USB 接口(可以使用電源供電,或者使用 PC 連接);4 是一個 RJ45 千兆以太網接口;5 是 4 個 USB3.0 接口;6 是 1 個 HDMI 2.
34、0 視頻接口;7 是顯示端口連 接器;8 是 5V 的 DC 供電口;9 是 MIPI CSI 攝像頭連接口;10 是 Poe 接口。一般看視頻 是推薦使用 5V4A 的 DC 供電方式(使用 DC 電源需要短接 J48 跳線帽),因為電源連接 這里可以開啟 15w 的高功率模式。據說 YoloV3 的應用,電流需要 2.9A 左右,如果連接右 下角的電源口,會讓 Nano 板不斷地發熱和重啟。 通過市場常用的幾款板卡進行參數對比可知,如表 3.3 所示。 表3.3 板卡參數對比表 型號 樹莓派 3B+ Intel NCS2 神經計算棒 (僅模塊) Jetson Na
35、no 算力(INTB) - 4TOPS 7TOPS 功耗 1.4W 2W 10W 算力/功耗 - 2 0.7 重量 42g 77.8g 249.47 價格 850 900 1500 資料來源:芯板坊 本論文設計的視覺系統核心在于深度學習算法,但是深度學習的訓練加速離不開算力 的支持,Jetson Nano 開發板是我目前主打深度學習方向的開發板。所以經過對比分析我選 擇 Jetson Nano 開發板。 3.4 聲光報警裝置選型 Schneider XVR 多功能 LED 信號燈(內置蜂鳴器),作為市場中暢銷的幾款信號燈, 他的功能不容置疑,
36、尤其是 Harmony XVR 系列電動機旋轉信號燈及蜂鳴器是可視音頻信 號裝置,設計用于工廠應用、建筑車輛和公共區域。該 蜂鳴器信號燈提供 4 種不同的顏 色,并隨附可擴展照明區域的有小面的透鏡。 帶蜂鳴器的 XVR 信號燈獨特且美觀的設 計已獲得 2014 年 Red Dot 工業設計大獎。 由于靈活的電壓輸入、光模式選擇器和允許 直向和側面布線的集成橡膠基座,可以輕松安裝這些可視音頻信號裝置。且依托于電動機 LED 技術,使得使用壽命更長且免維護,可實現旋轉、閃光和閃爍 LED 等工作狀態。10 種照明模式使其易于使用且易于選擇寬電壓輸入,可滿足不同應用可以進行直向和側面布 線,如圖 3
37、.6 所示。 19 圖 3.6 Schneider XVR 多功能 LED 信號燈 簡單且易于安裝,無需使用任何工具。1m 時可調節 90 dB 蜂鳴器外部蜂鳴器音量在 70 dB 至 90 dB 范圍內可調,提供綠色、紅色、橙色和藍色,獨特的美觀設計。有小面的 透鏡可擴展照明區域,集成橡膠基座可提高 IP 等級,高達 IP65 保護等級,取決于蜂鳴 器選項。7.1G 的高抗振性,CE 認證,且符合 ROHS 標準,通過 400 mm 飛線連接,截 面為 0.57 mm2。報警信號燈主要參數如表 3.4 所示。 表 3.4 報警信號燈參數 屬性 數值
38、 電源電壓 12 → 24 V 直流 光效 閃光,旋轉 1m 距離外分貝 90dB 最小分貝 70dB 最大分貝 90dB 安裝樣式 基座安裝 透鏡顏色 紅色 資料來源:Schneider官網 3.5 光源裝置選型 光源從大類上可分為普通自然光和人造光源,由光照強度、色溫及光源的幾何形狀來 描述。在實際應用中,應優先選擇明場照明方式,從而可以抑制自然光源及外界環境的干 擾。常用光源及相關特性如表 3.5 所示。 表 3.5 主要光源類型及其特性 類型 光效(lm/W) 平均壽命/(h) 色溫/K 特點 鹵素燈 12~24 1000 2800
39、~3000 發熱量大,價格便宜,形體小 熒光燈 50~120 1500~3000 3000~6000 價格便宜,適用于大面積照射 LED 燈 110~250 100000 全系列 功耗低,發熱小,使用壽命長,價格便 宜,使用范圍廣 氙燈 150~330 1000 5500~12000 光照強度高,可連續快速點亮 激光 50000 全系列 具有良好的方向性、單色性與相干性 其中熒光燈光源作為工廠中主要照明光源具有價格便宜,適用于大面積照射等優點, 因此,常使用熒光燈作為照明光源。本課題將熒光燈作為檢測系統中識別作業人員
40、的照明 光源。如圖 3.7 所示熒光燈。 圖 3.7 大功率 LED 熒光燈 T5LED 熒光燈 T8LED 熒光燈 4 行為異常檢測系統通訊設計 4.1 通信協議的選擇 根據實際設計需求,本設計針對相機類型自主選擇 TCP/IP 通訊協議或 MIPI CSI-2CSI (Camera Serial Interface)通訊協議。 (1)CSI (Camera Serial Interface) 是 MIPI 定義的規范,用于連接攝像頭和 CPU,傳 輸攝像頭的視頻信號,最新的規范是 2012 發布的 CSI-3,使用的物理層為 M-PHY。而這 里要介紹的
41、CSI-2 規范在 2005 發布、使用 D -PHY 作為物理層。DSI(Display Serial Interface) 同樣基于 D- PHY,不同的是,它主要用于 host 將圖像傳輸給顯示設備。 (2)TCP/IP 通訊協議 TCP/IP 是用于因特網 (Internet) 的通信協議。 TCP/IP 通信協 議是對計算機必須遵守的規則的描述,只有遵守這些規則,計算機之間才能進行通信。 互聯網進行通信時,需要相應的網絡協議,TCP/IP 原本就是為使用互聯網而開發制定 的協議族。因此,互聯網的協議就是 TCP/IP,TCP/IP 就是互聯網的協議。 4.2 深度相機與 JET
42、SON NANO 板卡 TCP/IP 通訊 連接 nano 網卡槽進行以太網通訊,對以太網通過 IP 地址 mac 碼進行更改后進行連接 通信,當電腦與 nano 處于同一個網段時,即可實現通信。 該通訊模式中,前面字節為 08,后面的字節為 00 或 06,表示 IP 包或 ARP 包,通過 網線進 IP 連接設置每個設備的 IP 與 mac 和 DNS 進行通信設置,因為以太網中所有的主機 共享一個通信信道,當局域網中的攝像頭任意一臺設備發出數據后,通過交換機該局域網 中的 nano 收到該數據。通過每一個設備對應的 IP 和 mac 去對應每一個相機傳輸的數據對 nano 進行數據交
43、互,nano 讀取相機的內容進行深度學習并通過網口反饋給顯示端口,如圖 4.1 所示。 圖 4.1 TCP/IP 模型圖 4.3 深度相機與 JETSON NANO 板卡 CSI 通訊 深度相機是網絡設備,需要有通訊協議,原有的私有協議無法勝任產業合作模式,因 此行業標準化的接口由此而生。 CSI 為單向傳輸,包括一個 clock lane 和一到四個的 data lane 組成,傳輸圖像數據。采 用 D -PHY 物理層協議。在物理層之上,即是 CSI 協議層,由三層構成,每一層有著明確 的功能。這一層中,發送端接收來自應用層的像素數據,并打包成字節格式發送到下一層;
44、 在接收端,解包來自 LLP 層的數據并傳輸到應用層。 該層的主要目的是將不同像素格式(例如 YUYV, RGBA 等)都轉換成為 8bit 字節格式, 消除不同圖像格式差異,減少傳輸的復雜度。例如,對于 RGB888 格式,一個 pixel 為 24 bit, 將轉換為三個字節;RGB565 格式,一個 pixel 為 16 bit,轉換為兩個字節。而對于 RGB444, 大小為 12 bit,需要通過 padding 變成 RGB565 格式,為兩個字節,如圖 4.2 所示。 圖 4.2 CSI 協議層示意圖 Low Level Protocol(LLP)層為 CSI 協議的主要
45、功能層,不僅定義了包格式,還定義了 傳輸中使用的同步機制。在發送端,該層負責將上層傳輸過來的數據打包,添加校驗字段, 增加同步包,發送到下一層;在接收端首先校驗包的完整性,并解析各個字段,根據包類 型執行對應操作,將圖像數據傳到上一層。LLP 處理的 play load 數據為經過轉換后的純字 節數據,沒有像素概念。通過定義不同的的字段和包類型,實現一幀一幀圖像數據的傳輸。 Jetson Nano 與??狄曈X相機通訊代碼如下; import cv2 import multiprocessing as mp num = 0 def image_put(q, name, pwd, ip,
46、channel): #cv2.namedWindow(ip, cv2.WINDOW_NORMAL) global url url="rtsp://%s:%s@%s:%s//Streaming/Channels/1" \ % (name, pwd, ip, channel) cap = cv2.VideoCapture(url) # 獲取視頻幀率 fps = cap.get(cv2.CAP_PROP_FPS) print('fps: ', fps) #打印 fps 內容 if cap.isOpened(): print('HIKVISION1') print('ca
47、mera ' + ip + " connected.") while cap.isOpened(): ret, frame = cap.read()# 抓取圖片不成功再重新抓取 if not ret: cap = cv2.VideoCapture("rtsp://%s:%s@%s:%s//Streaming/Channels/1" \ % (name, pwd, ip, channel)) print('HIKVISION2') ret, frame = cap.read() frame = cv2.resize(frame, (800,600)) cv2.imshow(ip,fr
48、ame) # Press esc on keyboard to exit if cv2.waitKey(1) & 0xFF == 27: break cap.release()# 解決進程問題 def run_multi_camera(): user_name, user_pwd = "admin", "a12345678" camera_ip_l = ["10.16.14.151",] ports = ['556'] mp.set_start_method(method='spawn') # init queues = [mp.Queue(maxsize=2) for _ in
49、 camera_ip_l] processes = [] for queue, camera_ip,port in zip(queues, camera_ip_l,ports): processes.append(mp.Process(target=image_put,args=(queue,user_name, user_pwd, camera_ip,port))) for process in processes: process.daemon = True process.start() for process in processes: process.join() if
50、 name == ' main ': run_multi_camera() 5 行為異常檢測系統軟件設計 本基于深度學習技術的現代工廠作業人員行為異常檢測系統設計通過 Visual Studio Code 軟件搭載 python3.75 進行程序設計,實現對人體姿態識別。 5.1 軟件方案設計 本軟件設計主要由編譯器,依賴包,庫環境,GPU 算力驅動組成。首先在 Github 上 下載 pytorch -open pose 壓縮包進行 open pose 學習框架搭建,然后安裝 Numpy,Matplotlib, Opencv -python,Scipy,Sc
51、ikit -image,Tqdm 等依賴包文件對電腦庫環境進行配置,最后 搭載 python3.75 編譯器進行程序編譯與調試。通過在系統中安裝 VS 與 Visual Studio Code 作為程序設計軟件,配置軟件 pip 下載源地址使 Visual Studio Code 可以搜尋到所需要文件 因為程序中需要調用多種工具包和庫文件,所以需要針對 open pose 去安裝對應的工具包 與庫文件,使程序能正常運轉。 當程序開始運前時需要根據處理器選擇 CUDA 版本與 CUDNN 版本。由于算力在計算 的時候需要很強的算力,所以需要安裝 CUDNN 來配置 torch 提高計算機算力,
52、加快識別 進程。CUDNN 啟動后數據方式將會從 CPU 處理轉為 GPU 處理,理論上運行速度會提高 5 倍,如圖 5.1 所示。 圖 5.1 CUDA 示意圖 針對目前行為異常檢測這方面,常用的姿態估計算法 Alpha pose 與 open pose。首先 Alpha pose 是自上而下的算法,也就是先檢測倒人體,再得到關鍵點和骨架。因此他的準 確率、A p 值要比 open pose 高。但是缺點就是隨著圖片上的人數增加,他的計算量增大, 速度變慢。這一缺點注定他無法應用于多人的實時姿態識別,更適用于單人的精確識別, 從而不符合本設計需要滿足的工作條件。 Open Pose
53、 是基于卷積神經網絡和監督學習并以 caffe 為框架寫成的開源庫,可以實現 人的面部表情、軀干和四肢甚至手指的跟蹤,不僅適用于單人也適用于多人,同時具有較 好的魯棒性。最終結合兩則優缺點選擇更貼合設計的 open pose 算法。軟件設計流程如圖 5.2 所示。 圖 5.2 軟件設計流程圖 5.2 數據采集 由攝像頭對目標進行采集,將視頻進行取幀,圖片的清晰度將直接影響后期圖像識別 的精確度與識別速度。圖片的遮擋,目標點的缺失,關鍵信息點的重疊,圖像檢測的范圍 也將對后期的識別造成一定的影響。 通過模擬人體姿態幾種情況進行識別測試,通過對采集的
54、圖片進行判斷來判斷初期所 采集的圖片是否正常。以此來保障后期的權重訓練,提高精確度。舉例如圖 5.3 所示。 圖 5.3 姿態動作舉例 所識別的圖片的狀態與畫質直接影響識別效果,圖片關鍵點缺失和圖片清晰度不夠將 會導致位置關建點存在一定缺失,無法完全體現人體姿態情況,因此我在圖片采集的時候 需要避免這些問題。 5.3 數據集收集與圖片標注 打開標注精靈軟件,修改標注類別,如何開始標注,并保存在指定文件夾,如圖 5.4 所示。 由于標注完的輸出文件格式,還不是所需要的數據集格式,所以運行程序將其轉換成 所需的數據。主要實現代碼如下: import os,glob #調用庫,查找
55、 glob 下的文件 LabelPaths = glob.glob('整合/*.json') #查找路徑文件 for LabelPath in LabelPaths: Print(LabelPath) #打印 LabelPath 的結果 Name = os.path.basename(LabelPath).split('.')[0] cmd = 'labelme_json_to_dataset {0} -o {1}'.format(LabelPath, Name) os.system(cmd) 5.4 圖片預處理 圖 5.4 標注精靈標注示意圖
56、 在相機進行采集處理的時候,相機必須穩定,識別區域需要提前確定,環境不能相差 過大。不然識別效果會存在一定降低。識別圖像的特征的過程中,需要對采集圖片進行預 處理。由于剛處理的圖片還是一個空圖片,沒有進行特征提取,如圖 5.5~5.6 所示,所以 主要運行程序代碼如下; import cv2 import numpy as np import math import time from scipy.ndimage.filters import gaussian_filter import matplotlib.pyplot as plt import matplotlib imp
57、ort torch from torchvision import transforms #import util from src import util from src.model import bodypose_model class Body(object): def init (self, model_path): self.model = bodypose_model() if torch.cuda.is_available(): self.model = self.model.cuda() model_dict = util.transfer(self
58、.model, torch.load(model_path)) self.model.load_state_dict(model_dict) self.model.eval() def call (self, oriImg): # scale_search = [0.5, 1.0, 1.5, 2.0] scale_search = [0.5] boxsize = 368 stride = 8 padValue = 128 thre1 = 0.1 thre2 = 0.05 multiplier = [x * boxsize / oriImg.shape[0]
59、 for x in scale_search] heatmap_avg = np.zeros((oriImg.shape[0], oriImg.shape[1], 19)) paf_avg = np.zeros((oriImg.shape[0], oriImg.shape[1], 38)) for part in range(18): map_ori = heatmap_avg[:, :, part] one_heatmap = gaussian_filter(map_ori, sigma=3) map_left = np.zeros(one_heatmap.shape) map_lef
60、t[1:, :] = one_heatmap[:-1, :] map_right = np.zeros(one_heatmap.shape) map_right[:-1, :] = one_heatmap[1:, :] map_up = np.zeros(one_heatmap.shape) map_up[:, 1:] = one_heatmap[:, :-1] map_down = np.zeros(one_heatmap.shape) map_down[:, :-1] = one_heatmap[:, 1:] peaks_binary = np.logical_and.reduce(
61、(one_heatmap >= map_left, one_heatmap >= map_right, one_heatmap >= map_up, one_heatmap >= map_down, one_heatmap > thre1)) peaks = list(zip(np.nonzero(peaks_binary)[1], np.nonzero(peaks_binary)[0])) # 29 note reverse peaks_with_score = [x + (map_ori[x[1], x[0]],) for x in peaks] peak_id =
62、range(peak_counter, peak_counter + len(peaks)) peaks_with_score_and_id = [peaks_with_score[i] + (peak_id[i],) for i in range(len(peak_id))] all_peaks.append(peaks_with_score_and_id) peak_counter += len(peaks) # find connection in the specified sequence, center 29 is in the posit
63、ion 15 # 按指定順序查找連接,中心 29 位于位置 15 limbSeq = [[2, 3], [2, 6], [3, 4], [4, 5], [6, 7], [7, 8], [2, 9], [9, 10], \ [10, 11], [2, 12], [12, 13], [13, 14], [2, 1], [1, 15], [15, 17], \ [1, 16], [16, 18], [3, 17], [6, 18]] # 中間關節熱圖相關性 mapIdx = [[31, 32], [39, 40], [33, 34], [35, 36], [41, 42
64、], [43, 44], [19, 20], [21, 22], \ [23, 24], [25, 26], [27, 28], [29, 30], [47, 48], [49, 50], [53, 54], [51, 52], \ [55, 56], [37, 38], [45, 46]] 圖 5.5 手部特征關鍵點 圖 5.6 身體特征關鍵點 5.5 手部特征算法及程序設計 手部關鍵點檢測,旨在找出給定圖片中手指上的關節點及指尖關節點,一共 21 個關 鍵點,如圖 5.7 所示。其類似于面部關鍵點檢測(Facial Landmark Detectio
65、n) 和人體關鍵點 檢測(Human Body Pose Estimation)。手部關鍵點檢測的應用場景包括:手勢識別、手語識 別與理解和手部的行為識別等。程序主要代碼如下; import cv2 import json import numpy as np import math import time from scipy.ndimage.filters import gaussian_filter import matplotlib.pyplot as plt import matplotlib import torch from skimage.measure impor
66、t label from src.model import handpose_model from src import util class Hand(object): def init (self, model_path): self.model = handpose_model() if torch.cuda.is_available(): self.model = self.model.cuda() model_dict = util.transfer(self.model, torch.load(model_path)) self.model.load_state_dict(model_dict) self.model.eval() def call (self, oriImg): scale_search = [0.5, 1.0, 1.5, 2.0] # scale_search = [0.5] boxsize = 368 stride = 8 padValue = 128 thre = 0.05 multiplier = [x * box
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
5. 裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。