基于深度學(xué)習(xí)技術(shù)的人員行為異常檢測系統(tǒng)設(shè)計(jì)_第1頁
基于深度學(xué)習(xí)技術(shù)的人員行為異常檢測系統(tǒng)設(shè)計(jì)_第2頁
基于深度學(xué)習(xí)技術(shù)的人員行為異常檢測系統(tǒng)設(shè)計(jì)_第3頁
基于深度學(xué)習(xí)技術(shù)的人員行為異常檢測系統(tǒng)設(shè)計(jì)_第4頁
基于深度學(xué)習(xí)技術(shù)的人員行為異常檢測系統(tǒng)設(shè)計(jì)_第5頁
已閱讀5頁,還剩43頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

本科畢業(yè)論文(設(shè)計(jì))專用本科畢業(yè)論文(設(shè)計(jì))專用本科畢業(yè)論文(設(shè)計(jì))論文題目 : 基于深度學(xué)習(xí)技術(shù)的人員行為異常檢測系統(tǒng)設(shè)計(jì)摘 要現(xiàn)代工廠中人員基數(shù)較大,人員行為狀況復(fù)雜,發(fā)生突發(fā)意外事件的情況可能性較大,為了方便企業(yè)對員工異常行為的判斷,提高工廠安防能力,本設(shè)計(jì)擬設(shè)計(jì)一款現(xiàn)代工廠作業(yè)人員行為異常檢測系統(tǒng)。本設(shè)計(jì)利用深度學(xué)習(xí)技術(shù),對數(shù)據(jù)進(jìn)行訓(xùn)練與驗(yàn)證,依靠openpose框架對權(quán)重進(jìn)行OpenPose在做動(dòng)作識別的時(shí)候可以有效的提高動(dòng)作識別度,增加視覺識別的準(zhǔn)確性和數(shù)據(jù)交互能力。同時(shí),利用OpenPose算法對目標(biāo)進(jìn)行將算法檢測出的圖像中人體骨架進(jìn)行信息關(guān)鍵點(diǎn)標(biāo)注,將骨架關(guān)鍵點(diǎn)連接形成一個(gè)類似火柴人的骨架,然后計(jì)算每一個(gè)關(guān)鍵點(diǎn)的夾角,以此來判斷人體動(dòng)作的姿態(tài)顯示。本設(shè)計(jì)系統(tǒng)通過StudioCode軟件搭載python3.75進(jìn)行程序設(shè)計(jì)實(shí)現(xiàn)對人體姿態(tài)系統(tǒng)穩(wěn)定性好,與傳統(tǒng)人體姿態(tài)識別方法相比,數(shù)據(jù)交互性強(qiáng),使用成本較低,數(shù)據(jù)量較小。關(guān)鍵詞:Openpose;姿態(tài)識別;人體姿態(tài);目標(biāo)檢測AbstractWiththecontinuousdevelopmentofartificialintelligencetechnology,thefusionapplicationofartificialintelligenceandmanufacturingindustryhasacertainbasis.Inmodernfactories,thepersonnelbaseislarge,thepersonnelbehavioriscomplex,andthepossibilityofaccidentsislarge.Inordertofacilitatetheenterprisetojudgetheabnormalbehaviorofemployeesandimprovethefactorysecurityability,thisdesignintendstodesignamodernfactorypersonnelbehaviorabnormaldetectionsystem.Thisdesignusesdeeplearningtechnologytotrainandverifydata,andreliesonopenposeframeworktosetweights,soastoachievetheeffectofvisualdetection.OpenPosecaneffectivelyimprovethedegreeofmotionrecognition,increasetheaccuracyofvisualrecognitionandtheabilityofdatainteractionwhendoingmotionrecognition.Atthesametime,theOpenPosealgorithmwasusedfortargetdetectionanddataanalysis,andthekeyinformationpointsofhumanskeletoninthedetectedimagesweredetectedanddataanalysis.Thekeyinformationpointsofhumanskeletonintheimagesdetectedbythealgorithmweremarked,andtheskeletonkeypointswereconnectedtoformaskeletonsimilartothatofamatchman,andthentheincludedAngleofeachkeypointwascalculated.judgetheposturedisplayofhumanmovement.Inthisdesignsystem,theVisualStudioCodesoftwareisequippedwithpython3.75forprogramdesigntorealizetherecognitionofhumanposture,andtheexperimentalverificationiscarriedout.Theexperimentshowsthat:Thesystemhastheadvantagesofsimplestructure,reducedequipmentdemand,stabledata,goodsystemstabilityandstrongdatarobustness.Comparedwithtraditionalhumanbodyposturerecognitionmethods,thedatainteractionisstrong,theusecostislow,andthedatavolumeissmall.Keywords:Openpose;Gesturerecognition;Thebodyposture;Targetdetection目 錄1引 論 11.1研究目的及意義 11.2國內(nèi)外研究現(xiàn)狀 31.3設(shè)計(jì)的主要內(nèi)容 42行為異常檢測系統(tǒng)總體方案 52.1系統(tǒng)需求與分析 52.2系統(tǒng)總體方案設(shè)計(jì) 53系統(tǒng)硬件設(shè)計(jì) 63.1硬件方案設(shè)計(jì) 63.2深度相機(jī)選型 73.3視覺板卡選型 83.4聲光報(bào)警裝置選型 103.5光源裝置選型 4行為異常檢測系統(tǒng)通訊設(shè)計(jì) 134.1通信協(xié)議的選擇 13深度相機(jī)與JETSONNANO板卡TCP/IP通訊 13深度相機(jī)與JETSONNANO板卡CSI通訊 145行為異常檢測系統(tǒng)軟件設(shè)計(jì) 165.1軟件方案設(shè)計(jì) 165.2數(shù)據(jù)采集 185.3數(shù)據(jù)集收集與圖片標(biāo)注 185.4圖片預(yù)處理 195.5手部特征算法及程序設(shè)計(jì) 225.6身體特征算法及程序設(shè)計(jì) 235.7人體姿態(tài)識別算法及程序設(shè)計(jì) 256行為異常檢測 276.1識別權(quán)重準(zhǔn)備 276.2檢測系統(tǒng)識別準(zhǔn)備 276.3行為異常檢測系統(tǒng) 297結(jié) 語 33參考文獻(xiàn) 34致 謝 35附 錄 36附錄一 36附錄二 42PAGEPAGE11引 論1.1研究目的及意義1.1.1研究目的隨著經(jīng)濟(jì)發(fā)展,社會(huì)體系的逐步完善,社會(huì)治安的能力得到大幅度提升,在2020年月國家信息中心提出《全觀智慧城市白皮書》,首次提出全光智慧城市的發(fā)展理念。擴(kuò)散。智慧城市是運(yùn)用物聯(lián)網(wǎng)、云計(jì)算、大數(shù)據(jù)、空間地理信息集成等新一代信息技術(shù),促進(jìn)城市規(guī)劃、建設(shè)、管理和服務(wù)智慧化的新理念和新模式。至2010起年我國安防行業(yè)總收入已達(dá)2350億元,并逐年快速增長態(tài)勢。2013年我國安防行業(yè)總收入達(dá)到3800億元。到了2016年我國安防行業(yè)總收入達(dá)到了5400億元,截止至20172.16000億元,年均增長14.4%,全行業(yè)實(shí)現(xiàn)增加值1960億元,年均增長12.7%。2018年我國安防行業(yè)總收入將達(dá)到6678年我國安防行業(yè)總收入將突破80008212億元左右,如圖1.1所示。圖1.1視覺市場分析智能安防市場空間廣闊,視頻監(jiān)控高增速。AI技術(shù)賦予安防感知和認(rèn)知能力,從人2020-2025年復(fù)合增PAGEPAGE2速為7.1%,2025年市場規(guī)模將達(dá)到318億美元,如圖1.2所示。圖1.2視覺市場規(guī)模示意圖據(jù),但是人的精力是有限的,無法時(shí)時(shí)刻刻保持高度集中的注意力進(jìn)行觀察各監(jiān)控?cái)?shù)據(jù),以輔助監(jiān)控人員的工作,以此減少監(jiān)控工作人員壓力提高安防能力。5G帶來了網(wǎng)絡(luò)環(huán)境的全新變革,多項(xiàng)智慧城市的標(biāo)準(zhǔn)體系的落地、加上AI技術(shù)條數(shù)字世界轉(zhuǎn)換的方式,這兩大技術(shù)在安防領(lǐng)域的融合應(yīng)用,目前正在構(gòu)成“5G+AI+安防”的全新的組合,助推視頻監(jiān)控行業(yè)邁向超高清、AI智能的新階段。1.1.2研究意義展,這對促進(jìn)社會(huì)和諧意義重大。在社會(huì)治安方面;可以對視頻監(jiān)控地點(diǎn)進(jìn)行實(shí)時(shí)監(jiān)控,用在安防技術(shù)上,能減少人力物力,對群眾與社會(huì)治安提供一定量的保障。所以,對針對這種行為異常檢測算法的研究顯得極為急迫和重要。1.2國內(nèi)外研究現(xiàn)狀1.2.1國外研究現(xiàn)狀1.3年曾經(jīng)開源Pose公布了ICCV2019論文Single-NetworkWhole-BodyPoseEstimation,提出一種在單一網(wǎng)絡(luò)實(shí)現(xiàn)全人體姿態(tài)估計(jì)的算法,相對OpenPose大幅提高了速度。在OpenPose只能達(dá)到幀率1.6fps的圖像上,該文提出的算法運(yùn)行幀率可達(dá)到13.2姿態(tài)估計(jì)網(wǎng)絡(luò),速度并不快??▋?nèi)基梅隆大學(xué)在OpenPose算法框架下,使用單一網(wǎng)絡(luò)實(shí)現(xiàn)全人體的姿態(tài)估計(jì)并在論文OpenPose:reatimemulti-person2DposeestimationusingPartAffinityFieldsPartAffinityFields直接合并進(jìn)入人體的PartAffinityFields,進(jìn)行多任務(wù)學(xué)習(xí),實(shí)現(xiàn)上述功能。圖1.3全球視覺市場規(guī)模分布圖1.2.2國內(nèi)研究現(xiàn)狀2022OpenPose計(jì)OpenPose模型,替換其主干網(wǎng)絡(luò)為八度卷積與MobileNet融合而成的Oct-MobileNet,并優(yōu)化縮減預(yù)測階段的重復(fù)分支。實(shí)驗(yàn)表明,改進(jìn)模型的計(jì)算量降低為原來的12%且檢測速度提升300%。應(yīng)用改進(jìn)OpenPose模低且適用于視頻時(shí)長不一致的情況,在八段錦健身動(dòng)作評估中取得了較好應(yīng)用效果,具有一定的推廣應(yīng)用價(jià)值,如圖1.4所示。1.3設(shè)計(jì)的主要內(nèi)容

圖1.4姿態(tài)估計(jì)建空連接布局。通過運(yùn)用Openpose算法對讀取的圖像進(jìn)行關(guān)鍵點(diǎn)識別方法,該方法通過輕量化Openpose對視頻流進(jìn)行骨骼圖像提取,中間通過對得到的圖像進(jìn)行姿態(tài)數(shù)據(jù)集標(biāo)注,最后再通過COCO模型對標(biāo)注圖像進(jìn)行分類訓(xùn)練,將訓(xùn)練出來的權(quán)重文件進(jìn)行分類。根據(jù)所需要的識別狀態(tài)更換合適的權(quán)重文件,然后利用Python3.75結(jié)合StudioCode編獲取,以檢測人體姿態(tài)。2行為異常檢測系統(tǒng)總體方案2.1系統(tǒng)需求與分析時(shí)預(yù)警管控。區(qū)域或指定的安裝位置進(jìn)行數(shù)據(jù)采集,根據(jù)分析數(shù)據(jù)自動(dòng)檢測區(qū)域內(nèi)是否存在異常行為,現(xiàn)不同類型的異常行為識別。2.2系統(tǒng)總體方案設(shè)計(jì)通過在各工作地點(diǎn)內(nèi)安裝高清視覺攝像頭,實(shí)時(shí)監(jiān)控工作人員的工作狀態(tài)。通過以太JetsonNano學(xué)習(xí)將視頻中的人分為若干個(gè)點(diǎn),在拼合運(yùn)用模型將人體進(jìn)行姿態(tài)估計(jì),形成一個(gè)由多個(gè)關(guān)鍵點(diǎn)合成的人體骨架并更具視頻傳輸回來的畫面進(jìn)行實(shí)時(shí)更新用以檢測,當(dāng)工作人員出現(xiàn)異常行為,身體姿態(tài)發(fā)生變化,JetsonNano視覺處理檢測到行為異常的姿態(tài)輸出信號。聲光報(bào)警器接收到信號后報(bào)警觸發(fā),人體姿態(tài)示意實(shí)時(shí)在PC端顯示。方案如圖2.1所示圖2.1系統(tǒng)方案示意圖3系統(tǒng)硬件設(shè)計(jì)3.1硬件方案設(shè)計(jì)本設(shè)計(jì)主要由4首先通過攝像頭進(jìn)行目標(biāo)進(jìn)行圖像檢測,然后通過通訊進(jìn)行數(shù)據(jù)交互,將數(shù)據(jù)給于視覺板卡進(jìn)行視覺處理。視覺板卡將得到的數(shù)據(jù)圖像通過openpose算法框架進(jìn)行算法識別數(shù)據(jù)通過對比已經(jīng)訓(xùn)練好的權(quán)重進(jìn)行數(shù)據(jù)驗(yàn)證,然后通過顯示設(shè)備將圖像處理處理,圖片中每一個(gè)都變成了一幅幅由多個(gè)關(guān)鍵目標(biāo)數(shù)據(jù)信息點(diǎn)組成的一副火柴人形狀的人體骨架,然后JetsonNano內(nèi)置I/O3.1~3.2所示。通過本方案的設(shè)計(jì)與需求的分析結(jié)合設(shè)計(jì)需求主要硬件產(chǎn)品表3.1所示;表3.1硬件設(shè)計(jì)產(chǎn)品序列表產(chǎn)品名稱產(chǎn)品型號產(chǎn)品數(shù)量海康威視雙目行為分析攝像機(jī)DS-2CD8426F/B-I4英偉達(dá)視覺板卡JetsonNano1聯(lián)想TF高速存儲卡專業(yè)版128G1施耐SchneiderElectric信號燈帶蜂鳴器SchneiderXVR多功能LED信號燈1圖3.1硬件設(shè)備整體連接示意圖3.2深度相機(jī)選型

圖3.2硬件設(shè)備控制連接示意圖傳統(tǒng)相機(jī),僅支持普通監(jiān)控功能,脫離不了人員值守監(jiān)控范疇,不能減少人員疲勞,像機(jī)采集到的海量視頻圖像傳輸?shù)奖O(jiān)控中心后,值班人員很可能沒看到重要的異常情況。全部信息。??低旸S-2CD8426F/B-I200萬深眸雙目行為分析攝像機(jī),內(nèi)置高性能常檢測、劇烈運(yùn)動(dòng)檢測、離崗檢測、倒地檢測、滯留檢測等9項(xiàng)人工智能視覺檢測技術(shù)。立體識別圖像而不是簡單的二維平面識別,如圖3.3所示。當(dāng)設(shè)備供電開始工作時(shí)一對雙目鏡頭實(shí)時(shí)獲取同一目標(biāo)檢測的場景并各自獨(dú)立生成用以來定位該目標(biāo)場景的深度,通過數(shù)據(jù)算法對圖片的目標(biāo)檢測圖像進(jìn)行生成一種立體結(jié)構(gòu)的視圖,在雙目攝像頭在工作過程中識別到需要檢測的目標(biāo)后,通過計(jì)算圖像對應(yīng)點(diǎn)間位置偏差,獲取目標(biāo)的三維信息,瞬間完成圖像獲取,大大提高了行為分析檢測的準(zhǔn)確性。支持手動(dòng)標(biāo)定、自動(dòng)標(biāo)定、智能標(biāo)定三種標(biāo)定方式可滿足不同場景下的參數(shù)標(biāo)定并且支持單次報(bào)警或者定時(shí)循環(huán)報(bào)警功能和多種協(xié)議接入,方便和第三方系統(tǒng)集成。DC36V10M/100M自適應(yīng)以太網(wǎng)口以及1路報(bào)警輸入/輸出、1路音頻輸入/輸出,實(shí)測中功耗最大27W,無需復(fù)雜的接線和配置,安裝簡單便捷。通過傳統(tǒng)相機(jī)與深度相機(jī)進(jìn)行對比,如表3.2所示。表3.2傳統(tǒng)相機(jī)與深度相機(jī)傳統(tǒng)相機(jī)深度相機(jī)功能普通監(jiān)控功能視頻監(jiān)控,多傳感器協(xié)調(diào)應(yīng)用脫離不了人員值守監(jiān)控范疇不能減少帶有計(jì)算機(jī)人工智能分析功能無需人人員疲勞,松懈,短時(shí)間離開員值守,所有值守均由計(jì)算機(jī)執(zhí)行報(bào)警實(shí)時(shí)預(yù)警出現(xiàn)警況第一時(shí)間進(jìn)行自動(dòng)能及時(shí)預(yù)警報(bào)警回放回放視頻只能播放全部時(shí)刻錄像費(fèi)時(shí)可以根據(jù)多種條件線索智能檢索錄像,費(fèi)力快速定位儲存錄像只能無差別存放大量無效數(shù)據(jù)占報(bào)警數(shù)據(jù)和無效數(shù)據(jù)分類存放可以根用空間,儲存服務(wù)器投資大據(jù)需要自動(dòng)清理無效數(shù)據(jù)資料來源:辰啟智科所以本論文工業(yè)相機(jī)選型選擇??低旸S-2CD8426F/B-I高,能實(shí)現(xiàn)本設(shè)計(jì)需求。3.3視覺板卡選型

圖3.3深度相機(jī)樹莓派3B+是在2018年pi日(3月14日)發(fā)售的目前為止樹莓派家族當(dāng)中最新,性能最強(qiáng),也是功耗最高的一款產(chǎn)品=,RaspberryPi3ModelB+作為RaspberryPi3系列的最64位4核64位4核overUSB支持(Power-over-Ethernet,withPoEPXE網(wǎng)絡(luò)與USB大容量存儲啟動(dòng),如圖3.4所示。圖3.4樹莓派3B+板卡JetsonNano是一款功能強(qiáng)大的人工智能(AI)開發(fā)板,可助你快速入門學(xué)習(xí)AI技術(shù),Cortex-A57核MaxwellGPU及4GBLPDDR內(nèi)存,擁有足夠的AI算力,可以并行運(yùn)行多個(gè)神經(jīng)網(wǎng)絡(luò),適用于需要圖像分類、目標(biāo)檢測、分割、語音處理等功能的AI應(yīng)用。它支持NVIDIAJetPack,其中包括用于深度學(xué)習(xí),計(jì)算機(jī)視覺,GPU計(jì)算,多媒體處理,CUDA,CUDNN和等軟件庫,以及其他一系列流行的AI/MXNet等,如圖3.5所示。圖3.5JetsonNano視覺板卡PAGESD卡插槽;2-40針膨脹針頭;3-MicroUSB接口;4-以太網(wǎng)口;5-USB3.0接口;6-HDMI輸出端口;7-視頻接口;8-供電口;9-攝像頭連接口;10-Poe接口首先主板正中上面是一個(gè)很大的散熱片1是主存儲SD卡插槽2是40引腳的CPO;3是個(gè)5V2A的MicroUSBPC是一個(gè)RJ45千兆以太網(wǎng)接口;5是4個(gè)USB3.0接口;6是1個(gè)HDMI2.0視頻接口;7是顯示端口連接器;8是5V的DC供電口;9是MIPICSI攝像頭連接口;10是Poe接口。一般看視頻是推薦使用5V4A的DC供電方式(使用DC電源需要短接J48跳線帽),因?yàn)殡娫催B接這里可以開啟15w2.9A下角的電源口,會(huì)讓Nano板不斷地發(fā)熱和重啟。通過市場常用的幾款板卡進(jìn)行參數(shù)對比可知,如表3.3所示。表3.3板卡參數(shù)對比表型號樹莓派3B+IntelNCS2神經(jīng)計(jì)算棒(僅模塊)JetsonNano算力(INTB)-4TOPS7TOPS功耗1.4W2W10W算力/功耗-20.7重量42g77.8g249.47價(jià)格8509001500資料來源:芯板坊Nano開發(fā)板是我目前主打深度學(xué)習(xí)方向的開發(fā)板。所以經(jīng)過對比分析我選擇JetsonNano開發(fā)板。3.4聲光報(bào)警裝置選型SchneiderXVR多功能LED他的功能不容置疑,尤其是HarmonyXVR系列電動(dòng)機(jī)旋轉(zhuǎn)信號燈及蜂鳴器是可視音頻信號裝置,設(shè)計(jì)用于工廠應(yīng)用、建筑車輛和公共區(qū)域。該蜂鳴器信號燈提供4種不同的顏色,并隨附可擴(kuò)展照明區(qū)域的有小面的透鏡。帶蜂鳴器的XVR信號燈獨(dú)特且美觀的設(shè)計(jì)已獲得2014年RedDot工業(yè)設(shè)計(jì)大獎(jiǎng)。由于靈活的電壓輸入、光模式選擇器和允許直向和側(cè)面布線的集成橡膠基座,可以輕松安裝這些可視音頻信號裝置。且依托于電動(dòng)機(jī)LED技術(shù),使得使用壽命更長且免維護(hù),可實(shí)現(xiàn)旋轉(zhuǎn)、閃光和閃爍LED等工作狀態(tài)。10種照明模式使其易于使用且易于選擇寬電壓輸入,可滿足不同應(yīng)用可以進(jìn)行直向和側(cè)面布線,如圖3.6所示。圖3.6SchneiderXVR多功能LED信號燈時(shí)可調(diào)節(jié)90dB蜂鳴器外部蜂鳴器音量在70dB至90dB透鏡可擴(kuò)展照明區(qū)域,集成橡膠基座可提高IP等級,高達(dá)IP65保護(hù)等級,取決于蜂鳴器選項(xiàng)。7.1G的高抗振性,CE認(rèn)證,且符合ROHS400mm飛線連接,截面為0.57mm2。報(bào)警信號燈主要參數(shù)如表3.4所示。表3.4報(bào)警信號燈參數(shù)屬性數(shù)值電源電壓12→24V直流光效閃光,旋轉(zhuǎn)1m距離外分貝90dB最小分貝70dB最大分貝90dB安裝樣式基座安裝透鏡顏色紅色資料來源:Schneider官網(wǎng)3.5光源裝置選型擾。常用光源及相關(guān)特性如表3.5所示。表3.5主要光源類型及其特性類型光效(lm/W)平均壽命/(h)色溫/K特點(diǎn)鹵素?zé)?2~2410002800~3000發(fā)熱量大,價(jià)格便宜,形體小熒光燈50~1201500~30003000~6000價(jià)格便宜,適用于大面積照射LED燈110~250100000全系列宜,使用范圍廣氙燈150~33010005500~12000光照強(qiáng)度高,可連續(xù)快速點(diǎn)亮激光50000全系列具有良好的方向性、單色性與相干性其中熒光燈光源作為工廠中主要照明光源具有價(jià)格便宜,適用于大面積照射等優(yōu)點(diǎn),光源。如圖3.7所示熒光燈。圖3.7大功率LED熒光燈T5LED熒光燈T8LED熒光燈4行為異常檢測系統(tǒng)通訊設(shè)計(jì)4.1通信協(xié)議的選擇根據(jù)實(shí)際設(shè)計(jì)需求,本設(shè)計(jì)針對相機(jī)類型自主選擇TCP/IP通訊協(xié)議或MIPICSI-2CSI(CameraSerialInterface)通訊協(xié)議。(1)CSI(CameraSerialInterface)是MIPI定義的規(guī)范,用于連接攝像頭和CPU,傳輸攝像頭的視頻信號,最新的規(guī)范是2012發(fā)布的CSI-3,使用的物理層為M-PHY。而這里要介紹的規(guī)范在2005D同樣基于D-PHY,不同的是,它主要用于host將圖像傳輸給顯示設(shè)備。通訊協(xié)議TCP/IP是用于因特網(wǎng)(Internet)的通信協(xié)議。TCP/IP通信協(xié)議是對計(jì)算機(jī)必須遵守的規(guī)則的描述,只有遵守這些規(guī)則,計(jì)算機(jī)之間才能進(jìn)行通信。原本就是為使用互聯(lián)網(wǎng)而開發(fā)制定的協(xié)議族。因此,互聯(lián)網(wǎng)的協(xié)議就是TCP/IP,TCP/IP就是互聯(lián)網(wǎng)的協(xié)議。深度相機(jī)與JETSONNANO板卡TCP/IP通訊連接nano網(wǎng)卡槽進(jìn)行以太網(wǎng)通訊,對以太網(wǎng)通過IP地址mac碼進(jìn)行更改后進(jìn)行連接通信,當(dāng)電腦與nano處于同一個(gè)網(wǎng)段時(shí),即可實(shí)現(xiàn)通信。該通訊模式中,前面字節(jié)為08,后面的字節(jié)為00或06,表示IP包或ARP包,通過網(wǎng)線進(jìn)連接設(shè)置每個(gè)設(shè)備的與和中的nano收到該數(shù)據(jù)。通過每一個(gè)設(shè)備對應(yīng)的IP和mac去對應(yīng)每一個(gè)相機(jī)傳輸?shù)臄?shù)據(jù)對nano讀取相機(jī)的內(nèi)容進(jìn)行深度學(xué)習(xí)并通過網(wǎng)口反饋給顯示端口,如圖4.1所示。圖4.1TCP/IP模型圖深度相機(jī)與JETSONNANO板卡CSI通訊此行業(yè)標(biāo)準(zhǔn)化的接口由此而生。CSIclocklane和一到四個(gè)的datalane用D-PHY物理層協(xié)議。在物理層之上,即是CSI協(xié)議層,由三層構(gòu)成,每一層有著明確在接收端,解包來自LLP層的數(shù)據(jù)并傳輸?shù)綉?yīng)用層。該層的主要目的是將不同像素格式(例如RGBA等)都轉(zhuǎn)換成為8bit字節(jié)格式,為24bit,pixel為16RGB444,大小為12bit,需要通過padding變成RGB565格式,為兩個(gè)字節(jié),如圖4.2所示。圖4.2CSI協(xié)議層示意圖LowLevelProtocol(LLP)層為CSI協(xié)議的主要功能層,不僅定義了包格式,還定義了增加同步包,發(fā)送到下一層;在接收端首先校驗(yàn)包的完整性,并解析各個(gè)字段,根據(jù)包類處理的playload數(shù)據(jù)為經(jīng)過轉(zhuǎn)換后的純字JetsonNano與海康視覺相機(jī)通訊代碼如下;importcv2importmultiprocessingasmpnum=0defimage_put(q,name,pwd,ip,channel):#dWindow(ip,cv2.WINDOW_NORMAL)globalurlurl="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內(nèi)容ifcap.isOpened():print('camera'+ip+"connected.")whilecap.isOpened():ret,frame=cap.read()#抓取圖片不成功再重新抓取ifnotret: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,frame)#Pressesconkeyboardto exitifcv2.waitKey(1)&0xFF==27:breakcap.release()#解決進(jìn)程問題defrun_multi_camera():user_name,user_pwd="admin","a12345678"camera_ip_l=["51",]ports=['556']#initqueues=[mp.Queue(maxsize=2)for_incamera_ip_l]processes=[]forqueue,camera_ip,portinzip(queues,camera_ip_l,ports):user_pwd,camera_ip,port)))forprocessinprocesses:process.daemon=process.start()forprocessinprocesses:process.join()ifname =='main':run_multi_camera()5行為異常檢測系統(tǒng)軟件設(shè)計(jì)本基于深度學(xué)習(xí)技術(shù)的現(xiàn)代工廠作業(yè)人員行為異常檢測系統(tǒng)設(shè)計(jì)通過StudioCode軟件搭載python3.75進(jìn)行程序設(shè)計(jì),實(shí)現(xiàn)對人體姿態(tài)識別。5.1軟件方案設(shè)計(jì)本軟件設(shè)計(jì)主要由編譯器,依賴包,庫環(huán)境,GPU算力驅(qū)動(dòng)組成。首先在Github上下載pytorch-openpose壓縮包進(jìn)行openposeOpencv-python,Scipy,Scikit-image,Tqdm等依賴包文件對電腦庫環(huán)境進(jìn)行配置,最后搭載python3.75編譯器進(jìn)行程序編譯與調(diào)試。通過在系統(tǒng)中安裝VS與StudioCode作為程序設(shè)計(jì)軟件,配置軟件pip下載源地址使StudioCode可以搜尋到所需要文件因?yàn)槌绦蛑行枰{(diào)用多種工具包和庫文件,所以需要針對openpose去安裝對應(yīng)的工具包與庫文件,使程序能正常運(yùn)轉(zhuǎn)。當(dāng)程序開始運(yùn)前時(shí)需要根據(jù)處理器選擇版本與的時(shí)候需要很強(qiáng)的算力,所以需要安裝CUDNN來配置torch提高計(jì)算機(jī)算力,加快識別進(jìn)程。CUDNN啟動(dòng)后數(shù)據(jù)方式將會(huì)從CPU處理轉(zhuǎn)為GPU處理,理論上運(yùn)行速度會(huì)提高5倍,如圖5.1所示。圖5.1CUDA示意圖針對目前行為異常檢測這方面,常用的姿態(tài)估計(jì)算法Alphapose與openpose。首先Alphapose是自上而下的算法,也就是先檢測倒人體,再得到關(guān)鍵點(diǎn)和骨架。因此他的準(zhǔn)確率、Ap值要比openpose高。但是缺點(diǎn)就是隨著圖片上的人數(shù)增加,他的計(jì)算量增大,速度變慢。這一缺點(diǎn)注定他無法應(yīng)用于多人的實(shí)時(shí)姿態(tài)識別,更適用于單人的精確識別,從而不符合本設(shè)計(jì)需要滿足的工作條件。OpenPose是基于卷積神經(jīng)網(wǎng)絡(luò)和監(jiān)督學(xué)習(xí)并以caffe為框架寫成的開源庫,可以實(shí)現(xiàn)好的魯棒性。最終結(jié)合兩則優(yōu)缺點(diǎn)選擇更貼合設(shè)計(jì)的openpose算法。軟件設(shè)計(jì)流程如圖5.2所示。圖5.2軟件設(shè)計(jì)流程圖5.2數(shù)據(jù)采集也將對后期的識別造成一定的影響。采集的圖片是否正常。以此來保障后期的權(quán)重訓(xùn)練,提高精確度。舉例如圖5.3所示。圖5.3姿態(tài)動(dòng)作舉例需要避免這些問題。5.3數(shù)據(jù)集收集與圖片標(biāo)注打開標(biāo)注精靈軟件,修改標(biāo)注類別,如何開始標(biāo)注,并保存在指定文件夾,如圖5.4所示。所需的數(shù)據(jù)。主要實(shí)現(xiàn)代碼如下:importos,glob #調(diào)用庫,查找glob下的文件LabelPaths=glob.glob('整合/*.json') #查找路徑文件forLabelPathinLabelPaths:#打印的結(jié)果Name=os.path.basename(LabelPath).split('.')[0]cmd='labelme_json_to_dataset{0}-o{1}'.format(LabelPath,Name)os.system(cmd)5.4圖片預(yù)處理

圖5.4標(biāo)注精靈標(biāo)注示意圖處理。由于剛處理的圖片還是一個(gè)空圖片,沒有進(jìn)行特征提取,如圖5.5~5.6所示,所以主要運(yùn)行程序代碼如下;importcv2importnumpyasnpimportmathimporttimefromscipy.ndimage.filtersimportgaussian_filterimportmatplotlib.pyplotaspltimportmatplotlibimporttorchfromtorchvisionimporttransforms#importutilfromsrcimportutilfromsrc.modelimportbodypose_modelclassBody(object):definit(self,model_path):self.model=bodypose_model()iftorch.cuda.is_available():self.model=self.model.cuda()PAGEPAGE20model_dict=util.transfer(self.model,torch.load(model_path))self.model.load_state_dict(model_dict)self.model.eval()defcall(self,oriImg):#scale_search=[0.5,1.0,1.5,2.0]scale_search=[0.5]boxsize=368stride=8=128thre1=0.1thre2=0.05multiplier=[x*boxsize/oriImg.shape[0]forxinscale_search]heatmap_avg=np.zeros((oriImg.shape[0],oriImg.shape[1],19))paf_avg=np.zeros((oriImg.shape[0],oriImg.shape[1],38))forpartinrange(18):map_ori=heatmap_avg[:,:,part]one_heatmap=gaussian_filter(map_ori,sigma=3)map_left=np.zeros(one_heatmap.shape)map_left[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((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])) #notereverse

peaks_with_score=[x+(map_ori[x[1],x[0]],)forxinpeaks]peak_id=range(peak_counter,peak_counter+len(peaks))peaks_with_score_and_id=[peaks_with_score[i]+(peak_id[i],)foriinrange(len(peak_id))]all_peaks.append(peaks_with_score_and_id)peak_counter+=len(peaks)#findconnectioninthespecifiedsequence,center29isintheposition15#按指定順序查找連接,中心29位于位置15limbSeq=[[2,3],[2,6],[3,4],[4,5],[6,7],[7,8],[2,9],[9,10],\[10,[2,12],[12,13],[13,14],[2,1],[1,15],[15,17],\[1,16],[16,18],[3,17],[6,18]]#中間關(guān)節(jié)熱圖相關(guān)性mapIdx=[[31,32],[39,40],[33,34],[35,36],[41,42],[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手部特征關(guān)鍵點(diǎn)圖5.6身體特征關(guān)鍵點(diǎn)5.5手部特征算法及程序設(shè)計(jì)手部關(guān)鍵點(diǎn)檢測,旨在找出給定圖片中手指上的關(guān)節(jié)點(diǎn)及指尖關(guān)節(jié)點(diǎn),一共21個(gè)關(guān)鍵點(diǎn),如圖5.7所示。其類似于面部關(guān)鍵點(diǎn)檢測(FacialLandmarkDetection)和人體關(guān)鍵點(diǎn)檢測(HumanBodyPoseEstimation)。手部關(guān)鍵點(diǎn)檢測的應(yīng)用場景包括:手勢識別、手語識別與理解和手部的行為識別等。程序主要代碼如下;importcv2importjsonimportnumpyasnpimportmathimporttimefromscipy.ndimage.filtersimportgaussian_filterimportmatplotlib.pyplotaspltimportmatplotlibimporttorchfromskimage.measureimportlabelfromsrc.modelimporthandpose_modelfromsrcimportutilclassHand(object):definit(self,model_path):self.model=handpose_model()iftorch.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()defcall(self,oriImg):scale_search=[0.5,1.0,1.5,2.0]#scale_search=[0.5]boxsize=368stride=8=128thre=0.05multiplier=[x*boxsize/oriImg.shape[0]forxinscale_search]heatmap_avg=np.zeros((oriImg.shape[0],oriImg.shape[1],22))#paf_avg=np.zeros((oriImg.shape[0],oriImg.shape[1],38))ifname =="main":hand_estimation=Hand('../model/hand_pose_model.pth')#test_image='../images/hand.jpg'test_image='../images/hand.jpg'oriImg=cv2.imread(test_image) #B,G,Rorderpeaks=hand_estimation(oriImg)canvas=util.draw_handpose(oriImg,peaks,True)cv2.imshow('',canvas)cv2.waitKey(0)5.6身體特征算法及程序設(shè)計(jì)

圖5.7手部提取點(diǎn)身體關(guān)鍵點(diǎn)檢測,采用的的是主流的coco模型,因此身體的關(guān)鍵點(diǎn)被分為18個(gè)。根據(jù)給定的圖像中的身體關(guān)節(jié)及軀干,進(jìn)行特征提取連接,一共有19個(gè)關(guān)鍵點(diǎn),就會(huì)生成19注的關(guān)鍵點(diǎn)生成的heatmap所有值都為0。一共19個(gè)heatmap,其中最后一個(gè)代表背景,如圖5.8所示。識別主要代碼如下;importcv2importnumpyasnpimportmathimporttimefromscipy.ndimage.filtersimportgaussian_filterimportmatplotlib.pyplotaspltimportmatplotlibimporttorchfromtorchvisionimporttransforms#importutilfromsrcimportutilfromsrc.modelimportbodypose_modelclassBody(object):definit(self,model_path):self.model=bodypose_model()iftorch.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()defcall(self,oriImg):#scale_search=[0.5,1.0,1.5,2.0]scale_search=[0.5]boxsize=368stride=8=128thre1=0.1thre2=0.05multiplier=[x*boxsize/oriImg.shape[0]forxinscale_search]heatmap_avg=np.zeros((oriImg.shape[0],oriImg.shape[1],19))paf_avg=np.zeros((oriImg.shape[0],oriImg.shape[1],38))圖5.8身體提取點(diǎn)5.7人體姿態(tài)識別算法及程序設(shè)計(jì)OpenPose人體姿態(tài)識別項(xiàng)目是世界上首個(gè)基于深度學(xué)習(xí)的實(shí)時(shí)多人二維姿態(tài)估計(jì)應(yīng)用,基于它的實(shí)例如雨后春筍般涌現(xiàn)。通過檢測所有的關(guān)鍵點(diǎn),再group成不同的人,Pose首先5.9所示。展示了OpenPose模型的架構(gòu)。圖5.9Openpose模型框架圖(1)輸入一幅圖像,經(jīng)過VGG19卷積網(wǎng)絡(luò)提取特征,得到一組特征圖,然后分成兩個(gè)岔路Branch1&2,分別使用CNN網(wǎng)絡(luò)提取PartConfidenceMaps(置信度)和PartAffinityFields(關(guān)聯(lián)度);Bipartite求出Part很正確,最終合并為一個(gè)人的整體骨架;(3)最后基于求Multi-PersonParsing—>把Multi-personparsing問題轉(zhuǎn)換成graphs問題—>HungarianAlgorithm(匈牙利算法)(匈牙利算法是部圖匹配最常見的算法,該算法的核心就是尋找增廣路徑,它是一種用增廣路徑求二分圖最大匹配的算法。)基礎(chǔ)識別代碼如下;importcv2importmatplotlib.pyplotaspltimportcopyimportnumpyasnp#調(diào)用CV2庫fromsrcimportmodelfromsrcimportutilfromsrc.bodyimportBodyfromsrc.handimportHandbody_estimation=Body('model/body_pose_model.pth')#關(guān)聯(lián)身體權(quán)重路徑hand_estimation=Hand('model/hand_pose_model.pth')#關(guān)聯(lián)手部權(quán)重路徑test_image='images/output1.jpg'#測試圖片讀取路徑oriImg=cv2.imread(test_image)#B,G,Rordercandidate,subset=body_estimation(oriImg)canvas=copy.deepcopy(oriImg)canvas=util.draw_bodypose(canvas,candidate,subset)#detecthandhands_list=util.handDetect(candidate,subset,oriImg)all_hand_peaks=[]forx,is_leftinhands_list:peaks=hand_estimation(oriImg[y:y+w,:])peaks[:,0]=np.where(peaks[:,0]==0,peaks[:,0],peaks[:,0]+x)peaks[:,1]=np.where(peaks[:,1]==0,peaks[:,1],peaks[:,1]+y)#else:# peaks=hand_estimation(cv2.flip(oriImg[y:y+w,:],1))# peaks[:,0]=np.where(peaks[:,0]==0,peaks[:,0],w-peaks[:,0]-1+x)# peaks[:,1]=np.where(peaks[:,1]==0,peaks[:,1],peaks[:,1]+y)# print(peaks)all_hand_peaks.append(peaks)canvas=util.draw_handpose(canvas,all_hand_peaks)plt.imshow(canvas[:,:,[2,1,0]])plt.show()6.1識別權(quán)重準(zhǔn)備

6行為異常檢測修改權(quán)重參數(shù)進(jìn)行訓(xùn)練將訓(xùn)練好的權(quán)重文件pth格式放入demo_camera.py直接去開源庫下載的文件,權(quán)重如圖6.1所示。通過深度學(xué)習(xí)后的物體進(jìn)行采取不同特征提高工作站的工作效率,并能減輕相機(jī)運(yùn)算的等待時(shí)間。6.2檢測系統(tǒng)識別準(zhǔn)備

圖6.1權(quán)重文件由于openpose算法識別對終端要求過高所以我們選用輕羽量級權(quán)重文件作為識別輸StudioCode軟件對姿態(tài)進(jìn)行識別后,應(yīng)用C#語言編寫程序,實(shí)現(xiàn)識別結(jié)果的界面顯示,運(yùn)行主要代碼如下:importcv2importmatplotlib.pyplotasplt## plt.ion()importcopyimportnumpyasnpimporttorchprint(torch.version)print(torch.cuda.is_available())fromsrcimportmodelfromsrcimportutilfromsrc.bodyimportBodyfromsrc.handimportHandbody_estimation=Body('model/body_pose_model.pth')#身體模型hand_estimation=Hand('model/hand_pose_model.pth')#手部模型print(f"Torchdevice:{torch.cuda.get_device_name()}")#打印torch版本與CUDA版本號cap=cv2.VideoCapture(0)#視頻照片讀取位置,設(shè)置為0就是實(shí)時(shí)讀取#輸出若是圖片或者視頻,就放入名字與路徑cap.set(3,640)#窗口尺寸cap.set(4,480)#窗口尺寸whileTrue:ret,oriImg=cap.read()candidate,subset=body_estimation(oriImg)canvas=copy.deepcopy(oriImg)canvas=util.draw_bodypose(canvas,candidate,subset)#detecthand手在下面hands_list=util.handDetect(candidate,subset,oriImg)all_hand_peaks=[]forx,is_leftinhands_list:peaks=hand_estimation(oriImg[y:y+w,:])peaks[:,0]=np.where(peaks[:,0]==0,peaks[:,0],peaks[:,0]+x)peaks[:,1]=np.where(peaks[:,1]==0,peaks[:,1],peaks[:,1]+y)all_hand_peaks.append(peaks)canvas=util.draw_handpose(canvas,all_hand_peaks)cv2.imshow('demo',canvas) #一個(gè)窗口用以顯示原視頻ifcv2.waitKey(1)&0xFF==ord('q'):breakcap.release()6.3行為異常檢測系統(tǒng)視頻輸出結(jié)果如圖6.2~6.4,圖片輸出結(jié)果如圖6.5~6.8,實(shí)時(shí)輸出結(jié)果如圖6.9,手勢識別如圖6.10~6.11所示。圖6.2視頻輸出姿態(tài)識別1圖6.3視頻輸出姿態(tài)識別2PAGEPAGE30圖6.4視頻輸出姿態(tài)識別3 圖6.5圖片輸出姿態(tài)識別1 圖6.6圖片輸出姿態(tài)識別2 圖6.7圖片輸出姿態(tài)識別3 圖6.8圖片輸出姿態(tài)識別4圖6.9實(shí)時(shí)輸出姿態(tài)識別圖6.10手勢識別1圖6.11手勢識別2于openpose對終端與訓(xùn)練集需求較大,所以選取的openpose輕羽量級而導(dǎo)致姿態(tài)識別能要進(jìn)一步提升姿態(tài)識別能力還需要繼續(xù)增加訓(xùn)練集,從目前的50張采集圖片增加1000張或者10000張采集圖片加以訓(xùn)練,或者選擇重量級的openpose的權(quán)重文件。因此,神經(jīng)一步提高。7結(jié) 語由于人體骨架識別視覺檢測可以有效避免視覺檢測的光線痛點(diǎn),且魯棒性較高,不易使其得到了廣泛的研究與應(yīng)用。人體姿態(tài)識別的姿態(tài)情況較為復(fù)雜多樣,因此姿態(tài)識別的本設(shè)計(jì)使用深度學(xué)習(xí)的方法,采用openpose輕羽量級算法,從神經(jīng)網(wǎng)絡(luò)入手到構(gòu)建圖卷積網(wǎng)絡(luò)結(jié)構(gòu),針對人體骨架關(guān)鍵點(diǎn)信息進(jìn)行提取來進(jìn)行深入研究,提出一種基于深度學(xué)習(xí)技術(shù)的現(xiàn)代工廠作業(yè)人員行為異常檢測系統(tǒng)設(shè)計(jì)。本文研究內(nèi)容及研究成果如下:(1)闡述本文的研究背景與意義,并分別分析基于深度學(xué)習(xí)人體姿態(tài)識別的國內(nèi)外研究現(xiàn)狀,以及對本文的結(jié)構(gòu)進(jìn)行說明。(2)介紹本設(shè)計(jì)系統(tǒng)的整體方案,針對軟硬件設(shè)計(jì)方案,給出示意圖和流程圖與方案描述,對系統(tǒng)設(shè)計(jì)組成部件進(jìn)行,設(shè)備選型,與選型依據(jù)。(3)訓(xùn)練權(quán)重或者下載權(quán)重文件(4)首先對3D骨架序列進(jìn)行旋轉(zhuǎn)變換和幾何變換,通過擴(kuò)展視角增強(qiáng)其空間表達(dá)能力和魯棒性。(5)輸出姿態(tài)識別結(jié)果。參考文獻(xiàn)[1] 陳曦.黃昌正.周言明.吳宇浩,基于骨架的視覺動(dòng)捕姿態(tài)優(yōu)化計(jì)算方法[J].廣州科技,2022,7(12):16-17.[2] 俞躍華.基于機(jī)器視覺的人體骨架識別技術(shù)研究與應(yīng)用[D].四川:電子科技大學(xué),2021.[3] 何少聰.基于深度學(xué)習(xí)的多模態(tài)人體動(dòng)作識別研究[D].廣東:廣東工業(yè)大學(xué),2021.[4] 深度學(xué)習(xí)方法在二維人體姿態(tài)估計(jì)的研究進(jìn)展[J].計(jì)算機(jī)科學(xué),2022,8(7):204-208.[5] 劉帥,基于深度學(xué)習(xí)的3D骨架人體行為識別研究[D]2021(02).[6] 王歡,基于深度學(xué)習(xí)的骨架提取步態(tài)識別[D].西安:西安工業(yè)大學(xué),2022.[7] 蘇波;柴自強(qiáng);王莉.基于改進(jìn)OpenPose的視頻動(dòng)作評分方法研究[J].軟件工程,2022,[8] 楊君;張素君;張創(chuàng)豪;黃晶晶基于OpenPose的人體動(dòng)作識別對比研究[Z]2021(01).[9] 范鵬生;吳貴軍;陳浩辰.基于輕量化Openpose的跌倒算法識別研究[J].無線互聯(lián)科技,2022,(4).[10]學(xué)立壯于動(dòng)測人骨關(guān)點(diǎn)測法[J].業(yè)制算.202年06期第62-63頁.[11]張軍鵬,基于OpenPose的考場異常行為檢測研究,[D],青島,青島大學(xué),2021.[12]OpenPose的學(xué)生行為識別研究[J]計(jì)算機(jī)應(yīng)用研究.2021年10期第3183-3188頁.[13]楊君;張素君;張創(chuàng)豪;黃晶晶,基于OpenPose的人體動(dòng)作識別對比研究,[J]傳感器與微系統(tǒng).2021年01期第5-8頁.[14]陳汝峰;謝鵬飛;彭成;譚玉林,基于OpenPose的人體姿態(tài)檢測系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn),[J]電子世界.2020年17期,第183-184頁.[15]HuanyuZengWanmiChen,AnEvaluationApproachofMulti-personMovementSynchronizationLevelusingOpenPose,[C]第40屆中國控制會(huì)議論文集(7).2021年.致 謝圍。然后誠摯的感謝我的論文指導(dǎo)老師,從我入學(xué)起十分照顧我的學(xué)習(xí),對我認(rèn)真教導(dǎo),他武大大學(xué),華中科技大學(xué)等名校學(xué)生進(jìn)行專業(yè)知識的PK與交流,通過競賽鍛煉自身讓在忙碌教學(xué)工作中擠出時(shí)間給我審查修改論文。當(dāng)然也十分感謝所有教過我的老師們,你們將復(fù)雜難懂的知識通過你們的理解對然后接著感謝我的朋友,同學(xué)們。你們在我的無助的時(shí)候給予我無限的包容與陪伴,在生活中和我一同在學(xué)校的學(xué)習(xí)時(shí)光中互幫互助,在我論文對進(jìn)行設(shè)計(jì)時(shí)給了我不少點(diǎn)子,對我起到了很大幫助。感謝你們的陪伴讓我過的很開心,使我可以不斷的成長與前進(jìn)。助,感謝你們的陪伴與教導(dǎo),感謝你們的支持。附 錄附錄一importcv2importnumpyasnpimportmathimporttimefromscipy.ndimage.filtersimportgaussian_filterimportmatplotlib.pyplotaspltimportmatplotlibimporttorchfromtorchvisionimporttransforms#importutilfromsrcimportutilfromsrc.modelimportbodypose_modelclassBody(object):definit(self,model_path):self.model=bodypose_model()iftorch.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()defcall(self,oriImg):#scale_search=[0.5,1.0,1.5,2.0]scale_search=[0.5]boxsize=368stride=8=128thre1=0.1thre2=0.05multiplier=[x*boxsize/oriImg.shape[0]forxinscale_search]heatmap_avg=np.zeros((oriImg.shape[0],oriImg.shape[1],19))paf_avg=np.zeros((oriImg.shape[0],oriImg.shape[1],38))forminrange(len(multiplier)):scale=multiplier[m]= cv2.resize(oriImg, (0, 0), fx=scale, fy=scale,interpolation=cv2.INTER_CUBIC)imageToTest_padded,pad=util.padRightDownCorner(imageToTest,stride,im=np.transpose(np.float32(imageToTest_padded[:,:,:,np.newaxis]),(3,2,0,1))/256-0.5im=np.ascontiguousarray(im)data=torch.from_numpy(im).float()iftorch.cuda.is_available():data=data.cuda()#data=data.permute([2,0,1]).unsqueeze(0).float()withtorch.no_grad():Mconv7_stage6_L1,Mconv7_stage6_L2=self.model(data)Mconv7_stage6_L1=Mconv7_stage6_L1.cpu().numpy()Mconv7_stage6_L2=Mconv7_stage6_L2.cpu().numpy()#extractoutputs,resize,andremovepadding#heatmap=np.transpose(np.squeeze(net.blobs[output_blobs.keys()[1]].data),(1,2,0)) #output1isheatmapsheatmap=np.transpose(np.squeeze(Mconv7_stage6_L2),(1,2,0)) #output1isheatmapsheatmap=cv2.resize(heatmap,(0,0),fx=stride,fy=stride,interpolation=cv2.INTER_CUBIC)heatmap=heatmap[:imageToTest_padded.shape[0]-pad[2],:imageToTest_padded.shape[1]-pad[3],:]heatmap = cv2.resize(heatmap, (oriImg.shape[1], oriImg.shape[0]),interpolation=cv2.INTER_CUBIC)is

#paf=np.transpose(np.squeeze(net.blobs[output_blobs.keys()[0]].data),(1,2,0)) #output0paf=np.transpose(np.squeeze(Mconv7_stage6_L1),(1,2,0)) #output0ispaf=cv2.resize(paf,(0,0),fx=stride,fy=stride,interpolation=cv2.INTER_CUBIC)paf=paf[:imageToTest_padded.shape[0]-pad[2],:imageToTest_padded.shape[1]-pad[3],:]paf=cv2.resize(paf,(oriImg.shape[1],oriImg.shape[0]),interpolation=cv2.INTER_CUBIC)heatmap_avg+=heatmap_avg+heatmap/len(multiplier)paf_avg+=+paf/len(multiplier)all_peaks=[]peak_counter=0forpartinrange(18):map_ori=heatmap_avg[:,:,part]one_heatmap=gaussian_filter(map_ori,sigma=3)map_left=np.zeros(one_heatmap.shape)map_left[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((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])) #notereversepeaks_with_score=[x+(map_ori[x[1],x[0]],)forxinpeaks]peak_id=range(peak_counter,peak_counter+len(peaks))peaks_with_score_and_id=[peaks_with_score[i]+(peak_id[i],)foriinrange(len(peak_id))]all_peaks.append(peaks_with_score_and_id)peak_counter+=len(peaks)#findconnectioninthespecifiedsequence,center29isintheposition15limbSeq=[[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]]#themiddlejointsheatmapcorrepondencemapIdx=[[31,32],[39,40],[33,34],[35,36],[41,42],[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]]connection_all=[]special_k=[]mid_num=10forkinrange(len(mapIdx)):score_mid=paf_avg[:,:,[x-19forxinmapIdx[k]]]candA=all_peaks[limbSeq[k][0]-1]candB=all_peaks[limbSeq[k][1]-1]nA=len(candA)nB=len(candB)indexA,indexB=limbSeq[k]if(nA!=0andnB!=0):connection_candidate=[]foriinrange(nA):forjinrange(nB):vec=np.subtract(candB[j][:2],candA[i][:2])norm=math.sqrt(vec[0]*vec[0]+vec[1]*vec[1])norm=max(0.001,norm)vec=np.divide(vec,norm)num=mid_num)))

startend=list(zip(np.linspace(candA[i][0],candB[j][0],num=mid_num),\np.linspace(candA[i][1], candB[j][1],int(round(startend[I][0])),0]\int(round(startend[I][0])),1]\len(score_midpts)candB[j][2]])

vec_x = np.array([score_mid[int(round(startend[I][1])),forIinrange(len(startend))])vec_y = np.array([score_mid[int(round(startend[I][1])),forIinrange(len(startend))])score_midpts=np.multiply(vec_x,vec[0])+np.multiply(vec_y,vec[1])score_with_dist_prior=sum(score_midpts)/len(score_midpts)+min(0.5*oriImg.shape[0]/norm-1,0)criterion1 = len(np.nonzero(score_midpts > thre2)[0]) > 0.8 *criterion2=score_with_dist_prior>0ifcriterion1andcriterion2:connection_candidate.append([i,j,score_with_dist_prior,score_with_dist_prior+candA[i][2]+connection_candidate=sorted(connection_candidate,key=lambdax:x[2],reverse=True)connection=np.zeros((0,5))forcinrange(len(connection_candidate)):i,j,s=connection_candidate[c][0:3]if(inotinconnection[:,3]andjnotinconnection[:,4]):connection=np.vstack([connection,[candA[i][3],candB[j][3],s,i,j]])if(len(connection)>=min(nA,nB)):breakelse:

connection_all.append(connection)special_k.append(k)connection_all.append([])#lastnumberineachrowisthetotalpartsnumberofthatperson#thesecondl

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論