Imaginez un système capable d'analyser les flux vidéo en direct en temps réel, d'interpréter les scènes et de répondre intelligemment aux questions sur l'environnement, tout comme un assistant virtuel doté d'yeux. C'est le potentiel de combiner des technologies de pointe comme OpenCV pour le traitement vidéo et le modèle de vision Gemini de Google, en tirant parti de son dernier modèle "gemini-1.5-flash-latest".
Dans cet article, je vais vous guider dans la création d'un système de détection d'objets en temps réel qui utilise le streaming vidéo en direct et l'analyse de scène basée sur l'IA pour fournir des réponses perspicaces et contextuelles. Nous déploierons l'application sur AWS EC2, ouvrant la voie à l'évolutivité et à l'utilisation dans le monde réel tout en utilisant les actions Github pour le CI/CD automatisé, garantissant ainsi un pipeline de mise à jour transparent.
À la fin de ce didacticiel, vous disposerez d'un système entièrement fonctionnel, alimenté par l'IA, prêt à être déployé, avec la confiance nécessaire pour l'étendre et le personnaliser pour divers cas d'utilisation.
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
Cela garantit une capture et un traitement des images efficaces et sécurisés.
self.model = ChatGoogleGenerativeAI(model="gemini-1.5-flash-latest") response = self.chain.invoke({"prompt": prompt, "image_base64": image_base64})
/video_feed : diffuse des vidéos en direct.
/process_query : gère l'analyse basée sur l'IA en fonction des entrées de l'utilisateur et des images vidéo.
Interface utilisateur frontale
Un compte AWS.
Un nom de domaine enregistré (par exemple, exemple.com).
Un compte Google Cloud ou un compte Open AI
Actions GitHub configurées dans votre référentiel.
A. Cloner le référentiel
$ git clone https://github.com/Abunuman/Real-Time-ODS.git $ cd Real-Time-ODS
B. Générez votre clé API et ajoutez-la à un fichier .env
je. Créez un fichier .env soit manuellement à partir des options disponibles sur le côté gauche de votre éditeur de texte (j'ai utilisé VScode)
OU
Sur le terminal, exécutez :
$ touch .env
Ensuite, ajoutez-les dans le .env
GOOGLE_API_KEY=your_google_api_key OPENAI_API_KEY=your_openai_api_key FLASK_DEBUG=True
ii. Connectez-vous à Google Cloud et suivez ces étapes pour générer votre clé API.
a. Accédez à la section API et services
b. Cliquez sur Identifiants puis suivez les autres étapes ci-dessous
Créer des informations d'identification > Clé API, la clé API est alors générée. Pensez à noter le nom de votre clé API. Vous pouvez également lui donner un nom au cours du processus.
Copiez la clé API générée, revenez à votre fichier .env et remplacez your_google_api_key par la clé que vous venez de copier.
c. Activer l'API Gemini
Recherchez l'API Gemini et cliquez sur ACTIVER
Confirmez que votre clé API se trouve dans la section MÉTRIQUES et informations d'identification sous l'API Gemini activée.
iii. Créez un fichier .gitignore et ajoutez .env au fichier afin qu'il ne soit pas poussé vers github.
N.B. : La pratique standard consiste à garantir que les secrets et les variables d'environnement ne sont pas exposés au public. D'où la nécessité pour un .gitignore d'ignorer les fichiers qui y sont ajoutés lors de la transmission vers Github.
B. Pousser vers le référentiel.
je. Créez un référentiel Github avec le nom de l'application et suivez les commandes ci-dessous pour pousser vers github
project/ ├── app.py # Flask application code ├── requirements.txt # Python dependencies ├── templates/ │ └── index.html # Frontend UI └── .env # Environment variables (API keys, etc.)
N.B : remplacez le nom du référentiel par le nom de votre référentiel
Configurez vos secrets utilisateur AWS IAM et les variables d'environnement nécessaires au projet.
Le déploiement du projet via AWS nécessite que les secrets AWS ainsi que les variables d'environnement ajoutées localement à votre .env soient ajoutés à l'environnement Github Actions. Il s'agit de garantir l'accès au compte AWS spécifique destiné au déploiement et également de garantir que les variables d'environnement nécessaires sont disponibles dans l'environnement de déploiement.
je. Accédez aux paramètres de votre référentiel
ii. Cliquez sur Secrets et variables > Actions
iii. Ajoutez vos secrets et variables comme ci-dessous
![Secrets](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7t6vyolkj2jyq85oswh7.png
je. Lancer une instance EC2
Créez une nouvelle paire de clés ou utilisez-en une existante.
Si vous créez une nouvelle paire de clés, cliquez sur créer une paire de clés et donnez-lui le nom de votre choix.
Sélectionnez le type de paire de clés comme RSA
Format de fichier au format .pem
La paire de clés est automatiquement téléchargée sur votre système.
Autoriser les règles entrantes suivantes :
je. HTTP (port 80) : pour servir votre application.
ii. HTTPS (port 443) : Pour un accès sécurisé.
iii. SSH (port 22) : Pour l'accès à la gestion.
Votre instance est désormais prête à être utilisée une fois que l'état indique « En cours d'exécution ».
ii. Configurer la paire de clés (clé .pem) pour l'accès SSH
Pour les utilisateurs de Mac book ou de Linux avec terminal bash, configurez votre paire de clés pour l'accès SSH ainsi :
a. Ouvrez la clé .pem téléchargée à l'aide de VScode ou Xcode
b. Sur votre terminal, accédez au répertoire .ssh depuis le répertoire racine (~)
project/ ├── app.py # Flask application code ├── requirements.txt # Python dependencies ├── templates/ │ └── index.html # Frontend UI └── .env # Environment variables (API keys, etc.)
c. Créez un fichier .pem dans le répertoire .ssh à l'aide des éditeurs de texte nano ou vim ; J'utiliserai nano dans ce tutoriel.
Installez nano si vous ne l'avez pas installé.
Pour les utilisateurs de MacBook
self.stream = cv2.VideoCapture(0) # Open the default webcam
Pour les utilisateurs Linux
self.model = ChatGoogleGenerativeAI(model="gemini-1.5-flash-latest") response = self.chain.invoke({"prompt": prompt, "image_base64": image_base64})
Après l'avoir installé, créez le fichier .pem dans le répertoire .ssh à l'aide de nano.
Assurez-vous que le fichier à créer porte le nom exact de votre fichier .pem.
$ git clone https://github.com/Abunuman/Real-Time-ODS.git $ cd Real-Time-ODS
Copiez ensuite le fichier .pem déjà ouvert et collez-y le .pem à créer dans le répertoire .ssh.
Appuyez sur Ctrl X, puis Y, puis Entrée pour enregistrer.
d. Modifier l'autorisation du fichier .pem
GOOGLE_API_KEY=your_google_api_key OPENAI_API_KEY=your_openai_api_key FLASK_DEBUG=True
iii. Accédez à l'instance - SSH dans votre instance EC2 :
Cliquez sur l'ID de l'instance. Une fois l'instance en cours d'exécution, sélectionnez l'option de connexion
Une fois que vous êtes sur la page de connexion, accédez au client SSH
Copiez ensuite la dernière commande sur la page qui ressemble à ceci :
$ 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
Collez ceci sur votre terminal et appuyez sur Entrée. Vous devez vous connecter de manière transparente.
Pour les utilisateurs Windows
Ouvrez CMD sur votre ordinateur Windows
Localisez le répertoire souhaité où le fichier .pim est stocké
Idéalement à partir de ce répertoire, nous pouvons exécuter la commande ssh copiée et nous devrions pouvoir nous connecter à EC2. Cependant, nous obtenons parfois une erreur d'autorisations de sécurité lorsque nous exécutons la commande ssh.
Nous devons modifier les autorisations sur le fichier .pem.
Pour cela, suivez les étapes ci-dessous.
Localisez le dossier du fichier .pem, faites un clic droit sur le fichier et sélectionnez les propriétés
Allez dans l'onglet Sécurité
Aller à l'onglet Avancé
Cliquez sur Désactiver l'héritage
Cette option avancée montre également que les autres utilisateurs disposent de toutes les autorisations sur le fichier .pem. Supprimer l'autorisation pour tous les autres utilisateurs
Ajoutez l'utilisateur avec lequel vous essayez de vous connecter à EC2 s'il n'est pas déjà présent dans la liste des utilisateurs.
Activer toutes les autorisations pour cet utilisateur.
Idéalement, avec ces étapes, vous ne devriez pas rencontrer d'erreur.
Exécutez la commande SSH à partir de l'invite CMD
Une fois les autorisations corrigées, l'invite se connectera avec succès à EC2
Vous avez maintenant terminé les étapes avec succès et vous pouvez exécuter des commandes à partir de Windows CMD sur l'instance EC2.
iv.Install Dependencies - Mettez à jour la liste des packages et installez les packages nécessaires :
Après vous être connecté à votre instance EC2 via SSH, installez les dépendances sur EC2.
Sur votre terminal connecté, exécutez les commandes suivantes :
project/ ├── app.py # Flask application code ├── requirements.txt # Python dependencies ├── templates/ │ └── index.html # Frontend UI └── .env # Environment variables (API keys, etc.)
Vérifiez la version de python3 installée, assurez-vous qu'elle est 3.12
self.stream = cv2.VideoCapture(0) # Open the default webcam
Étape 2 : Déployer l'application
Configurer l'application
Transférez app.py, index.html et Requirements.txt vers l'instance EC2 :
self.model = ChatGoogleGenerativeAI(model="gemini-1.5-flash-latest") response = self.chain.invoke({"prompt": prompt, "image_base64": image_base64})
Étape 3 : Configuration des actions GitHub pour CI/CD
Créez un fichier de workflow dans votre référentiel, ajoutez un fichier .github/workflows/main.yml :
$ git clone https://github.com/Abunuman/Real-Time-ODS.git $ cd Real-Time-ODS
Dans ce didacticiel, nous nous sommes lancés dans un parcours complet pour créer et déployer un système de détection d'objets en temps réel qui intègre de manière transparente OpenCV pour la capture vidéo en direct et ChatGoogleGenerativeAI de Google pour l'analyse intelligente des scènes. De la configuration locale de l'application à son déploiement sécurisé sur AWS EC2 avec un domaine personnalisé et SSL, nous avons couvert toutes les étapes essentielles pour transformer votre idée en une solution fonctionnelle et évolutive.
Ce projet met en évidence la puissance de la combinaison de technologies de pointe telles que Flask, OpenCV et l'IA pour résoudre des problèmes du monde réel tout en garantissant les meilleures pratiques de déploiement cloud. En suivant ces étapes, vous avez non seulement déployé un système robuste alimenté par l'IA, mais vous avez également assuré l'évolutivité, la sécurité et l'efficacité des pipelines CI/CD.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!