国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于多階段CNN的雙目行人檢測(cè)測(cè)距算法

2021-05-12 04:33:52黃小龍
關(guān)鍵詞:雙目中心點(diǎn)關(guān)鍵點(diǎn)

王 卓,黃 民,馬 飛,黃小龍

(北京信息科技大學(xué)機(jī)電工程學(xué)院,北京 100192)

行人檢測(cè)和距離測(cè)量,在智能駕駛、醫(yī)學(xué)護(hù)理、智能家居等方面具有重要意義。傳統(tǒng)的測(cè)距方法主要是使用距離傳感器,如超聲波雷達(dá)、激光雷達(dá)等。這些方法都存在靈敏度低或響應(yīng)慢等缺點(diǎn),具有一定的局限性。與傳統(tǒng)方法相比,采用機(jī)器視覺(jué)進(jìn)行測(cè)距更具有針對(duì)性,可以準(zhǔn)確分辯不同物體、不同距離,做到實(shí)時(shí)測(cè)距。尤其在自動(dòng)駕駛領(lǐng)域,雙目視覺(jué)檢測(cè)在檢測(cè)前方車(chē)輛及距離[1]、行人檢測(cè)及測(cè)距[2]等方面有著巨大的應(yīng)用前景。

機(jī)器視覺(jué)使用相機(jī)采集圖像,獲取各式各樣的信息,通過(guò)編程可以實(shí)現(xiàn)多任務(wù)同時(shí)進(jìn)行,達(dá)成多個(gè)目標(biāo)。李大華等[3]提出一種改進(jìn)Census變換的雙目匹配測(cè)距方法,使用算法對(duì)雙目攝像機(jī)進(jìn)行標(biāo)定,同時(shí)將左右圖像中的像素點(diǎn)匹配起來(lái),應(yīng)用于物體距離計(jì)算。這種利用左右圖像像素的匹配特征進(jìn)行測(cè)距的方式較為常見(jiàn),但是計(jì)算量大,算法復(fù)雜。張琦等[4]提出一種改進(jìn) Fast-RCNN[5]的雙目視覺(jué)車(chē)輛檢測(cè)方法,利用Fast-RCNN檢測(cè)車(chē)輛,再進(jìn)行匹配、距離計(jì)算。最終實(shí)現(xiàn)了5 m范圍內(nèi)的車(chē)輛距離準(zhǔn)確測(cè)量,誤差為2.4%。彭秋辰等[6]提出一種使用 Mask R-CNN算法[7]結(jié)合雙目相機(jī)進(jìn)行物體檢測(cè)測(cè)距。他們首先使用Mask RCNN對(duì)圖像中的物體進(jìn)行檢測(cè)和分類(lèi),之后使用視差算法計(jì)算物體在左右圖像上的視差,最后計(jì)算得到物體距離。這一方法的精度較高,但響應(yīng)速度很慢,一幀用時(shí)218 ms。楊榮堅(jiān)等[8-9]提出一種雙目圖像的行人檢測(cè)與定位系統(tǒng),該系統(tǒng)首先使用SGM算法對(duì)雙目圖像進(jìn)行立體匹配,然后使用改進(jìn)Fast-YOLO網(wǎng)絡(luò)進(jìn)行行人檢測(cè),在GPU上運(yùn)算具有實(shí)時(shí)檢測(cè)的能力。

針對(duì)上述行人檢測(cè)測(cè)距算法存在的檢測(cè)速度慢、檢測(cè)范圍近、難以對(duì)多個(gè)行人進(jìn)行檢測(cè)測(cè)距等問(wèn)題,設(shè)計(jì)了一種雙目行人檢測(cè)測(cè)距算法,流程如圖1所示。首先使用雙目相機(jī)作為傳感器得到雙目圖像,通過(guò)卷積神經(jīng)網(wǎng)絡(luò)推理,得到行人人體核心點(diǎn)位置,再進(jìn)行核心點(diǎn)匹配得到多人核心點(diǎn)對(duì),最后根據(jù)多人核心點(diǎn)對(duì)計(jì)算視差得到行人距離。

圖1 行人檢測(cè)測(cè)距算法流程框圖

1 行人關(guān)鍵點(diǎn)檢測(cè)

行人關(guān)鍵點(diǎn)檢測(cè)即人體骨骼關(guān)鍵點(diǎn)提取,對(duì)于描述人體的姿態(tài)、動(dòng)作等有著至關(guān)重要的意義。隨著深度學(xué)習(xí)技術(shù)的發(fā)展,人體骨骼關(guān)鍵點(diǎn)檢測(cè)效果和速度不斷提升。多人人體骨骼關(guān)鍵的檢測(cè)主要分2個(gè)方向:自上而下、自下而上。其中自上而下的檢測(cè)方法是首先進(jìn)行人體檢測(cè),再在每個(gè)檢測(cè)出的人體范圍進(jìn)行人體關(guān)鍵點(diǎn)檢測(cè),代表檢測(cè)算法有 Mask R-CNN算法、G-RMI算法[10]等;自下而上的檢測(cè)方法是首先檢測(cè)出人體關(guān)鍵點(diǎn),再將人體關(guān)鍵點(diǎn)進(jìn)行匹配,代表算法有 Open-Pose[11]、Associative Embedding[12]。本文采用的是自下而上的方法。自上而下的算法依賴于人體檢測(cè)精度,如果人體檢測(cè)出現(xiàn)錯(cuò)誤(如檢測(cè)不準(zhǔn)、檢測(cè)重復(fù)等),那么這些算法沒(méi)有可以糾正錯(cuò)誤的余地,進(jìn)一步而言,這種自上而下的運(yùn)行時(shí)間和人數(shù)成比例。與之相反,自下而上的方法在檢測(cè)關(guān)鍵點(diǎn)上具有較強(qiáng)的魯棒性,并且檢測(cè)時(shí)間與人數(shù)關(guān)系不大。實(shí)際上,這種方法的難點(diǎn)在于關(guān)鍵點(diǎn)匹配,由于人數(shù)的增多和全局匹配的難度加大,往往導(dǎo)致最終運(yùn)行效率下降。例如,Pishchulin等[13]提出了一種聯(lián)合了標(biāo)簽數(shù)據(jù)的檢測(cè)結(jié)果,再將它們聯(lián)系到個(gè)體的自下而上的檢測(cè)方法,這種匹配算法是一個(gè)NP難的問(wèn)題,處理代價(jià)太大,應(yīng)用價(jià)值不大。OpenPose模型提出一種PAFs(Part Affinity Fields)(人體關(guān)節(jié)親和場(chǎng))的關(guān)系向量,這個(gè)向量記錄了人體關(guān)鍵點(diǎn)之間的關(guān)系并且可以由神經(jīng)網(wǎng)絡(luò)推導(dǎo)出來(lái),極大地提高了檢測(cè)精度和速度。但是OpenPose的檢測(cè)的關(guān)鍵點(diǎn)有10幾個(gè),神經(jīng)網(wǎng)絡(luò)訓(xùn)練和測(cè)試所需的設(shè)備要求很高。

本文需要快速、準(zhǔn)確地檢測(cè)出行人關(guān)鍵點(diǎn),因此采用自下而上的方法更好,使用多階段、多分支的網(wǎng)絡(luò)結(jié)構(gòu)同時(shí)推斷關(guān)鍵點(diǎn)位置和關(guān)鍵點(diǎn)間的關(guān)系向量;由于本文只關(guān)注人體的位置,因此通過(guò)減少關(guān)鍵點(diǎn)數(shù)目以提高訓(xùn)練、測(cè)試所需代價(jià),提高效率。實(shí)驗(yàn)表明,本文的算法檢測(cè)速度和精度都有較大提高。選取人體的左肩、右肩、左胯、右胯以及這4個(gè)點(diǎn)的中心點(diǎn)共5個(gè)點(diǎn)作為人體的核心點(diǎn),檢測(cè)行人即檢測(cè)這5個(gè)點(diǎn)。在本文網(wǎng)絡(luò)中,“輸出1”輸出這5個(gè)點(diǎn)坐標(biāo)的置信概率圖,取概率最大的像素坐標(biāo)數(shù)值作為行人核心點(diǎn)坐標(biāo)傳入雙目測(cè)距算法。

1.1 神經(jīng)網(wǎng)絡(luò)模型

使用機(jī)器視覺(jué)實(shí)現(xiàn)行人檢測(cè)和測(cè)量的精度和速度,很大程度上取決于神經(jīng)網(wǎng)絡(luò)的識(shí)別精度和監(jiān)測(cè)速度?,F(xiàn)階段有很多出色的人體骨骼關(guān)鍵點(diǎn)提取算法,Wei等[14]提出的卷積位姿檢測(cè)機(jī)(convolutional pose machines,CPM)使用了多階段多尺度的網(wǎng)絡(luò)模型,使用原始圖片的特征圖作為每一階段的一部分輸入,上一階段的輸出作為下一階段的一部分輸入。最終結(jié)果在 MPII數(shù)據(jù)集上PCKh為 87.95%,在 LSP數(shù)據(jù)集上 PCKh為84.32%。Cao等[11]提出的 OpenPose模型也使用了多階段、多分支的模型結(jié)構(gòu),它在硬件配置極高的情況下基本實(shí)現(xiàn)了對(duì)人的身體、面部、腳等不同部位關(guān)鍵點(diǎn)的實(shí)時(shí)檢測(cè)。OpenPose模型采取的是自上而下的人體姿態(tài)檢測(cè)方式,即首先檢測(cè)關(guān)節(jié)點(diǎn)再將關(guān)節(jié)點(diǎn)聚類(lèi)為一個(gè)人。OpenPose模型是在卷積位姿檢測(cè)機(jī)(convolutional pose machines,CPM)的基礎(chǔ)上改進(jìn)而成的,保留了多階段的優(yōu)點(diǎn)并且加入人體關(guān)節(jié)親和場(chǎng)(part affinity fields,PAFs)實(shí)現(xiàn)關(guān)節(jié)點(diǎn)聚類(lèi)。OpenPose模型精度很高,在COCO數(shù)據(jù)集[15]上 mAP達(dá)到 57.9,并且檢測(cè)到在有19個(gè)人體的視頻時(shí)達(dá)到了8.8 fps,但是其網(wǎng)絡(luò)冗雜,訓(xùn)練難度大。

針對(duì)上述問(wèn)題,提出一種多階段多分支的網(wǎng)絡(luò)結(jié)構(gòu)。每個(gè)階段都輸出所需結(jié)果,上一階段的結(jié)果作為下一階段的輸入,循環(huán)運(yùn)算。每個(gè)分支有不同的任務(wù),輸出不同的結(jié)果,如網(wǎng)絡(luò)分支1輸出5個(gè)行人關(guān)鍵點(diǎn)的置信圖,取概率最大的像素坐標(biāo)數(shù)值作為行人核心點(diǎn)坐標(biāo),輸出結(jié)果如圖2所示,圖中綠色的點(diǎn)為人體的中心點(diǎn),將用于雙目測(cè)距,藍(lán)色的點(diǎn)為其他關(guān)鍵點(diǎn)。

圖2 分支1輸出結(jié)果

分支2輸出為左肩、右肩、左胯、右胯這4個(gè)關(guān)鍵點(diǎn)與人體中心點(diǎn)之間的關(guān)系置信圖,輸出結(jié)果如圖3所示。圖中藍(lán)色、綠色區(qū)域表示關(guān)節(jié)4個(gè)點(diǎn)與中心點(diǎn)關(guān)系。

圖3 分支2輸出結(jié)果

卷積神經(jīng)網(wǎng)絡(luò)的層數(shù)、卷積核數(shù)目及大小關(guān)系到網(wǎng)絡(luò)的性能。卷積核尺寸越大,感受野越大,提取的圖片信息越多,因此,獲得的特征越好,但大的卷積核會(huì)導(dǎo)致計(jì)算量暴增,不利于訓(xùn)練和應(yīng)用,用多個(gè)小的卷積核替代1個(gè)大卷積核成為趨勢(shì)。因此,更多3×3的卷積核被應(yīng)用在現(xiàn)在的神經(jīng)網(wǎng)絡(luò)中。早期神經(jīng)網(wǎng)絡(luò)中常見(jiàn)的全連接層被證明可以由1×1的卷積核替代,可以在保證準(zhǔn)確率的情況下,極大地減小計(jì)算量。然而過(guò)多的使用小的卷積核會(huì)造成神經(jīng)網(wǎng)絡(luò)的欠擬合,因此適當(dāng)增加5×5卷積核數(shù)目。同一層中卷積核的數(shù)量越多,準(zhǔn)確度越高,而當(dāng)數(shù)據(jù)較為復(fù)雜時(shí),如隱含特征較難提取時(shí),需要更深的網(wǎng)絡(luò)。本文使用的多階段結(jié)構(gòu),對(duì)每個(gè)階段都進(jìn)行監(jiān)督,如果在訓(xùn)練時(shí)發(fā)現(xiàn)從某一階段開(kāi)始之后階段的loss值相差不大,說(shuō)明這些階段可以省去,由此可以確定網(wǎng)絡(luò)層數(shù),這是多階段網(wǎng)絡(luò)結(jié)構(gòu)的優(yōu)勢(shì)之一。

具體網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示,階段3與階段2結(jié)構(gòu)相同,因此沒(méi)有畫(huà)出。

圖4 神經(jīng)網(wǎng)絡(luò)模型框圖

網(wǎng)絡(luò)首先將同一尺寸的圖片通過(guò)VGG-19[16]的前10層提取圖片特征作為第一階段的輸入。輸出的圖片特征集合為Q,其以置信度字典形式參與之后所有階段運(yùn)算,但值不發(fā)生改變。

第1階段中有3個(gè)分支,分支1輸出人體5個(gè)核心點(diǎn)heatmap(熱圖),分支1前部分由3層3×3的卷積層和2層1×1的卷積層組成,其輸出與分支2的輸出鏈接在一起輸入分支1的后半部分,由2層3×3的卷積層和1層1×1的卷積層組成,其目的是通過(guò)關(guān)節(jié)核心點(diǎn)向量對(duì)核心點(diǎn)進(jìn)行調(diào)整;分支2由3層3×3的卷積層和2層1×1的卷積層組成,輸出為左肩、右肩、左胯、右胯這4個(gè)關(guān)鍵點(diǎn)與人體中心點(diǎn)之間的關(guān)系vectormap(向量圖)。這些vectormap(向量圖)參與到核心點(diǎn)熱圖的計(jì)算中,為核心計(jì)算提供一定的輔助作用。階段1最終產(chǎn)生1個(gè)置信點(diǎn)圖集合 U1=ρ1(V1,Q),以及1個(gè)關(guān)系集合 V1=φ1(Q),其中 ρ1、φ1為第 1個(gè)階段的卷積神經(jīng)網(wǎng)絡(luò)運(yùn)算。

階段1的輸出U1、V1以及圖像特征Q,作為下一階段的輸入,在下一階段中的第1個(gè)分支都由5層5×5的卷積層和2層1×1的卷積層加上調(diào)整部分的3層3×3的卷積層和2層1×1的卷積組成,分支2由5層5×5的卷積層和2層1×1的卷積層組成,分別輸出5個(gè)核心點(diǎn)heatmap(熱圖)和左肩、右肩、左胯、右胯這4個(gè)關(guān)鍵點(diǎn)與人體中心點(diǎn)之間的關(guān)系vectormap(向量圖)。第3階段與第2階段結(jié)構(gòu)一致,第2階段的輸出加上圖像特征為第3階段的輸入,經(jīng)過(guò)計(jì)算輸出最終的核心點(diǎn)heatmap(熱圖)和關(guān)系圖vectormap(向量圖)。因此,第 t(t≥2)階段的2個(gè)分支輸出為

神經(jīng)網(wǎng)絡(luò)所輸出的heatmap(熱圖)和vectormap(向量圖)是46×46的概率矩陣。heatmap(熱圖)中的每個(gè)元素都表示核心點(diǎn)在這一位置的概率。Pfister等[17]提出將其使用在人體姿態(tài)識(shí)別中,極大地提高了檢測(cè)精度。本文神經(jīng)網(wǎng)絡(luò)輸出5個(gè)heatmap(熱圖)分別代表中心點(diǎn)、左肩、右肩、左胯、右胯。訓(xùn)練所用關(guān)節(jié)點(diǎn)數(shù)據(jù)集是通過(guò)在關(guān)節(jié)點(diǎn)處放置高斯響應(yīng)而生成的概率圖。二維空間高斯分布為

式中:X=(x1,y1)表示需要計(jì)算概率值的像素點(diǎn)的坐標(biāo);μ=(x,y)表示關(guān)鍵點(diǎn)的坐標(biāo);Σ=為協(xié)方差矩陣,本文算法中

每個(gè)相鄰關(guān)節(jié)的vectormap(向量圖)為x方向和y方向上的2張概率圖,這2張概率圖表示的是2個(gè)相鄰關(guān)節(jié)的向量關(guān)系。即分支2輸出的8張概率圖表示4個(gè)連接關(guān)系。圖5為神經(jīng)網(wǎng)絡(luò)輸出的8張概率圖。

圖5 分支2輸出的vectormap(向量圖)

可以看出:輸出結(jié)果可以明確分清肩部與胯部的不同,但是對(duì)左右不敏感,原因在于人體左右的對(duì)稱性以及沒(méi)有對(duì)關(guān)鍵點(diǎn)之外的點(diǎn)進(jìn)行監(jiān)督。因此,本文神經(jīng)網(wǎng)絡(luò)不能很好地區(qū)分關(guān)節(jié)的左右。而且這一現(xiàn)象在OpenPose模型和CPM模型的檢測(cè)結(jié)果中也有體現(xiàn),由于這些模型對(duì)人體頭部、脖子等部位進(jìn)行了監(jiān)督,相比較于本文模型這一現(xiàn)象出現(xiàn)頻率較低。但是對(duì)于中心點(diǎn)不存在這樣的問(wèn)題,因此這一缺陷對(duì)測(cè)距算法沒(méi)有影響。如圖6,圖中共有10人,標(biāo)出了9個(gè)綠色的中心點(diǎn),藍(lán)色的為關(guān)節(jié)點(diǎn)。沒(méi)有識(shí)別出的人體中心點(diǎn)在圖片的左半邊白色圓圈內(nèi),身體全部被遮擋,只露出了頭部,這種情況讓人標(biāo)出他的中心點(diǎn)非常困難。除此之外也有多人的身體被遮擋住一半,但是神經(jīng)網(wǎng)絡(luò)依然能推測(cè)出他們的中心點(diǎn)位置。因此,在測(cè)距時(shí),使用中心點(diǎn)作為測(cè)距點(diǎn)不受神經(jīng)網(wǎng)絡(luò)能否分清身體的左右。

圖6 多人中心點(diǎn)識(shí)別結(jié)果

1.2 神經(jīng)網(wǎng)絡(luò)的損失函數(shù)

先明確每個(gè)階段的輸出,heatmap(熱圖)和vectormap(向量圖)本質(zhì)為概率置信圖。由于輸出為概率矩陣,可使用平方和損失函數(shù)計(jì)算每個(gè)階段每個(gè)分支的損失,分別表示檢測(cè)出的人體關(guān)鍵點(diǎn)和關(guān)系向量與實(shí)際人體關(guān)鍵點(diǎn)和關(guān)系向量的偏差。每一階段都輸出概率置信圖,因此在每個(gè)階段分支1和分支2末尾分別加入損失函數(shù):

式中:U*為真實(shí)的關(guān)鍵點(diǎn)置信圖;V*為真實(shí)的關(guān)節(jié)關(guān)系圖。整體目標(biāo)損失按式(6)計(jì)算,表示神經(jīng)網(wǎng)絡(luò)推斷出的人體關(guān)鍵點(diǎn)和關(guān)系向量與實(shí)際的人體關(guān)鍵點(diǎn)位置和關(guān)系向量大小、方向的偏差。

2 關(guān)鍵點(diǎn)匹配及雙目測(cè)距原理

2.1 關(guān)鍵點(diǎn)匹配

現(xiàn)有的很多雙目視覺(jué)匹配算法,如分割樹(shù)算法[18]或 AD-Census算法[19],實(shí)際上都是對(duì)圖像中每個(gè)像素點(diǎn)進(jìn)行匹配。優(yōu)點(diǎn)是可以進(jìn)行立體匹配、建立三維點(diǎn)云;缺點(diǎn)也很明顯,需要對(duì)攝像機(jī)進(jìn)行標(biāo)定、算法復(fù)雜、計(jì)算量大、易出現(xiàn)很多無(wú)用信息等。針對(duì)對(duì)行人測(cè)距來(lái)說(shuō),只需對(duì)人體中心點(diǎn)進(jìn)行匹配,可以極大減小計(jì)算量,同時(shí)將測(cè)量誤差只局限于神經(jīng)網(wǎng)絡(luò)檢測(cè)誤差,一定程度上提高了精度。

目標(biāo)為單人時(shí),左右圖像上只有1個(gè)點(diǎn),不需要算法匹配。目標(biāo)為多人時(shí),首先要保證左右圖像都能檢測(cè)出中心點(diǎn)。那么需要將過(guò)于靠近邊界的目標(biāo)剔除,其具體數(shù)值受人體大小、距離和相機(jī)分辨率的影響。人體大小其實(shí)就是左右肩和左右胯組成的矩形框的大小,按照通常情況考慮取50 cm×80 cm。

本文選用的實(shí)時(shí)檢測(cè)雙目相機(jī)為zed mini相機(jī),根據(jù)廠家給出的參數(shù)可估算出測(cè)量深度為0.15~12 m,根據(jù)近大遠(yuǎn)小的關(guān)系,可以知道人在12 m處其像素框最小。單個(gè)攝像頭分辨率(像素)有四種選擇,同時(shí)考慮到相機(jī)的垂直拍攝角度比水平拍攝角度小,因此考慮垂直范圍的人體矩形框是否滿足要求就夠了。經(jīng)計(jì)算取整后的剔除距離:在672×376分辨率情況下為25;在1 280×720分辨率的情況下為48;在1 920×1 080分辨率的情況下為72;在2 208×1 241分辨率的情況下為83。

在左右圖像中都檢測(cè)出中心點(diǎn)的情況下,成對(duì)的左右點(diǎn)相對(duì)距離一定最近,并且左右圖像中的人體位置一致,那么只需將左右圖像上的中心點(diǎn)按照一定順序排序,就可以將兩邊的中心點(diǎn)匹配起來(lái)。本文規(guī)定左右圖像上的中心點(diǎn)排序規(guī)則一致,為:

1)首先,將所有中心點(diǎn)按坐標(biāo)的x方向數(shù)值由小到大的順序排序;

2)若存在坐標(biāo)的x方向數(shù)值相同的點(diǎn),這些點(diǎn)再按y方向數(shù)值由小到大排序。

圖7為實(shí)驗(yàn)中的一張雙目圖像,該圖像的單目分辨率為672×376。圖中的白色矩形框內(nèi)為關(guān)注區(qū)域,綠色的點(diǎn)為中心點(diǎn),藍(lán)色的點(diǎn)為關(guān)節(jié)點(diǎn)。左右圖像中兩人中心點(diǎn)按本文匹配方法,可以正確匹配到一起。

圖7 實(shí)驗(yàn)中的多人中心點(diǎn)識(shí)別匹配結(jié)果

2.2 雙目測(cè)距原理

使用視差的幾何模型測(cè)量空間中一點(diǎn)的距離有計(jì)算量小、誤差小等優(yōu)點(diǎn),因此其核心在于視差的計(jì)算。其原理如圖8所示。

圖8 雙目測(cè)距原理

P為測(cè)距的目標(biāo)點(diǎn),Pd為點(diǎn)P在左右相機(jī)光軸所在平面的垂直投影。在實(shí)際應(yīng)用中,目標(biāo)點(diǎn)與相機(jī)的水平距離更具有實(shí)際意義。因此,把Pd與相機(jī)間的距離z定為計(jì)算目標(biāo)。Pleft與Pright為P點(diǎn)分別在左右相機(jī)視圖上的投影,Xleft和Xright為2點(diǎn)在世界坐標(biāo)系中X方向上的坐標(biāo),則視差D按式(7)計(jì)算。

OL和OR為左右相機(jī)成像點(diǎn),與實(shí)際圖像之間的距離為焦距 f,OLOR為基線 T。Pleft與 Pright的間距為L(zhǎng),按式(8)計(jì)算:

三角形POLOR與三角形PPleftPright相似,其相似關(guān)系同樣適用于2個(gè)三角形在左右相機(jī)光軸平面上的投影,因此有比例關(guān)系:

因此,將式(8)代入式(9)并求解 z,可得 P點(diǎn)距相機(jī)的水平距離z:

式(10)中的T、f是相機(jī)參數(shù)大小;成像大小為w×h(像素),h為高,w為寬。D是通過(guò)式(7)計(jì)算得到,但是Xleft和Xright坐標(biāo)系為世界坐標(biāo)系,神經(jīng)網(wǎng)絡(luò)估計(jì)出的目標(biāo)點(diǎn)坐標(biāo)所在坐標(biāo)系為圖像坐標(biāo)系,因此需要經(jīng)過(guò)坐標(biāo)變換,即將神經(jīng)網(wǎng)絡(luò)給出的左右圖像坐標(biāo)x1、x2乘上每一像素的實(shí)際長(zhǎng)度變換得到 Xleft和 Xright,則視差計(jì)算如式(11):

其中像素實(shí)際長(zhǎng)度為du=b/w,b為傳感器水平方向長(zhǎng)度,其數(shù)值為常數(shù)。x1、x2為目標(biāo)點(diǎn)在左右圖像上的水平坐標(biāo)(像素)。

將式(11)代入式(10)得到實(shí)際目標(biāo)距離測(cè)量公式:

由于相機(jī)焦距f一般遠(yuǎn)遠(yuǎn)小于行人距離z,因此將公式簡(jiǎn)化為:

式中f/du=fu,fu這一參數(shù)被稱為相機(jī)在u軸上的歸一化焦距,是相機(jī)內(nèi)參數(shù)矩陣中的一個(gè)元素,其測(cè)量比相機(jī)焦距f更容易也更準(zhǔn)確。通常認(rèn)為,相機(jī)的內(nèi)參在出廠后是固定的,不會(huì)在使用中發(fā)生變化[20]。相機(jī)焦距f單位為m,相機(jī)參數(shù)fu單位為像素,則測(cè)距公式可以寫(xiě)成:

式中:T、fu是常數(shù),由生產(chǎn)廠家提供或者測(cè)量得到,變量d=x1-x2被為視差。x1、x2是神經(jīng)網(wǎng)絡(luò)估計(jì)出的人體中心點(diǎn)水平方向上的坐標(biāo)。

3 網(wǎng)絡(luò)訓(xùn)練

3.1 卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練

本文針對(duì)模型訓(xùn)練所用COCO數(shù)據(jù)集進(jìn)行調(diào)整。COCO數(shù)據(jù)集由美國(guó)微軟公司發(fā)布,包含80多個(gè)物體檢測(cè)類(lèi)別,20多萬(wàn)張圖片。針對(duì)行人檢測(cè),選取其中人物類(lèi)別的圖片作為原始數(shù)據(jù)進(jìn)行處理。由于COCO數(shù)據(jù)集中存在一些只占幾個(gè)像素點(diǎn)的標(biāo)記好的人體圖片和一些標(biāo)記不全(沒(méi)有標(biāo)記我們需要的關(guān)鍵點(diǎn))的圖片,這些圖片對(duì)本文網(wǎng)絡(luò)訓(xùn)練起到負(fù)面作用,因此需要進(jìn)行數(shù)據(jù)清洗。去除像素太低、人體關(guān)節(jié)點(diǎn)標(biāo)記不足的圖片,而這些圖片在數(shù)據(jù)集中只是非常少的一部分,去除后還有20多萬(wàn)張標(biāo)記充足、人物清晰的圖片,因此數(shù)據(jù)清洗對(duì)有效信息完整性沒(méi)有影響。計(jì)算人體的左肩、右肩、左胯、右胯和中心點(diǎn),將這5個(gè)點(diǎn)作為人體核心點(diǎn)。再根據(jù)人體核心點(diǎn)制作heatmap(熱圖)和vectormap(向量圖)作為圖像標(biāo)簽。將處理完的數(shù)據(jù)作為訓(xùn)練用數(shù)據(jù)集。

網(wǎng)絡(luò)訓(xùn)練所用電腦顯卡為 GTX1070,顯存8G、CPU為Intel Core i7-8750H,主頻4.0 GHz。使用隨機(jī)梯度下降法對(duì)神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,隨機(jī)梯度下降法的主要參數(shù)有:基礎(chǔ)學(xué)習(xí)率,意味著每個(gè)步驟中對(duì)模型的更改量或步長(zhǎng);動(dòng)量,具體講為當(dāng)更新權(quán)重時(shí)可以包括對(duì)權(quán)重的先前更新的指數(shù)加權(quán)平均值。隨機(jī)梯度下降法學(xué)習(xí)率及動(dòng)量屬于經(jīng)驗(yàn)優(yōu)化參數(shù),由于本文選取的人體關(guān)鍵點(diǎn)較少,因此在文獻(xiàn)[10-11]所選學(xué)習(xí)率的基礎(chǔ)上適當(dāng)增大,并結(jié)合實(shí)際訓(xùn)練情況設(shè)置:基礎(chǔ)學(xué)習(xí)率為0.000 04,動(dòng)量為0.9。訓(xùn)練8萬(wàn)次后每層的訓(xùn)練損失曲線如圖9所示,測(cè)試收斂曲線如圖10所示。

圖9 訓(xùn)練損失曲線

圖10 測(cè)試收斂曲線

可以看出:訓(xùn)練、測(cè)試loss值都呈下降趨勢(shì),說(shuō)明網(wǎng)絡(luò)一直在學(xué)習(xí)。2個(gè)分支的收斂情況相似,5萬(wàn)次以前下降較為明顯,5萬(wàn)次后下降緩慢,直到8萬(wàn)次各個(gè)loss值基本不繼續(xù)下降,網(wǎng)絡(luò)訓(xùn)練完成。測(cè)試loss值應(yīng)與分支1和分支2的loss值的和相差不大,說(shuō)明神經(jīng)網(wǎng)絡(luò)訓(xùn)練正常,不存在過(guò)擬合、欠擬合。分階段看訓(xùn)練loss值情況,3個(gè)階段loss值都呈現(xiàn)下降趨勢(shì),說(shuō)明3個(gè)階段都起到積極作用。

3.2 神經(jīng)網(wǎng)絡(luò)在COCO數(shù)據(jù)集上的檢測(cè)結(jié)果

在用神經(jīng)網(wǎng)絡(luò)檢測(cè)圖像時(shí),首先要對(duì)圖像進(jìn)行預(yù)處理,采取中心縮放方式,取4種尺度(scale)改變圖形分辨率,但不改圖像大小,這樣可以在一定程度上反映對(duì)不同分辨率圖像的檢測(cè)情況。由于測(cè)距算法只關(guān)注中心點(diǎn)的位置,因此測(cè)試誤差為:

其中:Ex、Ey、E為 x方向誤差、y方向誤差和總誤差;為人體中心點(diǎn)的標(biāo)準(zhǔn)坐標(biāo);xn、yn為人體中心點(diǎn)測(cè)的試坐標(biāo);w、h為圖像長(zhǎng)寬。

神經(jīng)網(wǎng)絡(luò)在COCO數(shù)據(jù)集上的測(cè)試結(jié)果見(jiàn)表1。可以看出scale為0.5的檢測(cè)成功率最低,另外3種scale的檢測(cè)成功率相差不大。對(duì)于誤差來(lái)說(shuō)神經(jīng)網(wǎng)絡(luò)在檢測(cè)目標(biāo)點(diǎn)x方向的精度比y方向的精度高很多。對(duì)于x方向的精度,scale=0.5最低,另外3種精度接近。對(duì)于y方向的精度scale=1.0最高??偩纫彩莝cale=1.0最高。由于測(cè)距算法視差計(jì)算只使用了x方向坐標(biāo),所以Ex有較大的參考意義。

表1 神經(jīng)網(wǎng)絡(luò)測(cè)試結(jié)果 %

4 雙目測(cè)距實(shí)驗(yàn)

4.1 雙目測(cè)距算法在KITTI數(shù)據(jù)集上的結(jié)果

KITTI數(shù)據(jù)集[21]由德國(guó)卡爾魯厄理工學(xué)院和豐田美國(guó)技術(shù)研究院聯(lián)合創(chuàng)辦,是目前國(guó)際上最大的自動(dòng)駕駛場(chǎng)景下的算法評(píng)測(cè)數(shù)據(jù)集。

查詢KITTI數(shù)據(jù)集提供的相機(jī)內(nèi)參矩陣可以得到:T=0.54 m,fu=7.188 56×102,將這2個(gè)參數(shù)以及匹配好的左右人體中心點(diǎn)坐標(biāo)代入式(14)可以計(jì)算出行人距離。神經(jīng)網(wǎng)絡(luò)檢測(cè)多人中心點(diǎn)結(jié)果如圖11所示,圖中綠色的點(diǎn)為中心點(diǎn),圖11(a)為左相機(jī)圖像檢測(cè)結(jié)果,圖11(b)為右相機(jī)圖像檢測(cè)結(jié)果。可以看出圖中大部分行人都檢測(cè)出來(lái),只有在黃色箭頭指出的白色上衣行人沒(méi)有檢測(cè)出來(lái)。

圖11 KITTI數(shù)據(jù)集上的檢測(cè)結(jié)果

原因可能有以下幾點(diǎn):

1)由于物體遮擋導(dǎo)致漏檢。雖然神經(jīng)網(wǎng)絡(luò)可以通過(guò)沒(méi)有被遮擋的部分推測(cè)出行人中心點(diǎn),但當(dāng)遮擋部位過(guò)大時(shí),無(wú)法估計(jì)出人體中心點(diǎn)。

2)由于行人距離過(guò)遠(yuǎn)無(wú)法檢測(cè)出。圖片進(jìn)入神經(jīng)網(wǎng)絡(luò)的時(shí)候經(jīng)過(guò)了尺寸改變,如果行人過(guò)遠(yuǎn),其特征所占像素太少,神經(jīng)網(wǎng)絡(luò)將無(wú)法檢測(cè)出人體中心點(diǎn)。

針對(duì)數(shù)據(jù)集中含有行人的圖像檢驗(yàn)算法,相對(duì)誤差如圖12所示。本文算法檢測(cè)出的最近行人距離為3.73 m、最遠(yuǎn)行人距離為28.5 m,但是當(dāng)行人距離超過(guò)22 m后,神經(jīng)網(wǎng)絡(luò)存在檢測(cè)不出目標(biāo)的情況,因此,對(duì)于KITTI數(shù)據(jù)集,本文算法使用距離為3.73~22 m。行人在3.73~10 m的算法相對(duì)誤差小于4.21%,在10~22 m的算法相對(duì)誤差小于7.27%。

圖12 KITTI數(shù)據(jù)集本文算法相對(duì)誤差

本文算法與Mask R-CNN&ICP的雙目物體定位方法和改進(jìn)Fast R-CNN&SGM的雙目行人檢測(cè)定位方法在KITTI數(shù)據(jù)集上進(jìn)行了對(duì)比實(shí)驗(yàn)。發(fā)現(xiàn)另外2種算法在行人距離超過(guò)15 m后誤差太大,因此,只取行人距離在4~15 m范圍內(nèi)的數(shù)據(jù)進(jìn)行對(duì)比,實(shí)驗(yàn)結(jié)果如圖13所示??梢钥闯?,Mask R-CNN&ICP的方法和Fast R-CNN&SGM的方法曲線波動(dòng)都非常大,而且2種檢測(cè)方法速度很慢,都在200 ms以上。而本文算法曲線波動(dòng)明顯小很多,而且基本可以保證每張圖片檢測(cè)時(shí)間在100 ms左右。

圖13 KITTI數(shù)據(jù)集上的對(duì)比實(shí)驗(yàn)

4.2 使用zed mini相機(jī)進(jìn)行實(shí)時(shí)監(jiān)測(cè)

本文采用zed mini雙目相機(jī)作為實(shí)時(shí)檢測(cè)相機(jī),其基本參數(shù)由生產(chǎn)廠家提供見(jiàn)表2。

表2 zed mini相機(jī)技術(shù)規(guī)格

實(shí)驗(yàn)所用的電腦顯卡為 GTX1070,顯存8G,CPU為Intel Core i7-8750H,主頻4.0 GHz。得到檢測(cè)速度見(jiàn)表3。

表3 雙目測(cè)距算法檢測(cè)速度 fps

算法的檢測(cè)速度隨分辨率增大而減慢,隨scale的增大而減小。具有實(shí)際應(yīng)用意義的主要是3種fps大于10的2種組合,即scale為0.5、分辨率為672×376的組合,和scale為1.0、分辨率為672×376的組合。

進(jìn)行測(cè)距實(shí)驗(yàn)時(shí)以激光雷達(dá)所得距離作為基準(zhǔn)。雙目測(cè)量實(shí)驗(yàn)取scale為0.5、分辨率為672×376的組合進(jìn)行實(shí)時(shí)檢測(cè)。結(jié)果如圖14所示。

圖14 zed mini雙目相機(jī)實(shí)時(shí)檢測(cè)結(jié)果

從0.5 m開(kāi)始每隔一段距離記錄一次雙目測(cè)距數(shù)據(jù),并計(jì)算相對(duì)誤差(保留正負(fù)),正值代表測(cè)量距離比實(shí)際距離遠(yuǎn),負(fù)值代表測(cè)量距離比實(shí)際距離近,相對(duì)誤差曲線(百分比)如圖15所示。

圖15 zed相機(jī)測(cè)距實(shí)驗(yàn)相對(duì)誤差

實(shí)時(shí)檢測(cè)的結(jié)果表明,神經(jīng)網(wǎng)絡(luò)在0.5 m以內(nèi)時(shí)由于人體所占圖片比例太大,無(wú)法檢測(cè)出關(guān)鍵點(diǎn)。如圖15,在0.5~6.2 m的相對(duì)誤差小于2.5%,檢測(cè)結(jié)果較為準(zhǔn)確;當(dāng)行人在6.2~8 m雖然存在波動(dòng),但都小于8.1%,檢測(cè)數(shù)據(jù)依然可信;在8 m以上相對(duì)誤差逐漸變大,雖然偶爾誤差小于10%,但整體數(shù)據(jù)不可信。檢測(cè)速度大約30 fps。在實(shí)驗(yàn)過(guò)程中發(fā)現(xiàn),當(dāng)人坐在靠背椅或周?chē)袕?qiáng)光干擾的時(shí)候,神經(jīng)網(wǎng)絡(luò)更容易出錯(cuò)。

實(shí)時(shí)檢測(cè)結(jié)果與在KITTI數(shù)據(jù)集上的檢測(cè)結(jié)果相差較大,實(shí)時(shí)檢測(cè)的行人距離范圍明顯小了很多,但是檢測(cè)速度變快了。原因有可能是相機(jī)性能的區(qū)別,KITTI數(shù)據(jù)集的圖片質(zhì)量?jī)?yōu)于zed mini相機(jī)拍攝到的圖片,如果采用性能更高的雙目相機(jī)或使用2個(gè)高性能的單目相機(jī)組成雙目相機(jī),有可能提高檢測(cè)范圍。另外,實(shí)時(shí)檢測(cè)時(shí)的光環(huán)境與神經(jīng)網(wǎng)絡(luò)訓(xùn)練所用COCO數(shù)據(jù)集中的光環(huán)境存在較大差異,而訓(xùn)練所用COCO數(shù)據(jù)集與KITTI數(shù)據(jù)集光環(huán)境相似,因此導(dǎo)致實(shí)時(shí)檢測(cè)距離較近的,檢測(cè)結(jié)果不如在KITTI數(shù)據(jù)集上的情況。而且實(shí)驗(yàn)室的環(huán)境相較于KITTI數(shù)據(jù)集的街道環(huán)境更為雜亂,可能也是錯(cuò)誤次數(shù)增多的原因之一。后續(xù)如果能夠以實(shí)時(shí)檢測(cè)所用相機(jī)制作數(shù)據(jù)集對(duì)網(wǎng)絡(luò)進(jìn)一步訓(xùn)練,有可能提高實(shí)時(shí)檢測(cè)范圍,減少錯(cuò)誤次數(shù)。

5 結(jié)論

本文使用多階段多分支的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)模型。實(shí)現(xiàn)5個(gè)人體核心點(diǎn)檢測(cè),其在水平方向的相對(duì)誤差小于0.67%。神經(jīng)網(wǎng)絡(luò)模型提取雙目相機(jī)左右圖像中的人體核心點(diǎn),根據(jù)2點(diǎn)相對(duì)距離進(jìn)行匹配來(lái)計(jì)算視差,最終使用三角法計(jì)算得到行人距離。

在KITTI數(shù)據(jù)集上檢測(cè)本文算法,檢測(cè)結(jié)果為:能夠較為準(zhǔn)確地檢測(cè)出3.73~22.5 m的行人,檢測(cè)每張圖片用時(shí)約為100 ms。行人在3.73~10 m的算法相對(duì)誤差小于4.21%,在10~22 m的算法相對(duì)誤差小于7.27%。比采用Mask R-CNN&ICP和改進(jìn)Fast-YOLO&SGM的算法檢測(cè)范圍大、相對(duì)誤差小并且速度更快。

在zed mini雙目相機(jī)上的實(shí)驗(yàn)結(jié)果為:行人距離在0.5~6.2 m的相對(duì)誤差小于2.5%,速度可以達(dá)到30 fps。能夠?qū)崿F(xiàn)實(shí)時(shí)檢測(cè)。

猜你喜歡
雙目中心點(diǎn)關(guān)鍵點(diǎn)
聚焦金屬關(guān)鍵點(diǎn)
肉兔育肥抓好七個(gè)關(guān)鍵點(diǎn)
Scratch 3.9更新了什么?
基于雙目測(cè)距的卡爾曼濾波船舶軌跡跟蹤
電子制作(2019年20期)2019-12-04 03:51:38
如何設(shè)置造型中心點(diǎn)?
電腦報(bào)(2019年4期)2019-09-10 07:22:44
基于雙目視覺(jué)圖像的長(zhǎng)度測(cè)量方法
漢字藝術(shù)結(jié)構(gòu)解析(二)中心點(diǎn)處筆畫(huà)應(yīng)緊奏
尋找視覺(jué)中心點(diǎn)
大眾攝影(2015年9期)2015-09-06 17:05:41
醫(yī)聯(lián)體要把握三個(gè)關(guān)鍵點(diǎn)
鎖定兩個(gè)關(guān)鍵點(diǎn)——我這樣教《送考》
商水县| 涞水县| 高唐县| 武定县| 电白县| 攀枝花市| 永顺县| 肥乡县| 铜川市| 绥棱县| 普安县| 鄂伦春自治旗| 鹿泉市| 渝中区| 峨山| 靖边县| 鄂尔多斯市| 孝感市| 达孜县| 拉萨市| 南靖县| 扎兰屯市| 曲周县| 伊吾县| 衡阳市| 靖安县| 曲阳县| 江陵县| 台东市| 三亚市| 大同县| 萨嘎县| 靖江市| 蒲江县| 涞源县| 长春市| 噶尔县| 霍城县| 阿巴嘎旗| 古交市| 延川县|