两类张量的区别及Boxes类型张量转列表方法咨询
两类张量的区别与Boxes张量转列表方法
一、两类张量的核心区别
- 普通张量(#1):PyTorch原生的
torch.Tensor类型,是最基础的数值存储容器,仅负责存储多维数值数据,无额外领域相关的语义或方法封装。比如示例中的一维0/1数组,就是单纯的数值集合。 - Boxes张量(#2):目标检测类框架(如Detectron2)封装的专用张量类型,是对普通PyTorch张量的包装。它在普通张量基础上,增加了边界框相关的语义定义和专属方法(比如坐标格式转换、IoU计算等),内部存储的是每个边界框的四个坐标值(通常为x1, y1, x2, y2格式)。
二、Boxes张量转列表的方法
Boxes是封装类,需要先提取其内部的普通张量,再调用tolist()方法完成转换:
# 提取内部普通张量并转为列表 bboxes_list = bboxes.tensor.tolist()
如果张量位于CUDA设备上,tolist()会自动完成设备转换;若需显式指定CPU,可修改为:
bboxes_list = bboxes.tensor.cpu().tolist()
转换后得到的是二维列表,每个子列表对应一个边界框的四个坐标值,和示例中Boxes内部张量的结构完全对应。
内容的提问来源于stack exchange,提问作者4daJKong
相关产品推荐
相关产品推荐

