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

%matplotlib inline
import torch
from d2l import torch as d2l
torch.set_printoptions(2) # 让pytorch打印张量时,只打印到小数点后两位

将设一张图片,宽和高为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,win_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_heightsteps_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_hprint(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_wprint(center_w)

tensor([0.25, 0.75])

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

之所以要乘以步长,是为了对应/w,/h归一化后的锚框形状。

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

	# 生成锚框的所有中心点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])
请添加图片描述在这里插入图片描述

参考链接

https://zhuanlan.zhihu.com/p/455807888

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

webpack配置alias后eslint和ts无法识别

背景 我们在 webpack 配置 alias 后,发现项目中引入的时候,还是会报错,如下: 可以看到,有一个是 ts报错,还有一个是 eslint 报错。 解决 ts 报错 tsconfig.json {"compilerOptions": {...&q…

基于Xml方式的Bean的配置-Bean的作用范围scope配置

SpringBean的配置详解 Bean的配置范围 默认情况下(基本的Spring环境),单纯Spring环境Bean的作用范围有两个:Singleton和prototypesingleton:单例,默认值,Spring容器创建的时候,就会进行Bean的实…

TCP详解之流量控制

TCP详解之流量控制 发送方不能无脑的发数据给接收方,要考虑接收方处理能力。 如果一直无脑的发数据给对方,但对方处理不过来,那么就会导致触发重发机制,从而导致网络流量的无端的浪费。 为了解决这种现象发生,TCP 提…

专注写作,快速上线:Cpolar+Inis帮助你在Ubuntu上建立博客网站

文章目录 前言1. Inis博客网站搭建1.1. Inis博客网站下载和安装1.2 Inis博客网站测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar临时数据隧道2.2 Cpolar稳定隧道(云端设置)2.3.Cpolar稳定隧道(本地设置) 3. 公网访问测试总…

LeetCode-热题100-笔记-day31

105. 从前序与中序遍历序列构造二叉树https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-inorder-traversal/ 给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历&#xff0c…

使用 Docker 安装 Elasticsearch (本地环境 M1 Mac)

Elasticsearchkibana下载安装 docker pull elasticsearch:7.16.2docker run --name es -d -e ES_JAVA_OPTS“-Xms512m -Xmx512m” -e “discovery.typesingle-node” -p 9200:9200 -p 9300:9300 elasticsearch:7.16.2docker pull kibana:7.16.2docker run --name kibana -e EL…

区域图片上色

目录 下图中,记得点击Apply,然后再点击Symbology 实际选择的时候,不选1Categorized,因为其分段不方便。

现在全国融资融券两融利率最低是多少?哪家证券公司券商费率低?

融资融券是指投资者通过向券商借入资金(融资)或借入证券(融券),以达到获得更高收益、降低交易风险、提高资金利用效率的目的。通过融资,投资者可以用借入的资金买入更多的证券;通过融券&#xf…

C#,数值计算——Hashtable的计算方法与源程序

1 文本格式 using System; using System.Collections; using System.Collections.Generic; namespace Legalsoft.Truffer { public abstract class Hashtable<K> { private int nhash { get; set; } private int nmax { get; set; } pr…

使用ROS与Movelt实现myCobot 280运动轨迹规划和控制

ROS的技术案例 Introduction 今天这篇文章将记录我使用myCobot 280 M5stack 在ROS当中是如何使用的。为什么使用ROS呢&#xff0c;因为提及到机器人都离不开ROS这个操作系统&#xff0c;今天是我们第一次使用ROS这个系统。 今天我将从ROS的介绍&#xff0c;环境的配置以及mycob…

JDK8源码阅读环境配置

说明 环境 jdk 版本&#xff1a;1.8.0_381 系统&#xff1a;macos 13.5.1 Intel 目的 学习 jdk8 源码&#xff0c;并能自定注释。 新建 java 工程 在 idea 中新建 java 工程&#xff0c;注意并非 maven 工程。如下图&#xff1a;完成后&#xff0c;如下图&#xff1a; 配置…

linux安装python3.x版本

linux安装python3.x版本 ① 安装依赖环境② 下载python版本包③ 安装python④ 建立软链接⑤ 加入path⑥ 验证 官网版本地址&#xff1a;https://www.python.org/ftp/python/ ① 安装依赖环境 yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel…