Я написал собственный генератор для керас
и в этом есть эта функция:
он выполнил одну или две итерации, но перестает говорить
слишком много индексов для массива в этой строке
label = label[y:(y + dy), x:(x + dx)]
обратите внимание, что все изображения и формы имеют одинаковые размеры!
def random_crop(image, edge, label, random_crop_size=(800, 1600)):
# Note: image_data_format is 'channel_last'
assert image.shape[2] == 3
height, width = image.shape[0], image.shape[1]
dy, dx = random_crop_size
x = np.random.randint(0, width - dx + 1)
y = np.random.randint(0, height - dy + 1)
image = image[y:(y + dy), x:(x + dx), :]
print(label.shape)
print(y,y+dy)
print(x,x+dx)
label = label[y:(y + dy), x:(x + dx)]
if edge is not None:
edge = edge[y:(y + dy), x:(x + dx)]
imagePlusEdge = np.zeros((random_crop_size[0], random_crop_size[1], 4))
imagePlusEdge[:, :, :3] = image
imagePlusEdge[:, :, -1] = edge[:, :]
return imagePlusEdge, label
return image, label