Maison >développement back-end >Tutoriel Python >Exploiter la détection d'objets en temps réel dans le navigateur avec TensorFlow.js et COCO-SSD

Exploiter la détection d'objets en temps réel dans le navigateur avec TensorFlow.js et COCO-SSD

王林
王林original
2024-07-25 12:59:131058parcourir

Harnessing Real-Time Object Detection in the Browser with TensorFlow.js and COCO-SSD

Introduction

Ces dernières années, le domaine de l'apprentissage automatique a connu des progrès remarquables, notamment en apportant des modèles puissants aux applications Web. L'une de ces avancées est la possibilité d'effectuer une détection d'objets en temps réel directement dans un navigateur Web, grâce à des technologies telles que TensorFlow.js et des modèles tels que COCO-SSD. Cet article explore comment les développeurs peuvent exploiter ces outils pour créer des applications interactives qui détectent les objets dans les flux de webcam en direct, les images téléchargées ou les vidéos, le tout sans nécessiter de traitement côté serveur.

Comprendre TensorFlow.js et COCO-SSD

TensorFlow.js est une bibliothèque JavaScript développée par Google qui permet aux développeurs d'exécuter des modèles d'apprentissage automatique directement dans le navigateur. Il fournit un moyen de déployer des modèles pré-entraînés ou d'en former de nouveaux à l'aide d'API JavaScript, le rendant accessible et facile à intégrer aux applications Web. COCO-SSD (Common Objects in Context - Single Shot MultiBox Detector) est un modèle pré-entraîné populaire pour la détection d'objets. Il est optimisé pour détecter une grande variété d'objets en temps réel, ce qui le rend adapté aux applications interactives.

Configuration de l'environnement

Pour commencer, les développeurs doivent configurer leur environnement de développement. Cela implique généralement :

  • Inclure TensorFlow.js et COCO-SSD dans le document HTML à l'aide de balises de script :
  <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@latest"></script>
  <script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/coco-ssd@latest"></script>
  • Création d'une structure HTML pour gérer les éléments de l'interface utilisateur tels que la saisie vidéo, le téléchargement d'images et les boutons de contrôle.

Création de l'application

1. Gestion des entrées utilisateur

L'application permet aux utilisateurs de choisir entre différents types de saisie :

  • Webcam : capture directement le flux vidéo en direct de la webcam de l'utilisateur.
  • Image : permet aux utilisateurs de télécharger un fichier image depuis leur appareil.
  • Vidéo : permet aux utilisateurs de télécharger un fichier vidéo pour la détection d'objets.
<div id="inputSelection">
    <label><input type="radio" name="inputType" value="webcam" checked> Webcam</label>
    <label><input type="radio" name="inputType" value="image"> Image</label>
    <label><input type="radio" name="inputType" value="video"> Video</label>
</div>
<input type="file" id="imageInput" accept="image/*" style="display:none;">
<input type="file" id="videoInput" accept="video/*" style="display:none;">

2. Affichage des entrées et des résultats

L'application affiche dynamiquement l'entrée sélectionnée (vidéo ou image) et les résultats de détection à l'aide d'éléments HTML5 tels que

<div id="videoContainer">
    <video id="videoElement" autoplay playsinline></video>
    <div id="infoBox" class="infoBox">
        <p><strong>Detected Object:</strong> <span id="objectLabel"></span></p>
        <p><strong>Confidence:</strong> <span id="confidenceScore"></span></p>
    </div>
</div>
<img id="imageDisplay">
<video id="videoDisplay" controls loop></video>
<canvas id="outputCanvas"></canvas>

3. Implémentation de la logique de détection d'objets

JavaScript (script.js) gère la logique de détection d'objets à l'aide de TensorFlow.js et COCO-SSD. Cela implique :

  • Initialiser le modèle et le charger de manière asynchrone :
  async function loadModel() {
      const model = await cocoSsd.load();
      return model;
  }
  • Effectuer la détection sur l'entrée sélectionnée (vidéo ou image) et mettre à jour l'interface utilisateur avec les résultats :
  async function detectObjects(input) {
      const model = await loadModel();
      const predictions = await model.detect(input);
      // Update UI with predictions
  }
  • Gérer différents types d'entrées (webcam, image, vidéo) et déclencher la détection en fonction des actions de l'utilisateur.

4. Interaction et contrôles utilisateur

L'application comprend des boutons pour contrôler la détection d'objets :

  • Démarrer la détection : lance la détection d'objet en fonction de l'entrée sélectionnée.
  • Arrêter la détection : met en pause ou arrête le processus de détection.
  • Capturer une capture d'écran : permet aux utilisateurs de capturer une capture d'écran du résultat de détection actuel.
<div id="controls">
    <button id="startButton">Start Detection</button>
    <button id="stopButton" disabled>Stop Detection</button>
    <button id="captureButton" disabled>Capture Screenshot</button>
</div>

5. Améliorer l'expérience utilisateur

Pour offrir une expérience transparente, l'application comprend un indicateur de chargement (

Loading...
) pour avertir les utilisateurs lorsque TensorFlow.js et le modèle COCO-SSD sont en cours de chargement.

Conclusion

En conclusion, TensorFlow.js combiné à COCO-SSD ouvre des possibilités intéressantes pour la détection d'objets en temps réel directement dans les navigateurs Web. Cet article a démontré les composants et les étapes fondamentaux impliqués dans la création d'une telle application, de la configuration de l'environnement à la mise en œuvre de la logique de détection d'objets et à l'amélioration de l'interaction utilisateur. Les développeurs peuvent désormais exploiter ces technologies pour créer des applications Web interactives et réactives qui repoussent les limites de ce qui est possible avec l'apprentissage automatique sur le Web. À mesure que ces technologies continuent d’évoluer, l’avenir semble prometteur pour des expériences Web encore plus sophistiquées et accessibles basées sur l’IA.

Voici le dépôt Github

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn