利用Matlab自帶的深度學習工具進行車輛區域檢測與車型識別【福利-內附源碼與數據庫】(二)

前言

這次的博客主要是關於如何進行車輛區域檢測的,因爲前段時間要考試了,沉迷學習(逃 沒有更新。把代碼上傳到了Github,有興趣的同學可以下下來玩一玩。這一次更新了一個GUI界面,當然,是我們Matlab課的小夥伴一起做的~

如何使用R-CNN?

在Matlab中,其實都很簡單,一個訓練的函數而已,最後生成一個RCNN-Object對象,即爲RCNN訓練得到的分類器。
這裏直接上我的訓練方法吧。一開始用的是上一篇微調後的AlexNet,但是測試的時候(我尼瑪那叫一個慢啊)後來使用了cifar10Net,速度有提升,但是效果下降不少。
首先要明確,cifar10Net是Matlab2016b裏面送給你的,你可以直接讀取,具體可以看http://www.mathworks.com/examples/matlab-computer-vision/mw/vision_product-DeepLearningRCNNObjectDetectionExample-object-detection-using-deep-learning

 load('rcnnStopSigns.mat','cifar10Net')

我們查看網絡結構:

cifar10Net.Layers

這裏寫圖片描述
只有3個卷積層,總共的層數也少了7層,權重參數肯定是下降了一個數量級,快也是有原因的,效果不太好也是有原因的。
然後我們要把這個後面的全連接層改成我們自己的fc-rcnn層,如何修改呢?直接上函數就行:

cifar10NetRCNN= trainRCNNObjectDetector(data, cifar10Net, options, ...
    'NegativeOverlapRange', [0 0.2], 'PositiveOverlapRange',[0.7 1])

訓練策略可以參考:

     trainingOptions('sgdm', ...
    'Momentum', 0.9, ...
    'InitialLearnRate', 0.005, ...
    'LearnRateSchedule', 'piecewise', ...
    'LearnRateDropFactor', 0.1, ...
    'LearnRateDropPeriod',128, ...
    'L2Regularization',0.01, ...
    'MaxEpochs', 100, ...
    'MiniBatchSize', 100, ...
    'Verbose', true);

其中這個data,你必須處理成一個table,像這樣的格式:
這裏寫圖片描述
訓練的結果:
這裏寫圖片描述

結果

這裏是一些結果:
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述

GUI的演示:
單張圖片
視頻

詳情請見Github:https://github.com/ChenJoya/Vehicle_Detection_Recognition
求星星!~~~

———————-UPDATE————————–
新的demo,詳見:
http://blog.csdn.net/mr_curry/article/details/68921497

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章