1. 目标检测¶





2. 总结¶

1. 目标检测和边界框¶
In [1]:
%matplotlib inline
import torch
from d2l import torch as d2l
d2l.set_figsize()
img = d2l.plt.imread('01_Data/03_catdog.jpg')
d2l.plt.imshow(img)
Out[1]:
<matplotlib.image.AxesImage at 0x19a816c4a90>
In [2]:
# 定义在这两种表示之间进行转换的函数
def box_corner_to_center(boxes):
"""从(左上,右下)转换到(中间,宽度,高度)"""
x1, y1, x2, y2 = boxes[:,0], boxes[:,1], boxes[:,2], boxes[:,3]
cx = (x1 + x2) / 2
cy = (y1 + y2) / 2
w = x2 - x1
h = y2 - y1
boxes = torch.stack((cx,cy,w,h),axis = -1)
return boxes
def box_center_to_corner(boxes):
"""从(中间,宽度,高度)转换到(左上,右下)"""
cx, cy, w, h = boxes[:,0], boxes[:,1], boxes[:,2], boxes[:,3]
x1 = cx - 0.5 * w
y1 = cy - 0.5 * h
x2 = cx + 0.5 * w
y2 = cy + 0.5 * h
boxes = torch.stack((x1,y1,x2,y2),axis = -1)
return boxes
In [3]:
# 定义图像中狗和猫的边界框
dog_bbox, cat_bbox = [60.0, 45.0, 378.0, 516.0], [400.0, 112.0, 655.0, 493.0]
boxes = torch.tensor((dog_bbox,cat_bbox))
# boxes 转中间表示,再转回来,等于自己
box_center_to_corner(box_corner_to_center(boxes)) == boxes
Out[3]:
tensor([[True, True, True, True],
[True, True, True, True]])
In [4]:
# 将边界框在图中画出
def bbox_to_rect(bbox,color):
return d2l.plt.Rectangle(xy=(bbox[0],bbox[1]),width=bbox[2]-bbox[0],
height=bbox[3] - bbox[1], fill=False,
edgecolor=color,linewidth=2)
fig = d2l.plt.imshow(img)
fig.axes.add_patch(bbox_to_rect(dog_bbox,'blue'))
fig.axes.add_patch(bbox_to_rect(cat_bbox,'red'))
Out[4]:
<matplotlib.patches.Rectangle at 0x19a8178f9b0>
2. 目标检测数据集¶
In [5]:
%matplotlib inline
import os
import pandas as pd
import torch
import torchvision
from d2l import torch as d2l
d2l.DATA_HUB['banana-detection'] = (d2l.DATA_URL + 'banana-detection.zip','5de25c8fce5ccdea9f91267273465dc968d20d72')
In [6]:
# 读取香蕉检测数据集
def read_data_bananas(is_train=True):
"""读取香蕉检测数据集中的图像和标签"""
data_dir = d2l.download_extract('banana-detection')
csv_fname = os.path.join(data_dir,
'bananas_train' if is_train else 'bananas_val',
'label.csv')
csv_data = pd.read_csv(csv_fname)
csv_data = csv_data.set_index('img_name')
images, targets = [], []
# 把图片、标号全部读到内存里面
for img_name, target in csv_data.iterrows():
images.append(torchvision.io.read_image(os.path.join(data_dir,'bananas_train' if is_train else 'bananas_val',
'images',f'{img_name}')))
targets.append(list(target))
print("len(targets):",len(targets))
print("len(targets[0]):",len(targets[0]))
print("targets[0][0]....targets[0][4]:",targets[0][0], targets[0][1], targets[0][2], targets[0][3], targets[0][4])
print("type(targets):",type(targets))
print("torch.tensor(targets).unsqueeze(1).shape:",torch.tensor(targets).unsqueeze(1).shape) # unsqueeze函数在指定位置加上维数为一的维度
print("len(torch.tensor(targets).unsqueeze(1) / 256):", len(torch.tensor(targets).unsqueeze(1) / 256))
print("type(torch.tensor(targets).unsqueeze(1) / 256):", type(torch.tensor(targets).unsqueeze(1) / 256))
return images, torch.tensor(targets).unsqueeze(1) / 256 # 归一化使得收敛更快
In [7]:
# 创建一个自定义Dataset实例
class BananasDataset(torch.utils.data.Dataset):
"""一个用于加载香蕉检测数据集的自定义数据集"""
def __init__(self, is_train):
self.features, self.labels = read_data_bananas(is_train)
print('read ' + str(len(self.features)) + (f' training examples' if is_train else f'validation examples'))
def __getitem__(self, idx):
return (self.features[idx].float(), self.labels[idx])
def __len__(self):
return len(self.features)
In [8]:
# 为训练集和测试集返回两个数据加载器实例
def load_data_bananas(batch_size):
"""加载香蕉检测数据集"""
train_iter = torch.utils.data.DataLoader(BananasDataset(is_train=True),
batch_size, shuffle=True)
val_iter = torch.utils.data.DataLoader(BananasDataset(is_train=False),
batch_size)
return train_iter, val_iter
In [9]:
# 读取一个小批量,并打印其中的图像和标签的形状
batch_size, edge_size = 32, 256
train_iter, _ = load_data_bananas(batch_size)
batch = next(iter(train_iter))
# ([32,1,5]) 中的1是每张图片中有几种类别,这里只有一种香蕉要识别的类别
# 5是类别标号、框的四个参数
batch[0].shape, batch[1].shape
Downloading ..\data\banana-detection.zip from http://d2l-data.s3-accelerate.amazonaws.com/banana-detection.zip... len(targets): 1000 len(targets[0]): 5 targets[0][0]....targets[0][4]: 0 104 20 143 58 type(targets): <class 'list'> torch.tensor(targets).unsqueeze(1).shape: torch.Size([1000, 1, 5]) len(torch.tensor(targets).unsqueeze(1) / 256): 1000 type(torch.tensor(targets).unsqueeze(1) / 256): <class 'torch.Tensor'> read 1000 training examples Downloading ..\data\banana-detection.zip from http://d2l-data.s3-accelerate.amazonaws.com/banana-detection.zip... len(targets): 100 len(targets[0]): 5 targets[0][0]....targets[0][4]: 0 183 63 241 112 type(targets): <class 'list'> torch.tensor(targets).unsqueeze(1).shape: torch.Size([100, 1, 5]) len(torch.tensor(targets).unsqueeze(1) / 256): 100 type(torch.tensor(targets).unsqueeze(1) / 256): <class 'torch.Tensor'> read 100validation examples
Out[9]:
(torch.Size([32, 3, 256, 256]), torch.Size([32, 1, 5]))
In [10]:
# 示例
# pytorch里permute是改变参数维度的函数,
# Dataset里读的img维度是[batch_size, RGB, h, w],
# 但是plt画图的时候要求是[h, w, RGB],所以要调整一下
# 做图片的时候,一般是会用一个ToTensor()将图片归一化到【0, 1】,这样收敛更快
print("原始图片:\n", batch[0][0])
print("原始图片:\n", (batch[0][0:10].permute(0,2,3,1)))
print("归一化后图片:\n", (batch[0][0:10].permute(0,2,3,1)) / 255 )
imgs = (batch[0][0:10].permute(0,2,3,1)) / 255
#imgs = (batch[0][0:10].permute(0,2,3,1))
# d2l.show_images输入的imgs图片参数是归一化后的图片
axes = d2l.show_images(imgs, 2, 5, scale=2)
for ax, label in zip(axes, batch[1][0:10]):
d2l.show_bboxes(ax, [label[0][1:5] * edge_size], colors=['w'])
原始图片:
tensor([[[248., 249., 250., ..., 193., 194., 193.],
[245., 244., 243., ..., 195., 197., 196.],
[243., 243., 241., ..., 197., 200., 201.],
...,
[ 17., 10., 13., ..., 92., 112., 119.],
[ 19., 14., 12., ..., 114., 115., 113.],
[ 13., 22., 12., ..., 98., 104., 118.]],
[[252., 253., 252., ..., 206., 207., 206.],
[249., 248., 245., ..., 205., 207., 206.],
[245., 245., 243., ..., 206., 209., 210.],
...,
[ 12., 5., 8., ..., 82., 102., 109.],
[ 14., 9., 7., ..., 105., 106., 104.],
[ 8., 17., 7., ..., 91., 95., 109.]],
[[251., 252., 251., ..., 215., 216., 215.],
[248., 247., 244., ..., 214., 216., 215.],
[244., 244., 242., ..., 213., 216., 217.],
...,
[ 6., 0., 2., ..., 72., 92., 99.],
[ 8., 3., 1., ..., 96., 97., 95.],
[ 2., 11., 1., ..., 81., 86., 100.]]])
原始图片:
tensor([[[[248., 252., 251.],
[249., 253., 252.],
[250., 252., 251.],
...,
[193., 206., 215.],
[194., 207., 216.],
[193., 206., 215.]],
[[245., 249., 248.],
[244., 248., 247.],
[243., 245., 244.],
...,
[195., 205., 214.],
[197., 207., 216.],
[196., 206., 215.]],
[[243., 245., 244.],
[243., 245., 244.],
[241., 243., 242.],
...,
[197., 206., 213.],
[200., 209., 216.],
[201., 210., 217.]],
...,
[[ 17., 12., 6.],
[ 10., 5., 0.],
[ 13., 8., 2.],
...,
[ 92., 82., 72.],
[112., 102., 92.],
[119., 109., 99.]],
[[ 19., 14., 8.],
[ 14., 9., 3.],
[ 12., 7., 1.],
...,
[114., 105., 96.],
[115., 106., 97.],
[113., 104., 95.]],
[[ 13., 8., 2.],
[ 22., 17., 11.],
[ 12., 7., 1.],
...,
[ 98., 91., 81.],
[104., 95., 86.],
[118., 109., 100.]]],
[[[180., 167., 132.],
[177., 163., 128.],
[169., 153., 117.],
...,
[172., 140., 102.],
[168., 138., 100.],
[165., 135., 97.]],
[[186., 173., 138.],
[181., 167., 130.],
[176., 158., 122.],
...,
[171., 139., 101.],
[170., 138., 100.],
[166., 136., 98.]],
[[187., 173., 136.],
[181., 167., 128.],
[175., 157., 119.],
...,
[172., 139., 104.],
[172., 139., 104.],
[170., 137., 102.]],
...,
[[173., 148., 118.],
[146., 121., 91.],
[173., 148., 117.],
...,
[182., 151., 131.],
[138., 106., 83.],
[142., 110., 85.]],
[[ 80., 60., 33.],
[151., 132., 102.],
[193., 174., 142.],
...,
[215., 194., 175.],
[117., 95., 71.],
[139., 118., 91.]],
[[129., 113., 87.],
[110., 95., 66.],
[119., 102., 72.],
...,
[141., 124., 104.],
[164., 146., 122.],
[181., 164., 136.]]],
[[[169., 146., 50.],
[182., 157., 64.],
[187., 160., 69.],
...,
[ 85., 68., 40.],
[145., 133., 107.],
[253., 246., 220.]],
[[162., 139., 45.],
[163., 138., 46.],
[169., 142., 55.],
...,
[127., 107., 80.],
[157., 145., 119.],
[249., 242., 216.]],
[[163., 137., 50.],
[160., 134., 47.],
[177., 149., 66.],
...,
[138., 117., 90.],
[156., 141., 118.],
[254., 243., 221.]],
...,
[[ 18., 19., 11.],
[ 11., 12., 4.],
[ 13., 14., 6.],
...,
[ 49., 48., 17.],
[ 90., 88., 63.],
[248., 246., 225.]],
[[ 13., 16., 5.],
[ 11., 14., 3.],
[ 18., 20., 9.],
...,
[ 38., 39., 8.],
[ 86., 85., 64.],
[245., 244., 226.]],
[[ 11., 15., 1.],
[ 8., 12., 0.],
[ 18., 20., 9.],
...,
[ 35., 38., 9.],
[ 88., 87., 67.],
[249., 247., 232.]]],
...,
[[[158., 108., 35.],
[153., 108., 43.],
[101., 67., 22.],
...,
[129., 125., 87.],
[189., 184., 164.],
[226., 220., 208.]],
[[164., 115., 36.],
[106., 62., 0.],
[107., 70., 18.],
...,
[118., 115., 80.],
[173., 168., 146.],
[151., 148., 131.]],
[[203., 154., 62.],
[184., 137., 55.],
[109., 65., 2.],
...,
[176., 172., 145.],
[195., 195., 169.],
[116., 116., 92.]],
...,
[[ 99., 47., 10.],
[134., 87., 57.],
[ 64., 27., 9.],
...,
[201., 140., 57.],
[146., 87., 7.],
[167., 108., 30.]],
[[ 71., 28., 0.],
[137., 99., 50.],
[ 83., 53., 17.],
...,
[214., 153., 70.],
[182., 122., 34.],
[168., 109., 17.]],
[[ 89., 51., 0.],
[170., 135., 77.],
[134., 107., 62.],
...,
[195., 134., 51.],
[182., 123., 31.],
[209., 151., 52.]]],
[[[196., 198., 97.],
[178., 180., 79.],
[194., 194., 98.],
...,
[116., 74., 34.],
[ 76., 42., 4.],
[ 61., 33., 0.]],
[[198., 201., 98.],
[190., 193., 90.],
[191., 193., 92.],
...,
[108., 67., 23.],
[101., 68., 23.],
[103., 75., 28.]],
[[206., 209., 104.],
[195., 198., 91.],
[181., 185., 75.],
...,
[123., 84., 29.],
[171., 136., 80.],
[177., 144., 90.]],
...,
[[131., 127., 64.],
[130., 129., 65.],
[125., 126., 60.],
...,
[ 93., 112., 20.],
[ 93., 110., 16.],
[101., 118., 24.]],
[[130., 124., 64.],
[132., 128., 65.],
[126., 126., 62.],
...,
[ 96., 115., 23.],
[100., 119., 27.],
[104., 123., 31.]],
[[126., 120., 60.],
[129., 125., 64.],
[127., 126., 62.],
...,
[108., 127., 35.],
[112., 131., 39.],
[110., 129., 37.]]],
[[[ 57., 82., 40.],
[ 62., 87., 45.],
[ 39., 65., 26.],
...,
[244., 253., 232.],
[ 94., 108., 83.],
[133., 149., 122.]],
[[ 55., 80., 38.],
[ 63., 88., 46.],
[ 33., 60., 19.],
...,
[207., 216., 199.],
[118., 132., 109.],
[ 57., 73., 46.]],
[[ 41., 66., 24.],
[ 39., 64., 22.],
[ 41., 66., 24.],
...,
[235., 241., 231.],
[ 86., 99., 79.],
[ 48., 66., 40.]],
...,
[[ 68., 90., 44.],
[ 63., 85., 38.],
[ 53., 73., 22.],
...,
[ 56., 71., 42.],
[ 52., 65., 39.],
[ 37., 50., 24.]],
[[ 46., 67., 24.],
[ 63., 82., 37.],
[ 50., 67., 22.],
...,
[ 45., 59., 33.],
[ 52., 64., 40.],
[ 35., 47., 23.]],
[[ 44., 65., 24.],
[ 44., 62., 20.],
[ 55., 72., 28.],
...,
[ 49., 63., 37.],
[ 40., 52., 30.],
[ 39., 51., 29.]]]])
归一化后图片:
tensor([[[[0.9725, 0.9882, 0.9843],
[0.9765, 0.9922, 0.9882],
[0.9804, 0.9882, 0.9843],
...,
[0.7569, 0.8078, 0.8431],
[0.7608, 0.8118, 0.8471],
[0.7569, 0.8078, 0.8431]],
[[0.9608, 0.9765, 0.9725],
[0.9569, 0.9725, 0.9686],
[0.9529, 0.9608, 0.9569],
...,
[0.7647, 0.8039, 0.8392],
[0.7725, 0.8118, 0.8471],
[0.7686, 0.8078, 0.8431]],
[[0.9529, 0.9608, 0.9569],
[0.9529, 0.9608, 0.9569],
[0.9451, 0.9529, 0.9490],
...,
[0.7725, 0.8078, 0.8353],
[0.7843, 0.8196, 0.8471],
[0.7882, 0.8235, 0.8510]],
...,
[[0.0667, 0.0471, 0.0235],
[0.0392, 0.0196, 0.0000],
[0.0510, 0.0314, 0.0078],
...,
[0.3608, 0.3216, 0.2824],
[0.4392, 0.4000, 0.3608],
[0.4667, 0.4275, 0.3882]],
[[0.0745, 0.0549, 0.0314],
[0.0549, 0.0353, 0.0118],
[0.0471, 0.0275, 0.0039],
...,
[0.4471, 0.4118, 0.3765],
[0.4510, 0.4157, 0.3804],
[0.4431, 0.4078, 0.3725]],
[[0.0510, 0.0314, 0.0078],
[0.0863, 0.0667, 0.0431],
[0.0471, 0.0275, 0.0039],
...,
[0.3843, 0.3569, 0.3176],
[0.4078, 0.3725, 0.3373],
[0.4627, 0.4275, 0.3922]]],
[[[0.7059, 0.6549, 0.5176],
[0.6941, 0.6392, 0.5020],
[0.6627, 0.6000, 0.4588],
...,
[0.6745, 0.5490, 0.4000],
[0.6588, 0.5412, 0.3922],
[0.6471, 0.5294, 0.3804]],
[[0.7294, 0.6784, 0.5412],
[0.7098, 0.6549, 0.5098],
[0.6902, 0.6196, 0.4784],
...,
[0.6706, 0.5451, 0.3961],
[0.6667, 0.5412, 0.3922],
[0.6510, 0.5333, 0.3843]],
[[0.7333, 0.6784, 0.5333],
[0.7098, 0.6549, 0.5020],
[0.6863, 0.6157, 0.4667],
...,
[0.6745, 0.5451, 0.4078],
[0.6745, 0.5451, 0.4078],
[0.6667, 0.5373, 0.4000]],
...,
[[0.6784, 0.5804, 0.4627],
[0.5725, 0.4745, 0.3569],
[0.6784, 0.5804, 0.4588],
...,
[0.7137, 0.5922, 0.5137],
[0.5412, 0.4157, 0.3255],
[0.5569, 0.4314, 0.3333]],
[[0.3137, 0.2353, 0.1294],
[0.5922, 0.5176, 0.4000],
[0.7569, 0.6824, 0.5569],
...,
[0.8431, 0.7608, 0.6863],
[0.4588, 0.3725, 0.2784],
[0.5451, 0.4627, 0.3569]],
[[0.5059, 0.4431, 0.3412],
[0.4314, 0.3725, 0.2588],
[0.4667, 0.4000, 0.2824],
...,
[0.5529, 0.4863, 0.4078],
[0.6431, 0.5725, 0.4784],
[0.7098, 0.6431, 0.5333]]],
[[[0.6627, 0.5725, 0.1961],
[0.7137, 0.6157, 0.2510],
[0.7333, 0.6275, 0.2706],
...,
[0.3333, 0.2667, 0.1569],
[0.5686, 0.5216, 0.4196],
[0.9922, 0.9647, 0.8627]],
[[0.6353, 0.5451, 0.1765],
[0.6392, 0.5412, 0.1804],
[0.6627, 0.5569, 0.2157],
...,
[0.4980, 0.4196, 0.3137],
[0.6157, 0.5686, 0.4667],
[0.9765, 0.9490, 0.8471]],
[[0.6392, 0.5373, 0.1961],
[0.6275, 0.5255, 0.1843],
[0.6941, 0.5843, 0.2588],
...,
[0.5412, 0.4588, 0.3529],
[0.6118, 0.5529, 0.4627],
[0.9961, 0.9529, 0.8667]],
...,
[[0.0706, 0.0745, 0.0431],
[0.0431, 0.0471, 0.0157],
[0.0510, 0.0549, 0.0235],
...,
[0.1922, 0.1882, 0.0667],
[0.3529, 0.3451, 0.2471],
[0.9725, 0.9647, 0.8824]],
[[0.0510, 0.0627, 0.0196],
[0.0431, 0.0549, 0.0118],
[0.0706, 0.0784, 0.0353],
...,
[0.1490, 0.1529, 0.0314],
[0.3373, 0.3333, 0.2510],
[0.9608, 0.9569, 0.8863]],
[[0.0431, 0.0588, 0.0039],
[0.0314, 0.0471, 0.0000],
[0.0706, 0.0784, 0.0353],
...,
[0.1373, 0.1490, 0.0353],
[0.3451, 0.3412, 0.2627],
[0.9765, 0.9686, 0.9098]]],
...,
[[[0.6196, 0.4235, 0.1373],
[0.6000, 0.4235, 0.1686],
[0.3961, 0.2627, 0.0863],
...,
[0.5059, 0.4902, 0.3412],
[0.7412, 0.7216, 0.6431],
[0.8863, 0.8627, 0.8157]],
[[0.6431, 0.4510, 0.1412],
[0.4157, 0.2431, 0.0000],
[0.4196, 0.2745, 0.0706],
...,
[0.4627, 0.4510, 0.3137],
[0.6784, 0.6588, 0.5725],
[0.5922, 0.5804, 0.5137]],
[[0.7961, 0.6039, 0.2431],
[0.7216, 0.5373, 0.2157],
[0.4275, 0.2549, 0.0078],
...,
[0.6902, 0.6745, 0.5686],
[0.7647, 0.7647, 0.6627],
[0.4549, 0.4549, 0.3608]],
...,
[[0.3882, 0.1843, 0.0392],
[0.5255, 0.3412, 0.2235],
[0.2510, 0.1059, 0.0353],
...,
[0.7882, 0.5490, 0.2235],
[0.5725, 0.3412, 0.0275],
[0.6549, 0.4235, 0.1176]],
[[0.2784, 0.1098, 0.0000],
[0.5373, 0.3882, 0.1961],
[0.3255, 0.2078, 0.0667],
...,
[0.8392, 0.6000, 0.2745],
[0.7137, 0.4784, 0.1333],
[0.6588, 0.4275, 0.0667]],
[[0.3490, 0.2000, 0.0000],
[0.6667, 0.5294, 0.3020],
[0.5255, 0.4196, 0.2431],
...,
[0.7647, 0.5255, 0.2000],
[0.7137, 0.4824, 0.1216],
[0.8196, 0.5922, 0.2039]]],
[[[0.7686, 0.7765, 0.3804],
[0.6980, 0.7059, 0.3098],
[0.7608, 0.7608, 0.3843],
...,
[0.4549, 0.2902, 0.1333],
[0.2980, 0.1647, 0.0157],
[0.2392, 0.1294, 0.0000]],
[[0.7765, 0.7882, 0.3843],
[0.7451, 0.7569, 0.3529],
[0.7490, 0.7569, 0.3608],
...,
[0.4235, 0.2627, 0.0902],
[0.3961, 0.2667, 0.0902],
[0.4039, 0.2941, 0.1098]],
[[0.8078, 0.8196, 0.4078],
[0.7647, 0.7765, 0.3569],
[0.7098, 0.7255, 0.2941],
...,
[0.4824, 0.3294, 0.1137],
[0.6706, 0.5333, 0.3137],
[0.6941, 0.5647, 0.3529]],
...,
[[0.5137, 0.4980, 0.2510],
[0.5098, 0.5059, 0.2549],
[0.4902, 0.4941, 0.2353],
...,
[0.3647, 0.4392, 0.0784],
[0.3647, 0.4314, 0.0627],
[0.3961, 0.4627, 0.0941]],
[[0.5098, 0.4863, 0.2510],
[0.5176, 0.5020, 0.2549],
[0.4941, 0.4941, 0.2431],
...,
[0.3765, 0.4510, 0.0902],
[0.3922, 0.4667, 0.1059],
[0.4078, 0.4824, 0.1216]],
[[0.4941, 0.4706, 0.2353],
[0.5059, 0.4902, 0.2510],
[0.4980, 0.4941, 0.2431],
...,
[0.4235, 0.4980, 0.1373],
[0.4392, 0.5137, 0.1529],
[0.4314, 0.5059, 0.1451]]],
[[[0.2235, 0.3216, 0.1569],
[0.2431, 0.3412, 0.1765],
[0.1529, 0.2549, 0.1020],
...,
[0.9569, 0.9922, 0.9098],
[0.3686, 0.4235, 0.3255],
[0.5216, 0.5843, 0.4784]],
[[0.2157, 0.3137, 0.1490],
[0.2471, 0.3451, 0.1804],
[0.1294, 0.2353, 0.0745],
...,
[0.8118, 0.8471, 0.7804],
[0.4627, 0.5176, 0.4275],
[0.2235, 0.2863, 0.1804]],
[[0.1608, 0.2588, 0.0941],
[0.1529, 0.2510, 0.0863],
[0.1608, 0.2588, 0.0941],
...,
[0.9216, 0.9451, 0.9059],
[0.3373, 0.3882, 0.3098],
[0.1882, 0.2588, 0.1569]],
...,
[[0.2667, 0.3529, 0.1725],
[0.2471, 0.3333, 0.1490],
[0.2078, 0.2863, 0.0863],
...,
[0.2196, 0.2784, 0.1647],
[0.2039, 0.2549, 0.1529],
[0.1451, 0.1961, 0.0941]],
[[0.1804, 0.2627, 0.0941],
[0.2471, 0.3216, 0.1451],
[0.1961, 0.2627, 0.0863],
...,
[0.1765, 0.2314, 0.1294],
[0.2039, 0.2510, 0.1569],
[0.1373, 0.1843, 0.0902]],
[[0.1725, 0.2549, 0.0941],
[0.1725, 0.2431, 0.0784],
[0.2157, 0.2824, 0.1098],
...,
[0.1922, 0.2471, 0.1451],
[0.1569, 0.2039, 0.1176],
[0.1529, 0.2000, 0.1137]]]])