


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 サイトの他の関連記事を参照してください。

sostCommonlylysedModule forcreatinginpythonisnumpy.1)numProvidesefficientToolsForArrayoperations、理想的なfornumericaldata.2)arrayscanbecreatedusingnp.array()for1dand2dstructures.3)

toAppendElementStoapyThonList、usetheappend()methodforsingleelements、extend()formultipleElements、andinsert()forspecificopsitions.1)useappend()foraddingoneElementatheend.2)useextend()toaddmultipleelementseffictience.3)

To CreateapythonList、usesquareBrackets []およびSeparateItemswithcommas.1)listsaredynamicandcanholdmixdatatypes.2)useappend()、remaid()、andslicingformanipulation.3)listcompreheNsionsionsionsionsionsionsionsionsionsionsionsionsionsionsionsionsionsientionforcreating.4)

金融、科学研究、医療、およびAIの分野では、数値データを効率的に保存および処理することが重要です。 1)財務では、メモリマッピングされたファイルとnumpyライブラリを使用すると、データ処理速度が大幅に向上する可能性があります。 2)科学研究の分野では、HDF5ファイルはデータストレージと取得用に最適化されています。 3)医療では、インデックス作成やパーティション化などのデータベース最適化テクノロジーがデータのパフォーマンスを向上させます。 4)AIでは、データシャーディングと分散トレーニングがモデルトレーニングを加速します。システムのパフォーマンスとスケーラビリティは、適切なツールとテクノロジーを選択し、ストレージと処理速度の間のトレードオフを検討することにより、大幅に改善できます。

pythonarraysarasarecreatedusingthearraymodule、notbuilt-inlikelists.1)importthearraymodule.2)specifytheTypecode、emg。、 'i'forintegers.3)Arraysofferbettermemoreefficiency forhomogeneousdatabutlasefutablethanlists。

Shebangラインに加えて、Pythonインタープリターを指定するには多くの方法があります。1。コマンドラインから直接Pythonコマンドを使用します。 2。バッチファイルまたはシェルスクリプトを使用します。 3. makeやcmakeなどのビルドツールを使用します。 4. Invokeなどのタスクランナーを使用します。各方法には利点と短所があり、プロジェクトのニーズに合った方法を選択することが重要です。

forhandlinglaredataSetsinpython、usenumpyArrays forbetterperformance.1)numpyarraysarememory-effictientandfasterfornumericaloperations.2)nusinnnnedarytypeconversions.3)レバレッジベクトル化は、測定済みのマネージメーシェイメージーウェイズデイタイです

inpython、listsusedynamicmemoryallocation with allocation、whilenumpyArraysalocatefixedmemory.1)listsallocatemorememorythanneededededinitivative.2)numpyArrayasallocateexactmemoryforements、rededicablebutlessflexibilityを提供します。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

Dreamweaver Mac版
ビジュアル Web 開発ツール

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

WebStorm Mac版
便利なJavaScript開発ツール
