6 目标检测数据集
6.1 下载数据集
1 | %matplotlib inline |
6.2 读取数据集
- 读取香蕉检测数据集。该数据集包括一个的CSV文件,内含目标类别标签和位于左上角和右下角的真实边界框坐标。
1 | #@save |
- 创建一个自定义Dataset实例来加载香蕉检测数据集
1 | #@save |
- 为训练集和测试集返回两个数据加载器实例。对于测试集,无须按随机顺序读取它。
1 | #@save |
读取一个小批量,并打印其中的图像和标签的形状。
图像的小批量的形状为(批量大小、通道数、高度、宽度)
标签的小批量的形状为(批量大小,m,5),其中m是数据集的任何图像中边界框可能出现的最大数量。
小批量计算虽然高效,但它要求每张图像含有相同数量的边界框,以便放在同一个批量中。通常来说,图像可能拥有不同数量个边界框;因此,在达到m之前,边界框少于m的图像将被非法边界框填充。这样,每个边界框的标签将被长度为5的数组表示。数组中的第一个元素是边界框中对象的类别,其中‐1表示用于填充的非法边界框。数组的其余四个元素是边界框左上角和右下角的(x,y)坐标值(值域在0~1之间)。对于香蕉数据集而言,由于每张图像上只有一个边界框,因此m=1。
1 | batch_size, edge_size = 32, 256 |
Downloading ..\data\banana-detection.zip from http://d2l-data.s3-accelerate.amazonaws.com/banana-detection.zip...
read 1000 training examples
read 100 validation examples
(torch.Size([32, 3, 256, 256]), torch.Size([32, 1, 5]))
6.3 演示
- 展示10幅带有真实边界框的图像。我们可以看到在所有这些图像中香蕉的旋转角度、大小和位置都有所不同。
1 | imgs = (batch[0][0:10].permute(0, 2, 3, 1)) / 255 |