详解停车位检测算法 Vision-Based Parking-Slot Detection: A DCNN-Based Approach and a Large-Scale Benchmark
本文介紹一篇基于深度學習的停車位檢測論文:DeepPS,作者同時公開了數據集ps2.0,工作很扎實,對于入門停車位檢測很有幫助,論文發表在 IEEE T-IP 2018。
項目鏈接為:https://cslinzhang.github.io/deepps/
0. Abstract
在自動泊車系統中,如何能準確而高效地檢測和定位停車位是一個關鍵但尚未解決的問題。由于路面材質的多樣性、光照條件的變化以及樹木產生的陰影等因素,使得基于視覺的停車位檢測變得比看上去困難得多。
本文提出了一種新的基于卷積神經網絡的停車位檢測方法,即 DeepPS。DeepPS的關鍵步驟有兩個:識別輸入圖像上的所有標記點和對標記點對形成的局部圖像進行分類。
其次,為了便于基于視覺的停車位檢測研究,建立了大規模的數據集。包括從典型的室內和室外停車場采集的12165張環視圖。
1. Introduction & Related Work
下圖是一個典型的基于視覺的停車位檢測系統,該系統包括兩個模塊,即環視圖合成和對環視圖的停車位檢測。(本文重點介紹停車位檢測,環視圖合成可以查看相關文獻。)
下圖為本文中收集到的停車位數據:(a)、(b)、( c )、(d)中的停車位是垂直的,(e)、(f)、(g)中的停車位是平行的,(h)中的停車位是傾斜的。(a)和(b)是從室內停車場采集的,其它的是從室外停車場采集的。(b)中的車位線是黃色的,而其它圖像中的車位線是白色的。(e)是在雨天采集的,(f)是晚上在路燈下采集的,在(g)中樹木造成的陰影覆蓋了停車線,(d)和(e)中車位線有所損壞。
對于采集的數據集,作者進行了標注,下圖中黃色圓圈為標記點。
2. DeepPS: A DCNN-Based Approach
下圖分別為理想的垂直、平行和傾斜停車位。在圖中,所有標記點都用黃圓圈標記。此外,還標記了車位進入線(有效停車位的兩個標記點的連接虛線)和車位分隔線(白色實線)。
對于停車位檢測,DeepPS主要分為三步:標記點檢測、局部圖像模式分類和停車位推理。
A. Marking-Point Detection
本文選擇YoloV2模型作為標記點檢測器。在訓練階段,對于每張環視圖,首先人工標注所有的標記點。對于每個標記點 pi\mathbf{p}_ipi?,都有一個以標記點為中心固定尺寸為 p×pp\times pp×p 的包圍框作為標記點的真值包圍框。
為了使檢測器具有旋轉不變性,作者通過旋轉每張原始標記圖片來增強訓練集。具體地說,每張訓練圖片 I\mathbf{I}I,可以得到它的 J\mathbf{J}J 個旋轉版本圖片,{Ij}j=0J?1\{\mathbf{I}_j\}_{j=0}^{\mathbf{J}-1}{Ij?}j=0J?1?。其中 Ij\mathbf{I}_jIj? 經過旋轉 360J×j\frac{360}{\mathbf{J}}\times jJ360?×j 角度得到。同時標記點的坐標也以同樣的方式旋轉。
下圖中(a)是原始訓練圖片,(b)是通過將圖(a)旋轉30度來生成的。標記點為紫色點,邊界框為黃色。
B. Local Image Pattern Classification
測試時,置信度大于 δ1\delta_1δ1? 的點將被視為標記點。假如有兩個標記點 p1,p2\mathbf{p}_1,\mathbf{p}_2p1?,p2?,還需要驗證其是否能夠形成有效的車位進入線?
- 首先如果 p1,p2\mathbf{p}_1,\mathbf{p}_2p1?,p2? 能夠形成一個有效的車位進入線,兩個標記點之間的距離應該滿足一些距離約束條件。如果是平行停車位的車位進入線,應該滿足 t1<∣∣p1p2∣∣<t2t_1<||\mathbf{p}_1\mathbf{p}_2||<t_2t1?<∣∣p1?p2?∣∣<t2?,如果是垂直或傾斜停車位的車位進入線,應該滿足t3<∣∣p1p2∣∣<t3t_3<||\mathbf{p}_1\mathbf{p}_2||<t_3t3?<∣∣p1?p2?∣∣<t3?,參數 t1、t2、t3、t4t_1、t_2、t_3、t_4t1?、t2?、t3?、t4? 是根據各種停車位進入線長度的先驗知識確定的。
- 然后,還需要進一步處理滿足距離約束的標記點對。首先,對于一對標記點,雖然它可以滿足距離約束,但它們仍然很可能無法形成有效的車位進入線。例如,在下面的左圖中兩個標記點之間的距離滿足作為平行停車位的車位進入線的距離約束;然而,這兩個標記點仍然無線形成有效的車位進入線,因為它們之間還存在一個標記點未檢測出來。另外,假設可以形成有效的車位進入線。還需要確定相關的停車位是在順時針方向還是在逆時針方向,以及這個停車位是直角還是傾斜。所有這些問題都可以通過將兩個標記點形成的局部圖像模式分類到預定義的類中來解決。
如中間的圖所示:首先建立以 p1\mathbf{p}_1p1? 和 p2\mathbf{p}_2p2? 的中點為原點,以 p1p2→\overrightarrow{\mathbf{p}_{1} \mathbf{p}_{2}}p1?p2?? 為 X\mathbf{X}X 軸的局部坐標系。因此可以確定它的 Y\mathbf{Y}Y 軸。在這個坐標系中,定義了一個矩形區域 R\mathbf{R}R。對于 R\mathbf{R}R,其沿 X\mathbf{X}X 軸的長度設為 ∥p1p2∥+Δx\left\|\mathbf{p}_{1} \mathbf{p}_{2}\right\|+\Delta x∥p1?p2?∥+Δx 及其沿 Y\mathbf{Y}Y 軸的長度設為 Δy\Delta yΔy, 從環視圖中提取 R\mathbf{R}R 覆蓋的區域,將其歸一化為 w×hw\times hw×h 的大小區域,得到了局部圖像模式。
在訓練階段,會得到一個由標記點形成的所有局部圖像模式組成的集合 C\mathbb{C}C。根據停車位的特征,將集合 C\mathbb{C}C 中的樣本分為7類,如右圖所示:逆時針直角,逆時針傾斜(銳角),逆時針傾斜(鈍角),順時針直角,順時針傾斜(鈍角),順時針傾斜(銳角),無效。
在構造集合 C\mathbb{C}C時,還有一個實際問題,類不平衡,這意味著一個特定的類相對于其它類只有很少的實例。為了解決這個問題,作者采用了SMOTE對少數類別進行了過度采樣。
作者設計的分類模型如下圖所示,右邊是模型參數。
C. Parking-Slot Inference
在自動泊車系統中,停車位通常被認為是一個平行四邊形,由其四個頂點的坐標表示。在大多數情況下,兩個非標記點是不可見的,其坐標只能通過推理得到。為此,需要假設停車位的深度是已知的先驗知識。如下圖(a)、(b)、( c )所示,垂直、平行和傾斜的停車位的深度分別為 d1、d2、d3d_1、d_2、d_3d1?、d2?、d3?。
- 假設 p1\mathbf{p}_1p1? 和 p2\mathbf{p}_2p2? 是兩個檢測到的標記點,形成的局部圖像模式分為順時針直角或逆時針直角,則可以很容易地計算出兩個非標記點 p3\mathbf{p}_3p3? 和 p4\mathbf{p}_4p4? 的坐標。例如,在上圖(a)中,標記點形成的局部圖像模式是順時針直角并且此停車位應為垂直停車位,其深度為 d1d_1d1?。因此,其另外兩個標記點 p3\mathbf{p}_3p3? 和 p4\mathbf{p}_4p4? 可表示為:
p3=[cos?π2sin?π2?sin?π2cos?π2]p1p2→∥p1p2→∥?d1+p2p4=[cos?π2sin?π2?sin?π2cos?π2]p1p2→∥p1p→2→∥?d1+p1\begin{array}{l} \mathbf{p}_{3}=\left[\begin{array}{cc} \cos \frac{\pi}{2} & \sin \frac{\pi}{2} \\ -\sin \frac{\pi}{2} & \cos \frac{\pi}{2} \end{array}\right] \frac{\overrightarrow{\mathbf{p}_{1} \mathbf{p}_{2}}}{\left\|\overrightarrow{\mathbf{p}_{1} \mathbf{p}_{2}}\right\|} \cdot d_{1}+\mathbf{p}_{2} \\ \mathbf{p}_{4}=\left[\begin{array}{cc} \cos \frac{\pi}{2} & \sin \frac{\pi}{2} \\ -\sin \frac{\pi}{2} & \cos \frac{\pi}{2} \end{array}\right] \frac{\overrightarrow{\mathbf{p}_{1} \mathbf{p}_{2}}}{\left\|\overrightarrow{\mathbf{p}_{1} \overrightarrow{\mathbf{p}}_{2}}\right\|} \cdot d_{1}+\mathbf{p}_{1} \end{array} p3?=[cos2π??sin2π??sin2π?cos2π??]∥p1?p2??∥p1?p2????d1?+p2?p4?=[cos2π??sin2π??sin2π?cos2π??]∥∥∥?p1?p?2??∥∥∥?p1?p2????d1?+p1?? - 當由兩個標記點形成的局部圖像模式被分類為傾斜時,如上圖( c )所示。在圖( c )中,標記點形成的局部圖像模式被分類為逆時針傾斜(銳角);為了估計兩個非標記點的位置,需要估計角度 α\alphaα。為了解決這個問題,采用基于模板匹配的策略。圖(d)中所示的是一套理想的T形模板 {Tθj}j=1M\{\mathbf{T}_{\theta_j}\}_{j=1}^{M}{Tθj??}j=1M?,MMM 是模板數量。每個模板的大小為 s×ss\times ss×s。測試時,提取兩個標記點的圖像進行匹配,則角度 α\alphaα 為:
α=arg?max?θj{I1?Tθj+I2?Tθj},j=1,…,M\alpha=\underset{\theta_{j}}{\arg \max }\left\{\mathbf{I}_{1} * \mathbf{T}_{\theta_{j}}+\mathbf{I}_{2} * \mathbf{T}_{\theta_{j}}\right\}, \quad j=1, \ldots, Mα=θj?argmax?{I1??Tθj??+I2??Tθj??},j=1,…,M
則其余兩個標記點計算為:
p3=[cos?α?sin?αsin?αcos?α]p1p2→∥p1p2→∥?d3+p2p4=[cos?α?sin?αsin?αcos?α]p1p2→∥p1p2→∥?d3+p1\begin{array}{l} \mathbf{p}_{3}=\left[\begin{array}{cc} \cos \alpha & -\sin \alpha \\ \sin \alpha & \cos \alpha \end{array}\right] \frac{\overrightarrow{\mathbf{p}_{1} \mathbf{p}_{2}}}{\left\|\overrightarrow{\mathbf{p}_{1} \mathbf{p}_{2}}\right\|} \cdot d_{3}+\mathbf{p}_{2} \\ \mathbf{p}_{4}=\left[\begin{array}{cc} \cos \alpha & -\sin \alpha \\ \sin \alpha & \cos \alpha \end{array}\right] \frac{\overrightarrow{\mathbf{p}_{1} \mathbf{p}_{2}}}{\left\|\overrightarrow{\mathbf{p}_{1} \mathbf{p}_{2}}\right\|} \cdot d_{3}+\mathbf{p}_{1} \end{array}p3?=[cosαsinα??sinαcosα?]∥p1?p2??∥p1?p2????d3?+p2?p4?=[cosαsinα??sinαcosα?]∥p1?p2??∥p1?p2????d3?+p1??
最終,DeepPS的訓練和測試工作流程如下:
3. Experimental Results
A. Benchmark Dataset & Settings
首先介紹數據集:每張環視圖的分辨率為600×600,對應于一個10m×10m的區域,即環視圖上1個像素的長度對應于物理地面上1.67cm長度。通過離線標定,可以得到從環視圖坐標系到以車輛為中心的世界坐標系的變換矩陣。因此,當在環視圖上檢測到停車位時,可以反投影確定其在世界坐標系中的坐標。
表3和4是 ps1.0,ps2.0 數據集的比較與測試集數據采樣分布,表5是超參數設置。
B. Marking-Point Detection & Local Image Pattern Classification
下面介紹標記點檢測,對于標記點真值 gi\mathbf{g}_igi?,如果一個檢測到的標記點 di\mathbfze8trgl8bvbq_idi? 滿足 ∥gi?di∥<δ2\left\|\mathbf{g}_{i}-\mathbfze8trgl8bvbq_{i}\right\|<\delta_{2}∥gi??di?∥<δ2?,則認為 gi\mathbf{g}_igi? 是正確檢測的。為了比較不同的檢測器,我們通過改變檢測置信度的閾值,畫出log-log圖繪制漏檢率與每張圖片的誤報率。
然后是定位誤差,用 gi\mathbf{g}_igi? 表示真值,gi′\mathbf{g}_i^{'}gi′? 表示檢測到的標記點(真陽性)。用 ei=∥gi′?gi∥e_{i}=\left\|\mathbf{g}_{i}^{\prime}-\mathbf{g}_{i}\right\|ei?=∥gi′??gi?∥ 表示定位誤差,這里使用平均定位誤差作為定位誤差。漏檢率與誤報率、定位誤差、檢測時間比較、局部圖案分類結果如下表:
C.Parking-Slot Detection
作者與其它幾種停車位檢測算法進行了比較,結果如下:
總結
以上是生活随笔為你收集整理的详解停车位检测算法 Vision-Based Parking-Slot Detection: A DCNN-Based Approach and a Large-Scale Benchmark的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mcmnhdlr.exe是什么进程 能删
- 下一篇: Leetcode刷题实战(1):Two