目标检测中生成锚框函数详解

news2024/10/7 12:19:16

将设一张图片,宽和高为2,2

X = torch.rand(size=(1,3,2,2))
Y = generate_anchors(X,sizes=[0.75,0.5,0.25],ratios=[1,2,0.5])

锚框中心点的设置

# 为每个像素可以生成 n+m-1个锚框,整个图像生成 wh(n+m-1)
def generate_anchors(data,sizes,ratios): # 书上的名字是 multibox_prior
    '''
    data:输入图像,sizes:缩放比 rations:宽高比
    :return: (批量数,锚框数量,4)
    '''
    '''1.数据准备'''
    # 图片的shape为(样本数,h,w),取出图片的h,w
    in_height,in_width = data.shape[-2:]
    # 取出数据的设备,缩放比的数量,宽高比的数量
    device,num_sizes,num_ratios = data.device,len(sizes),len(ratios)
    # 每个像素的锚框数
    boxes_per_pixel = (num_sizes+num_ratios-1)
    # 把缩放列表和宽高比列表转换为tensor格式
    size_tensor = torch.tensor(sizes,device=device)
    ratio_tensor = torch.tensor(ratios,device=device)

    '''设置锚框中心坐标 和 步长'''
    # 因为1像素的宽和高都是1,所以1像素的中心点是(0.5,0.5)
    offset_h,offset_w=0.5,0.5
    # 缩放步长
    steps_h = 1/in_height
    steps_w = 1/in_width
	# 不乘以步长,垂直方向上锚框的中心点
	center_h = (torch.arange(in_height,device=device) + offset_h)
	print(center_h)

tensor([0.50, 1.50])

    # 乘以步长时,垂直方向上锚框的中心点。
    center_h = (torch.arange(in_height,device=device) + offset_h) * steps_h
    print(center_h)

tensor([0.25, 0.75])

	# 不乘以步长,水平方向上锚框的中心点
	center_w = (torch.arange(in_width,device=device) + offset_w)
	print(center_w)

tensor([0.50, 1.50])

	# 乘以步长,水平方向上锚框的中心点
	center_w = (torch.arange(in_width,device=device) + offset_w) * steps_w
	print(center_w)

tensor([0.25, 0.75])

乘以步长和不乘步长,锚框中心点的区别

在这里插入图片描述
在这里插入图片描述

	# 生成锚框的所有中心点
	shift_y,shift_x = torch.meshgrid(center_h,center_w)
	print(f'shift_y = {shift_y}')
	print(f'shift_x = {shift_x}')

shift_y = tensor([[0.25, 0.25], [0.75, 0.75]])
shift_x = tensor([[0.25, 0.75], [0.25, 0.75]])

 #把tensor变成一维
	shift_y,shift_x = shift_y.reshape(-1),shift_x.reshape(-1)
	print(shift_y, shift_x)

tensor([0.25, 0.25, 0.75, 0.75]) tensor([0.25, 0.75, 0.25, 0.75])

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1003092.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

重磅预告 |第十二届中国智能产业高峰论坛9月16日在昌开幕,集团董事长李火亮任专题联席主席,出席本次活动

在这个数字化、智能化社会经济高速迭代的时代,每一次技术的进步都预示着一个全新的未来。在此背景下第十二届中国智能产业高峰论坛即将拉开帷幕。9月16日-9月18日高峰论坛在中国南昌举行,拓世科技集团董事长李火亮将亲身出席本次活动,与众多领…

解决:AD装配输出拾放文件出现闪退问题

PCB在装配输出过程中,需要导出拾放文件,但是今天每次执行这个过程,AD软件就会直接闪退。 重启AD把项目管理器中没有关掉的一系列乱七八糟文件手动关闭关闭AD软件再次重启AD,打开项目重新导出。

YOLOv5 加入SE注意力机制

步骤1:在common.py中添加SE模块 class SE(nn.Module): def __init__(self, c1, c2, r16): super(SE, self).__init__() self.avgpool nn.AdaptiveAvgPool2d(1) self.l1 nn.Linear(c1, c1 // r, biasFalse) self.relu nn.ReL…

付费咨询擅长领域

曾获中国电机工程学报优秀审稿专家,控制与决策审稿专家,系统工程与电子技术审稿专家,计算机科学审稿专家,Mechanical System and Signal Processing审稿专家。 擅长现代信号处理(小波分析类,模态分解类&…

SAP 自定义权限对象开发与使用

如何自定义一个权限对象,然后分配到对应的权限角色中,进行用户权限的控制? 具体实现步骤如下: 1. 创建数据元素 进入事务码: SE11 2. 创建权限字段 进入事务码SU20 3. 创建权限对象类以及权限对象 事务码&#xf…

redis集群的维护(redis-cli --cluster 命令用法)

目录 前言 1、 --cluster create 创建集群 2、--cluster check 检查集群 3、--cluster info 查看集群 4、--cluster fix 修复集群 5、--cluster rehard 迁移槽位 6、 --cluster rebalance 平衡集群 7、 --cluster add-node 集群扩容 8、--cluster del-node …

实现读写分离(MySQL主从数据库)

读写别离(Read/Write Splitting)。 1.原理: 让主数据库(master)处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库(slave)处理SELECT查询操作。 …

论文复制ChatGPT按钮被发表,撤回后再曝多个类似案例;Midjourney 生成大师级的人像

🦉 AI新闻 🚀 论文复制ChatGPT按钮被发表,撤回后再曝多个类似案例 摘要:一篇物理论文复制了ChatGPT按钮内容,经过两个月同行评审并在杂志上发表。这一现象被知名打假人发现后,发表商决定撤回该论文。此外…

doccano 文本标注工具使用

最近在做面向大模型的文本标注工作,涉及到多人协同的问题,因此用到了doccano工具。 这个工具可以使用docker进行安装,安装之后的启动也都比较简单。 关于基础使用(例如管理员登录、新建任务、上传数据集等)&#xff…

推荐 4 个本周 火火火火 的开源项目

本期推荐开源项目目录: 1. 一个集成了主流 AI 大模型的 APP 2. 模拟人类行为的小镇 3. 离线 OCR 软件 4. 流程图编辑框架 01 一个集成了主流 AI 大模型的 APP 该开源项目集成了主流的大语言模型、绘图模型,基于Flutter开发,支持问答聊天、文生…

10个值得收藏的3D任务角色下载网站

每个人都喜欢免费的东西。 无论是免费的 3D 角色还是游戏资产,我们都喜欢它们。 以下是可以为你的游戏获取免费 3D 角色的前 10 个网站的列表。 你可以将它们用于多种用途,例如 3D 打印或动画剪辑。 如果需要将下载的3D模型转换为其他格式,可…

科技资讯|苹果虚拟纸可在Vision Pro中为广告、书籍等提供MR内容和动画

近日,美国专利商标局正式授予苹果一项与虚拟纸张相关的专利。这是与虚拟纸张这项发明相关的第二项专利,鉴于苹果 Vision Pro 将于明年上市,那么我们离苹果实现虚拟纸张的发明又近了一步。 虚拟纸张将能够包含 2D、3D 和动画等 MR内容&#…

移远通信一站式Matter智能照明/电工解决方案,让家居生活互联互通更便捷

从原始时期的钻木取火,到19世纪爱迪生发明电灯,人类对于“光亮”的追求从未停止。而伴随着社会经济的发展,人们对于照明等家居生活的追求开始从“物质层面”逐步向“精神层面”转变,智能家居成为了当下社会智能技术走向大众的重要…

crAPI靶场学习记录

靶场搭建 [靶场下载地址](我fork了一份) docker安装,笔者是用的wsldocker. [lab0:**初始账户 **] 注册一个账户,邮箱为[APIqq.com],密码为Admin123 登陆后访问对应IP的8025端口,接收邮件获取车辆信息。 [lab1:**访问其它用户车…

电脑ip地址在哪里看?很简单,3个方法!

在网络连接的世界中,iP地址是一个至关重要的标识,它帮助设备在互联网上进行通信。无论是在家庭网络还是企业环境中,了解如何查看电脑的iP地址都是必不可少的技能。本文将详细介绍电脑ip地址在哪里看的3个方法,帮助您轻松获取这一重…

c++深拷贝、浅拷贝

浅拷贝&#xff1a;简单的赋值拷贝包含指针拷贝 #include <iostream> #include <string.h> using namespace std; //深拷贝、浅拷贝 //浅拷贝&#xff1a;简单的赋值拷贝包含指针拷贝 //深拷贝&#xff1a;在堆区重新申请的空间&#xff0c;进行拷贝操作class Per…

《Java极简设计模式》第06章:适配器模式(Adapter)

作者&#xff1a;冰河 星球&#xff1a;http://m6z.cn/6aeFbs 博客&#xff1a;https://binghe.gitcode.host 文章汇总&#xff1a;https://binghe.gitcode.host/md/all/all.html 源码地址&#xff1a;https://github.com/binghe001/java-simple-design-patterns/tree/master/j…

flex 布局:一行固定个数,超出换行(流式布局)

一、flex基础 设置在父容器上的属性&#xff1a;display&#xff1a;flex&#xff0c;align-items(交叉轴对齐方式)&#xff0c;justify-content(主轴对齐方式)&#xff0c;flex-wrap(换行)。 设置在子容器上的属性&#xff0c;通过 flex: 1&#xff0c;简写了 flex-grow、fl…

2023最新计算机信息管理毕设选题分享

文章目录 0 前言1 java web 管理系统 毕设选题2 java web 平台/业务系统 毕设选题3 游戏设计、动画设计类 毕设选题 (适合数媒的同学)4 算法开发5 数据挖掘 毕设选题6 大数据处理、云计算、区块链 毕设选题7 网络安全 毕设选题8 通信类/网络工程 毕设选题9 嵌入式 毕设选题10 开…

高性能数据JS网格 Bryntum Grid 5.5.2 Crack

高性能数据网格 Bryntum Grid 是一个高性能的网络表格组件。它是用纯 JavaScript 构建的&#xff0c;并且可以轻松地与所有主要 JS 框架集成。 功能丰富 Bryntum Grid 具有您期望从专业网格组件获得的所有功能&#xff0c;包括&#xff1a; 很好的表现;很好的绩效 没有人喜欢缓…