三.每周一学----目标检测-R-CNN

前言

传统的目标检测方法由于滑窗效率低,特征不够鲁棒的原因限制了目标检测的发展,而深度学习的目标检测方法致力于解决这些问题,深度学习目标检测方法分为两个阶段(one-stage和two-stage)这个在我的前一篇博客有讲到。
这次,我们就先学习R-CNN

R-CNN论文
《Rich feature hierarchies for accurate object detection and semantic segmentation》2014

R-CNN测试过程

  1. 输入一张图像,采用 selective search(选择性搜索)法提取约2000个Region Propasal
  2. 先在每个建议框周围加上16个像素值为Region Propasal像素平均值的边框,在直接变形为227*227的大小。
  3. 先将所有Region Propasal减去该建议框像素平均值后,再依次将每个227×227的Region Propasal输入至AlexNet CNN网络,获取4096维的特征,2000个建议框的CNN特征组合成2000*4096维特征矩阵。
  4. 将2000×4096维特征与20个SVM组成的权值矩阵4096×20相乘,获得2000*20维矩阵表示每个Region Propasal是某个物体类别的得分。
  5. 分别对上述2000*20维矩阵中每一列即每一类进行非极大值抑制,剔除重叠Region Propasal,得到该列即该类中得分最高的一些Region Propasal。
  6. 分别用20个回归器对上述20个类别中剩余的Region Propasal进行回归操作,最终得到每个类别的修正后的得分最高的bounding box。

网络框架
在这里插入图片描述

R-CNN详细解释

1.selective search

因为selective search在目标检测中比较重要,这里作者将详细的理解一下

  • 首先将图像进行分割得到若干区域,组成区域集合S,这是一个初始化的集合
  • 然后利用颜色,纹理,尺寸和空间交叠等特征,计算区域里每个相邻区域的相似度
  • 找出相识度最高的两个区域,将其合并为新集并删除原来的两个对应子集
  • 重复以上的迭代过程,直到最开始的集合S为空,得到的分割结果和候选区域边界就是初始框

具体操作流程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
例:如上图所示,R1和R2的的相似度最大然后合并为一个新的区域R(n+1),并删除R1和R2,然后不断的重复,最后得到最有可能涵盖物体的框,也就是Region Propasal

在这里插入图片描述

这篇博客中详细的介绍了selective search,同学们若想进一步解selective search,可以去看看
selective search

2.为什么要变成227*227

由于CNN的需要统一尺寸的输入,因此这里还需要将候选区域进行变形(AlexNet是227*227)

如何实现

  • 各向异性缩放: 不管当前区域的长宽比,直接resize,结果可能会扭曲原图
    padding处理(先添加一定尺寸的边界)
    上面的padding=0,下面的padding=16。在这里插入图片描述

  • 各向同性缩放: 1.直接在原始图中做边界扩展,如果到了图像边缘则用区域的均值做填充
    2.在区域边缘使用固定背景颜色做填充

哈哈哈!AlexNet CNN 这个内容我看了半天,也不是很清楚,在此就不向大家过多的解释了,以后再慢慢学习,大家可以自行去百度理解。

3.分类器SVM

是一类按监督学习(supervised learning)方式对数据进行二元分类的广义线性分类器(generalized linear classifier),其决策边界是对学习样本求解的最大边距超平面(maximum-margin hyperplane)。
简单来说就是
SVM 的目的就是想要画出一条线,以“最好地”区分这两类点,以至如果以后有了新的点,这条线也能做出很好的分类
在这里插入图片描述
如上图就是红线效果好,黑线效果一般,绿线效果不好
这里也推荐一篇关于SVM的博客SVM写的十分详细,大家可以去学习一下

这样,因此我们对第四步的内容就有更好的理解

4.非极大值抑制

在第四步过后,我们会遇到同一个目标被多个建议框包围的情况,这是就要用到非极大值抑制
简单来说,就是只保留一个最优的框,于是我们就要用到非极大值抑制,来除去这些冗余的框
在这里插入图片描述
步骤

  1. 将所有框的得分排序,选中最高分及其对应的框
  2. 从每列最大的得分Region Propasal 'a’开始,分别与该列后面的得分Region Propasa 'b’进行IoU计算,如果和当前最高分框的重叠面积(IOU)大于一定阈值,我们就将框删除
  3. 重复以上步骤,直到遍历完所有Region Propasals

最后得到
在这里插入图片描述

5.边框回归(Bounding-box regression)

举个例子
在这里插入图片描述
如图所示

红色的框为Selective Search提取的Region Proposal,我们需要对红色的框进行调整,然后使之不断和绿色的框而契合,这样目标检测中的定位就会更加的准确,Bounding-box regression 就是用来调整这个窗口的。

简单来理解就是,我们用一般使用四维向量(x,y,w,h) 来表示窗口, 分别表示窗口的中心点坐标和宽高。 如上图,红色的框 P 代表原始的Proposal, 绿色的框 G 代表目标的 Ground Truth, 我们的目标是寻找一种关系使得输入原始的窗口 P 经过映射得到一个跟真实窗口 G 更接近的回归窗口G^。
如何让红色窗口变成绿色窗口呢
就是 平移+尺度放缩
这篇博客详细的介绍了如何实现 Bounding-box regression ,大家可以去看看

6.R-CNN优缺点

优点

  • 使用了Selective search,大大提高了候选区域的筛选速度
  • 通过边框回归模型进行校准,减少图像中的背景空白,得到更精确的定位

缺点

  • 候选框的选择比较耗时,很难做到实时性
  • 分步骤进行,过程繁琐(是采用传统目标检测的框架)
  • 重叠区域特征重复计算

    在这里插入图片描述
    我们对蓝色区域就会产生两次的重复CNN提取,让计算重复

小结

这次我们就先学到这里,由于,是刚刚接触和学习这块内容,还有许多细节没有解释清楚,请大家见谅,如果大家有什么问题或者建议可以在评论里留言,感谢大家的观看。

这里推荐两个视频关于R-CNN的这个小姐姐讲的很好哦
这个也很详细视频
流程图借鉴

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. ARIMA 2. SARIMA 3. VAR 4. Auto-ARIMA 5. Auto-SARIMA 6. LSTM 7. GRU 8. RNN 9. CNN 10. MLP 11. DNN 12. MLP-LSTM 13. MLP-GRU 14. MLP-RNN 15. MLP-CNN 16. LSTM-ARIMA 17. LSTM-MLP 18. LSTM-CNN 19. GRU-ARIMA 20. GRU-MLP 21. GRU-CNN 22. RNN-ARIMA 23. RNN-MLP 24. RNN-CNN 25. CNN-ARIMA 26. CNN-MLP 27. CNN-LSTM 28. CNN-GRU 29. ARIMA-SVM 30. SARIMA-SVM 31. VAR-SVM 32. Auto-ARIMA-SVM 33. Auto-SARIMA-SVM 34. LSTM-SVM 35. GRU-SVM 36. RNN-SVM 37. CNN-SVM 38. MLP-SVM 39. LSTM-ARIMA-SVM 40. LSTM-MLP-SVM 41. LSTM-CNN-SVM 42. GRU-ARIMA-SVM 43. GRU-MLP-SVM 44. GRU-CNN-SVM 45. RNN-ARIMA-SVM 46. RNN-MLP-SVM 47. RNN-CNN-SVM 48. CNN-ARIMA-SVM 49. CNN-MLP-SVM 50. CNN-LSTM-SVM 51. CNN-GRU-SVM 52. ARIMA-RF 53. SARIMA-RF 54. VAR-RF 55. Auto-ARIMA-RF 56. Auto-SARIMA-RF 57. LSTM-RF 58. GRU-RF 59. RNN-RF 60. CNN-RF 61. MLP-RF 62. LSTM-ARIMA-RF 63. LSTM-MLP-RF 64. LSTM-CNN-RF 65. GRU-ARIMA-RF 66. GRU-MLP-RF 67. GRU-CNN-RF 68. RNN-ARIMA-RF 69. RNN-MLP-RF 70. RNN-CNN-RF 71. CNN-ARIMA-RF 72. CNN-MLP-RF 73. CNN-LSTM-RF 74. CNN-GRU-RF 75. ARIMA-XGBoost 76. SARIMA-XGBoost 77. VAR-XGBoost 78. Auto-ARIMA-XGBoost 79. Auto-SARIMA-XGBoost 80. LSTM-XGBoost 81. GRU-XGBoost 82. RNN-XGBoost 83. CNN-XGBoost 84. MLP-XGBoost 85. LSTM-ARIMA-XGBoost 86. LSTM-MLP-XGBoost 87. LSTM-CNN-XGBoost 88. GRU-ARIMA-XGBoost 89. GRU-MLP-XGBoost 90. GRU-CNN-XGBoost 91. RNN-ARIMA-XGBoost 92. RNN-MLP-XGBoost 93. RNN-CNN-XGBoost 94. CNN-ARIMA-XGBoost 95. CNN-MLP-XGBoost 96. CNN-LSTM-XGBoost 97. CNN-GRU-XGBoost 98. ARIMA-ANN 99. SARIMA-ANN 100. VAR-ANN 上面这些缩写模型的全称及相关用途功能详细解释
07-15
以下是对缩写模型的全称及相关用途功能的详细解释: 1. ARIMA (AutoRegressive Integrated Moving Average): 适用于平稳时间序列数据的预测,结合了自回归 (AR) 和移动平均 (MA) 的模型。 2. SARIMA (Seasonal ARIMA): 在ARIMA模型基础上添加了对季节性因素的建模,适用于带有季节性的时间序列数据的预测。 3. VAR (Vector Autoregression): 用于多变量时间序列数据的预测,基于自回归模型,能够捕捉变量之间的相互依赖关系。 4. Auto-ARIMA: 自动选择ARIMA模型的参数,通过对多个模型进行评估和选择来实现自动化。 5. Auto-SARIMA: 自动选择SARIMA模型的参数,通过对多个模型进行评估和选择来实现自动化。 6. LSTM (Long Short-Term Memory): 长短期记忆网络,一种适用于处理长期依赖关系的循环神经网络,用于时间序列数据的建模和预测。 7. GRU (Gated Recurrent Unit): 一种类似于LSTM的循环神经网络,具有更简化的结构,适用于时间序列数据的建模和预测。 8. RNN (Recurrent Neural Network): 适用于处理序列数据的神经网络模型,能够捕捉时间序列的动态特性。 9. CNN (Convolutional Neural Network): 卷积神经网络,主要用于图像处理,但也可以用于时间序列数据的预测,特别擅长局部模式的识别。 10. MLP (Multi-Layer Perceptron): 多层感知机,一种前馈神经网络模型,适用于处理非线性关系的时间序列数据。 11. DNN (Deep Neural Network): 深度神经网络,具有多个隐藏层的神经网络模型,能够学习更复杂的特征表示。 12. MLP-LSTM: 结合了多层感知机和长短期记忆网络的模型,用于时间序列数据的建模和预测。 13. MLP-GRU: 结合了多层感知机和门控循环单元网络的模型,用于时间序列数据的建模和预测。 14. MLP-RNN: 结合了多层感知机和循环神经网络的模型,用于时间序列数据的建模和预测。 15. MLP-CNN: 结合了多层感知机和卷积神经网络的模型,用于时间序列数据的建模和预测。 这些模型可以根据具体问题和数据的特性来选择和使用,以获得最佳的时间序列预测性能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值