6月30日下午,在七牛架構(gòu)師實(shí)踐日第二十九期吳子章進(jìn)行了《關(guān)鍵點(diǎn)檢測(cè)技術(shù)在自動(dòng)駕駛視覺感知中的應(yīng)用》為題的實(shí)戰(zhàn)分享。本文是對(duì)演講內(nèi)容的整理。
縱目科技自動(dòng)駕駛感知算法經(jīng)理,主要研究道路場(chǎng)景下的目標(biāo)檢測(cè)、分割及跟蹤,并推進(jìn)相關(guān)算法性能優(yōu)化與嵌入式移植等。
在自動(dòng)駕駛中,環(huán)境感知是一個(gè)非常重要的環(huán)節(jié),它不僅可以幫助無人駕駛汽車進(jìn)行定位,還可以告知障礙物等信息以幫助決策模塊去調(diào)整駕駛行為。在視覺感知任務(wù)中,實(shí)際上有很多細(xì)分的任務(wù)類型,比如目標(biāo)檢測(cè)、目標(biāo)跟蹤、語(yǔ)義分割、實(shí)例分割、關(guān)鍵點(diǎn)檢測(cè)等,而這些細(xì)分任務(wù)在我們的環(huán)境感知中都有著非常重要的應(yīng)用。
本次分享主要從以下內(nèi)容展開:
介紹關(guān)鍵點(diǎn)檢測(cè)技術(shù)的基本原理、關(guān)鍵點(diǎn)檢測(cè)的基本方法、該技術(shù)自動(dòng)駕駛當(dāng)中的應(yīng)用,以及關(guān)鍵點(diǎn)檢測(cè)技術(shù)現(xiàn)存哪些問題,未來發(fā)展的方向以及在自動(dòng)駕駛中的發(fā)展?jié)摿Α?/p>
01
關(guān)鍵點(diǎn)檢測(cè)技術(shù)簡(jiǎn)介
在圖像處理中,關(guān)鍵點(diǎn)本質(zhì)上是一種特征。它是對(duì)一個(gè)固定區(qū)域或者空間物理關(guān)系的抽象描述,描述的是一定鄰域范圍內(nèi)的組合或上下文關(guān)系。它不僅僅是一個(gè)點(diǎn)信息,或代表一個(gè)位置,更代表著上下文與周圍鄰域的組合關(guān)系。
比如在人臉關(guān)鍵點(diǎn)檢測(cè)任務(wù)當(dāng)中,有 28 個(gè)關(guān)鍵點(diǎn),或是現(xiàn)在比較流行的 64 個(gè)、128 個(gè)關(guān)鍵點(diǎn),這里面每個(gè)點(diǎn)在不同的人臉當(dāng)中,代表了一類的特征,且具有一定的通用性。這一類特征不僅包含了像素的一些特性,比如嘴唇的特征點(diǎn),包含了嘴唇與面部的位置關(guān)系。
右邊的圖片是前段時(shí)間比較火的阿里推出的服飾關(guān)鍵點(diǎn)比賽,比如在這件服飾中提供了 13 類關(guān)鍵點(diǎn),每個(gè)關(guān)鍵點(diǎn)之所以被定位為一類關(guān)鍵點(diǎn),因?yàn)樗砹朔棶?dāng)中某一個(gè)特定的位置,或者某一個(gè)特定的位置所能代表的周圍的關(guān)系。而在人體姿態(tài)檢測(cè)當(dāng)中,這個(gè)關(guān)鍵點(diǎn)不僅代表一個(gè)關(guān)節(jié),還代表著這個(gè)關(guān)節(jié)和其他關(guān)節(jié)之間的關(guān)系,比如這個(gè)關(guān)節(jié)能跟其他哪些關(guān)節(jié)聯(lián)系得比較緊密。
02
關(guān)鍵點(diǎn)檢測(cè)的兩個(gè)類型和方法
一個(gè)方面是用點(diǎn)回歸的方式來解決,另一個(gè)是用點(diǎn)分類的方法。但是這兩個(gè)方法,都是一種手段或者是途徑,解決的問題就是幫助我們把這個(gè)點(diǎn)在圖像當(dāng)中的位置與關(guān)系給找出來。
關(guān)鍵點(diǎn)檢測(cè)技術(shù)原理
以 openpose 的人體關(guān)鍵點(diǎn)為例,這是大家比較熟悉的一個(gè)人體關(guān)鍵點(diǎn)檢測(cè)的網(wǎng)絡(luò)。
網(wǎng)絡(luò)從輸入圖像開始經(jīng)過基礎(chǔ)段提取特征,這些特征幫助后面進(jìn)行關(guān)鍵點(diǎn)回歸和關(guān)系回歸提供一些素材。如果前面的特征不夠豐富的話,后面處理的結(jié)果也很難達(dá)到理想的效果。這也是大網(wǎng)絡(luò)普遍會(huì)比小網(wǎng)絡(luò)處理問題具有更高精度的最主要的一方面原因。但是對(duì)于小網(wǎng)絡(luò)來說,把這些特征都保持下來,或者提出比原來大網(wǎng)絡(luò)更加豐富的特征,但是占用的空間不需要那么大,這樣會(huì)比過去的大網(wǎng)絡(luò)具有更加精確的處理結(jié)果,占用的空間和效率都可以看到這方面的探索。這方面的探索在許多自動(dòng)駕駛當(dāng)中都會(huì)被用到,所有算法需要跑到汽車上去測(cè),需要在嵌入式的板塊上面實(shí)時(shí)跑起來,而不需要在其他比較大的平臺(tái)上面跑。
這是比較經(jīng)典關(guān)鍵點(diǎn)檢測(cè)網(wǎng)絡(luò),它的設(shè)計(jì)非常簡(jiǎn)明:一個(gè)分支去回歸它的點(diǎn),另一個(gè)分支去回歸它的關(guān)系。這個(gè)點(diǎn)標(biāo)簽和關(guān)系標(biāo)簽,都是用上圖的類似方式去定義。這種定義的方法減輕了回歸的難度。所用的多階段的方式,相當(dāng)于每個(gè)階段給我們提供出來一定的結(jié)果。下一個(gè)階段對(duì)這個(gè)結(jié)果進(jìn)行多階段精度的實(shí)驗(yàn),在我們沒有檢測(cè)當(dāng)中或者是其他分割當(dāng)中,其他領(lǐng)域當(dāng)中都有很多類似方法出現(xiàn)。
從上面右圖當(dāng)中可以看到,通過多階段的精度看到點(diǎn)的效果是整體上是在不斷提高的,即便有個(gè)別的點(diǎn)可能下降,這也屬于是正常的情況,因?yàn)樗隽硕嚯A段的融合。這種處理方法,在基于深度學(xué)習(xí)的處理手段當(dāng)中是比較常見的。現(xiàn)在關(guān)系的回歸,也是經(jīng)過這樣多階段的精修,能夠考慮或結(jié)合到各種不同階段的信息,它的處理結(jié)果也在不斷提高。這種方法在我們?nèi)S的車輛檢測(cè)當(dāng)中,或者是二維的檢測(cè)當(dāng)中,也是經(jīng)常用到的。
在關(guān)鍵點(diǎn)檢測(cè)當(dāng)中,關(guān)系的回歸是非常重要的一種。對(duì)關(guān)系的定義,可以在兩個(gè)點(diǎn)之間定義一部分的關(guān)系,或者是定義一個(gè)比較窄的領(lǐng)域去做的一件事情,這也就是我們論文當(dāng)中經(jīng)常會(huì)提到的一種場(chǎng)的定義。
場(chǎng)的定義相當(dāng)于在一個(gè)領(lǐng)域范圍之內(nèi),對(duì)它進(jìn)行一定的加強(qiáng)定義,包括位置和朝向等,這屬于是一個(gè)多維度的考量。這種方式可以幫助我們解決在一個(gè)圖片當(dāng)中或者是一次檢測(cè)任務(wù)當(dāng)中,出現(xiàn)出現(xiàn)多個(gè)目標(biāo)、關(guān)系,同時(shí)多個(gè)目標(biāo)和當(dāng)中的點(diǎn)需要進(jìn)行互相關(guān)系的聯(lián)連通的時(shí)候,這個(gè)方法會(huì)有優(yōu)勢(shì)。因?yàn)樗鼤?huì)幫助我們剔除掉不同標(biāo)簽之間點(diǎn)的錯(cuò)誤連接,同時(shí)也能夠幫助剔除掉一些不符合關(guān)系約束的點(diǎn)。
以剛才 openpose 的方法為例,它回歸的精度,受限于圖片下采樣的倍數(shù)。比如在 MIT 的論文當(dāng)中,它的精度就是在 8 x 8 這樣一個(gè)像素范圍之內(nèi)。
如果要提高我們回歸的精度,有兩種方式:一種就是降低下載的倍數(shù),盡量在大圖上做這個(gè)事情。原作者不在大圖上做這件事情是因?yàn)樵诖髨D上得不到這么好的效果,圖越大,回歸難度,也就是回歸的范圍就越大,所以采取了這樣一個(gè)降采樣,把任務(wù)的難度降低。
關(guān)鍵點(diǎn)檢測(cè)的通用性
這個(gè)通用關(guān)鍵點(diǎn)可以體現(xiàn)在以下幾個(gè)方面:
在自動(dòng)駕駛當(dāng)中,通過這個(gè)關(guān)鍵點(diǎn)可以找出人的行為,比如在停車場(chǎng)中看到一個(gè)保安正在向我們揮手,這個(gè)車位是有特殊用途的,你們不可以停。或者是在一些駕駛環(huán)境當(dāng)中,做一些人臉關(guān)鍵點(diǎn)的檢測(cè),幫助我們?nèi)プR(shí)別出駕駛?cè)藛T的情緒、精神的狀態(tài)等。另外一方面,可以用這種方式去幫助識(shí)別出一些馬路邊突然出現(xiàn)的一條小狗。在我們自動(dòng)駕駛車輛跑的過程當(dāng)中,如果遇到這種問題,要識(shí)別出的不能只是一個(gè)簡(jiǎn)單的障礙物,是一個(gè)不可控的動(dòng)物,也要通過關(guān)鍵點(diǎn)識(shí)別出它的動(dòng)作,是要下蹲還是橫穿這條路。
其次,車輛在外面跑的時(shí)候,我們通過觀察路面上的一些路面標(biāo)志,比如路牌、地面上的箭頭,或者是其他一些關(guān)鍵標(biāo)志,這些標(biāo)記的點(diǎn)是可以幫助我們?nèi)ザㄎ?,可以在地圖上找到這些定位點(diǎn),我們通過這些點(diǎn)能夠輔助我們更精確地獲得我們實(shí)時(shí)的位置,起到更精確的定位作用。
03
關(guān)鍵點(diǎn)檢測(cè)在自動(dòng)駕駛中的應(yīng)用
在自動(dòng)駕駛當(dāng)中,有一些關(guān)鍵點(diǎn)檢測(cè)的應(yīng)用。
比如箭頭的檢測(cè),檢出箭頭的同時(shí),可以把它的關(guān)鍵節(jié)點(diǎn)回歸出來,不同的顏色的點(diǎn)代表不同的類型,并且不同的點(diǎn)有它的位置信息。通過這些點(diǎn),作為地圖上的坐標(biāo),可以實(shí)時(shí)、精確地告訴車輛,告訴自動(dòng)駕駛的大腦,我們現(xiàn)在的位置。箭頭的關(guān)鍵點(diǎn)檢測(cè),也是用了類似的方法,雖然它的網(wǎng)絡(luò)模型已經(jīng)改得面目全非了,但是它的原理是一樣的,通過不同等級(jí)的金字塔級(jí)別,可以把不同級(jí)別的點(diǎn)信息融合起來,從而提高它的精度,另一方面提高它的檢測(cè)率。
在箭頭或者是其他的一些關(guān)鍵點(diǎn)當(dāng)中,也是需要知道每個(gè)點(diǎn)和另外一個(gè)點(diǎn)之間連接的關(guān)系,也就是它關(guān)系的回歸。
并不是所有的點(diǎn)回歸都能夠很精確。比如有些點(diǎn)在圖像上,車輛運(yùn)行過程中,有些箭頭的關(guān)鍵點(diǎn)可以準(zhǔn)確地回歸出來,有些可能識(shí)別出來錯(cuò)誤,這受限于我們之前學(xué)習(xí)到的經(jīng)驗(yàn)等。這類問題可以通過一些后續(xù)的改進(jìn),比如說網(wǎng)絡(luò)的改進(jìn)、攝像本身的改進(jìn)。另外也可以通過后期的其他公式、其他算法上用的多一幀或是匹配的方式,去修正一下錯(cuò)誤。
另外在自動(dòng)泊車或者自主泊車當(dāng)中,需要先檢測(cè)出車位,我們用點(diǎn)回歸的方式可以把車位的頂點(diǎn)回歸出來。在一個(gè)圖象當(dāng)中,可以回歸出車位當(dāng)中的一些關(guān)鍵點(diǎn),這個(gè)關(guān)鍵點(diǎn)是有不同類型的。通過車位的關(guān)鍵點(diǎn),我們可以精確獲知到我們實(shí)車或者是車輛自身距離這些關(guān)鍵點(diǎn)和車位之間距離是多少,我們相對(duì)的要調(diào)整控制模塊,使得我們能夠自動(dòng)泊進(jìn)去這個(gè)車位。所以,回歸的車位頂點(diǎn)信息,對(duì)我們自動(dòng)泊車或者是自主泊車來說是非常重要的信息。
另外,利用點(diǎn)回歸的方式,同時(shí)結(jié)合語(yǔ)義分割的手段,可以給出一個(gè)信息更加豐富的結(jié)果,網(wǎng)絡(luò)可以輸出這方面的結(jié)果,相當(dāng)于是分割出來的車位信息、車庫(kù)當(dāng)中車輛數(shù)的信息、車位是不是空車位、這個(gè)區(qū)域是不是空車位的信息。
同時(shí)通過點(diǎn)回歸的方式,在網(wǎng)絡(luò)的另一個(gè)分支,可以得到關(guān)鍵點(diǎn)的位置在哪里。比如我們知道這個(gè)地方是個(gè)空車位,我們也知道它車位的位置,這樣對(duì)我們自動(dòng)泊車來說,就可以直接去停,這是很好的感知功能。
除此之外,在室外的一些定位當(dāng)中,可以用關(guān)鍵點(diǎn)回歸的方法去回歸路牌的定點(diǎn)。可以通過這個(gè)點(diǎn)反饋在地圖上,更加精確地知道我們實(shí)時(shí)的位置。對(duì)路牌來說,2D 目標(biāo)檢測(cè)并不能全面描述其信息,因?yàn)閳D像中有很多傾斜的路牌。通過點(diǎn)回歸的方式,可以清晰地得到它在圖像中的真實(shí)形狀與位置。通過一些攝像機(jī)的成像原理,或其他的修正手段,可以把這個(gè)位置信息投影到真實(shí)的三維信息當(dāng)中去,更好地幫助我們確定車輛自身在三維世界當(dāng)中的位置。
在圖象當(dāng)中做二維 bounding box 之或做三維bounding box 的目標(biāo)檢測(cè),點(diǎn)和點(diǎn)之間的關(guān)系后剩下的頂點(diǎn)其實(shí)就可以看做是關(guān)鍵點(diǎn),去掉的這個(gè)關(guān)系就是它的框,也就是它的連接關(guān)系。所以,去掉連線之后,就可以看成一個(gè)點(diǎn)回歸的問題。做目標(biāo)檢測(cè)或者是做三維目標(biāo)檢測(cè)當(dāng)中,比較重要的研究問題是如何把這個(gè)點(diǎn)回歸的問題做得更精確。有很多人用一些模板的方式,比如說像目前百度的 Apollo 2.5 當(dāng)中,其實(shí)有一個(gè)模式是相當(dāng)于把這邊真實(shí)的三維的候選做了很多匹配,看哪個(gè)跟檢測(cè)出來的更相近或者更相匹。
這個(gè)方法,其他公司也有類似的狀況,在做點(diǎn)回歸的時(shí)候,都是直接在圖片當(dāng)中做三維的點(diǎn)回歸,因?yàn)槎S的點(diǎn)回歸是比較相似的。我們可以看到在比較遠(yuǎn)處時(shí)候,就直接二維回歸,在稍微近一點(diǎn)的時(shí)候,可以做三維的點(diǎn)回歸。因?yàn)樵谶h(yuǎn)處的時(shí)候,這個(gè)側(cè)面是很難看出來的,在相對(duì)比較近的時(shí)候,可以精確地描述。目標(biāo)車輛下面這個(gè)斜邊代表著它的航向角,這個(gè)航向角和公共的航向角定義不太一樣,相當(dāng)于這個(gè)車身的航向角,這個(gè)航向角對(duì)我們來說很主要的,可以判斷出或者是輔助我們判斷出前方車輛運(yùn)動(dòng)的趨勢(shì)或者是運(yùn)動(dòng)的范圍。
因?yàn)榻Y(jié)合多幀信息,這個(gè)航向角會(huì)有變化的曲線,我們根據(jù)這個(gè)曲線可以預(yù)測(cè)出這個(gè)車輛是否有變道,或者是否有急轉(zhuǎn)這樣的趨勢(shì)。通過這樣的信息,可以幫助決策模塊做一些重要的決策。比如預(yù)測(cè)出前方車輛要變道插隊(duì)了,防插隊(duì)也是我們自動(dòng)駕駛當(dāng)中遇到的很重要的問題;比如很多車,做 L1 和 L2 的方案當(dāng)中,在嘗試編程當(dāng)中,前方車輛如果要插隊(duì),對(duì)我們自動(dòng)駕駛的車輛來說很難識(shí)別。前面的車有沒有插隊(duì)的趨勢(shì),一般都是是有一定經(jīng)驗(yàn)的司機(jī)能夠準(zhǔn)確或者是最高精度地判斷出來。因?yàn)槭欠衲軌蚺袛喑銮胺杰囕v司機(jī)有插隊(duì)趨勢(shì),對(duì)于我們正常的人類司機(jī)來說,也造成了很多的事故。因?yàn)榕袛嗖怀鰜砬懊娴能囕v是否有插隊(duì)的趨勢(shì),而前面的很多新手司機(jī)突然變道,這樣就會(huì)發(fā)生一些比較經(jīng)典的擦碰或者是追尾事故。這類事故放在自動(dòng)駕駛車輛上來說,理論上可以做到比人類更高的精度。
用點(diǎn)回歸的方式,可以去解決在一些場(chǎng)景當(dāng)中三維目標(biāo)檢測(cè)的問題。對(duì)于點(diǎn)回歸來說,需要根據(jù)周圍的關(guān)系去判斷這個(gè)點(diǎn)是不是應(yīng)該在這里。而在三維檢測(cè)的時(shí)候,經(jīng)常會(huì)出現(xiàn)目標(biāo)不全或者是目標(biāo)存在一定遮擋的問題,這就需要我們?nèi)ピ黾铀母惺芊秶?,或者是增?qiáng)它在這方面的處理能力,這是可以去有效規(guī)避的事情。
可以用一些小的網(wǎng)絡(luò)去做,比如說這張表當(dāng)中描述的是用不同的方法去回歸點(diǎn)不同的任務(wù),如人體、箭頭、車位線、路牌、車輛等,還有很多其他類型的點(diǎn)回歸任務(wù),都可以用這種方法,總體上來說,都是可以去解決,但是處理的能力是有限的。比如在車輛的關(guān)鍵點(diǎn)上來說,車輛的關(guān)鍵點(diǎn)回歸的時(shí)候,整體回歸的效果一般,因?yàn)檐囕v本身也是一個(gè)比較難的問題,整體的精度也比 2D 的要低很多。目前精度比較高的方法仍然是以激光雷達(dá)數(shù)據(jù)為輔助的方法,以視覺為主的方法目前還沒有打進(jìn)前三名,甚至只能排前十。
另外一方面,在用經(jīng)典的 mask-rcnn 方法去做這類問題的時(shí)候,也受限于剛才所說的精度問題,下采樣的倍數(shù)越高,回歸得到的結(jié)果精度就越難以保證。這方面用到了很多級(jí)聯(lián)的方法來提高精度,比如先用一個(gè) 28 x 28 的,再用 56 x 56 的,再用一個(gè) 112 x 112 的,這樣精度逐漸提高了,但是它的運(yùn)算量并沒有被提高,或者復(fù)雜度并沒有被提高,不是乘的關(guān)系而是加的關(guān)系,用兩者的策略做的事情。這在我們的算法工程師或者是同行業(yè)當(dāng)中,應(yīng)該不是什么難的問題。
04
目前關(guān)鍵點(diǎn)檢測(cè)存在的幾個(gè)問題
以上這三點(diǎn),是我們?cè)谔剿鼽c(diǎn)回歸任務(wù)當(dāng)中,所遇到的比較典型的三類問題。
另外,在城市道路或者是園區(qū)、停車場(chǎng)這些場(chǎng)景當(dāng)中,點(diǎn)回歸任務(wù)或關(guān)鍵點(diǎn)停車的任務(wù)可以有更多的應(yīng)用。但凡是能夠被抽象出來作為一個(gè)典型的位置和關(guān)鍵代表的點(diǎn)的事物,都可以把它抽象出一些點(diǎn)。這些點(diǎn)都可以利用這種技術(shù),去回歸、檢測(cè)出來,從而提高我們的感知處理能力。
05
未來的發(fā)展方向及潛力
1.通用性
指的是需要能夠在一個(gè)網(wǎng)絡(luò),把里面很多種類型的點(diǎn)回歸,全部做出來。而不是說做一個(gè)任務(wù),就要一個(gè)網(wǎng)絡(luò),因?yàn)榫W(wǎng)絡(luò)本來就很小。通用性就是我們要用一個(gè)網(wǎng)絡(luò)去做很多類任務(wù)的回歸。
2.小型化
在網(wǎng)絡(luò)基礎(chǔ)上可以用更小、但細(xì)節(jié)仍然豐富的網(wǎng)絡(luò)。目前在 1 - 2M 這樣的大小也可以夠用,盡管正常的 VGG16 在 500M 左右。即便這樣,模型信息其實(shí)仍然有很大的冗余,這里面還有很多探索的空間。
3.更高的精度
有的精度受限于 mask 下采樣的分辨率,或者說下采樣的倍數(shù)。這就要提高算法的處理能力,以便可以在更大的搜索空間中回歸出點(diǎn)的位置,即降低下采樣的倍數(shù),以提高精度。
4.更強(qiáng)的泛化
曾經(jīng)也碰到了很多候選框稍微偏一點(diǎn)關(guān)鍵點(diǎn)就回歸不出來的問題。遇到這種情況需要提高算法對(duì)候選框偏移的適應(yīng)能力,或者想辦法減少或削弱候選框偏移的問題。這也是很多做自動(dòng)駕駛方案的公司或研究機(jī)構(gòu)共同面臨的問題,大家一直在嘗試做出泛化能力更強(qiáng)的方法來。
-
檢測(cè)技術(shù)
+關(guān)注
關(guān)注
2文章
355瀏覽量
29077 -
無人駕駛
+關(guān)注
關(guān)注
98文章
4059瀏覽量
120513 -
自動(dòng)駕駛
+關(guān)注
關(guān)注
784文章
13812瀏覽量
166461
原文標(biāo)題:吳子章:關(guān)鍵點(diǎn)檢測(cè)技術(shù)在自動(dòng)駕駛視覺感知中的應(yīng)用
文章出處:【微信號(hào):IV_Technology,微信公眾號(hào):智車科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論