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

目标检测入门记2——achor和典型网络结构本文依旧属于目标检测入门系列 是学习 DataWhale 的动手学 CV PyTorch 版的总结与感悟

大家好,欢迎来到IT知识分享网。

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

一个目标检测网络的诞生

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

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

Anchor

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

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

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

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

分类头和回归头

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

回归头

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

用backbone进行特征提取之后,再用3×3的卷积进行计算,得到的特征图大小不变,但通道数变了,比如原来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提取特征,然后再用3×3的卷积进行运算,输入和输出特征图的尺寸相同。如果总共有21类,则输出特征图的通道数为21*9,每21个元素代表一个候选框输出的类别的one-hot编码

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

目标检测网络全貌

在这里插入图片描述

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/156545.html

(0)
上一篇 2025-02-11 18:20
下一篇 2025-02-11 18:25

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信