目标检测——理解Anchor box的作用

前言

最近重新看了遍经典的目标检测网络,对Anchor box 的作用有了更深入的了解。有不正确的地方还望指出,共同进步。

为了控制篇幅本文主要讲Anchor box,不针对网络细节展开,默认大家已经对经典网络有所了解,尤其是faster RCNN(下文会以faster RCNN为例讲解)带来不便,深表歉意。如果对faster RCNN比较熟悉的可以直接跳到训练与预测部分

Anchor box的发展

Anchor box最先由faster RCNN网络提出,后分别被SSD和YOLO2、YOLO3等经典网络借用,也出现了不同的称呼“prior box”、“default box ”等,但是本质终究没变,只不过各大网络将Anchor box应用在不同地方罢了。

最先使用Anchor box的faster RCNN属于两阶段检测网络,它在RPN网络中利用Anchor box找出可能存在物体的位置(框),即所谓的感兴趣区域,再由后续CNN“精修”这些感兴趣区域,“精修”操作包括位置和类别的精处理;而SSD以及YOLO系列都是单阶段网络,它们都是一步到位直接检测,因此它们利用Anchor box直接学习物体准确位置。Anchor box在不同的网络中“现象”不同,但其“本质”不变的,我们要的就是透过现象看本质。

Faster RCNN中的Anchor box

我就用faster RCNN为例讲解Anchor box的作用吧,以此类推。Anchor box这个名字我不太喜欢,刚开始听到这名字着实搞不懂它是干嘛用的,我倒是挺喜欢prior box(先验框)这个名字,先验顾名思义就是提供某种经验的框,来看看它如何提供经验,提供的又是什么经验。

先盗一张faster RCNN中用到先验框(后文代替Anchor box)的地方

faster RCNN的RPN网络

faster RCNN采用不同的backbone网络RPN网络将会得到不同的feature map。若以VGG作为backbone则feature map是50x38x512的,我们抛开这些维度不谈,就把feature map想象成平面图,图上画有50*38个格子,每个格子都“画”有9个尺寸不一的框,脑补一下画面。在faster RCNN中RPN分为两条支路,其中定位分支中每个格子的每个框输出四个数据,其实可以认为是这个格子在输出框的信息,分别是x,y,w,h的偏移量,至于为什么是偏移量呢?


其中带有下标a是先验框的参数,不带下标a是真实框(Ground truth)的参数,tx、ty、tw、th这个就是前面所说的每个先验框输出的偏移量的标签!注意是标签label,也就是网络要拟合、学习的目标值!根据公式不难发现这个标签其实就是真实框与先验框归一化后真实的偏移量。网络训练过程中就会迫使每个格子输出的先验框的偏移量不断向这个真实偏移量靠近。

训练与预测中的Anchor box机制

把先验框和训练预测结合起来!!!我会尽可能地用通俗的语言来描述。

上文说过faster RCNN的RPN网络中feature map有50x38个格子,这其实每个格子其实不是普通的格子,它是原图经过一层层卷积提取特征而来的,每一个格子都对应着原图的一部分区域(感受野)。换句话说每个格子都富含着原图中某一部分区域的许多信息,训练或者预测的输出都是建立在这些信息上的。

在这里插入图片描述

蓝色格子就是富含原图信息的一个格子(假设它是最准确的信息),红框是先验框,绿框是真实框(0.2,0.4,0.1,0.3)是真实的偏移量。训练阶段喂入一张图片,如果格子有负责的目标(绿框),让格子先根据前面的卷及操作回答偏移量,第一次肯定只能瞎蒙得到一个完美错误的答案。这时就要惩罚了,告诉格子你自己脑补一个红框,请记住你的答案是(0.2,0.4,0.1,0.3),脑补的红框要和答案联合记忆,然后回去改前面的卷及操作(反向传播修改网络权重)。下一次图片进来回答错了还要继续惩罚你,继续改卷积操作,直到与答案一样或者差不多(误差足够小)为止,改着改着前面的卷积操作日趋成熟,最终能提取到想要的信息(蓝色信息),每个格子的先验框也能较准确地回答出自己的偏移量。(loss收敛了)

如何判断哪个物体的真实框是哪个先验框负责的?训练前前分配任务,faster RCNN一张图上大大小小2000个先验框,通过设定IOU阈值,先验框与真实框超过这个阈值,该先验框就负责这个真实框,所以一个真实框可由多个先验框负责。

有人会问,那不用先验框也可以做到啊。确实,不过可能结果不那么完美。如果没有先验框的话,蒙大尺寸的真实框会引入比小尺寸更大的误差,惩罚也会加大,网络可能忽略了小尺寸真实框的损失,从而导致训练比较难收敛。因此,引入先验框训练拟合偏差量而不直接拟合真实框尺寸更有利于训练收敛。

预测阶段并不存在真实框了,等图片处理完一堆卷积之后会产生50x38个富含信息的格子,如果其中有一个格子的信息很像我们训练时遇到的蓝色信息,那就请格子再脑补一个红色那样尺寸的先验框,然后再猜一组偏移量(训练的时候红框和偏移量是联合记忆的,预测的时候也要联合两者来猜)。先验框的另一个好处就是,不用盲目地猜结果,我给你一个先验知识,你在这个基础上给我猜猜还差多少,总比没基础猜得容易得多吧。训练的时候你是在有一定基础的前提上教它(联合记忆),那么预测的时候也会在一定基础的前提上预测,这个基础就是先验框本身,也许这就是所谓的先验吧。

在这里插入图片描述

得到了偏移量再加上先验框的尺寸就能得到预测框的值啦!!!

  • 18
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值