サイトアイコン アマチュア無線局JS2IIU

【Streamlit】画像分類AIのためのUIを作成する

こんにちは、JS2IIUです。

画像分類AIを活用するためには、ユーザーが簡単に操作できるUIが必要です。本記事では、Streamlitを使用して画像分類AIのためのシンプルで直感的なUIを構築する方法を解説します。今回もよろしくお願いします。

背景と目的

画像分類AIの活用シーン

画像分類AIは、医療画像の診断、製造業での不良品検出、セキュリティ分野での顔認識など、さまざまな分野で活用されています。これらの技術を効率的に利用するためには、ユーザーが簡単に操作できるUIが不可欠です。

UIの重要性

適切なUIがあることで、専門知識がないユーザーでもAIの機能を活用できます。特に、画像分類AIでは、画像のアップロードや結果の表示が直感的に行えることが重要です。

Streamlitの特徴と利点

Streamlitは、Pythonで簡単にインタラクティブなWebアプリケーションを作成できるフレームワークです。以下の特徴があります:

必要なツールと環境

PythonとStreamlitのインストール

以下のコマンドでPythonとStreamlitをインストールします:

Bash
pip install streamlit

必要なライブラリ

画像分類AIを構築するために、以下のライブラリを使用します:

画像分類AIモデルの準備

事前学習済みモデルの利用

事前学習済みモデルを使用することで、開発時間を大幅に短縮できます。例えば、TensorFlowのMobileNetやPyTorchのResNetなどがあります。

これらのモデルは、すでに大規模なデータセット(一般に ImageNet)でトレーニングされており、一般的な画像分類タスクにおいて高い精度を発揮します。

選択の指針(簡単まとめ):

転移学習の簡単なヒント:

その他の選択肢

モデルのロードと推論の実装

以下は、TensorFlowを使用したモデルのロード例です:

Python
import tensorflow as tf

model = tf.keras.applications.MobileNetV2(weights='imagenet')

推論は以下のように行います:

Python
from tensorflow.keras.applications.mobilenet_v2 import preprocess_input, decode_predictions
import numpy as np
from PIL import Image

# 画像の前処理
image = Image.open('example.jpg').resize((224, 224))
image_array = np.expand_dims(preprocess_input(np.array(image)), axis=0)

# 推論
predictions = model.predict(image_array)
print(decode_predictions(predictions, top=3))

StreamlitでのUI構築

ファイルアップロード機能の実装

以下のコードで、ユーザーが画像をアップロードできるUIを作成します:

Python
import streamlit as st
from PIL import Image
import numpy as np
from tensorflow.keras.applications.mobilenet_v2 import preprocess_input, decode_predictions
import tensorflow as tf

# モデルのロード
model = tf.keras.applications.MobileNetV2(weights='imagenet')

# Streamlitアプリの構築
st.title("画像分類AIデモ")

uploaded_file = st.file_uploader("画像をアップロードしてください", type=["jpg", "png"])

if uploaded_file is not None:
    # 画像の表示
    image = Image.open(uploaded_file)
    st.image(image, caption='アップロードされた画像', use_container_width=True)

    # 画像の前処理
    image = image.resize((224, 224))
    image_array = np.expand_dims(preprocess_input(np.array(image)), axis=0)

    # 推論
    predictions = model.predict(image_array)
    decoded_predictions = decode_predictions(predictions, top=3)

    # 結果の表示
    st.write("推論結果:")
    for i, (imagenet_id, label, score) in enumerate(decoded_predictions[0]):
        st.write(f"{i+1}. {label}: {score:.2f}")

プログラム解説

  1. ライブラリのインポート:
  1. モデルのロード:
  1. Streamlitアプリのタイトル設定:
  1. ファイルアップロード機能:
  1. 画像の表示:
  1. 画像の前処理:
  1. 推論の実行:
  1. 結果の表示:

デプロイと運用

Streamlit Cloudを使用したデプロイ

Streamlit Cloudを使用すると、簡単にアプリを公開できます。以下の手順でデプロイします:

  1. GitHubリポジトリにコードをプッシュ
  2. Streamlit Cloudにログインし、リポジトリを選択
  3. デプロイボタンをクリック

ローカル環境での運用方法

以下のコマンドでローカルサーバーを起動します:

Bash
streamlit run app.py

トラブルシューティング

よくあるエラーとその対処法

パフォーマンス改善のヒント

まとめ

Streamlitを使用することで、画像分類AIのためのUIを簡単に構築できます。本記事を参考に、ぜひ実際にアプリケーションを作成してみてください。

参考

最後まで読んでいただきありがとうございます。
ご意見、ご感想、ご質問は是非コメント欄へお願いします。

モバイルバージョンを終了