機器學習 IOS APP 實作

嘗試將道路辨識整合至手機內,並測試手機作為自動駕駛系統載體可行性的實驗性項目。

  • 北科附工
  • 高三
  • 2023
  • 個人製作
左邊擺放著顯示兩條車道線道路圖面的手機,中間放置一個向右指示的箭頭icon,最右邊擺放一個顯示辨識出車道線結果的手機。

前言

10 月份剛好是TIRT視覺辨識無人車駕駛比賽開始的時間,所以我與我去年的隊友再次組成三人小隊開始準備比賽。去年的我們發現樹莓派效能略顯不足,為了解決這個弱點,我靈機一動,想到我暑假學的swift語言,突然覺得使用手機來當作主要開發板是一個很好的解決方案,例如手機擁有高畫質鏡頭、高效能處理器、高精度九軸imu等等優點。

於是我開始著手研究如何執行,發現由Google提出的DeeplabV3語意分割機器學習框架十分適合拿來辨識道路,所以就開始研究如何將DeeplabV3模型裝到iosapp了!

製作過程

  1. 使用標註工具將路線手工標注出來
  2. 將標注完的標注圖使用python-tensorflow 加上deeplab V3 框架訓練出模型
  3. 將tensorflow 模型使用coreml轉換工具轉換成coreml模型
  4. 在swift裡面讀入模型並將模型初始化
  5. 讀入圖片並放進UIImage型態變數儲存
  6. 將UIImage轉換成MultiArray[1*512*512*3]陣列型態
  7. 將陣列型態圖片使用coreml模型創建任務
  8. 取得結果陣列並轉換為UIImage型態顯示出來
  9. 進行簡單for 迴圈處理將路線標出來

心得

這次實作ios app機器學習成果比預想好很多,僅用180張圖片訓練出來的模型預測效果已經超出預期,如果之後比賽方開放場地圖供我們進去練習,獲得實際跑道數據訓練更多張圖片進去效果應該不錯吧。

不過唯一的小問題是我們有點高估手機處理器的效能,以為幀率60以上輕輕鬆鬆,但實際情況卻只有12幀左右的表現。後來我們嘗試把圖片畫質從512*512縮小至128*128就能達成將近70幀的效果,並且道路辨識也不用太高清的解析度,所以我們就改用這個方法了!

因為這次道路辨識效果遠超過預期,所以我就把之前高一時隨便講講的校園自動駕駛車計畫再次跟幾位同學提出,幾位對維修腳踏車有興趣的同學也對這個計畫十分有興趣。所以為了不讓這個計畫變成說說而已的計畫,我馬上開始向組員募資,並在募資達14000元時馬上採購了一輛二手六人座協力車放置在科館內,期待往後成為唯一一間擁有自動駕駛車輛的高中職學校!