после тензорного среза я хочу изменить изображение среза с помощью функции карты - PullRequest
0 голосов
/ 29 мая 2020
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))

, но я хочу изменить только набор данных изображения, но остальные останутся. Я хочу знать, что это правильный подход и как его исправить?

...