TensorFlowとPythonで予測結果をデコードする方法をわかりやすく解説
TensorFlowでは、画像をNumPy配列に変換することで、モデルが出力した予測結果をデコード(人間が読める形式への変換)できます。本記事では、TensorFlow Hubの事前学習済みモデルを使った画像分類の予測結果をデコードする手順を解説します。
前提知識:TensorFlow・Keras・CNNとは
少なくとも1つの畳み込み層(Convolutional Layer)を含むニューラルネットワークは、畳み込みニューラルネットワーク(CNN)と呼ばれます。CNNを活用することで、画像認識タスクに適した学習モデルを構築できます。また、KerasはTensorFlowと組み合わせることで、直感的なAPIでニューラルネットワークを簡単に記述できる高レベルライブラリです。
本記事のコードはGoogle Colaboratory上での実行を想定しています。Google Colab(Colaboratory)はブラウザ上でPythonコードを実行できる環境で、面倒な事前設定が一切不要であり、GPU(グラフィックス処理装置)にも無料でアクセスできます。ColaboratoryはJupyter Notebookをベースに構築されています。
転移学習の基本的な考え方
画像分類における転移学習(Transfer Learning)の直感的な考え方は次のとおりです。大規模かつ汎用的なデータセットで学習済みのモデルは、視覚的な特徴を幅広く捉えた「汎用モデル」として機能します。このようなモデルはすでに特徴マップを学習しているため、ユーザーが大規模データセットを使って巨大なモデルをゼロから訓練し直す必要はありません。
TensorFlow Hubは、こうした事前学習済みのTensorFlowモデルを集めたリポジトリです。Hubから取得したモデルは、tf.kerasと組み合わせてそのまま推論に使えるだけでなく、転移学習によってカスタム画像クラス向けにファインチューニング(微調整)することも可能です。
まずは、事前学習済みの分類器モデルに画像を入力し、何が写っているのかを予測させます。この段階では追加の学習は一切不要です。
サンプルコード:予測結果のデコード
print("Decoding the predictions")
labels_path = tf.keras.utils.get_file('ImageNetLabels.txt','https://storage.googleapis.com/download.tensorflow.org/data/ImageNetLabels.txt')
imagenet_labels = np.array(open(labels_path).read().splitlines())
plt.imshow(grace_hopper)
plt.axis('off')
predicted_class_name = imagenet_labels[predicted_class]
_ = plt.title("Prediction is: " + predicted_class_name.title())コード出典:https://www.tensorflow.org/tutorials/images/transfer_learning_with_hub
実行結果
Decoding the predictions
Downloading data from https://storage.googleapis.com/download.tensorflow.org/data/ImageNetLabels.txt
16384/10484 [==============================================] - 0s 0us/step

コードの解説
ラベルファイルの取得: tf.keras.utils.get_file() を使って、ImageNetのクラス名一覧(ImageNetLabels.txt)をダウンロードします。
予測IDからクラス名へ変換: モデルが出力した予測クラスIDをインデックスとしてラベル配列にアクセスすることで、数値の予測結果を「軍服を着た人物」のような具体的なクラス名にデコードできます。
結果の可視化: Matplotlibを使って予測対象の画像を表示し、タイトルに予測されたクラス名を反映させています。plt.axis('off') により余計な軸を非表示にし、見やすい出力にしています。
このように、予測されたクラスIDとImageNetラベルを組み合わせることで、モデルの生の出力を直感的に理解できる形へ変換できます。予測対象の画像はコンソール上に表示され、予測結果も一目で確認できます。
-
PythonとKerasを使ってモデルの重みを手動で保存・復元する方法
TensorFlowはGoogleが提供する機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせてアルゴリズムや深層学習アプリケーションの実装などに広く利用されています。研究用途から本番環境まで、さまざまな場面で活用されています。Kerasは、ONEIROS(Open ended Neuro-Electronic Intelligent Robot Operating System)プロジェクトの研究の一環として開発されました。KerasはPythonで記述された深層学習APIであり、機械学習の問題解決を効率的に行うための生産性の高いインターフェースを備えた
-
Kerasを使ってPythonでモデルをプロットする方法をわかりやすく解説
TensorFlowとはTensorFlowは、Googleが提供している機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせて使用することで、アルゴリズムの実装やディープラーニングアプリケーションの開発など、幅広い用途に活用できます。研究目的から本番環境での運用まで対応しており、複雑な数値計算を高速に実行するための最適化技術が数多く組み込まれています。TensorFlowにおける「テンソル(Tensor)」は、データを扱うための基本的なデータ構造です。テンソルは多次元配列(またはリスト)であり、データフローグラフと呼ばれる計算グラフのノード同士をエッジでつ