【pytorch】从yolo的make_grid理解torch.meshgrid、torch.stack

文章目录

    • 简述
    • [1、torch.meshgrid 创建行列坐标](#1、torch.meshgrid 创建行列坐标)
    • [2、torch.stack 结合行列坐标](#2、torch.stack 结合行列坐标)
    • 3、通过view函数扩展维度

简述

yolo检测 make_grid创建网格代码如下,那么什么是torch.meshgrid?

python 复制代码
def _make_grid(nx=20, ny=20):
        yv, xv = torch.meshgrid([torch.arange(ny), torch.arange(nx)])
        return torch.stack((xv, yv), 2).view((1, 1, ny, nx, 2)).float()

1、torch.meshgrid 创建行列坐标

torch.meshgrid 是 PyTorch 中的一个函数,这个函数通常用于创建坐标点的网格,以便进行一些网格上的操作,比如插值或者计算函数值。

例如,我们的目标是创建4行8列的坐标网格。

python 复制代码
import torch
ny=4
nx=8
yv, xv = torch.meshgrid([torch.arange(ny), torch.arange(nx)])
print(yv)
print(xv)

'''
tensor([[0, 0, 0, 0, 0, 0, 0, 0],
        [1, 1, 1, 1, 1, 1, 1, 1],
        [2, 2, 2, 2, 2, 2, 2, 2],
        [3, 3, 3, 3, 3, 3, 3, 3]])
tensor([[0, 1, 2, 3, 4, 5, 6, 7],
        [0, 1, 2, 3, 4, 5, 6, 7],
        [0, 1, 2, 3, 4, 5, 6, 7],
        [0, 1, 2, 3, 4, 5, 6, 7]])
'''

这个操作会形成以ny为行数,nx为列数的坐标网格,也就是4行8列。其中每行每列又按照torch.arange进行排序,也就是0-4行,0-8列。如下图所示。

可以看到yv实际上是一个纵坐标的网格,每个值都代表着自己所在的行,分别对应0-3行

xv代表着自己的列,也就是0-7列。在yolo检测的make_grid中,通常还有下个步骤,将两个值堆叠在一起。torch.stack。

2、torch.stack 结合行列坐标

torch.stack((xv, yv), 2)就是将上述行列坐标信息堆叠在第2个维度,这样子每个位置就有各自的行列坐标值。

(为了迎合yolo和w、h的顺序,x坐标堆叠在前面,y堆叠在后面)

python 复制代码
tmp = torch.stack((xv, yv), 2)
print(tmp.shape)
print(tmp[1,2])
print(tmp[3,6])

'''
torch.Size([4, 8, 2])
tensor([2, 1])
tensor([6, 3])
'''

可以看到w=1,h=2对应的值就是[2,1]也就是第2行,第1列。

w=3,h=6对应的值就是[6,3]也就是第6行,第3列。每一个wh都对应各自的行列坐标。也就是通过grid和stack函数,每个行列都有属于自己的值了!

3、通过view函数扩展维度

python 复制代码
out=tmp.view((1, 1, ny, nx, 2)).float()

也就是将3维向量扩展成5维,就是为了后续检测操作,没有什么需要特别说的。

至此,整个make_grid函数解释完毕。这个函数作用就是生成ny行,nx列的网格用于检测时候的xy坐标确定

相关推荐
feasibility.6 小时前
OpenClaw+LibTV视频生成实测(含安装+配置+分析):ai生成工作流很规范,但画面在“打架“
人工智能·aigc·音视频·内容运营·短剧·openclaw·libtv
I_Am_Zou6 小时前
cloneman-ai技术解析:可落地的AI数字分身平台设计与实现
人工智能
老刘干货6 小时前
Prompt工程全解·第二篇:骨架搭建——构建高可用Prompt的“四要素”模型
人工智能·技术人
夕小瑶6 小时前
AI音乐的下半场,是 Vibe music!让Claude Code开口唱歌
人工智能
才盛智能科技6 小时前
麦粒空间和元K聚合平台正式签约,全面启动流量合作
大数据·人工智能·元k聚合·麦粒空间
V搜xhliang02466 小时前
基于¹⁸F-FDG PET/CT的深度学习-影像组学-临床模型预测非小细胞肺癌脉管侵犯的价值
大数据·人工智能·python·深度学习·机器学习·机器人
LaughingZhu6 小时前
Product Hunt 每日热榜 | 2026-04-11
人工智能·chatgpt
XuecWu36 小时前
原生多模态颠覆Scaling Law?解读语言“参数需求型”与视觉“数据需求型”核心差异
人工智能·深度学习·算法·计算机视觉·语言模型
华农DrLai6 小时前
怎么用大模型生成推荐的训练数据?Data Augmentation怎么做?
数据库·人工智能·大模型·nlp·prompt
AI医影跨模态组学6 小时前
Cell Rep Med 复旦大学附属肿瘤医院邵志敏教授、肖毅等团队:基于机器学习的多模态整合促进HR+/HER2−乳腺癌的风险分层
人工智能·机器学习·论文·医学·医学影像