以下链接是个人关于detectron2(目标检测框架),所有见解,如有错误欢迎大家指出,我会第一时间纠正。有兴趣的朋友可以加微信:17575010159 相互讨论技术。若是帮助到了你什么,一定要记得点赞!因为这是对我最大的鼓励。 文末附带 \color{blue}{文末附带} 文末附带 公众号 − \color{blue}{公众号 -} 公众号− 海量资源。 \color{blue}{ 海量资源}。 海量资源。
detectron2(目标检测框架)无死角玩转-00:目录
前言通过前面的一系列博客,已经把把大部分都讲解完成了,总的来说,还有两个点需要详细的讲解,一个为anchor,另外一个为 loss,该小结我们来讲解anchor,在讲解之前,推荐我之前的一篇博客,方便大家更加深入的了解anchor: 深度解剖(5):白话谈anchor(锚点),不懂来找我! 看过之后,我相信大家对于anchor算是有一定了解了,那么我们就开始深入的了解anchor,我们以 detectron2中 的RetinaNet为例子来讲解。
anchor生成我们查看 configs\Base-RetinaNet.yaml 文件,可以看到如下:
ANCHOR_GENERATOR: # anchor的生成
SIZES: !!python/object/apply:eval ["[[x, x * 2**(1.0/3), x * 2**(2.0/3) ] for x in [32, 64, 128, 256, 512 ]]"]
在代码的运行中,其会变成一个列表,列表内容如下:
cfg.MODEL.ANCHOR_GENERATOR.SIZES =
[[32, 40.3, 50.7],
[64, 80.6, 101.5],
[128, 161.2, 203.12],
[256, 322.5, 406.3],
[512, 645.0, 812.7]]
表示的是anchor初始的大小,后续还需要做一些列的变化,从这里可以知道,anchor的大小主要由 32,64,128,256,512 五个尺寸缩放而来,每个尺寸扩大了两次,分别为 X ⋅ 2 ( 1.0 / 3 ) X·2^{(1.0/3)} X⋅2(1.0/3) , X ⋅ 2 ( 2.0 / 3 ) X·2^{(2.0/3)} X⋅2(2.0/3)。从上面可以明显的看到,共生成 3x5 个 anchor 相关的数据,但是他有什么用呢?不急,我们先继续往下看。
打开源码 detectron2\modeling\anchor_generator.py,先找到如下部分代码:
class DefaultAnchorGenerator(nn.Module):
"""
For a set of image sizes and feature maps, computes a set of anchors.
"""
def __init__(self, cfg, input_shape: List[ShapeSpec]):
super().__init__()
# fmt: off
sizes = cfg.MODEL.ANCHOR_GENERATOR.SIZES
# 默认[[0.5, 1.0, 2.0], [0.5, 1.0, 2.0], [0.5, 1.0, 2.0], [0.5, 1.0, 2.0], [0.5, 1.0, 2.0]]
aspect_ratios = cfg.MODEL.ANCHOR_GENERATOR.ASPECT_RATIOS
# 默认[8, 16, 32, 64, 128]
self.strides = [x.stride for x in input_shape]
# 默认0.0
self.offset = cfg.MODEL.ANCHOR_GENERATOR.OFFSET
# 检测self.offset是否符合标准
assert 0.0
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?