Qu'est-ce que YOLO.js ?
YOLO.js est une implémentation en JavaScript du modèle YOLO (You Only Look Once), un algorithme de détection d'objets en temps réel. Il permet d'exécuter la détection directement dans le navigateur en exploitant WebGL et WebAssembly.
L'objectif de ce projet était d'intégrer YOLO.js dans une application web pour tester ses performances et son fonctionnement, puis de l'emballer en une application mobile avec Capacitor, tout en mettant en place une intégration continue (CI) sur GitLab.
Installation
Pour utiliser YOLO.js, vous devez d'abord l'installer via npm ou inclure la bibliothèque dans votre projet.
npm install @yolojs/core
Ou inclure le script directement dans votre HTML :
<script src="https://cdn.jsdelivr.net/npm/yolojs"></script>
Utilisation de Base
Voici un exemple simple d'utilisation de YOLO.js pour détecter des objets dans une image :
import { loadModel, detectObjects } from "@yolojs/core";
async function runYOLO() {
const model = await loadModel();
const image = document.getElementById("input-image");
const detections = await detectObjects(model, image);
console.log(detections);
}
runYOLO();
Détection en Temps Réel avec une Webcam
YOLO.js peut aussi être utilisé avec une webcam pour détecter des objets en direct :
async function runWebcamDetection() {
const video = document.createElement("video");
video.width = 640;
video.height = 480;
document.body.appendChild(video);
navigator.mediaDevices.getUserMedia({ video: true }).then((stream) => {
video.srcObject = stream;
video.play();
});
const model = await loadModel();
async function detect() {
const detections = await detectObjects(model, video);
console.log(detections);
requestAnimationFrame(detect);
}
detect();
}
runWebcamDetection();
Transformation en Application Mobile avec Capacitor
Une fois YOLO.js fonctionnel dans le navigateur, nous avons utilisé Capacitor pour convertir l'application web en une application mobile (APK).
Installation de Capacitor
npm install @capacitor/core @capacitor/cli
npx cap init my-app com.example.myapp
Ajout de la plateforme Android
npx cap add android
Construction et exécution
npm run build
npx cap copy android
npx cap open android
Mise en Place d'un CI sous GitLab
Pour automatiser le déploiement de notre application, nous avons configuré un CI/CD pipeline sous GitLab. Voici un exemple de fichier .gitlab-ci.yml
pour automatiser l'intégration et la génération de l'APK :
stages:
- install
- build
- deploy
install_dependencies:
stage: install
script:
- npm install
build_app:
stage: build
script:
- npm run build
- npx cap copy android
build_apk:
stage: deploy
script:
- cd android && ./gradlew assembleDebug
artifacts:
paths:
- android/app/build/outputs/apk/debug/app-debug.apk
Conclusion
YOLO.js est une solution puissante et accessible pour la détection d'objets en temps réel directement dans un navigateur. En combinant Capacitor, nous avons pu transformer cette application en APK mobile et automatiser le processus avec GitLab CI.
🚀 Expérimentez avec YOLO.js, créez des applications mobiles et automatisez leur déploiement !