import six
from six import __init__  # 兼容python2和python3模块def generate_anchor_base(base_size=16, ratios=[0.5, 1, 2],anchor_scales=[8, 16, 32]):"""Generate base anchors by enumerating aspect ratio and scales.Args:base_size (number): The width and the height of the reference window.ratios (list of floats): anchor 的宽高比anchor_scales (list of numbers): anchor 的尺度Returns: Base anchors in a single-level feature maps.`(R, 4)`.bounding box is `(x_{min}, y_{min}, x_{max}, y_{max})`"""import numpy as nppy = base_size / 2.px = base_size / 2.anchor_base = np.zeros((len(ratios) * len(anchor_scales), 4),dtype=np.float32)for i in six.moves.range(len(ratios)):for j in six.moves.range(len(anchor_scales)):// 乘以感受野值,得到缩放后的 anchor 大小h = base_size * anchor_scales[j] * np.sqrt(ratios[i])w = base_size * anchor_scales[j] * np.sqrt(1. / ratios[i])index = i * len(anchor_scales) + janchor_base[index, 0] = px - w / 2.anchor_base[index, 1] = py - h / 2.anchor_base[index, 2] = px + h / 2.anchor_base[index, 3] = py + w / 2.return anchor_base# test
if __name__ == "__main__":bbox_list = generate_anchor_base()print(bbox_list)

这段代码实现了生成一组基础的 anchor box(锚框)。

在目标检测中,anchor box 是预设的一些矩形框框,它们是用来覆盖图像中可能存在物体的区域。在网络训练过程中,锚框会和 ground truth boxes(真实标签框)进行匹配并计算损失,从而学习到更好的目标检测模型。

该函数的输入有三个参数:

base_size:原始的 anchor 框大小,其宽和高都等于 base_size。
ratios:存储 anchor 的宽高比例,分别为 0.5、1 和 2。
anchor_scales:缩放比例,共 3 个,分别为 8、16、32。可以认为是对锚框做卷积的尺度步长,即每次缩小的倍数。
函数返回值是一个 (9, 4) 的 numpy 数组,表示共生成了九个不同尺寸的 anchor box,每个 box 包含四个坐标值 (x_min, y_min, x_max, y_max),这四个值分别代表框的左上角和右下角两个点的坐标。

具体实现过程如下:

创建一个 numpy 数组,大小为 (9, 4)。
遍历所有的 ratios 和 anchor_scales 组合,得到缩放后的 anchor box 尺寸。
计算 anchor box 左上和右下角坐标,并保存到 anchor_base 数组中。
最后打印出生成的所有 anchor box。
运行结果:
[[ -82.50967 -37.254833 53.254833 98.50967 ]
[-173.01933 -82.50967 98.50967 189.01933 ]
[-354.03867 -173.01933 189.01933 370.03867 ]
[ -56. -56. 72. 72. ]
[-120. -120. 136. 136. ]
[-248. -248. 264. 264. ]
[ -37.254833 -82.50967 98.50967 53.254833]
[ -82.50967 -173.01933 189.01933 98.50967 ]
[-173.01933 -354.03867 370.03867 189.01933 ]]

锚框生成算法anchors相关推荐

  1. 【从零开始学Mask RCNN】四,RPN锚框生成和Proposal生成

    1. Mask RCNN Anchor框 生成 Mask RCNN的锚框生成和SSD的锚框生成策略类似(SSD的锚框生成策略见:[资源分享]从零开始学习SSD教程) ,都遵循以下规则: Anchor的 ...

  2. 结合具体代码理解yolov5-7.0锚框(anchor)生成机制

    最近对yolov5-7.0的学习有所深入,感觉官方代码也比较易读,所以对网络结构的理解更进一步,其中对锚框生成这块没太看明白细节,也想弄明白这块,于是前前后后好好看了代码.现在把我的学习收获做一下记录 ...

  3. SSD目标检测的个人总结(1)—— 锚框的生成

    SSD目标检测的个人总结(1)-- 锚框的生成 前言 锚框 锚框的生成 锚框的绘制 前言 沐神的代码看了很久.B站上的视频也刷了很多遍,感叹下自己的基础确实不怎么扎实,锚框部分的底层代码几乎是一行行撸 ...

  4. 0927锚框(Anchor box)

    锚框(Anchor box) 目标检测算法中,通常会在输入图像中采样大量的区域,然后判断这些区域中是否包含所感兴趣的目标,并调整区域边界从而更加准确地预测目标的真实边界框(ground-truth b ...

  5. YOLOv3学习——锚框和候选区域

    YOLOv3学习之锚框和候选区域 单阶段目标检测模型YOLOv3 R-CNN系列算法需要先产生候选区域,再对候选区域做分类和位置坐标的预测,这类算法被称为两阶段目标检测算法.近几年,很多研究人员相继提 ...

  6. 《动手学深度学习》(七) -- 边界框和锚框

    1 边界框 在目标检测中,我们通常使用边界框(bounding box)来描述对象的空间位置.边界框是矩形的,由矩形左上角的以及右下角的xxx和yyy坐标决定.另一种常用的边界框表示方法是边界框中心的 ...

  7. 6--目标检测和边界框和锚框

    很多时候图像里有多个目标,不仅想知道它们的类别,还想得到它们在图像中的具体位置. 在计算机视觉里,这类任务称为目标检测(object detection). 6.1 边界框  边界框(bounding ...

  8. 锚框、交并比和非极大值抑制(tf2.0源码解析)

    锚框.交并比和非极大值抑制(tf2.0源码解析) 文章目录 锚框.交并比和非极大值抑制(tf2.0源码解析) 一.锚框生成 1.锚框的宽高 2.锚框的个数 3.注意点(★★★) 4.tf2.0代码 二 ...

  9. 《动手学深度学习》13.4锚框

    13.4.1生成多个锚框 参考: 13.4.1生成多个锚框. 代码实现 导入功能包 import torch import matplotlib.pyplot as plt # 精简打印精度,保留两位 ...

最新文章

  1. Windows下Redis中RedisQFork位置调整
  2. 浅析企业自助建站系统的特性
  3. NLP之词向量:利用word2vec对20类新闻文本数据集进行词向量训练、测试(某个单词的相关词汇)
  4. Linux源码编译(一):从头文件说起
  5. python编程题三
  6. ed是什么梗_花泽香菜不笑了什么梗怎么回事?花泽香菜为什么是宅男女神?
  7. URAL1553 Caves and Tunnels 树链剖分 动态树
  8. Elasticsearch 的使用,看这一篇就够了!
  9. c++读出像素矩阵_Python传numpy矩阵调c++(求3D图像连通区域)
  10. 每天CookBook之JavaScript-032
  11. 龙果学院Elasticsearch顶尖高手系列-高手进阶篇完整版
  12. 最大子列和(C语言)
  13. 腾讯云直播流程及腾讯云通讯功能整理
  14. [转载].NET Core使用NPOI导出复杂,美观的Excel详解
  15. 【Android Test】糟心的“Empty test suite ”异常
  16. FrontEnd前端文件架构
  17. SAP中事务码SQVI快速浏览器
  18. linux上传网页文件大小,Apache启用GZIP压缩网页传输方法
  19. NGNIX在CENTEROS 下部署
  20. 「黑镜」回归!剧中的杀戮机械狗或在两年内来到你身边

热门文章

  1. 关于Invalid bound statement和Error creating bean with name 'xxx'错误问题全收录
  2. 【无人机】【2011.03】无人飞行器的自主飞行研究
  3. [工作积累] 大型世界的草渲染
  4. 深圳找工作和租房你不知道的那些事(免费住宿福利申请!)
  5. Hadoop系列 (三):HDFS详细介绍
  6. 我是曾经的“网瘾少年”,靠自学编程走出了大山
  7. scanf和putchar
  8. 5g主题演讲_主题演讲-比尔·盖茨-继续
  9. 数据仓库建模(二):建模流程
  10. Go语言fmt.Printf使用指南