


AWS EC2 上の OpenCV、Flask、Gemini Vision、GitHub Actions CI/CD を使用した AI を活用したリアルタイムオブジェクト検出の構築
導入:
目を持つ仮想アシスタントのように、リアルタイムでライブビデオフィードを分析し、シーンを解釈し、環境に関する質問にインテリジェントに応答できるシステムを想像してみてください。これは、最新の「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.)
コアコンポーネント
- リアルタイムビデオキャプチャ (OpenCV) app.py の WebcamCapture クラスはビデオ ストリーミングを処理します。
self.stream = cv2.VideoCapture(0) # Open the default webcam
これにより、効率的でスレッドセーフなフレームのキャプチャと処理が保証されます。
- AI を活用した物体検出 (Google Gemini) Gemini モデルを使用して、リアルタイムのシーンを理解するためにフレームを分析します。
self.model = ChatGoogleGenerativeAI(model="gemini-1.5-flash-latest") response = self.chain.invoke({"prompt": prompt, "image_base64": image_base64})
- Flask バックエンド Flask アプリケーションは、ビデオ ストリーミング、AI クエリ、システム ステータス チェック用のエンドポイントを提供します。
/video_feed: ライブビデオをストリーミングします。
/process_query: ユーザー入力とビデオ フレームに基づいて AI を活用した分析を処理します。
-
フロントエンド UI
Index.html ファイルは、システムと対話するための応答性の高い Web インターフェイスを提供します。ユーザーのクエリをキャプチャし、リアルタイムの AI 応答を表示します。
前提条件
AWS アカウント。
登録されたドメイン名 (例: example.com)。
Google Cloud アカウントまたは Open AI アカウント
リポジトリで構成された 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 キーを生成します。
a. API とサービス セクションに移動します
b. 「資格情報」をクリックし、以下の他の手順に従います
認証情報の作成 > API Key を選択すると、API キーが生成されます。 API キーの名前を忘れずにメモしてください。プロセス中に名前を付けることもできます。
生成された API キーをコピーし、.env ファイルに戻り、your_google_api_key をコピーしたキーに置き換えます。
c. Gemini API を有効にする
Gemini API を検索し、ENABLE
API キーが [有効な Gemini API] の [メトリクスと認証情報] セクションにあることを確認します。
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 アカウントへのアクセスを保証し、必要な環境変数がデプロイメント環境内で利用可能であることを保証するためです。
私。リポジトリの [設定] に移動します
ii. [シークレットと変数] > [シークレットと変数] をクリックします。アクション
iii.以下のようにシークレットと変数を追加します
 を起動します。
- インスタンスのタイプを選択します (例: 無料枠ユーザーの場合は t2.micro)。
- SSH アクセス用のキー ペア (.pem ファイル) を作成してダウンロードします。
新しいキー ペアを作成するか、既存のキー ペアを使用します。
新しいキー ペアを作成する場合は、[キー ペアの作成] をクリックし、任意の名前を付けます。
キーペアのタイプを RSA として選択します
ファイル形式は .pem
キーペアはシステムに自動的にダウンロードされます。
- セキュリティグループの構成
次の受信ルールを許可します:
私。 HTTP (ポート 80): アプリケーションを提供するため。
ii. HTTPS (ポート 443): 安全なアクセス用。
iii. SSH (ポート 22): 管理アクセス用。
- [インスタンスの起動] をクリックして、インスタンスが完全に起動されるようにします。
ステータスが「実行中」と表示されたら、インスタンスを使用できるようになります。
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 クライアントに移動します
次に、次のようなページ上の最後のコマンドをコピーします。
$ 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 ファイルへのアクセス許可を変更する必要があります。
そのためには、以下の手順に従ってください。
.pem ファイル フォルダーを見つけ、ファイルを右クリックしてプロパティを選択します
セキュリティタブに移動
詳細タブに移動
継承を無効にするをクリックします
この詳細オプションでは、他のユーザーが .pem ファイルに対するすべての権限を持っていることも表示されます。他のすべてのユーザーの権限を削除
ユーザー リストにまだ存在しない場合は、EC2 への接続に使用するユーザーを追加します。
このユーザーのすべての権限を有効にします。
これらの手順を実行すると、エラーが発生しないのが理想的です。
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 サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











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

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

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

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

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

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

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

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