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

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

Dec 22, 2024 pm 07:36 PM

導入:

目を持つ仮想アシスタントのように、リアルタイムでライブビデオフィードを分析し、シーンを解釈し、環境に関する質問にインテリジェントに応答できるシステムを想像してみてください。これは、最新の「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 までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Python vs. C:比較されたアプリケーションとユースケース Python vs. C:比較されたアプリケーションとユースケース Apr 12, 2025 am 12:01 AM

Pythonは、データサイエンス、Web開発、自動化タスクに適していますが、Cはシステムプログラミング、ゲーム開発、組み込みシステムに適しています。 Pythonは、そのシンプルさと強力なエコシステムで知られていますが、Cは高性能および基礎となる制御機能で知られています。

2時間でどのくらいのPythonを学ぶことができますか? 2時間でどのくらいのPythonを学ぶことができますか? Apr 09, 2025 pm 04:33 PM

2時間以内にPythonの基本を学ぶことができます。 1。変数とデータ型を学習します。2。ステートメントやループの場合などのマスター制御構造、3。関数の定義と使用を理解します。これらは、簡単なPythonプログラムの作成を開始するのに役立ちます。

Python:ゲーム、GUIなど Python:ゲーム、GUIなど Apr 13, 2025 am 12:14 AM

PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。

2時間のPython計画:現実的なアプローチ 2時間のPython計画:現実的なアプローチ Apr 11, 2025 am 12:04 AM

2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

Python:主要なアプリケーションの調査 Python:主要なアプリケーションの調査 Apr 10, 2025 am 09:41 AM

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

Python vs. C:曲線と使いやすさの学習 Python vs. C:曲線と使いやすさの学習 Apr 19, 2025 am 12:20 AM

Pythonは学習と使用が簡単ですが、Cはより強力ですが複雑です。 1。Python構文は簡潔で初心者に適しています。動的なタイピングと自動メモリ管理により、使いやすくなりますが、ランタイムエラーを引き起こす可能性があります。 2.Cは、高性能アプリケーションに適した低レベルの制御と高度な機能を提供しますが、学習しきい値が高く、手動メモリとタイプの安全管理が必要です。

Pythonと時間:勉強時間を最大限に活用する Pythonと時間:勉強時間を最大限に活用する Apr 14, 2025 am 12:02 AM

限られた時間でPythonの学習効率を最大化するには、PythonのDateTime、時間、およびスケジュールモジュールを使用できます。 1. DateTimeモジュールは、学習時間を記録および計画するために使用されます。 2。時間モジュールは、勉強と休息の時間を設定するのに役立ちます。 3.スケジュールモジュールは、毎週の学習タスクを自動的に配置します。

Python:自動化、スクリプト、およびタスク管理 Python:自動化、スクリプト、およびタスク管理 Apr 16, 2025 am 12:14 AM

Pythonは、自動化、スクリプト、およびタスク管理に優れています。 1)自動化:OSやShutilなどの標準ライブラリを介してファイルバックアップが実現されます。 2)スクリプトの書き込み:Psutilライブラリを使用してシステムリソースを監視します。 3)タスク管理:スケジュールライブラリを使用してタスクをスケジュールします。 Pythonの使いやすさと豊富なライブラリサポートにより、これらの分野で優先ツールになります。

See all articles