Stellen Sie sich ein System vor, das Live-Video-Feeds in Echtzeit analysieren, Szenen interpretieren und intelligent auf Fragen zur Umgebung reagieren kann – genau wie ein virtueller Assistent mit Augen. Dies ist das Potenzial der Kombination modernster Technologien wie OpenCV für die Videoverarbeitung und des Gemini-Vision-Modells von Google unter Nutzung des neuesten „gemini-1.5-flash-latest“-Modells.
In diesem Artikel werde ich Sie durch den Aufbau eines Echtzeit-Objekterkennungssystems führen, das Live-Videostreaming und KI-gestützte Szenenanalyse nutzt, um aufschlussreiche, kontextbezogene Antworten zu liefern. Wir stellen die Anwendung auf AWS EC2 bereit und schaffen so die Voraussetzungen für Skalierbarkeit und realen Einsatz, während wir Github Actions für automatisiertes CI/CD einsetzen und so eine nahtlose Update-Pipeline gewährleisten.
Am Ende dieses Tutorials verfügen Sie über ein voll funktionsfähiges KI-gestütztes System, das für die Bereitstellung bereit ist und Sie die Sicherheit haben, es für verschiedene Anwendungsfälle zu erweitern und anzupassen.
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
Dies gewährleistet eine effiziente, threadsichere Frame-Erfassung und -Verarbeitung.
self.model = ChatGoogleGenerativeAI(model="gemini-1.5-flash-latest") response = self.chain.invoke({"prompt": prompt, "image_base64": image_base64})
/video_feed: Streamt Live-Videos.
/process_query: Verarbeitet KI-gestützte Analysen basierend auf Benutzereingaben und Videobildern.
Frontend-Benutzeroberfläche
Ein AWS-Konto.
Ein registrierter Domainname (z. B. example.com).
Ein Google Cloud-Konto oder ein Open AI-Konto
GitHub-Aktionen in Ihrem Repository konfiguriert.
A. Klonen Sie das Repository
$ git clone https://github.com/Abunuman/Real-Time-ODS.git $ cd Real-Time-ODS
B. Generieren Sie Ihren API-Schlüssel und fügen Sie ihn einer .env-Datei hinzu
ich. Erstellen Sie eine .env-Datei entweder manuell über die Optionen auf der linken Seite Ihres Texteditors (ich habe VScode verwendet)
ODER
Führen Sie auf dem Terminal Folgendes aus:
$ touch .env
Dann fügen Sie diese in die .env ein
GOOGLE_API_KEY=your_google_api_key OPENAI_API_KEY=your_openai_api_key FLASK_DEBUG=True
ii. Melden Sie sich bei Google Cloud an und befolgen Sie diese Schritte, um Ihren API-Schlüssel zu generieren.
a. Navigieren Sie zum Abschnitt „API & Dienste“
b. Klicken Sie auf Anmeldeinformationen und befolgen Sie dann die anderen Schritte unten
Anmeldeinformationen erstellen > API-Schlüssel, dann wird der API-Schlüssel generiert. Denken Sie daran, den Namen Ihres API-Schlüssels zu notieren. Sie können ihm während des Vorgangs auch einen Namen geben.
Kopieren Sie den generierten API-Schlüssel, gehen Sie zurück zu Ihrer .env-Datei und ersetzen Sie your_google_api_key durch den Schlüssel, den Sie gerade kopiert haben.
c. Aktivieren Sie die Gemini-API
Suchen Sie nach Gemini API und klicken Sie auf AKTIVIEREN
Bestätigen Sie, dass sich Ihr API-Schlüssel im Abschnitt METRICS and Credentials unter der Enabled Gemini API befindet.
iii. Erstellen Sie eine .gitignore-Datei und fügen Sie .env zur Datei hinzu, damit sie nicht an Github übertragen wird.
Hinweis: Standardmäßig wird sichergestellt, dass Geheimnisse und Umgebungsvariablen nicht der Öffentlichkeit zugänglich gemacht werden. Daher ist ein .gitignore erforderlich, um darin hinzugefügte Dateien beim Pushen an Github zu ignorieren.
B. Push to Repository.
ich. Erstellen Sie ein Github-Repository mit dem Anwendungsnamen und befolgen Sie die folgenden Befehle, um es an Github zu übertragen
project/ ├── app.py # Flask application code ├── requirements.txt # Python dependencies ├── templates/ │ └── index.html # Frontend UI └── .env # Environment variables (API keys, etc.)
Hinweis: Ändern Sie den Repository-Namen in Ihren Repository-Namen
Konfigurieren Sie Ihre AWS IAM-Benutzergeheimnisse und Umgebungsvariablen, die für das Projekt benötigt werden.
Die Bereitstellung des Projekts über AWS erfordert, dass AWS-Geheimnisse sowie die lokal zu Ihrer .env hinzugefügten Umgebungsvariablen zur Github Actions-Umgebung hinzugefügt werden. Dadurch soll der Zugriff auf das spezifische AWS-Konto sichergestellt werden, das für die Bereitstellung bestimmt ist, und außerdem wird sichergestellt, dass die erforderlichen Umgebungsvariablen in der Bereitstellungsumgebung verfügbar sind.
ich. Navigieren Sie in Ihrem Repository zu „Einstellungen“
ii. Klicken Sie auf Geheimnisse und Variablen > Aktionen
iii. Fügen Sie Ihre Geheimnisse und Variablen wie unten beschrieben hinzu
![Geheimnisse](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7t6vyolkj2jyq85oswh7.png
ich. Starten Sie eine EC2-Instanz
Erstellen Sie ein neues Schlüsselpaar oder verwenden Sie ein vorhandenes.
Wenn Sie ein neues Schlüsselpaar erstellen, klicken Sie auf Schlüsselpaar erstellen und geben Sie ihm einen Namen Ihrer Wahl.
Wählen Sie als Schlüsselpaartyp RSA aus
Dateiformat als .pem
Das Schlüsselpaar wird automatisch auf Ihr System heruntergeladen.
Erlauben Sie die folgenden eingehenden Regeln:
ich. HTTP (Port 80): Zur Bereitstellung Ihrer Anwendung.
ii. HTTPS (Port 443): Für sicheren Zugriff.
iii. SSH (Port 22): Für Verwaltungszugriff.
Jetzt ist Ihre Instanz einsatzbereit, sobald der Status „Wird ausgeführt“ anzeigt.
ii. Konfigurieren Sie das Schlüsselpaar (.pem-Schlüssel) für den SSH-Zugriff
Für Mac-Book-Benutzer oder Linux-Benutzer mit Bash-Terminal konfigurieren Sie Ihr Schlüsselpaar für den SSH-Zugriff folgendermaßen:
a. Öffnen Sie den heruntergeladenen .pem-Schlüssel mit VScode oder Xcode
b. Navigieren Sie auf Ihrem Terminal vom Stammverzeichnis (~) zum Verzeichnis .ssh
project/ ├── app.py # Flask application code ├── requirements.txt # Python dependencies ├── templates/ │ └── index.html # Frontend UI └── .env # Environment variables (API keys, etc.)
c. Erstellen Sie mit den Texteditoren nano oder vim eine .pem-Datei im .ssh-Verzeichnis. Ich werde in diesem Tutorial Nano verwenden.
Installieren Sie nano, wenn Sie es nicht installiert haben.
Für MacBook-Benutzer
self.stream = cv2.VideoCapture(0) # Open the default webcam
Für Linux-Benutzer
self.model = ChatGoogleGenerativeAI(model="gemini-1.5-flash-latest") response = self.chain.invoke({"prompt": prompt, "image_base64": image_base64})
Erstellen Sie nach der Installation die .pem-Datei im .ssh-Verzeichnis mit nano.
Stellen Sie sicher, dass die zu erstellende Datei den genauen Namen Ihrer .pem-Datei trägt.
$ git clone https://github.com/Abunuman/Real-Time-ODS.git $ cd Real-Time-ODS
Kopieren Sie dann die bereits geöffnete .pem-Datei und fügen Sie die zu erstellende .pem-Datei in das .ssh-Verzeichnis ein.
Drücken Sie Strg X, dann Y und dann die Eingabetaste, um zu speichern.
d. Ändern Sie die .pem-Dateiberechtigung
GOOGLE_API_KEY=your_google_api_key OPENAI_API_KEY=your_openai_api_key FLASK_DEBUG=True
iii. Greifen Sie auf die Instanz zu – SSH in Ihre EC2-Instanz:
Klicken Sie auf die Instanz-ID. Sobald die Instanz ausgeführt wird, wählen Sie die Verbindungsoption
ausSobald Sie sich auf der Verbindungsseite befinden, gehen Sie zum SSH-Client
Kopieren Sie dann den letzten Befehl auf der Seite, der so aussieht:
$ 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
Fügen Sie dies in Ihr Terminal ein und drücken Sie die Eingabetaste. Sie sollten eine nahtlose Verbindung herstellen.
Für Windows-Benutzer
Öffnen Sie CMD auf Ihrem Windows-Rechner
Suchen Sie das gewünschte Verzeichnis, in dem die PIM-Datei gespeichert ist
Idealerweise können wir von diesem Verzeichnis aus den kopierten SSH-Befehl ausführen und sollten in der Lage sein, eine Verbindung zu EC2 herzustellen. Manchmal erhalten wir jedoch einen Sicherheitsberechtigungsfehler, wenn wir den SSH-Befehl ausführen.
Wir müssen die Berechtigungen für die .pem-Datei ändern.
Befolgen Sie dazu die folgenden Schritte.
Suchen Sie den .pem-Dateiordner, klicken Sie mit der rechten Maustaste auf die Datei und wählen Sie Eigenschaften
Gehen Sie zur Registerkarte „Sicherheit“
Gehen Sie zur Registerkarte „Erweitert“
Klicken Sie auf Vererbung deaktivieren
Diese erweiterten Optionen zeigen auch andere Benutzer an, die über alle Berechtigungen für die PEM-Datei verfügen. Berechtigung für alle anderen Benutzer entfernen
Fügen Sie den Benutzer hinzu, mit dem Sie eine Verbindung zu EC2 herstellen möchten, falls er nicht bereits in der Benutzerliste vorhanden ist.
Alle Berechtigungen für diesen Benutzer aktivieren.
Im Idealfall sollte bei diesen Schritten kein Fehler auftreten.
Führen Sie den SSH-Befehl über die CMD-Eingabeaufforderung aus
Sobald die Berechtigungen festgelegt sind, stellt die Eingabeaufforderung erfolgreich eine Verbindung zu EC2 her
Jetzt haben Sie die Schritte erfolgreich abgeschlossen und können Befehle von Windows CMD auf der EC2-Instanz ausführen.
iv.Abhängigkeiten installieren – Aktualisieren Sie die Paketliste und installieren Sie die erforderlichen Pakete:
Nachdem Sie über SSH eine Verbindung zu Ihrer EC2-Instanz hergestellt haben, installieren Sie Abhängigkeiten auf EC2.
Führen Sie auf Ihrem verbundenen Terminal die folgenden Befehle aus:
project/ ├── app.py # Flask application code ├── requirements.txt # Python dependencies ├── templates/ │ └── index.html # Frontend UI └── .env # Environment variables (API keys, etc.)
Überprüfen Sie die installierte Version von Python3 und stellen Sie sicher, dass es sich um 3.12 handelt
self.stream = cv2.VideoCapture(0) # Open the default webcam
Schritt 2: Bereitstellen der Anwendung
Richten Sie die Anwendung ein
Übertragen Sie app.py, index.html und require.txt an die EC2-Instanz:
self.model = ChatGoogleGenerativeAI(model="gemini-1.5-flash-latest") response = self.chain.invoke({"prompt": prompt, "image_base64": image_base64})
Schritt 3: GitHub-Aktionen für CI/CD konfigurieren
Erstellen Sie eine Workflow-Datei in Ihrem Repository und fügen Sie eine .github/workflows/main.yml-Datei hinzu:
$ git clone https://github.com/Abunuman/Real-Time-ODS.git $ cd Real-Time-ODS
In diesem Tutorial haben wir uns auf eine umfassende Reise zum Aufbau und Einsatz eines Echtzeit-Objekterkennungssystems begeben, das OpenCV für die Live-Videoerfassung und Googles ChatGoogleGenerativeAI für die intelligente Szenenanalyse nahtlos integriert. Von der lokalen Konfiguration der Anwendung bis zur sicheren Bereitstellung auf AWS EC2 mit einer benutzerdefinierten Domäne und SSL haben wir alle wesentlichen Schritte abgedeckt, um Ihre Idee in eine funktionale und skalierbare Lösung umzuwandeln.
Dieses Projekt unterstreicht die Leistungsfähigkeit der Kombination modernster Technologien wie Flask, OpenCV und KI, um reale Probleme zu lösen und gleichzeitig Best Practices für die Cloud-Bereitstellung sicherzustellen. Indem Sie diese Schritte befolgen, haben Sie nicht nur ein robustes KI-gestütztes System bereitgestellt, sondern auch Skalierbarkeit, Sicherheit und effiziente CI/CD-Pipelines sichergestellt.
Das obige ist der detaillierte Inhalt vonAufbau einer KI-gestützten Echtzeit-Objekterkennung mit OpenCV, Flask, Gemini Vision und GitHub Actions CI/CD auf AWS EC2. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!