dataset = tf.data.Dataset.from_tensor_slices((images,boxes)).shuffle(100).batch(1)
tf.Tensor(
[b'/media/jake/mark-4tb3/input/datasets/pascal/VOCtrainval_11-May-2012/VOCdevkit/VOC2012/JPEGImages/2008_000297.jpg'
b'/media/jake/mark-4tb3/input/datasets/pascal/VOCtrainval_11-May-2012/VOCdevkit/VOC2012/JPEGImages/2008_000045.jpg'], shape=(2,), dtype=string) <tf.RaggedTensor [[[1, 86, 301, 295], [86, 204, 229, 330], [259, 187, 371, 330], [4, 140, 120, 292], [224, 112, 354, 334]], [[44, 41, 454, 341]]]>
в наборе данных будет информация (путь к изображению, поле). теперь мне нужно изменить путь к реальному изображению
поэтому я делаю функцию
def func(images):
images = np.array(images)
newSize = [300,300]
if isprint:print('image_A->',images[0].decode("utf-8"))
image = cv2.imread(images[0].decode("utf-8"))
if isprint:print(image.shape)
image = np.array(image)
scale_x = newSize[0] / image.shape[1]
scale_y = newSize[1] / image.shape[0]
image = cv2.resize(image, (newSize[0], newSize[1]))
return tf.convert_to_tensor(image,dtype=tf.uint8)
Затем я применяю функцию карты
dataset = dataset.map(lambda image,box: tf.py_function(func=func, inp = [image],Tout=tf.string))
, но я хочу изменить только набор данных изображения, но остальные останутся. Я хочу знать, что это правильный подход и как его исправить?