在 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。添加您的秘密和变量,如下所示
。
- 选择实例类型(例如,免费套餐用户选择 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中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。 Python以简洁和强大的生态系统着称,C 则以高性能和底层控制能力闻名。

Python在游戏和GUI开发中表现出色。1)游戏开发使用Pygame,提供绘图、音频等功能,适合创建2D游戏。2)GUI开发可选择Tkinter或PyQt,Tkinter简单易用,PyQt功能丰富,适合专业开发。

两小时内可以学到Python的基础知识。1.学习变量和数据类型,2.掌握控制结构如if语句和循环,3.了解函数的定义和使用。这些将帮助你开始编写简单的Python程序。

2小时内可以学会Python的基本编程概念和技能。1.学习变量和数据类型,2.掌握控制流(条件语句和循环),3.理解函数的定义和使用,4.通过简单示例和代码片段快速上手Python编程。

Python更易学且易用,C 则更强大但复杂。1.Python语法简洁,适合初学者,动态类型和自动内存管理使其易用,但可能导致运行时错误。2.C 提供低级控制和高级特性,适合高性能应用,但学习门槛高,需手动管理内存和类型安全。

Python在web开发、数据科学、机器学习、自动化和脚本编写等领域有广泛应用。1)在web开发中,Django和Flask框架简化了开发过程。2)数据科学和机器学习领域,NumPy、Pandas、Scikit-learn和TensorFlow库提供了强大支持。3)自动化和脚本编写方面,Python适用于自动化测试和系统管理等任务。

要在有限的时间内最大化学习Python的效率,可以使用Python的datetime、time和schedule模块。1.datetime模块用于记录和规划学习时间。2.time模块帮助设置学习和休息时间。3.schedule模块自动化安排每周学习任务。

Python在自动化、脚本编写和任务管理中表现出色。1)自动化:通过标准库如os、shutil实现文件备份。2)脚本编写:使用psutil库监控系统资源。3)任务管理:利用schedule库调度任务。Python的易用性和丰富库支持使其在这些领域中成为首选工具。
