检测算法中候选区域的生成方法
检测网络依赖于候选区域的位置,候选区域的生成方法和原始位置直接决定了整个算法的时间和效果。基于此,本文对当前主流检测算法faster-rcnn, yolo和ssd中候选区域的生成方法进行总结。
- faster-rcnn候选区域的生成方法
faster-rcnn网络插图
候选区域网络RPN的工作过程如上图右所示,采用anchor机制,在特征图上的每个像素位置生成k个anchor boxes,然后生成256维度的向量,作为分类和回归分支的输入,从而得到回归后的位置和是否为物体的分类信息。
由论文网络本身可知,faster-rcnn的候选区域是RPN网络的输出经roipooling后的box,那么RPN网络用于回归的原始anchor box是如何生成的,图右侧红框(滑窗)又是如何来的呢。首先滑窗的中心是特征图中的每个像素点,滑窗大小为特征图变为原图分辨率时需要放大的比例(论文中的网络结构处理后缩放比例为16)。k个anchor boxes指定的参数包括ratios和scales,这两个参数变化的基础就是滑窗的大小16。计算过程是通过修改anchor的长宽比,然后再进行尺度变换即可。具体的可参考文章faster rcnn如何生成anchors。
- 设滑窗的面积为A,则anchor box宽的计算结果为round(sqrt(A*ratios)),高的计算结果为anchor box的宽*ratios。
对长宽比变换后的anchor box的宽和高乘以scales即可
- yolo v1候选区域的生成方法
yolov1推理过程
由图可知,与faster rcnn通过全连接层分别得到分类和检测分支不同的是,yolov1通过全连接层输出后,对全连接层的节点重新进行reshape,得到7*7*30的detection层,7*7的feature map上的每一点对应原图均分为7*7后的一块儿区域,即上图的红框区域,30的深度信息分别表示两个检测框的坐标信息和分类信息。其中坐标信息包括box中心点相对于当前栅格在原图起始位置的偏移和box宽高相对于原图分辨率的比例及是否包含物体的置信度。综上,yolov1没有预设的候选区域,是通过全连接层激活后对应位置的值进行坐标回归的。
物体中心所在的grid负责回归
- yolov2候选框的生成方法
候选框回归过程
yolov2采用的faster rcnn中的anchor机制得到候选框区域,不同的是:
- anchor是基于当前feature map维度聚类获得的;
- 此处的anchor参数信息为长宽值;
回归元素为target-box的中心点和宽高信息;
- yolov3候选框的生成方法
yolov3网络结构
yolov3候选框的选择方法和v2类似,不同的是:
- 在三个不同层位置使用了anchors进行回归;
单层anchor的数量由5个扩大到9个;
- ssd候选区域的生成方法
在不同feature map上利用anchor进行位置回归
ssd候选框也是针对anchor进行的,利用了Multi-box机制(类似inception结构)在不同特征图上进行计算,可参考下图。yolov3也借鉴了类似的思路,不过yolov3利用了resnet机制和upsample机制。
参考文献:
- Object Detection for Dummies Part 3: R-CNN Family
- YOLO presentation
- yolo配置文件详解
- Zero to Hero: Guide to Object Detection using Deep Learning: Faster R-CNN,YOLO,SSD
- Understanding SSD MultiBox — Real-Time Object Detection In Deep Learning
还没有评论,来说两句吧...