Faster-RCNN anchor box Pytorch 锚点生成 (含代码)

Faster RCNN 的anchor box 是如何生成的?

简单科普一下
anchor box 在Faster RCNN 中就是像以下这样的框框
可以分成3种长宽比(0.5, 1, 2),3种缩放比(8, 16, 32) 以这样的配置来组合成一组anchor框组
一组就是3x3(也就是9个)个anchor box所组成
在这里插入图片描述
那么这9个anchor box是如何画在图像上的呢?
可以透过自定义的px, py 中心点来计算出anchor的左下角以及右上角坐标点(x, y)

算出九个anchor box, 依照一开始所设置的比例, 将点连成四边形就会出现这样, 我一直觉得很像方形玫瑰花, 聪明的你肯定可以看出四方形的长与宽就是我们设置的比例以及缩放比
在这里插入图片描述
那么我们接下来要思考个问题, 既然已经设计出了anchor box的形状及一组个数, 我们该如何让这些框遍布整副图像才不会错过任何目标物呢?

我们刚刚已经知道利用中心点就可以算出九个框框的坐标并连成四方形
这次一样用anchor box的中心点来延伸 !

记住 这一次我们要让中心点遍布整个图像

定义16为stride, 也就是每16个像素为步长设立一个点
那么一副600*1000像素的输入图像

上面能摆多少个中心点呢?
很简单 600/16 x 1000/16 = 38 x 63 一共2394个中心点

我们就是要用这2394个中心点延伸出来
延伸的方式略有不同, 这里除了用到矩阵相乘还有transpose, reshape等(详情要看代码会更明了)

所有最终一个点延伸出9个anchor box, 那么2394个点就会有21546个anchor box
这2万多个边框遍布在图像会是什么体验?

就是无死角的遍布!!!!
在这里插入图片描述

其实侧边的中心点延伸之后anchor box肯定是会超出图像边界的,如果把图在向外扩展的话,就是像下面图这个样子, 那么超出的部分肯定是用不上的, 在faster rcnn中也有将超出的部分排除的相关代码, 所以最终的目标肯定还是在图像范围内

在这里插入图片描述

讲到这应该对anchor box的生成会更有体悟了吧
接下来就自己实践一次就能更清楚明白了



代码放在博客真的很冗长, 我个人是很不喜欢看太长的博文, 喜欢直接看重点
想自己手敲一次的还是去github download 代码更完整一点
每一行几乎都有注释, 可能有点乱哈 但希望尽量写清楚看明白




最后附上代码教学, issue欢迎提交

Github链接

faster-rcnn-anchor-box 代码实现教学

主要源码来自chenyuntc大神

simple-faster-rcnn







  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值