Faster R-CNN简述(目标检测篇)

文章是对博主视频讲解的一些总结。
博主链接:https://blog.csdn.net/qq_37541097?spm=1001.2014.3001.5509

1 faster RCNN

同样也是出自作者RossGirshick之手,同样backbone也是VGG16Net,主要目的就是优化之前的fast R-CNN,用RPN算法替代SS算法用来生成候选框。

1.1 fast r-cnn和faster r-cnn的区别

在这里插入图片描述
在这里插入图片描述

2 算法流程

RPN + Fast R-CNN
在这里插入图片描述

faster r-cnn算法流程可分为3个步骤:

  1. 将图像输入网络得到相应的特征图
  2. 使用RPN算法生成候选框,将得到的候选框投影到特征图上获得相应的特征矩阵
    3.将单独的特征矩阵由ROI Pooling层缩放到7x7大小的特征图,接着fatten成向量经过几层FC,得到预测结果

在这里插入图片描述

3.网络训练的步骤

采用RPN Loss + Fast R-CNN Loss的联合训练方法。

  • 1.利用imageNet预训练分类模型初始化前置卷积卷积网络层参数,并开始单独训练RPN网络参数。
  • 2.固定RPN网络独有的卷积层以及全连接层参数,再利用imageNet预训练分类模型初始化前置卷积参数,并利用RPN网络生成的目标建议框去训练fast R-CNN网络参数。
  • 3.固定利用Fast r-cnn训练好的前置卷积网络层参数,去微调RPN网络独有的卷积层以及全连接参数。
  • 4.同样保持固定前置卷积网络参数,去微调fast R-Cnn网络的全连接层参数。最后RPN网络共享与Fast RCNN网络共享前置卷积网络层参数,构成一个统一网络。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是使用MATLAB训练Faster R-CNN模型的代码示例: 1. 准备数据 首先,需要准备一个数据集并将其分成训练集和验证集。数据集应包含图像和相应的标注文件。 2. 定义网络架构 下面是在MATLAB中定义网络架构的示例代码: ```matlab layers = [ imageInputLayer([224 224 3], 'Name', 'input') convolution2dLayer(3, 16, 'Padding', 'same', 'Name', 'conv1') reluLayer('Name', 'relu1') maxPooling2dLayer(2, 'Stride', 2, 'Name', 'pool1') convolution2dLayer(3, 32, 'Padding', 'same', 'Name', 'conv2') reluLayer('Name', 'relu2') maxPooling2dLayer(2, 'Stride', 2, 'Name', 'pool2') convolution2dLayer(3, 64, 'Padding', 'same', 'Name', 'conv3') reluLayer('Name', 'relu3') maxPooling2dLayer(2, 'Stride', 2, 'Name', 'pool3') convolution2dLayer(3, 128, 'Padding', 'same', 'Name', 'conv4') reluLayer('Name', 'relu4') maxPooling2dLayer(2, 'Stride', 2, 'Name', 'pool4') convolution2dLayer(3, 256, 'Padding', 'same', 'Name', 'conv5') reluLayer('Name', 'relu5') maxPooling2dLayer(2, 'Stride', 2, 'Name', 'pool5') fullyConnectedLayer(512, 'Name', 'fc6') reluLayer('Name', 'relu6') fullyConnectedLayer(256, 'Name', 'fc7') reluLayer('Name', 'relu7') fullyConnectedLayer(numClasses, 'Name', 'fc8') softmaxLayer('Name', 'softmax') classificationLayer('Name', 'classoutput')]; ``` 3. 训练模型 使用trainFasterRCNNObjectDetector函数可以训练Faster R-CNN模型,示例代码如下: ```matlab options = trainingOptions('sgdm', ... 'MiniBatchSize', 32, ... 'InitialLearnRate', 1e-3, ... 'MaxEpochs', 10, ... 'Verbose', true); detector = trainFasterRCNNObjectDetector(trainingData, layers, options, ... 'NegativeOverlapRange', [0 0.3], ... 'PositiveOverlapRange', [0.5 1], ... 'BoxPyramidScale', 1.2); save('faster_rcnn_detector.mat', 'detector'); ``` 其中,trainingData是包含训练数据的imds object和bbox label datastore的结构体。 4. 测试模型 使用detect方法可以对单张图像进行目标检测,示例代码如下: ```matlab img = imread('test.jpg'); [bboxes, scores, labels] = detect(detector, img); threshold = 0.5; idx = scores > threshold; bboxes = bboxes(idx, :); scores = scores(idx); labels = labels(idx); annotatedImg = insertObjectAnnotation(img, 'rectangle', bboxes, scores); imshow(annotatedImg); ``` 其中,test.jpg是要检测的图像文件名。检测结果将显示在图像上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

栋哥爱做饭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值