前言
这次的博客主要是关于如何进行车辆区域检测的,因为前段时间要考试了,沉迷学习(逃 没有更新。把代码上传到了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