目标检测入门记2——achor和典型网络结构

本文依旧属于目标检测入门系列,是学习DataWhale的动手学CV-PyTorch版的总结与感悟。

一个目标检测网络的诞生

咱也目标检测刚入门,咱也没研究过其他网络,这里就拿Datawhale教程中的SSD网络改动版Tiny-Detector来举例,其他网络应该也是差不多的。

与其他的深度神经网络算法类似,目标检测网络中也需要用CNN提取特征,提取特征可以用各种在分类任务上效果出众的网络作为backbone,比如用VGG16作为Backbone,去除后面的全连接层的分类部分,输入一张大小为224x224的图像,经过特征提取后得到一个7x7的特征图,如下图:
在这里插入图片描述

Anchor

无论搞没搞过目标检测,只要是CV领域的,大家对anchor都应该有所耳闻,因为很多公众号文章都会提到这个词。那么anchor到底是什么?

所谓anchor即先验框,这是人为给定的一组具有不同形状、不同大小的框。因为它形状多样,所以可以基本满足很多目标的boundingbox(边界框)的形状;因为它大小多样,所以可以满足多尺度的检测需求。下图中就展示了一组以狗为中心的anchor。

在这里插入图片描述
再回到刚才的问题,如何从7x7的特征图上得到图像上目标的位置呢?我们事先会定义一组anchor,然后在每个位置上全部用一遍这组anchor,每个anchor在一个位置上都会根据事先定义的框的大小生成一组图,这组图反映了以当前位置为中心的一组anchor所框区域。我们就是要利用anchor生成的这组位置,来计算里面包含的目标信息,以及通过回归的方式调整边界框,让其能与实际目标的边界框尽可能重合。

回归的方式主要就到目标检测入门记1中边界框坐标的两种表示的第二种啦,具体为何要这样计算,我认为更多的可能是在数值计算上更容易回归吧。
boundingbox坐标的表示方式

分类头和回归头

用特征提取网络获得特征图之后,需要再通过两个卷积层,分别输出分类头和回归头,分类头对应图中目标的类别信息,回归头对应目标的边界框。
在这里插入图片描述

回归头

它的作用是预测anchor框和bbox_gt之间的偏移量

用backbone进行特征提取之后,再用3x3的卷积进行计算,得到的特征图大小不变,但通道数变了,比如原来backbone输出特征图上每个点处生成9个候选框,每个候选框输出偏移量 g c x , g c y , g x , g h g_{cx},g_{cy},g_{x},g_{h} gcx,gcy,gx,gh,那么输出特征图的通道数就为36,每4个为一组代表一个候选框的输出偏移量回归值。

分类头

分类头也是用backbone提取特征,然后再用3x3的卷积进行运算,输入和输出特征图的尺寸相同。如果总共有21类,则输出特征图的通道数为21*9,每21个元素代表一个候选框输出的类别的one-hot编码

实际使用中,分类头和会国土的输出并非上面这样。采用7x7x(anchor_num*elem_num)的方式比较直观,但希望每个anchor的输出独自成为一个维度,因此通常将7x7xanchor_num展平成一个元素,再接一个elem_num的维度作为这个anchor的输出。

目标检测网络全貌

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值