realworld_image_AI_classifier の日本語タイトル:猫と犬のフルスタック画像分類アプリ
概要
本リポジトリは「Cat vs Dog Image Classifier (Full-Stack AI App)」を実装したサンプルプロジェクトです。TensorFlow(Keras)を使ったモデル学習部分は Jupyter Notebook ベースで、転移学習のアプローチとして MobileNetV2 をバックボーンに使用しています。学習済みモデルはバックエンド(FastAPI)で読み込まれ、REST API を通じてアップロードされた画像に対してリアルタイムに「Cat / Dog」とその確信度を返します。フロントエンドは React で構成され、ユーザーはブラウザ上で画像をアップロードして結果を視覚的に受け取れます。学習・推論・UI を一貫して試せるエンドツーエンドの参考実装です。
リポジトリの統計情報
- スター数: 1
- フォーク数: 0
- ウォッチャー数: 1
- コミット数: 2
- ファイル数: 8
- メインの言語: Jupyter Notebook
主な特徴
- MobileNetV2 を用いた転移学習で猫/犬の2クラス分類を実装
- 学習用 Notebook、FastAPI バックエンド、React フロントのフルスタック構成
- 画像アップロードから即時推論 → 信頼度を返すデモ機能
- 軽量モデルを活かしたエッジ寄せやコンテナ化に適した設計
技術的なポイント
本プロジェクトの技術的な肝は「転移学習 × フルスタック展開」にあります。MobileNetV2 はパラメータが比較的少なく、モバイルや軽量サーバでの推論に向くため、学習時間と推論レイテンシーのバランスが良い点が採用理由です。典型的な流れとしては、ImageNet で事前学習済みの MobileNetV2 を読み込み、上位に全結合層(または GlobalAveragePooling → Dense)を追加して2クラスの出力(softmax)を持たせ、まずはベースを固定して上位のみ学習、必要に応じて一部をアンロックしてファインチューニングします。入力画像はリサイズ(例:224×224)と正規化(スケール変換)が前処理に含まれ、データ拡張(回転、フリップ、ズーム等)で汎化性能を高めることが一般的です。
運用面では、学習済みモデルを TensorFlow の SavedModel や .h5 形式で保存し、FastAPI 側で tf.keras.models.load_model を用いてロードします。API はマルチパート(multipart/form-data)で画像を受け取り、PIL/OpenCV で読み込んで前処理を適用、モデルに投げて確率値(confidence)とクラスを返す設計が想定されます。フロントエンドは React から Fetch/axios でエンドポイントへ送信し、受け取った結果をプログレスやバッジで表示します。
実運用で注意すべき点として、学習は GPU 環境で行うのが望ましく、推論は CPU 環境でも MobileNetV2 なら十分高速です。スケーラビリティを考える場合は、Uvicorn/gunicorn によるワーカ設定、コンテナ化(Docker)、あるいは ONNX 変換→量子化による推論高速化を検討します。評価指標は単純な精度に加え、混同行列や ROC/AUC、クラス不均衡がある場合のリコール/精度の検討が重要です。
プロジェクトの構成
主要なファイルとディレクトリ:
- .gitattributes: file
- .gitignore: file
- README.md: file
- backend: dir
- frontend: dir
…他 3 ファイル
補足説明:
- backend ディレクトリ: FastAPI を使った推論サーバーが入る想定。モデルロード、/predict 等のエンドポイント、画像前処理ロジック、CORS 設定や依存関係(requirements.txt)が配置されることが一般的です。
- frontend ディレクトリ: React アプリ。画像アップロード UI、アップロード時のプレビュー、API 呼び出しと結果表示のロジックを含むコンポーネントが想定されます。
- Jupyter Notebook(メイン言語が Notebook 表記のファイル): モデル定義、データ読み込み、前処理、学習ループ、評価、モデル保存までの実験記録が保管されています。
まとめ
転移学習とフルスタック構成を学ぶには最適なサンプルで、実践的な学習→推論→UI 展開の流れが理解できます。(約50字)
リポジトリ情報:
- 名前: realworld_image_AI_classifier
- 説明: End-to-end Cat vs Dog image classification using TensorFlow, MobileNetV2, FastAPI backend, and React frontend.
- スター数: 1
- 言語: Jupyter Notebook
- URL: https://github.com/DenuwanU03/realworld_image_AI_classifier
- オーナー: DenuwanU03
- アバター: https://avatars.githubusercontent.com/u/125144037?v=4
READMEの抜粋:
Cat vs Dog Image Classifier (Full-Stack AI App)
A complete end-to-end AI application that classifies images as Cat or Dog using deep learning and transfer learning.
This project includes:
- Model training with TensorFlow
- FastAPI backend for inference
- React frontend for image upload and prediction
Demo Features
- Upload any image
- AI predicts Cat or Dog
- Shows prediction confidence
- Real-time inference
Model Details
- Architecture: MobileNetV2 (Trans…