0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【E資格取得後】画像分類アプリ 〜Python+Streamlit+FastAPI〜

Posted at

はじめに

E資格を取得したあと、「次に何をやろう?」と悩んでいた自分の次のステップとして、「画像分類アプリ」を作成しました。
このアプリ開発を通じて、E資格で学んだ知識を実際に使いながらアウトプットし、さらに以下のスキルも身につけることができました。

  • ✅ バッチ学習の実装
  • ✅ 学習済みモデルのファインチューニング
  • ✅ SGD(確率的勾配降下法)による最適化
  • ✅ Webアプリの基本的なUI構築(Streamlit)
  • ✅ バックエンドAPI(FastAPI)との連携

「E資格は取ったけれど、そのあと何をすればいいかわからない…」
私と同じように悩んでいる方の参考になればと思い今回記事を作成しました。

開発環境と使用ライブラリ

  • Windows11
  • Python 3.12.7
  • 使用した主なライブラリ
    • streamlit
    • FastAPI
    • mlflow
    • torch

モデル構成と学習

PyTorch の事前学習済みモデル「ResNet18」をベースに、カスタムデータセット対応の10クラス分類ができるようにファインチューニングを行いました。

下記を参照しファインチューニングのコードを作成しました。
https://medium.com/@imabhi1216/fine-tuning-a-pre-trained-resnet-18-model-for-image-classification-on-custom-dataset-with-pytorch-02df12e83c2c

Webアプリの概要

このアプリでは、以下の10種類の動物画像を分類します。

クラス ラベル名
0 犬(dog)
1 馬(horse)
2 象(elephant)
3 蝶(butterfly)
4 鶏(chicken)
5 猫(cat)
6 牛(cattle)
7 羊(sheep)
8 蜘蛛(spider)
9 リス(squirrel)

使用方法

1. モデル学習(初回のみ)

ResNet18 をベースとして、最終層に層を追加してファインチューニングを行い、10クラス分類モデルを作成
モデルの学習履歴は mlflow ui で確認ができます。

2. サーバ起動

mlflow ui --port 5000
uvicorn main:app --reload --host 127.0.0.1 --port 8000

3. UI起動

streamlit run ui.py

4. UI上で画像を選択する

image.png

5. アップロードした画像が10クラスのうちどれに分類されるかを表示する

image.png

改善点

現在は、分類対象外の画像(例:風景、車など)も、必ず10クラスのいずれかに分類されてしまいます。
「その他(other)」クラスを追加する。

おわりに

E資格で学習した内容を実際に手を動かすことで、AI開発のイメージをつけることができました。
次回は自然言語をテーマにして記事を作成したいと考えています。

以下本記事のコード
https://github.com/Jatm1019/ai_application_classes

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?