ウェブサイト検索

Keras API を使用して画像をロード、変換、保存する方法


Keras 深層学習ライブラリは、画像データのロード、準備、および拡張のための高度な API を提供します。

API には、画像ファイルを迅速かつ簡単にロード、変換、保存できるようにする文書化されていない関数も含まれています。これらの関数は、コンピューター ビジョンのディープ ラーニング プロジェクトを開始するときに便利で、最初は同じ Keras API を使用して画像データを検査および処理できるようになります。

このチュートリアルでは、Keras API が提供する基本的な画像処理関数の使用方法を学びます。

このチュートリアルを完了すると、次のことがわかります。

  • Keras API を使用して画像をロードして表示する方法。
  • Keras API を使用して、ロードされたイメージを NumPy 配列に変換し、PIL 形式に戻す方法。
  • Keras API を使用して、ロードされた画像をグレースケールに変換し、新しいファイルに保存する方法。

私の新しい本『Deep Learning for Computer Vision』 でプロジェクトを開始してください。これにはステップバイステップのチュートリアルPython ソース コードファイルが含まれています。すべての例。

始めましょう。

チュートリアルの概要

このチュートリアルは 5 つの部分に分かれています。彼らです:

  1. テスト画像
  2. Keras 画像処理 API
  3. Keras で画像をロードする方法
  4. Keras を使用して画像を変換する
  5. 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 を使用して、ロードされた画像をグレースケールに変換し、新しいファイルに保存する方法。

ご質問はありますか?
以下のコメント欄にご質問ください。できる限りお答えいたします。

関連記事