傳統車流的計算是以人工計數器的方式,再搭配測速槍以計算行車速率,但採用此方式進行交通調查需要耗費龐大資源而且難以頻繁及大規模地執行,所以後來改採用車輛偵測器(Vehicle Detector, VD),有超音波反射式、環路線圈式、聲納式、紅外線以及微波雷達式等不同的方法,但使用VD會有購置成本及後續的維修成本,成本較高。
在目前電腦硬體成本大幅下降以及Deep learning和computer vision技術的支援下,透過影像方式來計算統計車流成為可行,不但成本更低且方便設置。下面我們來試看看,透過影像的方式來計算道路上的車流量,並且分類出車子的類型,以及不同方向的車流數目。
使用技術
要能作到分類車子類型以及不同方向的車流數目,需要使用到:
- 物件偵測( Object detection):
用於車輛位置及類型,本範例中我們使用YOLO V3進行車輛的偵測及定位,您也可以使用其它的物件偵測技術,例如SSD或R-CNN等等,只要能夠取得車輛的種類及位置就可以了。
- 物件追蹤 (Object tracking)
避免重複計算,因為每個影格frame每進行一次物件偵測都會得到一次新的物件列表,使得我們無從得知上下frame的物件是否為同一台車輛以避免重複計算,也無法掌握車子行進的方向,這必須要透過Object tracking才能解決。
- 影像處理
我們不需要針對整張圖計算車子流量及方向,只要加入繪製好的線段、熱區到隱藏圖層上,當車輛經過此線或此區域時再進行判斷及計算即可。
車輛偵測定位及分類
我們直接使用YOLO提供的pre-trained yolov3.weights來進行車輛的定位偵測及分類。
因為這個pre-trained model是使用Coco dataset所訓練,可偵測多達80種物件,其中也包含了數種車輛類型,如:car、truck、bus、bicycle、motorbike等,若是想要做其它更多或更細的車輛分類,需要另外自行訓練哦。
車輛追蹤及計算
接下來,我們要在圖片上虛擬一塊熱區及一條計算線,它的位置及功能如下:
當我們得到車輛的類型以及位置之後,接著,我們將:
- 判斷此車輛的位置是否在熱區的範圍。
- 若處於熱區範圍,則與上一個frame的車輛進行比對,計算該車中心點與上一個frame所有車輛的中心點距離最短是那一台。
- 若非處於熱區範圍則略過不處理。
- 由於我們的熱區是定義於道路中間位置,因此理論上該熱區不會有突然新出現的車輛,每一台車應該能找到其一個frame的所在位置。
- 經由上下frame得到該車的行徑方向,並將該方向的車輛數目加1。
- 車子行徑的方向,可由上下frame車子的中心點(X,Y)的變化來判斷:
只需不到短短一分鐘...
輸入您的信箱與ID註冊即可享有一切福利!
會員福利
1免費電子報
2會員搶先看
3主題訂閱
4好文收藏