想象一个系统,它可以实时分析实时视频源、解释场景并智能地响应有关环境的问题,就像一个有眼睛的虚拟助手一样。这就是将用于视频处理的 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.)
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:根据用户输入和视频帧处理人工智能驱动的分析。
前端用户界面
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 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.)
注意:将存储库名称更改为您的存储库名称
配置项目所需的 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):用于为您的应用程序提供服务。
二. 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 计算机上打开 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中文网其他相关文章!