TensorFlow画像操作
Tensorflow Image Manipulation
注:Tensorパラメーターを受け入れる関数は、tf.convert_to_tensorによって受け入れられるものなら何でも受け入れることができます。
TensorFlowは画像をエンコードおよびデコードします
TensorFlowは、JPEGおよびPNG形式をデコードおよびエンコードする操作を提供します。エンコードされた画像はスカラー文字列Tensorsで表され、デコードされた画像は形状[高さ、幅、チャネル]の3次元uint8テンソルで表されます。 (PNGはuint16もサポートしています)
エンコードおよびデコード操作は、一度に1つの画像に適用されます。それらの入力と出力は可変サイズです。固定サイズの画像が必要な場合は、デコード操作の出力をトリミングおよびサイズ変更操作の1つに渡します。
注:PNGのエンコードおよびデコード操作はRGBAをサポートしますが、変換操作は現在RGB、HSV、およびグレースケールのみをサポートします。現在、アルファチャンネルは画像から削除し、スライス操作を使用して再接続する必要があります。
tf.image.decode_gif tf.image.decode_jpeg tf.image.encode_jpeg tf.image.decode_png tf.image.encode_png tf.image.decode_image
サイズ変更操作
サイズ変更操作は、入力画像をいくつかのタイプのテンソルとして受け入れます。サイズ変更された画像は常にfloat32テンソルとして出力されます。
便利な関数tf.image.resize_imagesは、入力および出力として4Dおよび3Dテンソルをサポートします。 4Dテンソルは画像のバッチに使用され、3Dテンソルは単一の画像に使用されます。
その他のサイズ変更操作は、入力として4D画像のバッチ処理のみをサポートします。
tf.image.resize_area tf.image.resize_bicubic tf.image.resize_bilinear tf.image.resize_nearest_neighbor
例:
#Decode a JPG image and resize it to 299 by 299 using default method. image = tf.image.decode_jpeg(...) resized_image = tf.image.resize_images(image, [299, 299])
tf.image.resize_images
tf.image.resize_area
tf.image.resize_bicubic
tf.image.resize_bilinear
tf.image.resize_nearest_neighbor
作物
tf.image.resize_image_with_crop_or_pad
tf.image.central_crop
tf.image.pad_to_bounding_box
tf.image.crop_to_bounding_box
tf.image.extract_glimpse
tf.image.crop_and_resize
フリップ、回転、シフト
tf.image.flip_up_down
tf.image.random_flip_up_down
tf.image.flip_left_right
tf.image.random_flip_left_right
tf.image.transpose_image
tf.image.rot90
色空間間の変換
画像操作は、入力テンソルの形状に応じて、単一の画像または画像のバッチで機能します。
3次元の場合、形状は[高さ、幅、チャネル]であり、Tensorは画像を表します。 4次元の場合、形状は[batch_size、height、width、channels]であり、Tensorはbatch_sizeイメージを表します。
現在、チャネルは事実上1、2、3、または4であり、シングルチャネル画像はグレースケールであり、3チャネル画像はRGBまたはHSVとしてエンコードされます。 2または4チャネルの画像には、アルファチャネルが含まれます。アルファチャネルは、画像をほとんどの画像処理機能に渡す前に、画像から削除する必要があります(後で再接続できます)。
内部的には、画像はチャネルあたりピクセルあたりfloat32(値が[0,1)にあると仮定)またはチャネルあたりピクセルあたりuint8(値が[0,255]にあると仮定)のいずれかとして格納されます。
TensorFlowは、RGBまたはHSV画像間で変換できます。変換関数はフローティング画像にのみ適用できるため、他の形式tf.image.convert_image_dtypeを使用して画像を変換する必要があります。
例:
rgb_image = tf.image.decode_png(..., channels=3) rgb_image_float = tf.image.convert_image_dtype(rgb_image, tf.float32) hsv_image = tf.image.rgb_to_hsv(rgb_image)
tf.image.rgb_to_grayscale
tf.image.grayscale_to_rgb
tf.image.hsv_to_rgb
tf.image.rgb_to_hsv
tf.image.convert_image_dtype
TensorFlow画像調整
TensorFlowは、明るさ、コントラスト、色相、彩度など、さまざまな方法で画像を調整する機能を提供します。各調整は、事前定義されたパラメーターまたは事前定義された間隔から選択されたランダムパラメーターを使用して実行できます。ランダムな調整は通常、トレーニングセットを拡張し、過剰適合を減らすのに役立ちます。
複数の調整がリンクされている場合は、最初に画像を最も自然なデータ型と表現(RGBまたはHSV)に変換することにより、冗長な変換の数を最小限に抑えることをお勧めします。
tf.image.adjust_brightness
tf.image.random_brightness
tf.image.adjust_contrast
tf.image.random_contrast
tf.image.adjust_hue
tf.image.random_hue
tf.image.adjust_gamma
tf.image.adjust_saturation
tf.image.random_saturation
tf.image.per_image_standardization
TensorFlow画像は境界線を使用します
tf.image.draw_bounding_boxes
tf.image.non_max_suppression
tf.image.sample_歪んだ_bounding_box
TensorFlow画像のノイズ除去
tf.image.total_variation