目标检测笔记No.2锚框与模型

锚框

什么是锚框

这个在论文(paper)中说法不太一样,如Faster RCNN中称之为anchor(锚),而SSD称之为prior bounding box(先验框),以下遇到的目标选择框,在还没有进行模型训练之前预设的选择框,使用先验框的说法。

锚框生成程序

在CV中,对图像先进行特征采集,一般使用CNN网络,这里使用VGG16模型,输入3×224×224的图像,输出512×7×7针对特征图,随后,对每一个cell 上生成9个先验框。
选择特征图进行先验框生成的原因:若在特征图上生成每一个cell生成9个先验框,一共有7×7×9个;若在原图上生成那么就要有224×224×9,没必要!我们的目的能够覆盖全图就可以,所以特征图是不错的选择。
这里先验框存储 使用 中间+宽高坐标 。

定义9个先验框

参数说明
scale_anchor先验框大小
ratio_anchor先验框宽高比

先来个示意图,获得就是这9个先验框。

scale_anchor = [0.1, 0.2, 0.3] # 表示原图长/宽的0.1那么大
ratio_anchor = [1., 2., 0.5]

示意图
在这里插入图片描述
上图以中间点为例,并且已经将特征图所确定的先验框,映射到原图进行可视化展示。要的就是这个效果,随后不是所有的都留到最后,有一些与目标框毫无重叠的没有必要考虑,接下来的的步骤,那么可以利用IoU指标,设定阈值,初步设定为0.5,那么<0.5的框我们就直接分类为背景,哪些要回归目标的任务就让IoU>0.5的去实现。补充一点,这只是以一个点为例,每个cell都有9个框那么也要有441个框,那么原图可视化之后可谓密密麻麻!

程序

def create_prior_boxes():
        """
        VGG16最后的特征图尺寸为 7*7  具体间网络模型中简化的SSD示意图
        :return: prior boxes in center-size coordinates, a tensor of dimensions (441, 4)
        """
        fmap_dims = 7
        scale_anchor = [0.1, 0.2, 0.4]
        ratio_anchor = [1., 2., 0.5]

        prior_boxes = []
        for i in range(fmap_dims):
            for j in range(fmap_dims):
                cx = (j + 0.5) / fmap_dims
                cy = (i + 0.5) / fmap_dims

                for obj_scale in scale_anchor:
                    for ratio in ratio_anchor:
                        prior_boxes.append([cx, cy, obj_scale * sqrt(ratio), obj_scale / sqrt(ratio)])

        prior_boxes = torch.FloatTensor(prior_boxes)  # (441, 4).to(device)
        prior_boxes.clamp_(0, 1)  # (441, 4)

        return prior_boxes

网络模型

简化的SSD模型

在这里插入图片描述

回归与分类

在这里插入图片描述
就是设置CNN网络对应输出的通道数。

SSD模型

在这里插入图片描述

说明推荐这篇博文链接: link.

参考链接: 动手学CV-Pytorch.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值