前言
這次的博客主要是關於如何進行車輛區域檢測的,因爲前段時間要考試了,沉迷學習(逃 沒有更新。把代碼上傳到了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