ラベルに顔のキーポイントがある画像のデータセットに回転を追加しようとしています。tf.contrib は tensorflow 2.0 から削除され、tf.data.Dataset を使用しているため、PIL などの他のライブラリは機能しません。
画像とそのキーポイント ラベルの両方に同じ回転を適用する必要がある一方で、角度をランダムに回転させる必要があります。Tensorflow 2.0 でこれを行う方法はありますか?
以下は私が使用した関数です:
def preprocess_data(image, angle):
image = tf.image.decode_jpeg(image, channels=3)
image = tf.image.resize(image, [input_size, input_size])
image = tf.image.rgb_to_grayscale(image)
image = Image.fromarray(np.array(tf.squeeze(image)))
rotated = Image.Image.rotate(image, angle)
image = tf.convert_to_tensor(np.array(rotated))
image = tf.expand_dims(image, -1)
return image
def load_and_preprocess_data(path):
image = tf.io.read_file(path)
rotation = tf.random.uniform([1,1], minval=-60, maxval=60, seed=0)
return preprocess_data(image, rotation)
ここでは PIL を使用しましたが、画像パスを含む tf.data.Dataset を load_and_preprocess_data 関数にマップしようとすると機能しません。