Python
 Computer >> コンピューター >  >> プログラミング >> Python

TensorFlowとPythonで画像分類の予測結果を確認・可視化する方法


TensorFlowでは、「matplotlib」ライブラリの「imshow」メソッドを使ってImageNetによる予測結果を可視化することで、予測を簡単に確認できます。本記事では、その具体的な手順と背景となる概念について解説します。

畳み込みニューラルネットワーク(CNN)とは

少なくとも1つの畳み込み層(Convolutional Layer)を含むニューラルネットワークは、畳み込みニューラルネットワーク(CNN)と呼ばれます。CNNを活用することで、画像認識に強い高性能な学習モデルを構築することが可能です。

転移学習の基本的な考え方

画像分類における転移学習(Transfer Learning)の直感的な考え方は、「大規模かつ汎用的なデータセットで学習済みのモデルは、視覚世界における汎用モデルとして効果的に機能できる」というものです。こうしたモデルはすでに特徴マップ(Feature Maps)を学習しているため、ユーザーは大規模データセットを使って大規模モデルをゼロから訓練し直す必要がありません。

TensorFlow Hubとは

TensorFlow Hubは、事前学習済みのTensorFlowモデルを集めたリポジトリです。ここからモデルを取得することで、学習モデルのファインチューニング(微調整)を効率的に行えます。

本記事では、TensorFlow Hubのモデルをtf.kerasと組み合わせて使用する方法を紹介します。具体的には、TensorFlow Hubが提供する画像分類モデルを利用し、事前学習済みの分類器に画像を入力して、その画像が何であるかを予測させます。この処理は、追加のトレーニングを一切必要とせずに実行できます。さらに、転移学習を適用すれば、独自の画像クラスに対応したモデルへとファインチューニングすることも可能です。

実行環境:Google Colaboratory

以下のコードはGoogle Colaboratory上で実行しています。Google Colab(Colaboratory)はブラウザ上で直接Pythonコードを実行できるサービスで、面倒な環境構築が不要なうえ、GPU(グラフィックス処理装置)にも無料でアクセスできます。ColaboratoryはJupyter Notebookをベースに構築されています。

コード例

print("Predictions are checked")
plt.figure(figsize=(10,9))
plt.subplots_adjust(hspace=0.5)
for n in range(30):
plt.subplot(6,5,n+1)
plt.imshow(image_batch[n])
plt.title(predicted_class_names[n])
plt.axis('off')
_ = plt.suptitle("ImageNet predictions")

コード出典 − https://www.tensorflow.org/tutorials/images/transfer_learning_with_hub

出力結果

TensorFlowとPythonで画像分類の予測結果を確認・可視化する方法

TensorFlowとPythonで画像分類の予測結果を確認・可視化する方法

解説

  • まず、モデルによる予測結果の確認を行います。
  • その後、確認した予測結果がコンソール上に表示されます。
  1. PythonとKerasを使ってモデルの重みを手動で保存・復元する方法

    TensorFlowはGoogleが提供する機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせてアルゴリズムや深層学習アプリケーションの実装などに広く利用されています。研究用途から本番環境まで、さまざまな場面で活用されています。Kerasは、ONEIROS(Open ended Neuro-Electronic Intelligent Robot Operating System)プロジェクトの研究の一環として開発されました。KerasはPythonで記述された深層学習APIであり、機械学習の問題解決を効率的に行うための生産性の高いインターフェースを備えた

  2. Kerasを使ってPythonでモデルをプロットする方法をわかりやすく解説

    TensorFlowとはTensorFlowは、Googleが提供している機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせて使用することで、アルゴリズムの実装やディープラーニングアプリケーションの開発など、幅広い用途に活用できます。研究目的から本番環境での運用まで対応しており、複雑な数値計算を高速に実行するための最適化技術が数多く組み込まれています。TensorFlowにおける「テンソル(Tensor)」は、データを扱うための基本的なデータ構造です。テンソルは多次元配列(またはリスト)であり、データフローグラフと呼ばれる計算グラフのノード同士をエッジでつ