您的位置:首页 > 编程语言 > MATLAB

利用Matlab自带的深度学习工具进行车辆区域检测与车型识别【福利-内附源码与数据库】(二)

2016-12-07 16:30 1236 查看

前言

这次的博客主要是关于如何进行车辆区域检测的,因为前段时间要考试了,沉迷学习(逃 没有更新。把代码上传到了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,详见:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐