摘要:基於HiLens Kit已經基本開發完成,可部署到HiLens Kit,模型的選擇為基於DarkNet53的YOLOv3模型,權重為基於COCO2014訓練的數據集,而車道線的檢測是基於OpenCV的傳統方法實現的,可通過ModelArts AI Gallery與HiLens Kit全流程端雲協同開發部署。
本文作者|歷天一
點擊傳送門,先來看看最終視頻效果吧→→(PS:請忽略背景音樂)!

主體流程介紹:
- (可選,忽略亦可,取決於攝像頭質量,對於相機畸變較大的需要先計算相機的畸變矩陣和失真系數,對圖片進行校正)圖片校正;
- 截取感興趣區域,僅對包含車道線信息的圖像區域進行處理;
- 對感興趣區域使用透視變換;
- 針對不同顏色的車道線,不同光照條件下的車道線,不同清晰度的車道線,根據不同的顏色空間使用不同的梯度閾值,顏色閾值進行不同的處理。並將每一種處理方式進行融合,得到車道線的二進制圖;
- 提取二進制圖中屬於車道線的像素;
- 對二進制圖片的像素進行直方圖統計,統計左右兩側的峰值點作為左右車道線的起始點坐標進行曲線擬合;
- 使用二次多項式分別擬合左右車道線的像素點(對於噪聲較大的像素點,可以進行濾波處理,或者使用隨機采樣一致性算法進行曲線擬合);
- 計算車道曲率及車輛相對車道中央的偏離位置;
- 效果顯示(可行域顯示,曲率和位置顯示)。
- 檢測駕駛過程中道路中其他車輛狀態,顯示車輛類別、置信度,並通過YOLOv3進行檢測車輛,然后返回的車輛檢測框的坐標與當前坐標進行透視變換獲取大約的距離作為車輛之間的距離dis。
說明:
本Demo的主體框架基於HiLens Kit已經基本開發完成,模型的選擇為基於DarkNet53的YOLOv3模型,權重為基於COCO2014訓練的數據集,而車道線的檢測是基於OpenCV的傳統方法實現的,所以計算量較大,導致整體速度較慢。
關於部署和訓練——基於ModelArts 和HiLens Kit的端雲協同:
1)考慮到部署,已經測試過部署到HiLens Kit了,對了,也支持在HiLens Stuido運行模擬測試,更推薦在HiLens Studio哦,比較方便,而且不需要硬件支持,只需要在HiLens Kit或HiLens Studio上安裝pillow庫就行了,關於如何在HiLens Kit和HiLens Studio上安裝第三方庫,非常簡單的哦,可參考:
在HiLens Kit上:https://bbs.huaweicloud.com/forum/thread-94316-1-1.html
在HiLens Studio上:https://bbs.huaweicloud.com/forum/thread-94317-1-1.html
2)如果想訓練或優化,由沒有硬件(比如GPU),那么很推薦使用ModelArts了,一站式開發,無縫銜接到HiLens Kit哦,關於ModelArts的介紹可參考:https://www.huaweicloud.com/product/modelarts.html
同時也許還能提升下運行速度,這里介紹三種算法,親測都可以部署到HiLens Kit推理使用哦,就在最新的AI Gallery(原AI市場)中哦,這里除了有算法,還有模型、數據集等等,很豐富,大家可以自己探索一下,同時還可以分享自己的算法給其他開發者,開發者訂閱即可創建訓練使用,很方便,相比於GitHub,不僅提供了源代碼,還提供了用於訓練的硬件資源,強大的Tesla V100 32GB版本哦。
(1)YOLOv3_Darknet53,沒錯,就是著名的YOLOv3,經典的目標檢測網絡,后續又推出了YOLOv4、YOLOv5(暫稱此名吧),AI Gallery也推出了YOLOv5的,不過由於PyTorch框架暫不支持模 型轉換,所以暫時放棄了。
關於YOLOv3_Darknet53的使用方法,算法界面介紹很詳細,這里就不贅述了,可以參考使用,注意模型轉換部分請參考這篇博文中模型轉換部分哦:https://bbs.huaweicloud.com/blogs/199870
(2)YOLOv3_Resnet18(GPU),如果我們只想做車輛的檢測或者為了簡化模型,提高速度,可以選用主干網絡為Resnet18的YOLOv3,網絡更輕量,速度會快一些哦。
(3)YOLOv3_Resnet18(Ascend 910),和上面(2)版本差異不大,主要改為由GPU換為Ascend 910訓練的,大家可自由選擇哦。
好了,算法部分解決了,數據怎么辦呢?ModelArts的AI Gallery同樣想到了,提供了數據集哦,免費訂閱,下載到自己的OBS導入就能用了(注意OBS需要一定花費),這里我也提供了開源數據集的5164張人車圖片,供大家使用哦,上鏈接:https://marketplace.huaweicloud.com/markets/aihub/datasets/detail/?content_id=a337272b-6918-4282-83d6-2b15e2a4c716
那么數據集和算法都有了,該訓練了吧,在ModelArts上可以很好完成,憑借強大的Tesla V100 32GB或Ascend 910可以很快完成哦。
上述整體操作流程部分可參考下述博文完成:https://bbs.huaweicloud.com/blogs/199870
運行效果:
完成執行如視頻中所示處理的一幀需要約300ms,也就是FPS約為3,不較慢,需要優化。我覺得還有很大優化空間,比如:
(1)預處理和后處理很費時間,真正推理很快,可以從這方面加速,不知道開啟多線程是否有提升,應該有吧;
(2)應該可以更好發揮專用硬件,記得好像有DVPP和AIPP吧,可以用來做色域轉換的操作;
(3) YOLOv3的后處理解析比較麻煩,這里用的是COCO的80類,但可以只用person、car兩類,或者再加一點,同時nms也比較費時間,如果能用算子實現,融合到om模型中,會提速很多;
(4)這里使用的是Python,如果用C++應該會提升一些,執行效率會高很多吧。
(5)優化提速要根據硬件性能,對費時的部分做分析,以最大壓榨硬件性能,需要做針對性、定制化地優化,我個人理解很淺,希望有熟悉的同學指教。
備注:
- 本Demo所用模型、代碼均來自開源代碼,好像是吳恩達老師的一個課程涉及的項目,但找不到出處了,如果知道的同學,還請在在下方回復指教,謝謝了。
- 本Demo的模型精度以及運行速度不做保證,僅供學習交流使用。
- 其他未盡事宜,還請多多指教。
- 代碼會開源的,敬請期待哦,謝謝。
本文分享自華為雲社區《Demo分享 | 當自動駕駛遇到ModelArts,ModelArts AI Gallery與HiLens Kit開發》,原文作者:Tianyi_Li 。