基于区域的目标检测 (3)

R-FCN通过减少每一个roi的处理时间提速.下面是伪代码

feature_maps = process(image) ROIs = region_proposal(feature_maps) score_maps = compute_score_map(feature_maps) for ROI in ROIs V = region_roi_pool(score_maps, ROI) class_scores, box = average(V) # Much simpler! class_probabilities = softmax(class_scores)

考虑一个5*5的feature map,其中蓝色部分的feature构成了我们想要检测的object.我们将蓝色部分划分为3*3的区域.现在我们可以创建一个新的feature map,仅仅用来检测object的top left corner(TL).如下:

基于区域的目标检测

由于我们将object分成了9个部分,我们从整幅图的feature map中得到9个feature map,每一个feature map负责检测object的相应区域.这些feature map我们称之为position-sensitive score maps,因为每个map都只detect(scores)一个object的子区域.

基于区域的目标检测

假设下图的红色虚线框是ROI.我们将其划分成3*3的区域,然后考虑每个区域包含目标的对应位置的可能性.例如,top-left ROI区域包含左眼的可能.我们把结果存储在一个3*3的vote array里.比如,vote_array[0][0]存储了一个score,表示我们是否发现了目标的top-left region.

基于区域的目标检测

这个依据score map和ROI得到vote array的过程称之为position-sensitive ROI-pool.这个过程和前文提过的ROI pool很类似.

基于区域的目标检测

计算出所有的值以后,取平均,就得到了class score.

基于区域的目标检测

假设我们有C种目标待检测.我们扩展为C+1种,即包含一种class for the background(non-object).每一种目标都有自己的3*3个score map.所以一共有(C+1)*3*3个score maps.使用这些score maps我们可以为每一个类别都算出一个class score.然后用softmax可以计算出每一个类别的class probability.

整体流程如下,下图中k=3.

基于区域的目标检测

R-FCN的一个示例

基于区域的目标检测

原文link:https://medium.com/@jonathan_hui/what-do-we-learn-from-region-based-object-detectors-faster-r-cnn-r-fcn-fpn-7e354377a7c9

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wppfwy.html