以下链接是个人关于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
关注
打赏
- 史上最全slam从零开始-总目录
- (01)ORB-SLAM2源码无死角解析-(00)目录_最新无死角讲解
- 目标检测00-00:mmdetection(Foveabox为例)-目录-史上最新无死角讲解
- 风格迁移1-00:Liquid Warping GAN(Impersonator)-目录-史上最新无死角讲解
- 姿态估计1-00:FSA-Net(头部姿态估算)-目录-史上最新无死角讲解
- 姿态估计0-00:DenseFusion(6D姿态估计)-目录-史上最新无死角讲解
- 3D点云重建0-00:MVSNet(R-MVSNet)-目录-史上最新无死角讲解
- 视觉工作项目-为后来的你,提供一份帮助!
- 行人检测0-00:LFFD-目录-史上最新无死角解读
- 行人重识别0-00:DG-Net(ReID)-目录-史上最新无死角讲解