[深度学习 - 目标检测总结] two-stage 目标检测算法

通过这个链接🔗进行复习学习。https://github.com/scutan90/DeepLearning-500-questions

目标检测

目标检测(Object Detection)就是要从图像上找到目标。

存在的难点主要有:同一种目标可能有不同外观、形状、姿态;同一张图片场景可能有不同的环境因素干扰(光照、遮挡、色差);目标检测要检测目标在图像中的位置,目标可能会出现在图像中任意位置,而且同一个位置可能有不同大小、角度的目标。

目标检测算法分类:

深度学习目标检测算法主要分为两类:one-stage和two-stage。

Two-stage

第一步先用一个网络在图像上找到可能存在目标的区域,在通过第二步一个网络进行目标分类。

主要步骤:提取特征 -> 生成region proposal -> 分类/定位回归。

常见的two stage目标检测算法有:R-CNN、SPP-Net、Fast R-CNN、Faster R-CNN和R-FCN等。

(1)R-CNN

R-CNN

R-CNN作为R-CNN系列的第一代算法,其实没有过多的使用“深度学习”思想,而是将“深度学习”和传统的“计算机视觉”的知识相结合。

通过上面two-stage的步骤,R-CNN实现的方式也一样。
先通过选择性搜索提取图像上所有可能为目标的proposals,然后resize 成后面特征提取器的大小格式(CNN),得到所有RP的特征,然后进行SVM分类得到目标框的类别,最后通过回归矫正目标框。

速度慢,准确率不高。

特征提取:(深度学习)

预训练模型,选择一个预训练 (pre-trained)神经网络(如AlexNet、VGG)。
重新训练全连接层。使用需要检测的目标重新训练(re-train)最后全连接层(connected layer)

region proposal (机器学习)

选择性搜索(Selective Search)算法提取所有proposals,调整(resize/warp)它们成固定大小,以满足CNN输入要求(因为全连接层的限制),然后将feature map 保存到本地磁盘。

分类(机器学习)

训练SVM。利用feature map 训练SVM来对目标和背景进行分类(每个类一个二进制SVM)

回归(机器学习)

边界框回归(Bounding boxes Regression)。训练将输出一些校正因子的线性回归分类器

结果
R-CNN在VOC 2007测试集上mAP达到58.5%。

(2)Fast R-CNN

Fast R-CNN

SPPNet 原理:先对图像进行一遍卷积计算,得到整个图像的卷积特征。接着, 对于原始图像中的各种候选框,只需要在卷积特征中找到对应的位置框,再使用 ROI 池化层对位置框中的卷积提取特征,就可以完成特征提取工作。在提取特征后,使用了SVM 进行分类。

R-CNN 要对每个区域(有重叠)计算卷积,而SPPNet 只需要对整张图片计算一次,因此 SPPNet 的效率比 R-CNN 高得多。

Fast R-CNN是基于R-CNN和SPPnets进行的改进。

特征提取:

根SPPNet提取特征的原理一样,只对整幅图像进行一次特征提取,避免R-CNN中的冗余特征提取。

region proposal

选择性搜索(Selective Search)算法提取所有proposals,调将候选区域(proposals)直接应用于特征图,并使用RoI池化将其转化为固定大小的特征图块(feature map )。然后将feature map 保存到本地磁盘。

分类&回归

于R-CNN不同,Fast R-CNN不使用SVM进行分类,而是使用神经网络进行分类,这样就可以同时训练特征提取网络和分类网络。

Fast R-CNN 使用全连接层进行分类。全连接层有两个输出,一个输出负责分类(Softmax),另一个输出负责框回归

Fast R-CNN网络末尾采用并行的不同的全连接层,可同时输出分类结果和窗口回归结果,实现了end-to-end的多任务训练【建议框提取除外】,也不需要额外的特征存储空间【R-CNN中的特征需要保持到本地,来供SVM和Bounding-box regression进行训练】

结果
Fast R-CNN在VOC 2007测试集上mAP达到为70%。

(3)Faster R-CNN

Faster R-CNN pytorch代码:https://github.com/jwyang/faster-rcnn.pytorch
Faster R-CNN

Fast R-CNN和R-CNN都有一个共同的问题就是在选择候选区域方法上,使用选择性搜索算法。这种算法只能在CPU上运行而且速度非常慢。

Faster R-CNN采用与Fast R-CNN相同的设计,只是它用内部深层网络代替了候选区域方法。将Fast R-CNN中的ROI,替换成RPN网络。

特征提取:
可用VGG-16或ResNet等网络进行特征提取。(根据速度性能的需要)

候选区域网络 RPN & 分类 FC

候选区域网络(RPN)将第一个卷积网络的输出特征图作为输入。它在特征图上滑动一个3×3的卷积核,以使用卷积网络(如下所示的ZF网络)构建与类别无关的候选区域。其他深度网络(如VGG或ResNet)可用于更全面的特征提取,但这需要以速度为代价。ZF网络最后会输出256个值,它们将馈送到两个独立的全连接层,以预测边界框和两个objectness分数,这两个objectness分数度量了边界框是否包含目标。我们其实可以使用回归器计算单个objectness分数,但为简洁起见,Faster R-CNN使用只有两个类别的分类器:即带有目标的类别和不带有目标的类别。

RPN

结果 (tesla K40)
Faster R-CNN(VGG-16)在VOC 2007测试集上mAP达到为70%,198ms/img。
Faster R-CNN(VGG-16)在VOC 2007&2012测试集上mAP达到为73.2%,198ms/img。
Faster R-CNN(VGG-16)在VOC 2012测试集上mAP达到为67%,198ms/img。

Faster R-CNN存在的问题:
对小目标检测效果很差;
模型大,检测速度较慢。

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值