團隊名稱:數位內容人
在台灣由於道路設計不良(道路狹小、多車種混雜行駛)以及駕駛人素質問題,機車騎士被左後方大車撞死碾死的慘劇幾乎每幾天就發生一次,這是台灣每個騎士的夢魘。在分析諸多案例後,我們認為受害騎士往往都不知道左後/正後方大車的狀況(包含不知道有大車,或者知道有大車但不知道正在快速接近),我們提出用 AI 方法來開發APP以幫助騎士,其概念是:偵測大車即時回報。
提案動機
台灣因為道路狹小且多車種混行、以及駕駛人素質問題,每每發生機車騎士被左後方大車撞死的慘劇,根據統計,今年已造成三十人死亡,每年這類事故則將近一千起,本計畫開發出 WatchMyBack 服務,它將騎士的手機與家中閒置的電腦連線,騎士後方的畫面可即時傳至電腦上,透過 AI 技術算出高度危險逼近的車輛 {卡車、公車、轎車},並以語音告知騎士進行閃避。我們在這個服務中使用了 WebRTC、Yolov7、OpenVino加速運算、以及我們開發的物件軌跡追蹤系統等技術,可做到每秒 5 – 10 次的即時分析。本服務已開放 app下載安裝,希望我們的努力能多增加一點騎車族的生命安全。
提案動機
在台灣由於道路設計不良(道路狹小、多車種混雜行駛)以及駕駛人素質問題,機車騎士被左後方大車撞死碾死的慘劇幾乎每幾天就發生一次,這是台灣每個騎士的夢魘。
在分析諸多案例後,我們認為受害騎士往往都不知道左後/正後方大車的狀況(包含不知道有大車,或者知道有大車但不知道正在快速接近),我們提出用 AI 方法來幫助騎士,其概念是:偵測大車即時回報。
現代家庭大多擁有桌機或筆電,反正電腦放著也是閒置而已,我們何不利用它的運算力來保護出門的家人呢?經過一番努力,我們開發出 WatchMyBack 服務來保護騎士,它包含 [手機端 app] 以及 [電腦端 app],以上班族騎士為例,當他準備出門時,點開手機端 app 並且將手機繫於後背帶,它會與家中電腦端 app 建立連線,然後將鏡頭的連續影像傳回電腦,電腦端使用 OpenVINO + Yolov7 技術辨識影像中的車輛 {卡車、公車、轎車},搭配我們開發的物件軌跡追蹤系統,就能算出高危險性的車輛(例如很接近或者正以高速逼近),迅速通知手機端對騎士發出警告,讓騎士採取因應作為。
補充說明,將手機固定於背後其實很簡單,你可以買市面上常見的肩掛小袋固定於後背帶,或者自己使用別針輔助固定亦可,只要確保有露出後鏡頭即可。
我們已實作出概念驗證軟體,歡迎下載使用:
App下載網址:https://watchmyback.cc
以下簡述 app 的使用方式:
- 打開手機瀏覽器,進入上述網頁,點進 [點我進入安裝頁],進入後按照指示將app安裝到桌面上
- 執行該app,點 (登入) 按鈕,然後再點 [點我註冊],完成註冊後即可登入你的帳號
- 在桌機上,瀏覽上述同樣的網頁,下載並解開桌機版壓縮檔,然後找到目錄中的exe檔,執行它,然後點 (登入) 按鈕,以你剛才在手機端註冊的帳號/密碼登入
- 第一次執行手機端app時,請先點 (點我) 按鈕來分析你的鏡頭視野,WatchMyBack會根據你的鏡頭視野數值來估算物件的遠近距離
- 最後,點畫面中間的 [眼睛] 按鈕,它會轉圈表示正在連線,連線成功時按鈕會出現紫色圈圈,然後你的手機影像就會傳送到桌機端去做危險分析了
警告訊號在畫面中動態呈現,並且可用語音播放,格式是以 {5米、10米、15米} 以及 {卡車、公車、轎車} 來搭配放送,例如:當你聽到 “10米卡” 時,就表示有卡車進入距離你10米距離內,而且速度有點危險。
技術架構
我們使用了 WebRTC、Yolov7、OpenVino 加速運算三項技術,再加上我們參考相關研究資料所研發的物件軌跡追蹤技術,已可做到每秒 5 – 10 次的危險分析 (桌機為 i7-6700k CPU),OpenVino 在這裡扮演了很好的角色,因為它提升核心運算效能達到 10% – 15% 的加速效果。以下依序列出這些技術架構與用途:
- WebRTC:在手機端與電腦端建立連線,前者傳送連續影像給後者,後者接收影像,切片然後丟給 Yolov7。
- Yolov7:目前最快的物件辨識引擎,我們採用 tiny 參數集以便加快推理速度。
- OpenVINO:我們使用 Onnxruntime 開放式 AI 模型架構,Intel 提供了這個架構的 OpenVINO 加速引擎,效果很優異。
- 物件軌跡追蹤技術:我們使用 p-hashing 技術來計算物件特徵,另外,透過手機鏡頭的視野可算出物件距離,基於以上兩項資料,我們可算出物件的軌跡與速度
成果範例
在手機 app 畫面中,正下方的三角形為騎士位置,上方的三條線分別為 5米、10米、15米警戒線,WatchMyBack即時偵測後方車輛並且標示它們的位置(距離以及角度),它們的軌跡與速度亦被即時追蹤(圖中車輛旁邊的數字即為該車的特徵值),當系統計算發現有車輛將在三秒內衝撞到騎士時會立即發出警告:物件變為紅點,並且以語音發出 “10米公” 的警示聲,騎士透過無線耳機即可得知10米內有公車且正在快速逼近中,於是採取應對作為。
未來計畫
目前的實作架構為 POC 概念驗證性質,證明這是可行的方案,未來的計畫是:
- 開發 Mac 版電腦端 app (目前僅支援 Windows)
- 目前我們使用 yolo 預設 COCO 標籤集,共計 80 種物件,下一階段我們會剔除無關者,只保留 {bus,truck,car, motorcycle,person} 這幾種,然後重新訓練模型,如此可減少參數檔的大小並且大幅縮短推論時間
- 改進準確度,目前對於鏡頭畫面邊緣的物件,其位置的計算會有一點誤差,未來會開發補償校對演算法以提升整體準確度
- 開發更正式的 app,目前的 PWA 框架有些缺點,例如螢幕必須開著,無法背景執行(但好處是開發速度快)
結論
本計畫花了兩個月從無到有打造出來,雖然目的是為了保護台灣騎士的生命,但其實我們有了更高層次的收穫,那就是搞懂了「自動駕駛」的關鍵思路,自駕最主要的任務就是偵測道路上的各種物件並採取應對作為,我們證明了無需光達技術,只靠鏡頭與 AI 演算法其實就能做到六、七成。另外,道路物件偵測強烈依賴高速運算,若做不到高頻偵測,那服務就沒效了,我們在運算路徑上做了很多優化,而 OpenVino 則幫助我們提升了 10 – 15% 的核心運算速度(在只用 CPU 加速的情況下),自駕真的需要強大的運算能力才有辦法實現。
回到正題,在台灣,被大車撞是很多騎士(包含機車與腳踏車)的恐怖夢魘,單靠政府改善大概緩不濟急,所以我們換個角度,用 AI 科技直接幫騎士增強偵測盲區(也就是左後方)危險的能力,提升騎士的保命機率,我們相信這是個新機會。
感謝 Intel 與 MakerPRO提供這個比賽,在過程中我們學習到很多東西。
參考資料:
- Onnxruntime
https://onnxruntime.ai/ - Find distance from camera to object/marker using Python and OpenCV https://pyimagesearch.com/2015/01/19/find-distance-camera-objectmarker-using-python-opencv/
- P-Hashing
https://www.phash.org/