Keras API を使用して画像をロード、変換、保存する方法
Keras 深層学習ライブラリは、画像データのロード、準備、および拡張のための高度な API を提供します。
API には、画像ファイルを迅速かつ簡単にロード、変換、保存できるようにする文書化されていない関数も含まれています。これらの関数は、コンピューター ビジョンのディープ ラーニング プロジェクトを開始するときに便利で、最初は同じ Keras API を使用して画像データを検査および処理できるようになります。
このチュートリアルでは、Keras API が提供する基本的な画像処理関数の使用方法を学びます。
このチュートリアルを完了すると、次のことがわかります。
- Keras API を使用して画像をロードして表示する方法。
- Keras API を使用して、ロードされたイメージを NumPy 配列に変換し、PIL 形式に戻す方法。
- Keras API を使用して、ロードされた画像をグレースケールに変換し、新しいファイルに保存する方法。
私の新しい本『Deep Learning for Computer Vision』 でプロジェクトを開始してください。これにはステップバイステップのチュートリアルとPython ソース コードファイルが含まれています。すべての例。
始めましょう。
チュートリアルの概要
このチュートリアルは 5 つの部分に分かれています。彼らです:
- テスト画像
- Keras 画像処理 API
- Keras で画像をロードする方法
- Keras を使用して画像を変換する
- Keras で画像を保存
テスト画像
最初のステップは、このチュートリアルで使用するテスト イメージを選択することです。
ここでは、寛容なクリエイティブ コモンズ ライセンスの下で公開された、イザベル シュルツが撮影したシドニーのボンダイ ビーチの写真を使用します。
画像をダウンロードし、ファイル名「bondi_beach.jpg」を付けて現在の作業ディレクトリに配置します。
- クリックしてbondi_beach.jpgをダウンロード
Keras 画像処理 API
Keras 深層学習ライブラリは、画像データを操作するためのユーティリティを提供します。
メイン API は、データの読み込み、準備、拡張を組み合わせた ImageDataGenerator クラスです。
このチュートリアルでは ImageDataGenerator クラスについては説明しません。代わりに、画像データの操作や Keras API でのモデリングに役立つ可能性のある、あまり文書化されていない、または文書化されていない関数をいくつか詳しく見ていきます。
具体的には、Keras は画像データの読み込み、変換、保存の機能を提供します。関数は utils.py 関数内にあり、image.py モジュール経由で公開されます。
これらの関数は、新しい深層学習コンピューター ビジョン プロジェクトを開始する場合、または特定の画像を検査する必要がある場合に便利な関数です。
これらの関数の一部は、API ドキュメントの「アプリケーション」セクションで事前トレーニングされたモデルを操作するときに示されています。
Keras でのすべてのイメージ処理には、Pillow ライブラリがインストールされている必要があります。インストールされていない場合は、インストール手順を確認してください。
これらの各機能を順番に詳しく見てみましょう。
Keras で画像をロードする方法
Keras は、ファイルから画像を PIL 画像オブジェクトとしてロードするための load_img() 関数を提供します。
以下の例では、ファイルからボンダイビーチの写真を PIL イメージとしてロードし、ロードされたイメージに関する詳細をレポートします。
# example of loading an image with the Keras API
from keras.preprocessing.image import load_img
# load the image
img = load_img('bondi_beach.jpg')
# report details about the image
print(type(img))
print(img.format)
print(img.mode)
print(img.size)
# show the image
img.show()
この例を実行すると、イメージがロードされ、ロードされたイメージに関する詳細がレポートされます。
画像が、RGB チャネル、サイズ 640 x 427 ピクセルの JPEG 形式の PIL 画像としてロードされたことが確認できます。
<class 'PIL.JpegImagePlugin.JpegImageFile'>
JPEG
RGB
(640, 427)
ロードされたイメージは、ワークステーション上のデフォルトのアプリケーション (この場合は macOS 上のプレビュー アプリケーション) を使用して表示されます。
load_img() 関数は、画像をグレースケールでロードできるようにする 'grayscale' など、画像をロードするときに役立つ追加の引数を提供します (デフォルトは False)。 、画像モードまたはチャンネル形式を指定できる「color_mode」(デフォルトは rgb)、および(高さ、幅)のタプルを許可する「target_size」。を指定すると、ロード後に画像のサイズが自動的に変更されます。
Keras で画像を変換する方法
Keras は、PIL 形式でロードされたイメージを深層学習モデルで使用できる NumPy 配列に変換するための img_to_array() 関数を提供します。
この API は、ピクセル データの NumPy 配列を PIL イメージに変換するために使用できる array_to_img() 関数も提供します。これは、画像が配列形式であるときにピクセル データが変更され、その後保存または表示できる場合に便利です。
以下の例では、テスト イメージをロードし、NumPy 配列に変換してから、PIL イメージに変換し直します。
# example of converting an image with the Keras API
from keras.preprocessing.image import load_img
from keras.preprocessing.image import img_to_array
from keras.preprocessing.image import array_to_img
# load the image
img = load_img('bondi_beach.jpg')
print(type(img))
# convert to numpy array
img_array = img_to_array(img)
print(img_array.dtype)
print(img_array.shape)
# convert back to image
img_pil = array_to_img(img_array)
print(type(img))
この例を実行すると、最初に写真が PIL 形式で読み込まれ、次に画像が NumPy 配列に変換され、データ型と形状がレポートされます。
ピクセル値が符号なし整数から 32 ビット浮動小数点値に変換され、この場合は配列形式 [高さ、幅、 チャネル] に変換されることがわかります。最後に、画像は PIL 形式に変換されます。
<class 'PIL.JpegImagePlugin.JpegImageFile'>
float32
(427, 640, 3)
<class 'PIL.JpegImagePlugin.JpegImageFile'>
Keras で画像を保存する方法
Keras API は、画像をファイルに保存するための save_img() 関数も提供します。
この関数は、画像を保存するためのパスと、NumPy 配列形式の画像データを受け取ります。ファイル形式はファイル名から推測されますが、引数「file_format」を介して指定することもできます。
これは、画像のピクセル データをスケーリングなどで操作し、後で使用するために画像を保存したい場合に便利です。
以下の例では、写真画像をグレースケール形式で読み込み、NumPy 配列に変換し、新しいファイル名で保存します。
# example of saving an image with the Keras API
from keras.preprocessing.image import load_img
from keras.preprocessing.image import save_img
from keras.preprocessing.image import img_to_array
# load image as as grayscale
img = load_img('bondi_beach.jpg', grayscale=True)
# convert image to a numpy array
img_array = img_to_array(img)
# save the image with a new filename
save_img('bondi_beach_grayscale.jpg', img_array)
# load the image to confirm it was saved correctly
img = load_img('bondi_beach_grayscale.jpg')
print(type(img))
print(img.format)
print(img.mode)
print(img.size)
img.show()
この例を実行すると、最初に画像がロードされ、形式が強制的にグレースケールになります。
次に、画像は NumPy 配列に変換され、現在の作業ディレクトリに新しいファイル名「bondi_beach_grayscale.jpg」で保存されます。
ファイルが正しく保存されたことを確認するために、ファイルが PIL イメージとして再度ロードされ、イメージの詳細がレポートされます。
<class 'PIL.Image.Image'>
None
RGB
(640, 427)
ロードされたグレースケール画像は、ワークステーション上のデフォルトの画像プレビュー アプリケーション (macOS ではプレビュー アプリケーション) を使用して表示されます。
さらに読む
さらに詳しく知りたい場合は、このセクションでこのトピックに関するさらなるリソースを提供します。
投稿
- 事前トレーニングされた VGG モデルを使用して写真内のオブジェクトを分類する方法
API
- ピローライブラリー
- Keras 画像前処理 API
- Keras アプリケーション API
- Keras image.py ソース コード
- Keras utils.py ソース コード
まとめ
このチュートリアルでは、Keras API が提供する基本的な画像処理関数の使用方法を学びました。
具体的には、次のことを学びました。
- Keras API を使用して画像をロードして表示する方法。
- Keras API を使用して、ロードされたイメージを NumPy 配列に変換し、PIL 形式に戻す方法。
- Keras API を使用して、ロードされた画像をグレースケールに変換し、新しいファイルに保存する方法。
ご質問はありますか?
以下のコメント欄にご質問ください。できる限りお答えいたします。