关于目标检测进行框回归的问题 | 社区问答

2017 年 12 月 26 日 AI研习社 不灵叔

这里是AI研习社,我们的社区已经正式推出了!欢迎大家来多多交流~

mooc.ai/bbs

(戳文末阅读原文直接进)

社长为你推荐来自AI研习社问答社区的精华问答。如有你也有问题,欢迎进社区提问。 

一个小介绍:

社区目前主要功能是问答博客,支持文字、图片、视频、代码、公式、超链接,这些功能可以让你在描述问题/回答问题/写文章的时候用最清晰的方式来表达,还需要什么你说,我改


  话不多说,直接上题  


问:关于目标检测进行框回归的问题

目标检测中,要生成区域提议并进行回归,我看到的方法在生成区域以后都进了卷积层,也就是在特征空间上形成了映射,那也就是框回归都是在特征空间进行的, 我一直没弄明白全链接是怎么进行回归的,另外,如果自己不用全链接的话,我该如何生成区域提议以及进行回归的。


来自社友的回答

▼▼▼  

@玛希 • 加西亚

全连接已经从目标检测中慢慢淡出了,在识别中全连接用于生成各个类别的 score 还保留在,主要是起到关联整体特征的作用,并不是题主可能认为的只输出单一的值。目标检测中全连接慢了就不再用了,而且目标检测的趋势是融合各个层的 feature map 来做,而不仅是只用最后一层。


回归的话,loss 函数是拿预测值和真实物体位置求差值的 smooth L1 得到。预测值和真实物体位置会相对于 anchor box 做 encode 和 decode。encode 是将相对于图片的位置转换为相对于 anchor box 中心的位置,decode 反之。

假设最后得到一个 5*5 的 feature map,那么最终使用的 feature map 形态为 5 * 5 * anchor number * (class, Lx, Ly, w, h)。Lx 和 Ly 是预测值或真实物体位置相对于 anchor box 中心的偏移,w 和 h 是相对于 anchor box 的大小。多想几遍就不会再弄晕了:你最后得到的结果是将图片划分为 5*5 的区域,每个区域有 anchor number 个预测值,每个值由 (class, Lx, Ly, w, h) 组成。

@muglelei  

可以参考下 TensorFlow 的 OD API 中 RFCN 的这部分代码 (从 image_features 到最后的 box_encodings,注释自己加的不一定对):

net = image_features with slim.arg_scope(self._conv_hyperparams):
    # depth: Target depth to reduce the input feature maps to.
    # 1×1卷积层,减少feature maps数量
    net = slim.conv2d(net, self._depth, [1, 1], scope='reduce_depth')
   
    # Location predictions. 位置预测部分
   
    # box_code_size: Size of encoding for each box. [default = 4]
    # k^2 × (C+1) x 4
    location_feature_map_depth = (self._num_spatial_bins[0] *
                                  self._num_spatial_bins[1] *
                                  self.num_classes *
                                  self._box_code_size)
    # 1×1卷积层,对每一类产生k^2张position-sensitive score maps
    # & append a sibling 4k^2-d conv layer for bounding box regression    
    location_feature_map = slim.conv2d(net, location_feature_map_depth, [1, 1],
                                       activation_fn=None,
                                       scope='refined_locations')
                                      
    # position-sensitive RoI池化层
    box_encodings = ops.position_sensitive_crop_regions(
        location_feature_map,        
        boxes=tf.reshape(proposal_boxes, [-1, self._box_code_size]),        
        box_ind=get_box_indices(proposal_boxes),        
        crop_size=self._crop_size,        
        num_spatial_bins=self._num_spatial_bins,      
         global_pool=True)          
         
    # tf.squeeze去掉维度为1的维    
    box_encodings = tf.squeeze(box_encodings, squeeze_dims=[1, 2])          
   
    # 调整box编码的形状    
    box_encodings = tf.reshape(box_encodings,
                               [batch_size * num_boxes, 1,                                
                               self.num_classes, self._box_code_size]




新人福利



关注 AI 研习社(okweiwu),回复  1  领取

【超过 1000G 神经网络 / AI / 大数据,教程,论文】




如果你有更好的答案,点击阅读原文分享你的观点~

▼▼▼  

登录查看更多
1

相关内容

深度学习目标检测方法及其主流框架综述
专知会员服务
147+阅读 · 2020年6月26日
基于深度学习的表面缺陷检测方法综述
专知会员服务
93+阅读 · 2020年5月31日
【图神经网络(GNN)结构化数据分析】
专知会员服务
115+阅读 · 2020年3月22日
【机器学习课程】机器学习中的常识性问题
专知会员服务
74+阅读 · 2019年12月2日
可解释推荐:综述与新视角
专知会员服务
111+阅读 · 2019年10月13日
2019年机器学习框架回顾
专知会员服务
35+阅读 · 2019年10月11日
目标检测中边界框的回归策略
极市平台
17+阅读 · 2019年9月8日
小目标检测相关技巧总结
极市平台
28+阅读 · 2019年8月15日
CVPR2019通用目标检测
极市平台
8+阅读 · 2019年8月6日
CVPR2019 | Stereo R-CNN 3D 目标检测
极市平台
27+阅读 · 2019年3月10日
理解 YOLO 目标检测
AI研习社
21+阅读 · 2018年11月5日
Arxiv
10+阅读 · 2020年4月5日
OD-GCN: Object Detection by Knowledge Graph with GCN
Arxiv
4+阅读 · 2019年9月30日
Arxiv
8+阅读 · 2018年1月12日
Arxiv
4+阅读 · 2016年12月29日
VIP会员
相关VIP内容
深度学习目标检测方法及其主流框架综述
专知会员服务
147+阅读 · 2020年6月26日
基于深度学习的表面缺陷检测方法综述
专知会员服务
93+阅读 · 2020年5月31日
【图神经网络(GNN)结构化数据分析】
专知会员服务
115+阅读 · 2020年3月22日
【机器学习课程】机器学习中的常识性问题
专知会员服务
74+阅读 · 2019年12月2日
可解释推荐:综述与新视角
专知会员服务
111+阅读 · 2019年10月13日
2019年机器学习框架回顾
专知会员服务
35+阅读 · 2019年10月11日
相关资讯
目标检测中边界框的回归策略
极市平台
17+阅读 · 2019年9月8日
小目标检测相关技巧总结
极市平台
28+阅读 · 2019年8月15日
CVPR2019通用目标检测
极市平台
8+阅读 · 2019年8月6日
CVPR2019 | Stereo R-CNN 3D 目标检测
极市平台
27+阅读 · 2019年3月10日
理解 YOLO 目标检测
AI研习社
21+阅读 · 2018年11月5日
Top
微信扫码咨询专知VIP会员