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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Mr_Curry/article/details/53286562

前言

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

猜你喜欢

转载自blog.csdn.net/Mr_Curry/article/details/53286562