锚框生成算法anchors
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相关推荐
- 【从零开始学Mask RCNN】四,RPN锚框生成和Proposal生成
1. Mask RCNN Anchor框 生成 Mask RCNN的锚框生成和SSD的锚框生成策略类似(SSD的锚框生成策略见:[资源分享]从零开始学习SSD教程) ,都遵循以下规则: Anchor的 ...
- 结合具体代码理解yolov5-7.0锚框(anchor)生成机制
最近对yolov5-7.0的学习有所深入,感觉官方代码也比较易读,所以对网络结构的理解更进一步,其中对锚框生成这块没太看明白细节,也想弄明白这块,于是前前后后好好看了代码.现在把我的学习收获做一下记录 ...
- SSD目标检测的个人总结(1)—— 锚框的生成
SSD目标检测的个人总结(1)-- 锚框的生成 前言 锚框 锚框的生成 锚框的绘制 前言 沐神的代码看了很久.B站上的视频也刷了很多遍,感叹下自己的基础确实不怎么扎实,锚框部分的底层代码几乎是一行行撸 ...
- 0927锚框(Anchor box)
锚框(Anchor box) 目标检测算法中,通常会在输入图像中采样大量的区域,然后判断这些区域中是否包含所感兴趣的目标,并调整区域边界从而更加准确地预测目标的真实边界框(ground-truth b ...
- YOLOv3学习——锚框和候选区域
YOLOv3学习之锚框和候选区域 单阶段目标检测模型YOLOv3 R-CNN系列算法需要先产生候选区域,再对候选区域做分类和位置坐标的预测,这类算法被称为两阶段目标检测算法.近几年,很多研究人员相继提 ...
- 《动手学深度学习》(七) -- 边界框和锚框
1 边界框 在目标检测中,我们通常使用边界框(bounding box)来描述对象的空间位置.边界框是矩形的,由矩形左上角的以及右下角的xxx和yyy坐标决定.另一种常用的边界框表示方法是边界框中心的 ...
- 6--目标检测和边界框和锚框
很多时候图像里有多个目标,不仅想知道它们的类别,还想得到它们在图像中的具体位置. 在计算机视觉里,这类任务称为目标检测(object detection). 6.1 边界框 边界框(bounding ...
- 锚框、交并比和非极大值抑制(tf2.0源码解析)
锚框.交并比和非极大值抑制(tf2.0源码解析) 文章目录 锚框.交并比和非极大值抑制(tf2.0源码解析) 一.锚框生成 1.锚框的宽高 2.锚框的个数 3.注意点(★★★) 4.tf2.0代码 二 ...
- 《动手学深度学习》13.4锚框
13.4.1生成多个锚框 参考: 13.4.1生成多个锚框. 代码实现 导入功能包 import torch import matplotlib.pyplot as plt # 精简打印精度,保留两位 ...
最新文章
- Windows下Redis中RedisQFork位置调整
- 浅析企业自助建站系统的特性
- NLP之词向量:利用word2vec对20类新闻文本数据集进行词向量训练、测试(某个单词的相关词汇)
- Linux源码编译(一):从头文件说起
- python编程题三
- ed是什么梗_花泽香菜不笑了什么梗怎么回事?花泽香菜为什么是宅男女神?
- URAL1553 Caves and Tunnels 树链剖分 动态树
- Elasticsearch 的使用,看这一篇就够了!
- c++读出像素矩阵_Python传numpy矩阵调c++(求3D图像连通区域)
- 每天CookBook之JavaScript-032
- 龙果学院Elasticsearch顶尖高手系列-高手进阶篇完整版
- 最大子列和(C语言)
- 腾讯云直播流程及腾讯云通讯功能整理
- [转载].NET Core使用NPOI导出复杂,美观的Excel详解
- 【Android Test】糟心的“Empty test suite ”异常
- FrontEnd前端文件架构
- SAP中事务码SQVI快速浏览器
- linux上传网页文件大小,Apache启用GZIP压缩网页传输方法
- NGNIX在CENTEROS 下部署
- 「黑镜」回归!剧中的杀戮机械狗或在两年内来到你身边
热门文章
- 关于Invalid bound statement和Error creating bean with name 'xxx'错误问题全收录
- 【无人机】【2011.03】无人飞行器的自主飞行研究
- [工作积累] 大型世界的草渲染
- 深圳找工作和租房你不知道的那些事(免费住宿福利申请!)
- Hadoop系列 (三):HDFS详细介绍
- 我是曾经的“网瘾少年”,靠自学编程走出了大山
- scanf和putchar
- 5g主题演讲_主题演讲-比尔·盖茨-继续
- 数据仓库建模(二):建模流程
- Go语言fmt.Printf使用指南