ステップバイステップガイド: FastAPI を使用して YOLO モデルをデプロイする手順

ステップバイステップガイド: FastAPI を使用して YOLO モデルをデプロイする手順

コンピューター ビジョンの分野では、You Only Look Once (YOLO) アルゴリズムが画期的なアルゴリズムとして登場しました。非常に高い精度でリアルタイムに物体を検出できるため、監視や自律走行車から画像やビデオの分析に至るまで、さまざまなアプリケーションで強力なツールとなります。しかし、YOLO の真の可能性は、実際の現実世界のシステムにシームレスに統合されたときにのみ実現されます。ここで、Python で API を構築するための最新の高速 Web フレームワークである FastAPI が登場し、YOLO モデルの展開におけるパートナーとして簡単に利用できるようになります。

YOLO モデルを Web アプリケーションにデプロイし、ユーザーが簡単な API 呼び出しでリアルタイムのオブジェクト検出を実行できるようになることを想像してみてください。スマート セキュリティ システム、野生生物監視アプリケーション、小売分析プラットフォームを構築する場合でも、このガイドでは、開発環境のセットアップから FastAPI を使用して完全に機能する YOLO モデルの展開までのプロセスを順を追って説明します。

このチュートリアルを詳しく読み進めていくと、YOLO の魔法、つまり瞬く間に画像やビデオ内のオブジェクトを識別できる仕組みがわかります。また、この強力なアルゴリズムを、スピードとシンプルさを重視する開発者向けに設計されたフレームワークである FastAPI と統合する技術も習得します。この旅の終わりまでに、クラウド、ローカル サーバー、さらにはエッジ デバイスに展開できる独自のリアルタイム オブジェクト検出 API を作成するためのツールと知識が身につきます。

したがって、経験豊富なコンピューター ビジョン エンジニアであっても、YOLO と FastAPI の世界を探求したい好奇心旺盛な開発者であっても、準備を整えてください。私たちは、YOLO モデルを段階的に展開する専門的な旅を始めます。物体検出の夢を現実にする準備はできていますか?さあ始めましょう!

パート1: 環境の設定

FastAPI を使用して YOLO モデルを展開する世界に飛び込む前に、開発環境が正しく設定されていることを確認する必要があります。このセクションでは、プロセスを段階的に説明します。

1. Pythonをインストールする

まず、システムに Python がインストールされていることを確認します。 Python の最新バージョンは、公式 Web サイト (https://www.python.org/downloads/) からダウンロードするか、Anaconda などのパッケージ マネージャーを使用してダウンロードできます。 Python がインストールされているかどうかを確認するには、ターミナルまたはコマンド プロンプトを開いて次のコマンドを実行します。

 python - version

2. 仮想環境を作成する

プロジェクトの依存関係を分離しておくには、仮想環境を作成するのが最適です。こうすることで、異なるプロジェクト間の競合を回避できます。 Python の組み込み venv モジュールを使用して仮想環境を作成しましょう。ターミナルを開き、プロジェクトのルート ディレクトリに移動します。次のコマンドを実行します。

 # Create a virtual environment (replace 'myenv' with your preferred environment name) python -m venv myenv # Activate the virtual environment (Windows) myenv\Scripts\activate # Activate the virtual environment (macOS/Linux) source myenv/bin/activate

ターミナルプロンプトが変化し、仮想環境がアクティブであることが示されます。

注意: 'myenv' を、希望する仮想環境名に置き換えることを忘れないでください。

3. 依存関係をインストールする

仮想環境で作業するようになったので、必要な依存関係をインストールします。これらには、FastAPI、Uvicorn (FastAPI アプリケーションを提供するためのツール)、YOLO 関連ライブラリ、およびプロジェクトに必要なその他のパッケージが含まれます。 pip を使用してこれらの依存関係をインストールします。

 pip install fastapi uvicorn opencv-python-headless numpy

4. YOLOモデルの設定

YOLO を使用するには、ultralytics から yolov8 ライブラリをインストールする必要があります。

 pip install ultralytics

開発環境がセットアップされたので、YOLO と FastAPI のエキサイティングな世界に飛び込む準備が整いました。次のセクションでは、YOLO のパワーを活用してリアルタイムのオブジェクト検出を行う方法と、それを提供する FastAPI アプリケーションを構築する方法について説明します。

パート2: FastAPIアプリケーションの作成

さあ、モデルをデプロイするための FastAPI アプリケーションの構築を始めましょう。このセクションでは、オブジェクト検出 API の基本を設定するプロセスについて説明します。

1. プロジェクト構造

まず、プロジェクト構造を整理することから始めましょう。 FastAPI プロジェクト用のディレクトリを作成し、そこに移動します。

 mkdir object_detection_api cd object_detection_api

このプロジェクト ディレクトリ内に、FastAPI アプリケーションのさまざまなコンポーネント用のファイルとフォルダーを作成します。

2. FastAPIアプリケーションを初期化する

FastAPI を使用すると、Web アプリケーションの構築が非常に簡単になります。 FastAPI アプリケーション用の Python スクリプト (通常は main.py という名前) を作成します。

 touch main.py

それでは、コードを書き始めましょう。お気に入りのテキスト エディターまたは IDE で main.py を開き、FastAPI をインポートします。これで、FastAPI アプリケーションが初期化されます。このアプリケーションは、オブジェクト検出 API の基盤として機能します。

3. 最初のルートを作成する

FastAPI では、Python 関数を使用してルートを定義します。シンプルな「Hello, World!」ルートから始めましょう。 main.py に次のコードを追加します。

 @app.get("/") async def read_root(): return {"message": "Hello, World!"}

このコードは、ルート URL ("/") への GET リクエストに応答し、"message" フィールドを含む JSON 応答を返すルートを定義します。

4. FastAPIアプリケーションをローカルで実行する

ここで、FastAPI アプリケーションをローカルでテストします。ターミナルを開き、main.py を含むプロジェクト ディレクトリに移動します。まだ行っていない場合は、仮想環境をアクティブ化します。

 source myenv/bin/activate # Replace 'myenv' with your environment name

次に、Uvicorn を使用して FastAPI アプリケーションを実行します。

 uvicorn main:app --reload

このコマンドは、Uvicorn に main.py モジュールからアプリ オブジェクトを実行し、開発時に自動リロードを有効にするように指示します。 FastAPI アプリケーションがローカルで実行されていることを示す出力が表示されます。デフォルトでは http://127.0.0.1:8000 で実行されます。

5. Hello Worldルートにアクセスする

Web ブラウザを開くか、curl などのツールを使用して「Hello, World!」ルートにアクセスします。

 curl http://127.0.0.1:8000/

「Hello, World!」メッセージを含む JSON 応答が返されるはずです。 FastAPI アプリケーションを実行したら、次は、オブジェクト検出用の YOLOv8 モデルを統合するという興味深い部分に進むことができます。次のセクションでは、YOLOv8 モデルを準備し、それを FastAPI とシームレスに統合する方法について説明します。

パート3: YOLOv8とFastAPIの統合

FastAPI アプリケーションが完成したので、リアルタイムのオブジェクト検出のために YOLOv8 モデルを統合するプロセスを詳しく見ていきましょう。このセクションでは、YOLOv8 を FastAPI とシームレスに統合する手順について説明します。

1. YOLOv8モデルをロードする

まず、FastAPI アプリケーションに YOLOv8 モデルをロードしてみましょう。 main.py を開き、ファイルの先頭に次のコードを追加して必要なモジュールをインポートします。

 import cv2 import numpy as np from ultralytics import YOLO

2. ターゲット検出ルートを作成する

ここで、オブジェクト検出用の画像を受け入れるルートを FastAPI で作成しましょう。新しいルーティング関数を次のように定義します。

 from fastapi import File, UploadFile model = YOLO("yolov8n.pt") @app.post("/detect/") async def detect_objects(file: UploadFile): # Process the uploaded image for object detection image_bytes = await file.read() image = np.frombuffer(image_bytes, dtype=np.uint8) image = cv2.imdecode(image, cv2.IMREAD_COLOR) # Perform object detection with YOLOv8 detections = model.predict(image) return {"detections": detections}

ここでは、アップロードされた画像ファイルを受け入れる /detect/ というルートを作成しました。アップロードされた画像に対してオブジェクト検出を実行するために、model.predict() を使用します。

3. テストターゲット検出ルーティング

YOLOv8 を統合したので、オブジェクト検出ルーティングをテストできます。 Uvicorn を使用して FastAPI アプリケーションを起動します。

 uvicorn main:app --reload

次に、オブジェクト検出用の画像ファイルをアップロードするために、 /detect/ルートに POST リクエストが送信されます。これは、 curlや Postman などのツールを使用して実行できます。

 curl -X POST -F "[email protected]" http://127.0.0.1:8000/detect/

オブジェクト検出結果を含む JSON 応答が届きます。おめでとう! YOLOv8 と FastAPI を統合して、リアルタイムのオブジェクト検出を実現しました。次のセクションでは、API を強化し、ドキュメントを追加し、デプロイメント オプションを検討します。

パート4: FastAPIアプリケーションをデプロイする

FastAPI アプリケーションを構築したので、次はそれをデプロイし、オブジェクト検出 API をユーザーが利用できるようにします。このセクションでは、テスト用のローカル展開や本番環境用のクラウドベースの展開など、さまざまな展開オプションについて説明します。

1. テストのためのローカル展開

本番環境にデプロイする前に、FastAPI アプリケーションがローカルで適切に動作するかどうかをテストすることが重要です。 FastAPI アプリケーションをローカルで実行するには、ターミナルを開き、main.py を含むプロジェクト ディレクトリに移動し、仮想環境がまだアクティブ化されていない場合はアクティブ化します。

 source myenv/bin/activate # Replace 'myenv' with your environment name

次に、Uvicorn を使用して FastAPI アプリケーションを起動します。

 uvicorn main:app --reload

これで、FastAPI アプリケーションに http://127.0.0.1:8000/ からアクセスできるようになります。 curl、Postman、または Web ブラウザを使用して API エンドポイントをテストできます。

2. クラウドベースの本番環境への導入

FastAPI アプリケーションを本番環境にデプロイする準備ができたら、クラウドベースのデプロイ オプションをいくつか利用できます。人気のある選択肢としては、次のようなものがあります。

  • AWS (Amazon Cloud Services): AWS Elastic Beanstalk、AWS Lambda、Amazon EC2 などのサービスを使用して、AWS に FastAPI アプリケーションをデプロイできます。
  • Google Cloud Platform (GCP): GCP は、Google App Engine、Google Cloud Functions、または Google Kubernetes Engine (GKE) を使用したデプロイメント オプションを提供します。
  • Microsoft Azure: Azure では、Azure App Service、Azure Functions、または Azure Kubernetes Service (AKS) を使用したデプロイ オプションが提供されます。
  • Heroku: Heroku は、FastAPI アプリケーションを含む Web アプリケーションを簡単にデプロイできるユーザーフレンドリーなプラットフォームです。

具体的な展開方法は、選択したクラウド プロバイダーによって異なる場合があります。通常、次のものが必要になります。

  • アカウントを作成し、選択したクラウド プラットフォームでプロジェクトを設定します。
  • ランタイム環境や依存関係の指定など、デプロイメント設定を構成します。
  • プラットフォームのデプロイメント ツールまたは CLI を使用して、FastAPI アプリケーションをクラウドにデプロイします。
  • 必要に応じて、デプロイされたアプリケーションを監視および拡張します。

3. 適切なサーバーを選択する

クラウドベースのサーバーにデプロイする場合は、サーバーの種類を柔軟に選択できます。一般的なオプションは次のとおりです。

  • HTTP サーバー: Nginx や Apache などの従来の HTTP サーバーの背後に FastAPI アプリケーションをデプロイできます。この設定はパフォーマンスとセキュリティの向上に役立ちます。
  • ASGI サーバー: ASGI (Asynchronous Server Gateway Interface) 展開の場合、Uvicorn、Hypercorn、または Daphne を使用できます。 Uvicorn は通常、FastAPI アプリケーションに推奨されます。
  • サーバーレス: サーバーレス デプロイメントを選択した場合は、AWS Lambda、Azure Functions、または Google Cloud Functions を使用できます。このアプローチはコスト効率が高く、需要に応じて自動的に拡張されます。

4. 継続的インテグレーションと継続的デプロイメント (CI/CD)

デプロイメント プロセスを自動化するには、CI/CD パイプラインを実装することを検討してください。 Jenkins、Travis CI、GitLab CI/CD、GitHub Actions などのツールを使用すると、コード リポジトリに変更がプッシュされたときにテストとデプロイメントを自動化できます。 CI/CD のベスト プラクティスに従うことで、スムーズで信頼性の高いデプロイメント プロセスを保証し、運用環境でのエラーのリスクを軽減できます。

<<:  カナダ工学アカデミー会員のソン・リャン氏:将来の人工知能システムはネットワークの形で存在するだろう

>>:  5四半期連続で前年同期比で減少: AIはデルの危機を逆転できるか?

ブログ    
ブログ    
ブログ    

推薦する

...

...

人工知能の時代に人権と民主主義をどう守るか

人工知能 (AI) システムは近年急速に普及しており、特に 2023 年には大規模言語モデル (LL...

DeLu Deep Vision: 3Dマシンビジョンに焦点を当て、セキュリティの「スマートアイ」を照らす

[[283588]] [51CTO.comより]先日、「勢いの刷新と知能の統合」をテーマにした世界人...

人工知能はますます急速に発展しています。将来、人工知能は人間に取って代わるのでしょうか?

人工知能の発展は人類の進化に似ていますが、そのプロセスはより短いものです。人間は自らの知恵を駆使して...

シティグループは5年以内に1万人の雇用を人工知能で置き換える計画

[[233047]]フィナンシャル・タイムズによると、シティグループは5年以内に投資銀行部門の技術・...

いくつかの一般的な暗号化アルゴリズムのPython実装

私たちは日常生活の中で、暗号化アルゴリズムによく遭遇します。今日は、これらの暗号化アルゴリズムの P...

コンピュータビジョンの10年: ディープラーニングは変化をもたらすが、特定の課題においては依然として古典的な要素が優勢である

ビッグデータダイジェスト制作編集:ダイジェスト近年、コンピュータービジョン(CV)の発展は止められず...

人工知能は一般的な仕事に取って代わるのでしょうか?心配しないで、この機会をつかんで次の10年をリードしてください

人工知能の急速な発展により、一連の新技術が誕生しました。ロボットはますます多くのことを人間に代わって...

ChatGPTのメタバージョンが登場: Llama 2がサポートされ、Bing検索に接続され、ザッカーバーグがライブでデモを実施

今朝早く、毎年恒例の Meta Connect カンファレンスで、AI に焦点を当てた一連の発表が行...

3 つのヒープ内キャッシュ アルゴリズム (ソース コードと設計アイデア付き)

トレードオフを最もよく反映するコンピュータ システムのテクノロジといえば、それはキャッシュです。高速...

人工知能にはどのような分野が含まれますか?どのように機能しますか?

現代の産業技術の発展により、私たちの生活は大きく改善されました。新しい家具が次々と登場しています。キ...

人工知能が両親の写真から子供の顔を合成し、ディープラーニングが親族関係を生成する

人工知能が両親の写真から子供の顔を合成、親族関係生成のためのディープラーニング 概要: この論文では...

デジタル変革の3つの大きな落とし穴に注意: インテルがPing An Healthcare Technologyに「エンドツーエンド」のAI機能を提供

[51CTO.comからのオリジナル記事] 現在、私たちの周りではデジタル変革が起こっています。デジ...