2. 交通標誌的分類方法
3. 需要改進的地方
這個應該是一年前寫完的。突然發現還躺在草稿裡,沒有發布出來……
當時剛開始學檢測,實驗室也沒有師兄是這個方向的,所以沒有將檢測結果除錯的很好。最終,我採取的方法是在檢測結果後面在加乙個分類實現的檢測(注意我這裡的檢測加分類不是網路結構層面的two stage,而是檢測出結果(只使用候選框位置,不適用類別資訊)+分類器(確定類別,含負樣本類別))。雖然這方法的實驗結果還是不錯的,但是只能用於實際的比賽,學術意義不大。
學術才是根本,工程只是為了交差。不建議使用我這種方法。
各種交通標誌的樣本不均衡,將各種交通標誌當成一類交通標誌,有利於對樣本較少類別的交通標誌進行學習(還沒有進行嚴格的實驗證明),將所有的交通標誌當成乙個類別之後,部分我們可能暫時不需要檢測的類別也可以當成檢測物件,這樣我們的訓練樣本就更多了。
cctsdb 資料集只將資料集分成了三大類,沒有交通標誌的小類別,即無細分類的標籤,無法直接訓練出。
非深度學習的方法,都是基於分類任務來做的檢測。使用顏色閾值提取感興趣區域(roi)後,後面也需要跟乙個分類來對 roi 進行分類,所以分類器比不可少。
1.2.1 對 yolov3 的一些改進點(針對資料集的優化)。
我們這裡使用yolov3來檢測交通標誌,對yolov3主要改進有:
【修改anchor】針對我們的交通標誌的大小,長寬比資訊,調整,網路結果中的 anchors 的大小。使用kmeans 對標籤檔案中交通標誌的大小進行聚類,我們只修改了anchors 的大小,沒有修改 anchors 的數量。良好的 anchor 更有利於訓練和回歸。
【調整 殘差結構】交通標誌資料集相對於voc、coco這些資料集而言,檢測物件更小。最小時,交通標誌的面積只佔到整個影象的萬分之一。
1.2.1. 對資料集的處理。
交通標誌的資料集通常不做左右對稱處理,我們將分類任務從檢測任務中分離出來後,就可以做左右對稱的資料增強了。
【左右對稱 aug】由於我們的檢測器只進行檢測不進行分類,所有我們對所有的影象進行了左右對稱處理增強。一張影象相當於兩張
我們這裡只使用了 cnn 來進行分類,使用 resnet18訓練114類交通標誌(114類交通標誌+1類其他),最後的分類準確率達到 98%。
如何學習大類別?:yolo 檢測對影象的特徵提取能力太強了,很容易學到一些細節資訊(小類別),而忽略了整體資訊(大類別)。在交通標誌檢測中的表現就是,例如:我提供10種類別的三角形標誌,我們希望網路能檢測到所有的三角形標誌,而不是僅僅這10類標誌。
如何讓分類器實現連續學習?:當交通標誌的檢測類別改變時,我們就需要重頭訓練我們的分類器,之前的訓練工作都浪費了,我們希望能充分利用之前的訓練工作,繼續訓練,實現分類任務。
如何讓檢測器實現連續學習?:同理,不只是分類器,當我們的檢測任務改變時,也需要從頭開始訓練我們的檢測器,應該需要一種方法來解決這個問題。 完
交通標誌的檢測與識別
正在投稿中,專案已開源在github article,author journal number pages year publisher 如果本文幫助了您,請您引用我們的 本科畢業設計的時候曾經做過交通標誌的檢測與識別,這個作為很好的影象處理與識別領域的入門project還是非常不錯的.交通場景圖...
「基於深度學習的交通標誌識別」總結
我了解到深度學習是機器學習中的乙個新的領域,其是為了建立模擬人腦進行分析學習的神經網路。深度學習分為監督學習和無監督學習,其中卷積神經網路 簡稱cnn 是深度的監督學習下的機器學習模型,深度置信網是一種無監督學習下的機器學習模型。深度學習的特點是用非監督式或半監督式的特徵學習和分成特徵來提取高效演算...
德國交通標誌訓練集的資料預處理
需要將其轉成.png格式。每個資料夾下有.csv檔案 comma separated values,標記 裡面有roi 區域的座標,我們需要根據這個roi區域的座標,來分割出roi區域,並另存為字尾為.png的格式。寫了資料轉換指令碼是transform.py。再看資料夾裡面的 讀取每張影象,把每張...