ホームページ >バックエンド開発 >Python チュートリアル >AWS EC2 上の OpenCV、Flask、Gemini Vision、GitHub Actions CI/CD を使用した AI を活用したリアルタイムオブジェクト検出の構築

AWS EC2 上の OpenCV、Flask、Gemini Vision、GitHub Actions CI/CD を使用した AI を活用したリアルタイムオブジェクト検出の構築

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-22 19:36:12565ブラウズ

導入:

目を持つ仮想アシスタントのように、リアルタイムでライブビデオフィードを分析し、シーンを解釈し、環境に関する質問にインテリジェントに応答できるシステムを想像してみてください。これは、最新の「gemini-1.5-flash-latest」モデルを活用して、ビデオ処理用の OpenCV と Google の Gemini ビジョン モデルなどの最先端のテクノロジーを組み合わせる可能性です。

この記事では、ライブ ビデオ ストリーミングと AI を活用したシーン分析を使用して、洞察力に富んだコンテキスト認識型の応答を提供する、リアルタイム物体検出システムの構築について説明します。アプリケーションを AWS EC2 にデプロイし、自動化された CI/CD に Github Actions を採用して、シームレスな更新パイプラインを確保しながら、スケーラビリティと実際の使用のための準備を整えます。

このチュートリアルが終わるまでに、完全に機能する AI 搭載システムを導入できるようになり、自信を持ってさまざまなユースケースに合わせて拡張およびカスタマイズできるようになります。


プロジェクトの構造

project/
├── app.py              # Flask application code
├── requirements.txt    # Python dependencies
├── templates/
│   └── index.html     # Frontend UI
└── .env               # Environment variables (API keys, etc.)

コアコンポーネント

  1. リアルタイムビデオキャプチャ (OpenCV) app.py の WebcamCapture クラスはビデオ ストリーミングを処理します。
self.stream = cv2.VideoCapture(0)  # Open the default webcam

これにより、効率的でスレッドセーフなフレームのキャプチャと処理が保証されます。

  1. AI を活用した物体検出 (Google Gemini) Gemini モデルを使用して、リアルタイムのシーンを理解するためにフレームを分析します。
self.model = ChatGoogleGenerativeAI(model="gemini-1.5-flash-latest")
response = self.chain.invoke({"prompt": prompt, "image_base64": image_base64})

  1. Flask バックエンド Flask アプリケーションは、ビデオ ストリーミング、AI クエリ、システム ステータス チェック用のエンドポイントを提供します。

/video_feed: ライブビデオをストリーミングします。

/process_query: ユーザー入力とビデオ フレームに基づいて AI を活用した分析を処理します。

  1. フロントエンド UI

    Index.html ファイルは、システムと対話するための応答性の高い Web インターフェイスを提供します。ユーザーのクエリをキャプチャし、リアルタイムの AI 応答を表示します。

    前提条件

  2. AWS アカウント。

  3. 登録されたドメイン名 (例: example.com)。

  4. Google Cloud アカウントまたは Open AI アカウント

  5. リポジトリで構成された GitHub アクション。

4. SSH および Linux コマンドライン ツールの基本的な知識。

アプリケーションのクローン作成と展開

ステップ 1: リポジトリのクローンを作成し、API を生成し、アプリケーション ファイルを Github にプッシュする

A.リポジトリのクローンを作成します

$ git clone https://github.com/Abunuman/Real-Time-ODS.git
$ cd Real-Time-ODS

B. API キーを生成し、.env ファイルに追加します
私。テキスト エディターの左側にあるオプションから手動で .env ファイルを作成します (私は VScode を使用しました)
または
ターミナルで次を実行します:
$ touch .env

次に、これらを .env に追加します

GOOGLE_API_KEY=your_google_api_key
OPENAI_API_KEY=your_openai_api_key
FLASK_DEBUG=True

ii. Google Cloud にログインし、次の手順に従って API キーを生成します。

Building AI-Powered Real-Time Object Detection with OpenCV, Flask, Gemini Vision, and GitHub Actions CI/CD on AWS EC2

a. API とサービス セクションに移動します

Building AI-Powered Real-Time Object Detection with OpenCV, Flask, Gemini Vision, and GitHub Actions CI/CD on AWS EC2

b. 「資格情報」をクリックし、以下の他の手順に従います

認証情報の作成 > API Key を選択すると、API キーが生成されます。 API キーの名前を忘れずにメモしてください。プロセス中に名前を付けることもできます。

Building AI-Powered Real-Time Object Detection with OpenCV, Flask, Gemini Vision, and GitHub Actions CI/CD on AWS EC2

Building AI-Powered Real-Time Object Detection with OpenCV, Flask, Gemini Vision, and GitHub Actions CI/CD on AWS EC2

生成された API キーをコピーし、.env ファイルに戻り、your_google_api_key をコピーしたキーに置き換えます。

c. Gemini API を有効にする
Gemini API を検索し、ENABLE

をクリックします。

Building AI-Powered Real-Time Object Detection with OpenCV, Flask, Gemini Vision, and GitHub Actions CI/CD on AWS EC2

API キーが [有効な Gemini API] の [メトリクスと認証情報] セクションにあることを確認します。

Building AI-Powered Real-Time Object Detection with OpenCV, Flask, Gemini Vision, and GitHub Actions CI/CD on AWS EC2

iii. .gitignore ファイルを作成し、そのファイルに .env を追加して、github にプッシュされないようにします。

注意: 標準的な方法では、シークレットと環境変数が一般公開されないようにします。したがって、Github へのプッシュ中に、.gitignore に追加されたファイルを無視する必要があります。

B.リポジトリにプッシュします。
私。アプリケーション名で Github リポジトリを作成し、以下のコマンドに従って github
にプッシュします。

project/
├── app.py              # Flask application code
├── requirements.txt    # Python dependencies
├── templates/
│   └── index.html     # Frontend UI
└── .env               # Environment variables (API keys, etc.)

注意: repository-name を実際のリポジトリ名に変更してください

ステップ 2: Github Actions 環境シークレットをセットアップする

プロジェクトに必要な AWS IAM ユーザー シークレットと環境変数を設定します。

AWS 経由でプロジェクトをデプロイするには、AWS シークレットと、.env にローカルで追加された環境変数を Github Actions 環境に追加する必要があります。これは、デプロイメント用の特定の AWS アカウントへのアクセスを保証し、必要な環境変数がデプロイメント環境内で利用可能であることを保証するためです。

私。リポジトリの [設定] に移動します

Building AI-Powered Real-Time Object Detection with OpenCV, Flask, Gemini Vision, and GitHub Actions CI/CD on AWS EC2

ii. [シークレットと変数] > [シークレットと変数] をクリックします。アクション

Building AI-Powered Real-Time Object Detection with OpenCV, Flask, Gemini Vision, and GitHub Actions CI/CD on AWS EC2

iii.以下のようにシークレットと変数を追加します

Building AI-Powered Real-Time Object Detection with OpenCV, Flask, Gemini Vision, and GitHub Actions CI/CD on AWS EC2

![秘密](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7t6vyolkj2jyq85oswh7.png

ステップ 3: AWS EC2 インスタンスのセットアップ

私。 EC2 インスタンスを起動します

  • AWS マネジメントコンソールを使用して EC2 インスタンス (例: Ubuntu 22.04) を起動します。

Building AI-Powered Real-Time Object Detection with OpenCV, Flask, Gemini Vision, and GitHub Actions CI/CD on AWS EC2

Building AI-Powered Real-Time Object Detection with OpenCV, Flask, Gemini Vision, and GitHub Actions CI/CD on AWS EC2

  • インスタンスのタイプを選択します (例: 無料枠ユーザーの場合は t2.micro)。

Building AI-Powered Real-Time Object Detection with OpenCV, Flask, Gemini Vision, and GitHub Actions CI/CD on AWS EC2

  • SSH アクセス用のキー ペア (.pem ファイル) を作成してダウンロードします。

新しいキー ペアを作成するか、既存のキー ペアを使用します。

新しいキー ペアを作成する場合は、[キー ペアの作成] をクリックし、任意の名前を付けます。

Building AI-Powered Real-Time Object Detection with OpenCV, Flask, Gemini Vision, and GitHub Actions CI/CD on AWS EC2

キーペアのタイプを RSA として選択します

ファイル形式は .pem

キーペアはシステムに自動的にダウンロードされます。

  • セキュリティグループの構成

Building AI-Powered Real-Time Object Detection with OpenCV, Flask, Gemini Vision, and GitHub Actions CI/CD on AWS EC2

次の受信ルールを許可します:
私。 HTTP (ポート 80): アプリケーションを提供するため。
ii. HTTPS (ポート 443): 安全なアクセス用。
iii. SSH (ポート 22): 管理アクセス用。

Building AI-Powered Real-Time Object Detection with OpenCV, Flask, Gemini Vision, and GitHub Actions CI/CD on AWS EC2

  • [インスタンスの起動] をクリックして、インスタンスが完全に起動されるようにします。

ステータスが「実行中」と表示されたら、インスタンスを使用できるようになります。

ii. SSH アクセス用のキー ペア (.pem キー) を構成します

Mac book ユーザーまたは bash ターミナルを使用する Linux ユーザーの場合は、SSH アクセス用のキー ペアを次のように設定します。

a. VScode または Xcode

を使用して、ダウンロードした .pem キーを開きます。

b.ターミナルで、ルート ディレクトリ (~)
から .ssh ディレクトリに移動します。

project/
├── app.py              # Flask application code
├── requirements.txt    # Python dependencies
├── templates/
│   └── index.html     # Frontend UI
└── .env               # Environment variables (API keys, etc.)

c. nano または vim テキスト エディタを使用して、.ssh ディレクトリに .pem ファイルを作成します。このチュートリアルでは nano を使用します。

nano がインストールされていない場合は、インストールします。

Macbook ユーザー向け

self.stream = cv2.VideoCapture(0)  # Open the default webcam

Linux ユーザー向け

self.model = ChatGoogleGenerativeAI(model="gemini-1.5-flash-latest")
response = self.chain.invoke({"prompt": prompt, "image_base64": image_base64})

インストールしたら、nano を使用して .ssh ディレクトリに .pem ファイルを作成します。

作成されるファイルの名前が .pem ファイルと同じであることを確認してください。

$ git clone https://github.com/Abunuman/Real-Time-ODS.git
$ cd Real-Time-ODS

次に、既に開いている .pem ファイルをコピーし、.ssh ディレクトリに作成される .pem を貼り付けます。

Ctrl X、Y、Enter の順に押して保存します。

d. .pem ファイルのアクセス許可を変更します

GOOGLE_API_KEY=your_google_api_key
OPENAI_API_KEY=your_openai_api_key
FLASK_DEBUG=True

iii.インスタンス にアクセスします - EC2 インスタンスに SSH 接続します:

インスタンス ID をクリックします。インスタンスが実行状態になったら、接続オプションを選択します

接続ページに移動したら、SSH クライアントに移動します

Building AI-Powered Real-Time Object Detection with OpenCV, Flask, Gemini Vision, and GitHub Actions CI/CD on AWS EC2

次に、次のようなページ上の最後のコマンドをコピーします。

$ git init
$ git add .
$ git commit -m "first commit"
$ git branch -M main
$ git remote add origin https://github.com/Abunuman/repository-name.git
git push -u origin main

これを端末に貼り付けて Enter キーを押します。シームレスに接続する必要があります。

Windows ユーザー向け

  • Windows セットアップ

Windows マシンで CMD を開きます

.pim ファイルが保存されている目的のディレクトリを見つけます

理想的には、このディレクトリから、コピーした ssh コマンドを実行でき、EC2 に接続できるはずです。ただし、ssh コマンドを実行すると、セキュリティ権限エラーが発生することがあります。

.pem ファイルへのアクセス許可を変更する必要があります。

そのためには、以下の手順に従ってください。

  1. .pem ファイル フォルダーを見つけ、ファイルを右クリックしてプロパティを選択します

  2. セキュリティタブに移動

  3. 詳細タブに移動

  4. 継承を無効にするをクリックします

  5. この詳細オプションでは、他のユーザーが .pem ファイルに対するすべての権限を持っていることも表示されます。他のすべてのユーザーの権限を削除

  6. ユーザー リストにまだ存在しない場合は、EC2 への接続に使用するユーザーを追加します。

  7. このユーザーのすべての権限を有効にします。

これらの手順を実行すると、エラーが発生しないのが理想的です。

CMD プロンプトから SSH コマンドを実行します

権限が修正されると、プロンプトは EC2 に正常に接続されます

これで手順は正常に完了し、EC2 インスタンスで Windows CMD からコマンドを実行できるようになりました。

iv.依存関係のインストール - パッケージ リストを更新し、必要なパッケージをインストールします。

SSH 経由で EC2 インスタンスに接続したら、EC2 に依存関係をインストールします。

接続された端末で次のコマンドを実行します:

project/
├── app.py              # Flask application code
├── requirements.txt    # Python dependencies
├── templates/
│   └── index.html     # Frontend UI
└── .env               # Environment variables (API keys, etc.)

インストールされている Python3 のバージョンを確認し、3.12 であることを確認してください

self.stream = cv2.VideoCapture(0)  # Open the default webcam

ステップ 2: アプリケーションのデプロイ

アプリケーションをセットアップする

app.py、index.html、requirements.txt を EC2 インスタンスに転送します:

self.model = ChatGoogleGenerativeAI(model="gemini-1.5-flash-latest")
response = self.chain.invoke({"prompt": prompt, "image_base64": image_base64})

ステップ 3: CI/CD 用の GitHub アクションの構成

リポジトリにワークフロー ファイルを作成し、.github/workflows/main.yml ファイルを追加します。

$ git clone https://github.com/Abunuman/Real-Time-ODS.git
$ cd Real-Time-ODS

結論

このチュートリアルでは、ライブ ビデオ キャプチャ用の OpenCV とインテリジェントなシーン分析用の Google の ChatGoogleGenerativeAI をシームレスに統合するリアルタイム オブジェクト検出システムを構築して展開するための包括的な作業に着手しました。アプリケーションをローカルで構成することから、カスタム ドメインと SSL を使用して AWS EC2 に安全にデプロイするまで、アイデアを機能的でスケーラブルなソリューションに変えるための重要なステップをすべてカバーしました。

このプロジェクトは、Flask、OpenCV、AI などの最先端のテクノロジーを組み合わせて、クラウド展開のベスト プラクティスを確保しながら現実世界の問題を解決する力に焦点を当てています。これらの手順に従うことで、AI を活用した堅牢なシステムをデプロイしただけでなく、スケーラビリティ、セキュリティ、効率的な CI/CD パイプラインも確保できました。

以上がAWS EC2 上の OpenCV、Flask、Gemini Vision、GitHub Actions CI/CD を使用した AI を活用したリアルタイムオブジェクト検出の構築の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。