ホームページ >バックエンド開発 >Python チュートリアル >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.)
self.stream = cv2.VideoCapture(0) # Open the default webcam
これにより、効率的でスレッドセーフなフレームのキャプチャと処理が保証されます。
self.model = ChatGoogleGenerativeAI(model="gemini-1.5-flash-latest") response = self.chain.invoke({"prompt": prompt, "image_base64": image_base64})
/video_feed: ライブビデオをストリーミングします。
/process_query: ユーザー入力とビデオ フレームに基づいて AI を活用した分析を処理します。
フロントエンド UI
AWS アカウント。
登録されたドメイン名 (例: example.com)。
Google Cloud アカウントまたは Open AI アカウント
リポジトリで構成された 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 を実際のリポジトリ名に変更してください
プロジェクトに必要な AWS IAM ユーザー シークレットと環境変数を設定します。
AWS 経由でプロジェクトをデプロイするには、AWS シークレットと、.env にローカルで追加された環境変数を Github Actions 環境に追加する必要があります。これは、デプロイメント用の特定の AWS アカウントへのアクセスを保証し、必要な環境変数がデプロイメント環境内で利用可能であることを保証するためです。
私。リポジトリの [設定] に移動します
ii. [シークレットと変数] > [シークレットと変数] をクリックします。アクション
iii.以下のようにシークレットと変数を追加します
![秘密](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7t6vyolkj2jyq85oswh7.png
私。 EC2 インスタンスを起動します
新しいキー ペアを作成するか、既存のキー ペアを使用します。
新しいキー ペアを作成する場合は、[キー ペアの作成] をクリックし、任意の名前を付けます。
キーペアのタイプを 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 マシンで 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 サイトの他の関連記事を参照してください。