在 AWS EC2 上使用 OpenCV、Flask、Gemini Vision 和 GitHub Actions CI/CD 建置人工智慧驅動的即時物件偵測
介紹:
想像一個系統,它可以即時分析即時視訊來源、解釋場景並智慧地回應有關環境的問題,就像一個有眼睛的虛擬助理一樣。這就是將用於視訊處理的 OpenCV 等尖端技術與 Google 的 Gemini 視覺模型相結合,利用其最新的「gemini-1.5-flash-latest」模型的潛力。
在本文中,我將指導您建立一個即時物件偵測系統,該系統使用即時視訊串流和人工智慧驅動的場景分析來提供富有洞察力、情境感知的回應。我們將在 AWS EC2 上部署該應用程序,為可擴展性和實際使用奠定基礎,同時採用 Github Actions 進行自動化 CI/CD,確保無縫更新管道。
在本教程結束時,您將擁有一個功能齊全的人工智慧驅動系統,可供部署,並有信心針對各種用例對其進行擴展和自訂。
專案結構
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
這確保了高效能、線程安全的幀捕獲和處理。
- 人工智慧支援的物體偵測(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:根據使用者輸入和視訊幀處理人工智慧驅動的分析。
-
前端使用者介面
index.html 檔案提供了一個響應式 Web 介面,用於與系統互動。它捕獲用戶查詢並顯示即時人工智慧回應。
先決條件
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 Key。請記得記下您的 API 金鑰的名稱。您也可以在此過程中為其命名。
複製產生的 API 金鑰,返回您的 .env 檔案並將 your_google_api_key 替換為您剛剛複製的金鑰。
c.啟用 Gemini API
搜尋 Gemini API 並點選啟用
確認您的 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.)
注意:將儲存庫名稱變更為您的儲存庫名稱
第 2 步:設定 Github Actions 環境 Secret
配置專案所需的 AWS IAM 使用者金鑰和環境變數。
透過 AWS 部署專案需要將 AWS 金鑰以及本機新增至 .env 的環境變數新增至 Github Actions 環境。這是為了確保能夠存取用於部署的特定 AWS 帳戶,並確保必要的環境變數在部署環境中可用。
我。導航至儲存庫中的「設定」
ii。點選“秘密和變數”>行動
iii。加入您的秘密和變量,如下所示
! [秘密](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7t6vyolkj2jyq85oswh7.png
步驟 3:設定 AWS EC2 執行個體
我。啟動 EC2 執行個體
- 使用 AWS 管理主控台啟動 EC2 執行個體(例如 Ubuntu 22.04)。
- 選擇實例類型(例如,免費套餐用戶選擇 t2.micro)。
- 建立並下載用於 SSH 存取的金鑰對(.pem 檔案)。
建立一個新的金鑰對或使用現有的金鑰對。
如果您要建立新的金鑰對,請按一下「建立金鑰對」並為其指定一個您選擇的名稱。
選擇金鑰對類型為 RSA
文件格式為 .pem
金鑰對會自動下載到您的系統。
- 設定安全群組
允許以下入站規則:
我。 HTTP(連接埠 80):用於為您的應用程式提供服務。
二. HTTPS(連接埠 443):用於安全存取。
三. 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檔案並將要建立的.pem貼上到.ssh目錄中。
按 Ctrl X,然後按 Y,然後按 Enter 儲存。
d.更改 .pem 檔案權限
GOOGLE_API_KEY=your_google_api_key OPENAI_API_KEY=your_openai_api_key FLASK_DEBUG=True
iii。存取執行個體 - SSH 到您的 EC2 執行個體:
點選實例 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 建置人工智慧驅動的即時物件偵測的詳細內容。更多資訊請關注PHP中文網其他相關文章!

ArraySareAryallyMoremory-Moremory-forigationDataDatueTotheIrfixed-SizenatureAntatureAntatureAndirectMemoryAccess.1)arraysStorelelementsInAcontiguxufulock,ReducingOveringOverheadHeadefromenterSormetormetAdata.2)列表,通常

ToconvertaPythonlisttoanarray,usethearraymodule:1)Importthearraymodule,2)Createalist,3)Usearray(typecode,list)toconvertit,specifyingthetypecodelike'i'forintegers.Thisconversionoptimizesmemoryusageforhomogeneousdata,enhancingperformanceinnumericalcomp

Python列表可以存儲不同類型的數據。示例列表包含整數、字符串、浮點數、布爾值、嵌套列表和字典。列表的靈活性在數據處理和原型設計中很有價值,但需謹慎使用以確保代碼的可讀性和可維護性。

Pythondoesnothavebuilt-inarrays;usethearraymoduleformemory-efficienthomogeneousdatastorage,whilelistsareversatileformixeddatatypes.Arraysareefficientforlargedatasetsofthesametype,whereaslistsofferflexibilityandareeasiertouseformixedorsmallerdatasets.

theSostCommonlyusedModuleForCreatingArraysInpyThonisnumpy.1)NumpyProvidEseffitedToolsForarrayOperations,Idealfornumericaldata.2)arraysCanbeCreatedDusingsnp.Array()for1dand2Structures.3)

toAppendElementStoApythonList,usetheappend()方法forsingleements,Extend()formultiplelements,andinsert()forspecificpositions.1)useeAppend()foraddingoneOnelementAttheend.2)useextendTheEnd.2)useextendexendExendEnd(

TocreateaPythonlist,usesquarebrackets[]andseparateitemswithcommas.1)Listsaredynamicandcanholdmixeddatatypes.2)Useappend(),remove(),andslicingformanipulation.3)Listcomprehensionsareefficientforcreatinglists.4)Becautiouswithlistreferences;usecopy()orsl

金融、科研、医疗和AI等领域中,高效存储和处理数值数据至关重要。1)在金融中,使用内存映射文件和NumPy库可显著提升数据处理速度。2)科研领域,HDF5文件优化数据存储和检索。3)医疗中,数据库优化技术如索引和分区提高数据查询性能。4)AI中,数据分片和分布式训练加速模型训练。通过选择适当的工具和技术,并权衡存储与处理速度之间的trade-off,可以显著提升系统性能和可扩展性。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

記事本++7.3.1
好用且免費的程式碼編輯器

Dreamweaver Mac版
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!