RCNN和AlexNet阅读时的一些小问题

1、ROI提取原理:

感兴趣区域池(也称为RoI池)是一种使用卷积神经网络广泛用于对象检测任务的操作。例如,在单个图像中检测多个汽车和行人。其目的是对不均匀大小的输入执行最大池化,以获得固定大小的特征图(例如7×7)。给一个讲解的很透彻的链接:https://blog.deepsense.ai/region-of-interest-pooling-explained/

2、HOG算子、SIFT算子和SURF算子:

2.1 HOG(Histogram of Oriented Gradient, HOG)

1、https://blog.csdn.net/zouxy09/article/details/7929348?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase
2、https://blog.csdn.net/krais_wk/article/details/81119237?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase
3、https://blog.csdn.net/carson2005/article/details/7782726

2.2 SIFT和SURF算子:

这两个算子在opencv中有相应的实现方法,不过在最新的opencv版本中貌似进入到no-free。如果想要调用的话需要将opencv的版本调整到3.4左右。具体的流程可以百度。
https://www.cnblogs.com/Undo-self-blog/p/8447728.html

3、NMS(non maximum suppression)

目的:去除目标检测中重复的检测框
总结一下步骤:
1、对于输入的region proposals,通过ROI将其固定到相同的尺寸;
2、以人脸识别为例子,通常我们选取regionproposals的方法是滑动窗口。我们将得到的region proposals按照得分从高到低的顺序进行排列;
3、以得分最高的候选框P1为标准,我们统计其他框Pi与得分最高的候选框的IOU(intersection over union),如果两者重复的比例较高,则删除Pi;
4、从未处理的框中继续选一个得分最高的,重复上述过程。
https://blog.csdn.net/shuzfan/article/details/52711706;
https://blog.csdn.net/leviopku/article/details/80886386;

4、AlexNet阅读:

LRN和dropout在现代网络结构中逐渐被batchnorm所替代,而ReLu函数则延续至今。文中最后有个结论也是很重要的:神经网络的层数对性能的贡献度最大。具体的模型有一些小问题但也是无伤大雅,在很多现有框架(PyTorch、Caffe)也对其网络结构进行了微调。

5、IOU(itersection over union):

通俗来说,就是衡量两个区域的交集占总共面积的大小。如果这个比例越大,说明两区域重复比例越高。假设区域1为\(S_1\),区域2为\(S_2\),两者的IOU值为:
\(IOU = \frac{S_1∩S_2}{S_1∪S_2}\)

6、hard negative mining method and false positive:

最近一直在看关于CNN的目标检测和跟踪的文章,在这中间会经常看到hard negative mining这个名词,把这个大概解释一下:假设给你一堆包含一个或多个人物的图片,并且每一个人都给你一个bounding box做标记,如果要训练一个分类器去做分类的话,你的分类器需要既包含正训练样本(人)和负训练样本(背景)。你通过观察bounding box去创建一个有用的正训练样本,那么怎么做才能创建一个有用的负训练样本呢?一个很好的方式就是去在开始时随机创建一堆的bounding box候选框,并且不能与你的正样本有任何的重叠,把这些未与正样本重叠的新的bounding box作为你的负样本。好了,这样你的正负样本都有了,可以训练可以用的分类器了,你用滑动窗口在你的训练图片上进行运行,但是你会发现你的分类器并不是很好用,分类的效果并不是很好,因为它会抛出一堆的错误的正样本(当检测到人时实际上却并不是实际的人),这就问题来了,你训练了一个用于分类的分类器,然而这个分类器却并不能达到你想要的效果,会出现许多false negative, 即预测为负例的正样本。那么应该怎么办呢?
这个时候就要用的hard negative了,hard negative就是当你得到错误的检测patch时,会明确的从这个patch中创建一个负样本,并把这个负样本添加到你的训练集中去。当你重新训练你的分类器后,分类器会表现的更好,并且不会像之前那样产生多的错误的正样本。
R-CNN在训练SVM分类器时使用了难分样本挖掘(hard negative mining)的思想,但Fast R-CNN和Faster R-CNN由于使用端到端的训练策略并没有使用难分样本挖掘(只是设置了正负样本的比例并随机抽取)。CVPR2016的Training Region-based Object Detectors with Online Hard Example Mining(oral)将难分样本挖掘(hard example mining)机制嵌入到SGD算法中,使得Fast R-CNN在训练的过程中根据region proposal的损失自动选取合适的Region Proposal作为正负例训练。实验结果表明使用OHEM(Online Hard Example Mining)机制可以使得Fast R-CNN算法在VOC2007和VOC2012上mAP提高 4%左右。

RCNN和AlexNet阅读时的一些小问题

上一篇:cra+TS+eslint+cssModule最佳实践


下一篇:移动端测试——App基础操作(2)