<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://wiki.tge.cegeplabs.qc.ca/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=2182036</id>
	<title>Wiki TGE CSTwiki - Contributions [fr]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.tge.cegeplabs.qc.ca/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=2182036"/>
	<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php/Sp%C3%A9cial:Contributions/2182036"/>
	<updated>2026-04-17T15:47:12Z</updated>
	<subtitle>Contributions</subtitle>
	<generator>MediaWiki 1.43.3</generator>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=1042</id>
		<title>Reconnaissance objet</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=1042"/>
		<updated>2026-03-29T21:45:11Z</updated>

		<summary type="html">&lt;p&gt;2182036 : /* Conversion NCNN (optimisation Raspberry Pi) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description du projet==&lt;br /&gt;
Le but du projet est de détecter un objet (dans notre cas, un chariot élévateur) dans une image provenant d&#039;une caméra à l&#039;aide d&#039;un modèle de reconnaissance d&#039;objets préentraîné. Lorsque le programme détecte un chariot élévateur, un gyrophare s&#039;active afin d&#039;avertir les travailleurs de sa présence. Le programme s&#039;exécute sur un Raspberry Pi 5, un micro-ordinateur doté d&#039;entrées et de sorties programmables. La caméra y est connectée directement par USB. Étant donné que les sorties du Raspberry Pi fonctionnent en 3,3 V CC, un relais est utilisé pour commander l&#039;alimentation d&#039;un gyrophare fonctionnant en 120 V CA.&lt;br /&gt;
 &lt;br /&gt;
:[[File:lift.png|800px]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
===Fonctionnement global===&lt;br /&gt;
 &lt;br /&gt;
Le projet repose sur un seul fichier Python principal (main.py) qui gère simultanément la détection YOLO et le contrôle des sorties GPIO grâce à un système de thread séparé.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Structure des fichiers====&lt;br /&gt;
 &lt;br /&gt;
Le dossier de projet est organisé en trois catégories selon leur utilisation.&lt;br /&gt;
 &lt;br /&gt;
:[[File:wikilayout.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Fichier !! Rôle !! Catégorie&lt;br /&gt;
|-&lt;br /&gt;
| main.py || Fichier principal — lance la détection YOLO et contrôle les GPIO || Exécution&lt;br /&gt;
|-&lt;br /&gt;
| modelv1_ncnn_model/ || Modèle YOLO converti au format NCNN (dossier) || Exécution&lt;br /&gt;
|-&lt;br /&gt;
| record.py || Enregistre une vidéo depuis la caméra USB || Création du dataset&lt;br /&gt;
|-&lt;br /&gt;
| extract_frames.py || Extrait des images d&#039;une vidéo pour créer un dataset || Création du dataset&lt;br /&gt;
|-&lt;br /&gt;
| convert_ncnn.py || Convertit un modèle .pt au format NCNN || Conversion&lt;br /&gt;
|-&lt;br /&gt;
| modelv1.pt || Modèle YOLO original (format PyTorch) || Conversion&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====Fichier Python principal (main.py)====&lt;br /&gt;
 &lt;br /&gt;
Le fichier main.py gère l&#039;image de la caméra en appliquant le modèle pré-entraîné sur chaque frame. Il affiche le nombre d&#039;objets détectés, les FPS, le pourcentage de certitude et la boîte de détection de classe. La classe cible, le seuil de confiance et tous les paramètres sont configurables directement en haut du fichier.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Le programme supporte deux types de sources : une caméra USB ou un fichier vidéo, sélectionnable via la variable SOURCE en haut du fichier.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Paramètres configurables en haut du fichier :&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Paramètre !! Description !! Valeur par défaut&lt;br /&gt;
|-&lt;br /&gt;
| MODEL_PATH || Chemin vers le modèle YOLO (.pt ou dossier NCNN) || &#039;modelv1_ncnn_model&#039;&lt;br /&gt;
|-&lt;br /&gt;
| SOURCE || Source vidéo — &#039;usb0&#039; pour caméra, &#039;video.mp4&#039; pour fichier || &#039;usb0&#039;&lt;br /&gt;
|-&lt;br /&gt;
| CONFIANCE_MIN || Seuil de confiance minimum (0.0 à 1.0) || 0.5&lt;br /&gt;
|-&lt;br /&gt;
| CLASSE_CIBLE || Classe à détecter, ou &#039;any&#039; pour toutes les classes || &#039;Forklift&#039;&lt;br /&gt;
|-&lt;br /&gt;
| GPIO_PIN || Broche BCM de la sortie principale || 17&lt;br /&gt;
|-&lt;br /&gt;
| PIN_LUMIERE_DETECTION || Lumière qui suit le GPIO principal || 27&lt;br /&gt;
|-&lt;br /&gt;
| PIN_LUMIERE_STATUT || Lumière allumée au démarrage, éteinte à la fermeture || 22&lt;br /&gt;
|-&lt;br /&gt;
| DUREE_DETECTION || Secondes que la condition doit être maintenue avant activation || 2.0&lt;br /&gt;
|-&lt;br /&gt;
| DUREE_ACTIVATION || Secondes que le GPIO reste actif || 3.0&lt;br /&gt;
|-&lt;br /&gt;
| RESOLUTION || Résolution caméra et inférence || (640, 640)&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Note :&#039;&#039;&#039; La valeur de CLASSE_CIBLE est insensible à la casse. Écrire &#039;forklift&#039;, &#039;Forklift&#039; ou &#039;FORKLIFT&#039; donnera le même résultat.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====Contrôle GPIO====&lt;br /&gt;
Voici la logique des entrées sorties pour notre projet a guise d&#039;exemple.&lt;br /&gt;
La logique GPIO tourne dans un thread séparé en parallèle de la détection YOLO, ce qui évite tout ralentissement. Trois sorties sont disponibles :&lt;br /&gt;
 &lt;br /&gt;
:[[File:pin.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;GPIO principal (GPIO_PIN)&#039;&#039;&#039; — activé lorsque la classe cible est détectée pendant DUREE_DETECTION secondes.&lt;br /&gt;
*&#039;&#039;&#039;Lumière de détection (PIN_LUMIERE_DETECTION)&#039;&#039;&#039; — suit exactement le même comportement que le GPIO principal.&lt;br /&gt;
*&#039;&#039;&#039;Lumière de statut (PIN_LUMIERE_STATUT)&#039;&#039;&#039; — s&#039;allume au démarrage du programme et s&#039;éteint à la fermeture.&lt;br /&gt;
 &lt;br /&gt;
Si la condition est toujours vraie à la fin de DUREE_ACTIVATION, le GPIO se renouvelle automatiquement sans coupure. À la fermeture du programme (touche q ou Ctrl+C), toutes les sorties sont éteintes proprement.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====Création du modèle pré-entraîné====&lt;br /&gt;
 &lt;br /&gt;
Un modèle YOLO pré-entraîné (.pt) est une intelligence artificielle qui a appris à reconnaître certains objets grâce à un entraînement préalable sur une grande quantité d&#039;images. C&#039;est le cerveau du projet.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;1. Choisir le bon dataset&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:Nous conseillons d&#039;utiliser la plateforme Roboflow Universe pour trouver un dataset public.&lt;br /&gt;
:Rechercher avec des mots-clés précis (ex : &amp;quot;forklift&amp;quot;, &amp;quot;helmet detection&amp;quot;, etc.).&lt;br /&gt;
:Vérifier le nombre d&#039;images, la diversité des photos et la qualité des annotations.&lt;br /&gt;
:Choisir un dataset avec plusieurs centaines ou milliers d&#039;images bien étiquetées.&lt;br /&gt;
:Une fois le bon dataset trouvé, le télécharger en format ZIP.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Attention :&#039;&#039;&#039; Vérifier que le dataset contient des &#039;&#039;&#039;images nulles&#039;&#039;&#039; (images sans l&#039;objet à détecter). Ces images sont essentielles pour éviter les faux positifs.&lt;br /&gt;
 &lt;br /&gt;
:Une fois extrait, vérifier que le dossier contient les 3 éléments importants : data.yaml, train/ et valid/.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;2. Ajouter le modèle YOLO de base&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:YOLO possède des modèles de base pré-entraînés. Nous utilisons la version &#039;&#039;&#039;yolo11n&#039;&#039;&#039; (nano), la plus légère pour fonctionner sur Raspberry Pi.&lt;br /&gt;
:Télécharger yolo11n.pt depuis le site officiel d&#039;Ultralytics et le placer dans le même dossier que data.yaml.&lt;br /&gt;
 &lt;br /&gt;
:[[File:version_yolo.png|600px]]&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;3. Entraînement&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:L&#039;entraînement est recommandé sur un ordinateur Linux avec une carte graphique NVIDIA.&lt;br /&gt;
:Dans le terminal, entrer la commande :&lt;br /&gt;
 &lt;br /&gt;
: &#039;&#039;&#039;yolo detect train model=yolo11n.pt data=data.yaml epochs=100 imgsz=640 batch=16 patience=20&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Paramètre !! Description !! Valeur recommandée&lt;br /&gt;
|-&lt;br /&gt;
| model || Modèle de base pré-entraîné || yolo11n.pt&lt;br /&gt;
|-&lt;br /&gt;
| data || Fichier de configuration du dataset || data.yaml&lt;br /&gt;
|-&lt;br /&gt;
| epochs || Nombre de cycles d&#039;apprentissage || 100&lt;br /&gt;
|-&lt;br /&gt;
| imgsz || Taille des images (maximum YOLO) || 640&lt;br /&gt;
|-&lt;br /&gt;
| batch || Images traitées simultanément (selon le GPU) || 16&lt;br /&gt;
|-&lt;br /&gt;
| patience || Arrête si plus d&#039;amélioration || 20&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
:Le modèle entraîné sera disponible dans runs/detect/train/weights/best.pt.&lt;br /&gt;
 &lt;br /&gt;
:Pour faire l&#039;entraînement sur Windows, voici une vidéo de référence : https://www.youtube.com/watch?v=r0RspiLG260&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Librairies requises pour l&#039;entraînement :&#039;&#039;&#039;&lt;br /&gt;
*ultralytics&lt;br /&gt;
*torch et torchvision&lt;br /&gt;
*opencv-python&lt;br /&gt;
*python3&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Conversion NCNN (optimisation Raspberry Pi)====&lt;br /&gt;
 &lt;br /&gt;
Le format NCNN est optimisé pour les processeurs ARM comme celui du Raspberry Pi. La conversion du modèle .pt en format NCNN permet de passer de &#039;&#039;&#039;3 FPS à 12 FPS&#039;&#039;&#039; sur le Raspberry Pi 5. Cette étape est fortement recommandée.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
: &#039;&#039;&#039;python3 convert_ncnn.py&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:Le script génère un dossier modelv1_ncnn_model/ contenant tous les fichiers nécessaires.&lt;br /&gt;
:Dans main.py, changer MODEL_PATH pour pointer vers ce dossier au lieu du fichier .pt.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Important :&#039;&#039;&#039; Effectuer la conversion sur le Raspberry Pi lui-même pour garantir la compatibilité.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====Créer son propre dataset personnalisé====&lt;br /&gt;
 &lt;br /&gt;
Si le dataset public ne correspond pas suffisamment à l&#039;environnement de production, il est possible d&#039;améliorer le modèle en filmant sur place.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;1.&#039;&#039;&#039; Filmer plusieurs courtes vidéos (5 à 15 minutes) dans différentes zones et conditions d&#039;éclairage avec record.py.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;2.&#039;&#039;&#039; Extraire les frames automatiquement avec extract_frames.py — une image toutes les 3 secondes génère environ 200 à 300 images par vidéo.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;3.&#039;&#039;&#039; Annoter les images sur Roboflow en utilisant la fonction Auto-Label avec le modèle existant pour minimiser le travail manuel.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;4.&#039;&#039;&#039; Réentraîner le modèle avec le nouveau dataset.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Conseil :&#039;&#039;&#039; Filmer avec la même caméra USB que celle utilisée en production garantit que le modèle sera entraîné sur des images identiques à ce qu&#039;il verra en temps réel.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Installation des librairies====&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Sur le Raspberry Pi 5 (exécution) :&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
: pip install torch torchvision --index-url &amp;lt;nowiki&amp;gt;https://download.pytorch.org/whl/cpu&amp;lt;/nowiki&amp;gt; --break-system-packages --no-cache-dir&lt;br /&gt;
: pip install ultralytics opencv-python lgpio ncnn pnnx --break-system-packages --no-cache-dir&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Sur un ordinateur Linux (entraînement et conversion) :&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
: pip install ultralytics torch torchvision opencv-python ncnn pnnx&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Librairie !! Rôle !! Pi 5 !! PC Linux&lt;br /&gt;
|-&lt;br /&gt;
| ultralytics || Modèle YOLO || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| torch / torchvision || Moteur d&#039;apprentissage PyTorch || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| opencv-python || Capture et affichage vidéo || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| lgpio || Contrôle des broches GPIO || ✓ || ✗&lt;br /&gt;
|-&lt;br /&gt;
| ncnn / pnnx || Conversion et inférence NCNN || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| numpy || Calculs mathématiques (inclus automatiquement) || ✓ || ✓&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
 &lt;br /&gt;
*Raspberry Pi 5 (8 Go recommandé, 4 Go minimum)&lt;br /&gt;
*Carte microSD classe A2, 32 Go minimum (SanDisk ou Samsung Endurance recommandé)&lt;br /&gt;
*Câble d&#039;alimentation USB-C 5V/5A (27W) — câble officiel Raspberry Pi 5 obligatoire&lt;br /&gt;
*Caméra USB type A&lt;br /&gt;
*Relais 5V (module 1 canal)&lt;br /&gt;
*Gyrophare 120V CA&lt;br /&gt;
*Câbles Dupont mâle-femelle (connexions GPIO)&lt;br /&gt;
*Câble micro HDMI (optionnel — pour connecter un écran)&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Attention :&#039;&#039;&#039; Toujours éteindre le Raspberry Pi proprement avec la commande &#039;&#039;&#039;sudo shutdown -h now&#039;&#039;&#039; avant de couper l&#039;alimentation. Une coupure brusque peut corrompre la carte microSD.&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=1041</id>
		<title>Reconnaissance objet</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=1041"/>
		<updated>2026-03-29T21:44:50Z</updated>

		<summary type="html">&lt;p&gt;2182036 : /* Contrôle GPIO */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description du projet==&lt;br /&gt;
Le but du projet est de détecter un objet (dans notre cas, un chariot élévateur) dans une image provenant d&#039;une caméra à l&#039;aide d&#039;un modèle de reconnaissance d&#039;objets préentraîné. Lorsque le programme détecte un chariot élévateur, un gyrophare s&#039;active afin d&#039;avertir les travailleurs de sa présence. Le programme s&#039;exécute sur un Raspberry Pi 5, un micro-ordinateur doté d&#039;entrées et de sorties programmables. La caméra y est connectée directement par USB. Étant donné que les sorties du Raspberry Pi fonctionnent en 3,3 V CC, un relais est utilisé pour commander l&#039;alimentation d&#039;un gyrophare fonctionnant en 120 V CA.&lt;br /&gt;
 &lt;br /&gt;
:[[File:lift.png|800px]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
===Fonctionnement global===&lt;br /&gt;
 &lt;br /&gt;
Le projet repose sur un seul fichier Python principal (main.py) qui gère simultanément la détection YOLO et le contrôle des sorties GPIO grâce à un système de thread séparé.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Structure des fichiers====&lt;br /&gt;
 &lt;br /&gt;
Le dossier de projet est organisé en trois catégories selon leur utilisation.&lt;br /&gt;
 &lt;br /&gt;
:[[File:wikilayout.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Fichier !! Rôle !! Catégorie&lt;br /&gt;
|-&lt;br /&gt;
| main.py || Fichier principal — lance la détection YOLO et contrôle les GPIO || Exécution&lt;br /&gt;
|-&lt;br /&gt;
| modelv1_ncnn_model/ || Modèle YOLO converti au format NCNN (dossier) || Exécution&lt;br /&gt;
|-&lt;br /&gt;
| record.py || Enregistre une vidéo depuis la caméra USB || Création du dataset&lt;br /&gt;
|-&lt;br /&gt;
| extract_frames.py || Extrait des images d&#039;une vidéo pour créer un dataset || Création du dataset&lt;br /&gt;
|-&lt;br /&gt;
| convert_ncnn.py || Convertit un modèle .pt au format NCNN || Conversion&lt;br /&gt;
|-&lt;br /&gt;
| modelv1.pt || Modèle YOLO original (format PyTorch) || Conversion&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====Fichier Python principal (main.py)====&lt;br /&gt;
 &lt;br /&gt;
Le fichier main.py gère l&#039;image de la caméra en appliquant le modèle pré-entraîné sur chaque frame. Il affiche le nombre d&#039;objets détectés, les FPS, le pourcentage de certitude et la boîte de détection de classe. La classe cible, le seuil de confiance et tous les paramètres sont configurables directement en haut du fichier.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Le programme supporte deux types de sources : une caméra USB ou un fichier vidéo, sélectionnable via la variable SOURCE en haut du fichier.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Paramètres configurables en haut du fichier :&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Paramètre !! Description !! Valeur par défaut&lt;br /&gt;
|-&lt;br /&gt;
| MODEL_PATH || Chemin vers le modèle YOLO (.pt ou dossier NCNN) || &#039;modelv1_ncnn_model&#039;&lt;br /&gt;
|-&lt;br /&gt;
| SOURCE || Source vidéo — &#039;usb0&#039; pour caméra, &#039;video.mp4&#039; pour fichier || &#039;usb0&#039;&lt;br /&gt;
|-&lt;br /&gt;
| CONFIANCE_MIN || Seuil de confiance minimum (0.0 à 1.0) || 0.5&lt;br /&gt;
|-&lt;br /&gt;
| CLASSE_CIBLE || Classe à détecter, ou &#039;any&#039; pour toutes les classes || &#039;Forklift&#039;&lt;br /&gt;
|-&lt;br /&gt;
| GPIO_PIN || Broche BCM de la sortie principale || 17&lt;br /&gt;
|-&lt;br /&gt;
| PIN_LUMIERE_DETECTION || Lumière qui suit le GPIO principal || 27&lt;br /&gt;
|-&lt;br /&gt;
| PIN_LUMIERE_STATUT || Lumière allumée au démarrage, éteinte à la fermeture || 22&lt;br /&gt;
|-&lt;br /&gt;
| DUREE_DETECTION || Secondes que la condition doit être maintenue avant activation || 2.0&lt;br /&gt;
|-&lt;br /&gt;
| DUREE_ACTIVATION || Secondes que le GPIO reste actif || 3.0&lt;br /&gt;
|-&lt;br /&gt;
| RESOLUTION || Résolution caméra et inférence || (640, 640)&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Note :&#039;&#039;&#039; La valeur de CLASSE_CIBLE est insensible à la casse. Écrire &#039;forklift&#039;, &#039;Forklift&#039; ou &#039;FORKLIFT&#039; donnera le même résultat.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====Contrôle GPIO====&lt;br /&gt;
Voici la logique des entrées sorties pour notre projet a guise d&#039;exemple.&lt;br /&gt;
La logique GPIO tourne dans un thread séparé en parallèle de la détection YOLO, ce qui évite tout ralentissement. Trois sorties sont disponibles :&lt;br /&gt;
 &lt;br /&gt;
:[[File:pin.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;GPIO principal (GPIO_PIN)&#039;&#039;&#039; — activé lorsque la classe cible est détectée pendant DUREE_DETECTION secondes.&lt;br /&gt;
*&#039;&#039;&#039;Lumière de détection (PIN_LUMIERE_DETECTION)&#039;&#039;&#039; — suit exactement le même comportement que le GPIO principal.&lt;br /&gt;
*&#039;&#039;&#039;Lumière de statut (PIN_LUMIERE_STATUT)&#039;&#039;&#039; — s&#039;allume au démarrage du programme et s&#039;éteint à la fermeture.&lt;br /&gt;
 &lt;br /&gt;
Si la condition est toujours vraie à la fin de DUREE_ACTIVATION, le GPIO se renouvelle automatiquement sans coupure. À la fermeture du programme (touche q ou Ctrl+C), toutes les sorties sont éteintes proprement.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====Création du modèle pré-entraîné====&lt;br /&gt;
 &lt;br /&gt;
Un modèle YOLO pré-entraîné (.pt) est une intelligence artificielle qui a appris à reconnaître certains objets grâce à un entraînement préalable sur une grande quantité d&#039;images. C&#039;est le cerveau du projet.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;1. Choisir le bon dataset&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:Nous conseillons d&#039;utiliser la plateforme Roboflow Universe pour trouver un dataset public.&lt;br /&gt;
:Rechercher avec des mots-clés précis (ex : &amp;quot;forklift&amp;quot;, &amp;quot;helmet detection&amp;quot;, etc.).&lt;br /&gt;
:Vérifier le nombre d&#039;images, la diversité des photos et la qualité des annotations.&lt;br /&gt;
:Choisir un dataset avec plusieurs centaines ou milliers d&#039;images bien étiquetées.&lt;br /&gt;
:Une fois le bon dataset trouvé, le télécharger en format ZIP.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Attention :&#039;&#039;&#039; Vérifier que le dataset contient des &#039;&#039;&#039;images nulles&#039;&#039;&#039; (images sans l&#039;objet à détecter). Ces images sont essentielles pour éviter les faux positifs.&lt;br /&gt;
 &lt;br /&gt;
:Une fois extrait, vérifier que le dossier contient les 3 éléments importants : data.yaml, train/ et valid/.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;2. Ajouter le modèle YOLO de base&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:YOLO possède des modèles de base pré-entraînés. Nous utilisons la version &#039;&#039;&#039;yolo11n&#039;&#039;&#039; (nano), la plus légère pour fonctionner sur Raspberry Pi.&lt;br /&gt;
:Télécharger yolo11n.pt depuis le site officiel d&#039;Ultralytics et le placer dans le même dossier que data.yaml.&lt;br /&gt;
 &lt;br /&gt;
:[[File:version_yolo.png|600px]]&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;3. Entraînement&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:L&#039;entraînement est recommandé sur un ordinateur Linux avec une carte graphique NVIDIA.&lt;br /&gt;
:Dans le terminal, entrer la commande :&lt;br /&gt;
 &lt;br /&gt;
: &#039;&#039;&#039;yolo detect train model=yolo11n.pt data=data.yaml epochs=100 imgsz=640 batch=16 patience=20&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Paramètre !! Description !! Valeur recommandée&lt;br /&gt;
|-&lt;br /&gt;
| model || Modèle de base pré-entraîné || yolo11n.pt&lt;br /&gt;
|-&lt;br /&gt;
| data || Fichier de configuration du dataset || data.yaml&lt;br /&gt;
|-&lt;br /&gt;
| epochs || Nombre de cycles d&#039;apprentissage || 100&lt;br /&gt;
|-&lt;br /&gt;
| imgsz || Taille des images (maximum YOLO) || 640&lt;br /&gt;
|-&lt;br /&gt;
| batch || Images traitées simultanément (selon le GPU) || 16&lt;br /&gt;
|-&lt;br /&gt;
| patience || Arrête si plus d&#039;amélioration || 20&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
:Le modèle entraîné sera disponible dans runs/detect/train/weights/best.pt.&lt;br /&gt;
 &lt;br /&gt;
:Pour faire l&#039;entraînement sur Windows, voici une vidéo de référence : https://www.youtube.com/watch?v=r0RspiLG260&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Librairies requises pour l&#039;entraînement :&#039;&#039;&#039;&lt;br /&gt;
*ultralytics&lt;br /&gt;
*torch et torchvision&lt;br /&gt;
*opencv-python&lt;br /&gt;
*python3&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Conversion NCNN (optimisation Raspberry Pi)====&lt;br /&gt;
 &lt;br /&gt;
Le format NCNN est optimisé pour les processeurs ARM comme celui du Raspberry Pi. La conversion du modèle .pt en format NCNN permet de passer de &#039;&#039;&#039;3 FPS à 12 FPS&#039;&#039;&#039; sur le Raspberry Pi 5. Cette étape est fortement recommandée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
: &#039;&#039;&#039;python3 convert_ncnn.py&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
:Le script génère un dossier modelv1_ncnn_model/ contenant tous les fichiers nécessaires.&lt;br /&gt;
:Dans main.py, changer MODEL_PATH pour pointer vers ce dossier au lieu du fichier .pt.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Important :&#039;&#039;&#039; Effectuer la conversion sur le Raspberry Pi lui-même pour garantir la compatibilité.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====Créer son propre dataset personnalisé====&lt;br /&gt;
 &lt;br /&gt;
Si le dataset public ne correspond pas suffisamment à l&#039;environnement de production, il est possible d&#039;améliorer le modèle en filmant sur place.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;1.&#039;&#039;&#039; Filmer plusieurs courtes vidéos (5 à 15 minutes) dans différentes zones et conditions d&#039;éclairage avec record.py.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;2.&#039;&#039;&#039; Extraire les frames automatiquement avec extract_frames.py — une image toutes les 3 secondes génère environ 200 à 300 images par vidéo.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;3.&#039;&#039;&#039; Annoter les images sur Roboflow en utilisant la fonction Auto-Label avec le modèle existant pour minimiser le travail manuel.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;4.&#039;&#039;&#039; Réentraîner le modèle avec le nouveau dataset.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Conseil :&#039;&#039;&#039; Filmer avec la même caméra USB que celle utilisée en production garantit que le modèle sera entraîné sur des images identiques à ce qu&#039;il verra en temps réel.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Installation des librairies====&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Sur le Raspberry Pi 5 (exécution) :&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
: pip install torch torchvision --index-url &amp;lt;nowiki&amp;gt;https://download.pytorch.org/whl/cpu&amp;lt;/nowiki&amp;gt; --break-system-packages --no-cache-dir&lt;br /&gt;
: pip install ultralytics opencv-python lgpio ncnn pnnx --break-system-packages --no-cache-dir&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Sur un ordinateur Linux (entraînement et conversion) :&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
: pip install ultralytics torch torchvision opencv-python ncnn pnnx&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Librairie !! Rôle !! Pi 5 !! PC Linux&lt;br /&gt;
|-&lt;br /&gt;
| ultralytics || Modèle YOLO || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| torch / torchvision || Moteur d&#039;apprentissage PyTorch || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| opencv-python || Capture et affichage vidéo || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| lgpio || Contrôle des broches GPIO || ✓ || ✗&lt;br /&gt;
|-&lt;br /&gt;
| ncnn / pnnx || Conversion et inférence NCNN || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| numpy || Calculs mathématiques (inclus automatiquement) || ✓ || ✓&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
 &lt;br /&gt;
*Raspberry Pi 5 (8 Go recommandé, 4 Go minimum)&lt;br /&gt;
*Carte microSD classe A2, 32 Go minimum (SanDisk ou Samsung Endurance recommandé)&lt;br /&gt;
*Câble d&#039;alimentation USB-C 5V/5A (27W) — câble officiel Raspberry Pi 5 obligatoire&lt;br /&gt;
*Caméra USB type A&lt;br /&gt;
*Relais 5V (module 1 canal)&lt;br /&gt;
*Gyrophare 120V CA&lt;br /&gt;
*Câbles Dupont mâle-femelle (connexions GPIO)&lt;br /&gt;
*Câble micro HDMI (optionnel — pour connecter un écran)&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Attention :&#039;&#039;&#039; Toujours éteindre le Raspberry Pi proprement avec la commande &#039;&#039;&#039;sudo shutdown -h now&#039;&#039;&#039; avant de couper l&#039;alimentation. Une coupure brusque peut corrompre la carte microSD.&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=1040</id>
		<title>Reconnaissance objet</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=1040"/>
		<updated>2026-03-29T21:43:24Z</updated>

		<summary type="html">&lt;p&gt;2182036 : /* Contrôle GPIO */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description du projet==&lt;br /&gt;
Le but du projet est de détecter un objet (dans notre cas, un chariot élévateur) dans une image provenant d&#039;une caméra à l&#039;aide d&#039;un modèle de reconnaissance d&#039;objets préentraîné. Lorsque le programme détecte un chariot élévateur, un gyrophare s&#039;active afin d&#039;avertir les travailleurs de sa présence. Le programme s&#039;exécute sur un Raspberry Pi 5, un micro-ordinateur doté d&#039;entrées et de sorties programmables. La caméra y est connectée directement par USB. Étant donné que les sorties du Raspberry Pi fonctionnent en 3,3 V CC, un relais est utilisé pour commander l&#039;alimentation d&#039;un gyrophare fonctionnant en 120 V CA.&lt;br /&gt;
 &lt;br /&gt;
:[[File:lift.png|800px]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
===Fonctionnement global===&lt;br /&gt;
 &lt;br /&gt;
Le projet repose sur un seul fichier Python principal (main.py) qui gère simultanément la détection YOLO et le contrôle des sorties GPIO grâce à un système de thread séparé.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Structure des fichiers====&lt;br /&gt;
 &lt;br /&gt;
Le dossier de projet est organisé en trois catégories selon leur utilisation.&lt;br /&gt;
 &lt;br /&gt;
:[[File:wikilayout.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Fichier !! Rôle !! Catégorie&lt;br /&gt;
|-&lt;br /&gt;
| main.py || Fichier principal — lance la détection YOLO et contrôle les GPIO || Exécution&lt;br /&gt;
|-&lt;br /&gt;
| modelv1_ncnn_model/ || Modèle YOLO converti au format NCNN (dossier) || Exécution&lt;br /&gt;
|-&lt;br /&gt;
| record.py || Enregistre une vidéo depuis la caméra USB || Création du dataset&lt;br /&gt;
|-&lt;br /&gt;
| extract_frames.py || Extrait des images d&#039;une vidéo pour créer un dataset || Création du dataset&lt;br /&gt;
|-&lt;br /&gt;
| convert_ncnn.py || Convertit un modèle .pt au format NCNN || Conversion&lt;br /&gt;
|-&lt;br /&gt;
| modelv1.pt || Modèle YOLO original (format PyTorch) || Conversion&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====Fichier Python principal (main.py)====&lt;br /&gt;
 &lt;br /&gt;
Le fichier main.py gère l&#039;image de la caméra en appliquant le modèle pré-entraîné sur chaque frame. Il affiche le nombre d&#039;objets détectés, les FPS, le pourcentage de certitude et la boîte de détection de classe. La classe cible, le seuil de confiance et tous les paramètres sont configurables directement en haut du fichier.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Le programme supporte deux types de sources : une caméra USB ou un fichier vidéo, sélectionnable via la variable SOURCE en haut du fichier.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Paramètres configurables en haut du fichier :&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Paramètre !! Description !! Valeur par défaut&lt;br /&gt;
|-&lt;br /&gt;
| MODEL_PATH || Chemin vers le modèle YOLO (.pt ou dossier NCNN) || &#039;modelv1_ncnn_model&#039;&lt;br /&gt;
|-&lt;br /&gt;
| SOURCE || Source vidéo — &#039;usb0&#039; pour caméra, &#039;video.mp4&#039; pour fichier || &#039;usb0&#039;&lt;br /&gt;
|-&lt;br /&gt;
| CONFIANCE_MIN || Seuil de confiance minimum (0.0 à 1.0) || 0.5&lt;br /&gt;
|-&lt;br /&gt;
| CLASSE_CIBLE || Classe à détecter, ou &#039;any&#039; pour toutes les classes || &#039;Forklift&#039;&lt;br /&gt;
|-&lt;br /&gt;
| GPIO_PIN || Broche BCM de la sortie principale || 17&lt;br /&gt;
|-&lt;br /&gt;
| PIN_LUMIERE_DETECTION || Lumière qui suit le GPIO principal || 27&lt;br /&gt;
|-&lt;br /&gt;
| PIN_LUMIERE_STATUT || Lumière allumée au démarrage, éteinte à la fermeture || 22&lt;br /&gt;
|-&lt;br /&gt;
| DUREE_DETECTION || Secondes que la condition doit être maintenue avant activation || 2.0&lt;br /&gt;
|-&lt;br /&gt;
| DUREE_ACTIVATION || Secondes que le GPIO reste actif || 3.0&lt;br /&gt;
|-&lt;br /&gt;
| RESOLUTION || Résolution caméra et inférence || (640, 640)&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Note :&#039;&#039;&#039; La valeur de CLASSE_CIBLE est insensible à la casse. Écrire &#039;forklift&#039;, &#039;Forklift&#039; ou &#039;FORKLIFT&#039; donnera le même résultat.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====Contrôle GPIO====&lt;br /&gt;
 &lt;br /&gt;
La logique GPIO tourne dans un thread séparé en parallèle de la détection YOLO, ce qui évite tout ralentissement. Trois sorties sont disponibles :&lt;br /&gt;
 &lt;br /&gt;
:[[File:pin.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;GPIO principal (GPIO_PIN)&#039;&#039;&#039; — activé lorsque la classe cible est détectée pendant DUREE_DETECTION secondes.&lt;br /&gt;
*&#039;&#039;&#039;Lumière de détection (PIN_LUMIERE_DETECTION)&#039;&#039;&#039; — suit exactement le même comportement que le GPIO principal.&lt;br /&gt;
*&#039;&#039;&#039;Lumière de statut (PIN_LUMIERE_STATUT)&#039;&#039;&#039; — s&#039;allume au démarrage du programme et s&#039;éteint à la fermeture.&lt;br /&gt;
 &lt;br /&gt;
Si la condition est toujours vraie à la fin de DUREE_ACTIVATION, le GPIO se renouvelle automatiquement sans coupure. À la fermeture du programme (touche q ou Ctrl+C), toutes les sorties sont éteintes proprement.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====Création du modèle pré-entraîné====&lt;br /&gt;
 &lt;br /&gt;
Un modèle YOLO pré-entraîné (.pt) est une intelligence artificielle qui a appris à reconnaître certains objets grâce à un entraînement préalable sur une grande quantité d&#039;images. C&#039;est le cerveau du projet.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;1. Choisir le bon dataset&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:Nous conseillons d&#039;utiliser la plateforme Roboflow Universe pour trouver un dataset public.&lt;br /&gt;
:Rechercher avec des mots-clés précis (ex : &amp;quot;forklift&amp;quot;, &amp;quot;helmet detection&amp;quot;, etc.).&lt;br /&gt;
:Vérifier le nombre d&#039;images, la diversité des photos et la qualité des annotations.&lt;br /&gt;
:Choisir un dataset avec plusieurs centaines ou milliers d&#039;images bien étiquetées.&lt;br /&gt;
:Une fois le bon dataset trouvé, le télécharger en format ZIP.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Attention :&#039;&#039;&#039; Vérifier que le dataset contient des &#039;&#039;&#039;images nulles&#039;&#039;&#039; (images sans l&#039;objet à détecter). Ces images sont essentielles pour éviter les faux positifs.&lt;br /&gt;
 &lt;br /&gt;
:Une fois extrait, vérifier que le dossier contient les 3 éléments importants : data.yaml, train/ et valid/.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;2. Ajouter le modèle YOLO de base&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:YOLO possède des modèles de base pré-entraînés. Nous utilisons la version &#039;&#039;&#039;yolo11n&#039;&#039;&#039; (nano), la plus légère pour fonctionner sur Raspberry Pi.&lt;br /&gt;
:Télécharger yolo11n.pt depuis le site officiel d&#039;Ultralytics et le placer dans le même dossier que data.yaml.&lt;br /&gt;
 &lt;br /&gt;
:[[File:version_yolo.png|600px]]&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;3. Entraînement&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:L&#039;entraînement est recommandé sur un ordinateur Linux avec une carte graphique NVIDIA.&lt;br /&gt;
:Dans le terminal, entrer la commande :&lt;br /&gt;
 &lt;br /&gt;
: &#039;&#039;&#039;yolo detect train model=yolo11n.pt data=data.yaml epochs=100 imgsz=640 batch=16 patience=20&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Paramètre !! Description !! Valeur recommandée&lt;br /&gt;
|-&lt;br /&gt;
| model || Modèle de base pré-entraîné || yolo11n.pt&lt;br /&gt;
|-&lt;br /&gt;
| data || Fichier de configuration du dataset || data.yaml&lt;br /&gt;
|-&lt;br /&gt;
| epochs || Nombre de cycles d&#039;apprentissage || 100&lt;br /&gt;
|-&lt;br /&gt;
| imgsz || Taille des images (maximum YOLO) || 640&lt;br /&gt;
|-&lt;br /&gt;
| batch || Images traitées simultanément (selon le GPU) || 16&lt;br /&gt;
|-&lt;br /&gt;
| patience || Arrête si plus d&#039;amélioration || 20&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
:Le modèle entraîné sera disponible dans runs/detect/train/weights/best.pt.&lt;br /&gt;
 &lt;br /&gt;
:Pour faire l&#039;entraînement sur Windows, voici une vidéo de référence : https://www.youtube.com/watch?v=r0RspiLG260&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Librairies requises pour l&#039;entraînement :&#039;&#039;&#039;&lt;br /&gt;
*ultralytics&lt;br /&gt;
*torch et torchvision&lt;br /&gt;
*opencv-python&lt;br /&gt;
*python3&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Conversion NCNN (optimisation Raspberry Pi)====&lt;br /&gt;
 &lt;br /&gt;
Le format NCNN est optimisé pour les processeurs ARM comme celui du Raspberry Pi. La conversion du modèle .pt en format NCNN permet de passer de &#039;&#039;&#039;3 FPS à 12 FPS&#039;&#039;&#039; sur le Raspberry Pi 5. Cette étape est fortement recommandée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
: &#039;&#039;&#039;python3 convert_ncnn.py&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
:Le script génère un dossier modelv1_ncnn_model/ contenant tous les fichiers nécessaires.&lt;br /&gt;
:Dans main.py, changer MODEL_PATH pour pointer vers ce dossier au lieu du fichier .pt.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Important :&#039;&#039;&#039; Effectuer la conversion sur le Raspberry Pi lui-même pour garantir la compatibilité.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====Créer son propre dataset personnalisé====&lt;br /&gt;
 &lt;br /&gt;
Si le dataset public ne correspond pas suffisamment à l&#039;environnement de production, il est possible d&#039;améliorer le modèle en filmant sur place.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;1.&#039;&#039;&#039; Filmer plusieurs courtes vidéos (5 à 15 minutes) dans différentes zones et conditions d&#039;éclairage avec record.py.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;2.&#039;&#039;&#039; Extraire les frames automatiquement avec extract_frames.py — une image toutes les 3 secondes génère environ 200 à 300 images par vidéo.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;3.&#039;&#039;&#039; Annoter les images sur Roboflow en utilisant la fonction Auto-Label avec le modèle existant pour minimiser le travail manuel.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;4.&#039;&#039;&#039; Réentraîner le modèle avec le nouveau dataset.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Conseil :&#039;&#039;&#039; Filmer avec la même caméra USB que celle utilisée en production garantit que le modèle sera entraîné sur des images identiques à ce qu&#039;il verra en temps réel.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Installation des librairies====&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Sur le Raspberry Pi 5 (exécution) :&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
: pip install torch torchvision --index-url &amp;lt;nowiki&amp;gt;https://download.pytorch.org/whl/cpu&amp;lt;/nowiki&amp;gt; --break-system-packages --no-cache-dir&lt;br /&gt;
: pip install ultralytics opencv-python lgpio ncnn pnnx --break-system-packages --no-cache-dir&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Sur un ordinateur Linux (entraînement et conversion) :&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
: pip install ultralytics torch torchvision opencv-python ncnn pnnx&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Librairie !! Rôle !! Pi 5 !! PC Linux&lt;br /&gt;
|-&lt;br /&gt;
| ultralytics || Modèle YOLO || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| torch / torchvision || Moteur d&#039;apprentissage PyTorch || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| opencv-python || Capture et affichage vidéo || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| lgpio || Contrôle des broches GPIO || ✓ || ✗&lt;br /&gt;
|-&lt;br /&gt;
| ncnn / pnnx || Conversion et inférence NCNN || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| numpy || Calculs mathématiques (inclus automatiquement) || ✓ || ✓&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
 &lt;br /&gt;
*Raspberry Pi 5 (8 Go recommandé, 4 Go minimum)&lt;br /&gt;
*Carte microSD classe A2, 32 Go minimum (SanDisk ou Samsung Endurance recommandé)&lt;br /&gt;
*Câble d&#039;alimentation USB-C 5V/5A (27W) — câble officiel Raspberry Pi 5 obligatoire&lt;br /&gt;
*Caméra USB type A&lt;br /&gt;
*Relais 5V (module 1 canal)&lt;br /&gt;
*Gyrophare 120V CA&lt;br /&gt;
*Câbles Dupont mâle-femelle (connexions GPIO)&lt;br /&gt;
*Câble micro HDMI (optionnel — pour connecter un écran)&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Attention :&#039;&#039;&#039; Toujours éteindre le Raspberry Pi proprement avec la commande &#039;&#039;&#039;sudo shutdown -h now&#039;&#039;&#039; avant de couper l&#039;alimentation. Une coupure brusque peut corrompre la carte microSD.&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=1039</id>
		<title>Reconnaissance objet</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=1039"/>
		<updated>2026-03-29T21:43:09Z</updated>

		<summary type="html">&lt;p&gt;2182036 : /* Contrôle GPIO */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description du projet==&lt;br /&gt;
Le but du projet est de détecter un objet (dans notre cas, un chariot élévateur) dans une image provenant d&#039;une caméra à l&#039;aide d&#039;un modèle de reconnaissance d&#039;objets préentraîné. Lorsque le programme détecte un chariot élévateur, un gyrophare s&#039;active afin d&#039;avertir les travailleurs de sa présence. Le programme s&#039;exécute sur un Raspberry Pi 5, un micro-ordinateur doté d&#039;entrées et de sorties programmables. La caméra y est connectée directement par USB. Étant donné que les sorties du Raspberry Pi fonctionnent en 3,3 V CC, un relais est utilisé pour commander l&#039;alimentation d&#039;un gyrophare fonctionnant en 120 V CA.&lt;br /&gt;
 &lt;br /&gt;
:[[File:lift.png|800px]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
===Fonctionnement global===&lt;br /&gt;
 &lt;br /&gt;
Le projet repose sur un seul fichier Python principal (main.py) qui gère simultanément la détection YOLO et le contrôle des sorties GPIO grâce à un système de thread séparé.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Structure des fichiers====&lt;br /&gt;
 &lt;br /&gt;
Le dossier de projet est organisé en trois catégories selon leur utilisation.&lt;br /&gt;
 &lt;br /&gt;
:[[File:wikilayout.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Fichier !! Rôle !! Catégorie&lt;br /&gt;
|-&lt;br /&gt;
| main.py || Fichier principal — lance la détection YOLO et contrôle les GPIO || Exécution&lt;br /&gt;
|-&lt;br /&gt;
| modelv1_ncnn_model/ || Modèle YOLO converti au format NCNN (dossier) || Exécution&lt;br /&gt;
|-&lt;br /&gt;
| record.py || Enregistre une vidéo depuis la caméra USB || Création du dataset&lt;br /&gt;
|-&lt;br /&gt;
| extract_frames.py || Extrait des images d&#039;une vidéo pour créer un dataset || Création du dataset&lt;br /&gt;
|-&lt;br /&gt;
| convert_ncnn.py || Convertit un modèle .pt au format NCNN || Conversion&lt;br /&gt;
|-&lt;br /&gt;
| modelv1.pt || Modèle YOLO original (format PyTorch) || Conversion&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====Fichier Python principal (main.py)====&lt;br /&gt;
 &lt;br /&gt;
Le fichier main.py gère l&#039;image de la caméra en appliquant le modèle pré-entraîné sur chaque frame. Il affiche le nombre d&#039;objets détectés, les FPS, le pourcentage de certitude et la boîte de détection de classe. La classe cible, le seuil de confiance et tous les paramètres sont configurables directement en haut du fichier.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Le programme supporte deux types de sources : une caméra USB ou un fichier vidéo, sélectionnable via la variable SOURCE en haut du fichier.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Paramètres configurables en haut du fichier :&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Paramètre !! Description !! Valeur par défaut&lt;br /&gt;
|-&lt;br /&gt;
| MODEL_PATH || Chemin vers le modèle YOLO (.pt ou dossier NCNN) || &#039;modelv1_ncnn_model&#039;&lt;br /&gt;
|-&lt;br /&gt;
| SOURCE || Source vidéo — &#039;usb0&#039; pour caméra, &#039;video.mp4&#039; pour fichier || &#039;usb0&#039;&lt;br /&gt;
|-&lt;br /&gt;
| CONFIANCE_MIN || Seuil de confiance minimum (0.0 à 1.0) || 0.5&lt;br /&gt;
|-&lt;br /&gt;
| CLASSE_CIBLE || Classe à détecter, ou &#039;any&#039; pour toutes les classes || &#039;Forklift&#039;&lt;br /&gt;
|-&lt;br /&gt;
| GPIO_PIN || Broche BCM de la sortie principale || 17&lt;br /&gt;
|-&lt;br /&gt;
| PIN_LUMIERE_DETECTION || Lumière qui suit le GPIO principal || 27&lt;br /&gt;
|-&lt;br /&gt;
| PIN_LUMIERE_STATUT || Lumière allumée au démarrage, éteinte à la fermeture || 22&lt;br /&gt;
|-&lt;br /&gt;
| DUREE_DETECTION || Secondes que la condition doit être maintenue avant activation || 2.0&lt;br /&gt;
|-&lt;br /&gt;
| DUREE_ACTIVATION || Secondes que le GPIO reste actif || 3.0&lt;br /&gt;
|-&lt;br /&gt;
| RESOLUTION || Résolution caméra et inférence || (640, 640)&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Note :&#039;&#039;&#039; La valeur de CLASSE_CIBLE est insensible à la casse. Écrire &#039;forklift&#039;, &#039;Forklift&#039; ou &#039;FORKLIFT&#039; donnera le même résultat.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====Contrôle GPIO====&lt;br /&gt;
 &lt;br /&gt;
La logique GPIO tourne dans un thread séparé en parallèle de la détection YOLO, ce qui évite tout ralentissement. Trois sorties sont disponibles :&lt;br /&gt;
 &lt;br /&gt;
:[[File:pin.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;GPIO principal (GPIO_PIN)&#039;&#039;&#039; — activé lorsque la classe cible est détectée pendant DUREE_DETECTION secondes.&lt;br /&gt;
*&#039;&#039;&#039;Lumière de détection (PIN_LUMIERE_DETECTION)&#039;&#039;&#039; — suit exactement le même comportement que le GPIO principal.&lt;br /&gt;
*&#039;&#039;&#039;Lumière de statut (PIN_LUMIERE_STATUT)&#039;&#039;&#039; — s&#039;allume au démarrage du programme et s&#039;éteint à la fermeture.&lt;br /&gt;
 &lt;br /&gt;
Si la condition est toujours vraie à la fin de DUREE_ACTIVATION, le GPIO se renouvelle automatiquement sans coupure. À la fermeture du programme (touche q ou Ctrl+C), toutes les sorties sont éteintes proprement.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====Création du modèle pré-entraîné====&lt;br /&gt;
 &lt;br /&gt;
Un modèle YOLO pré-entraîné (.pt) est une intelligence artificielle qui a appris à reconnaître certains objets grâce à un entraînement préalable sur une grande quantité d&#039;images. C&#039;est le cerveau du projet.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;1. Choisir le bon dataset&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:Nous conseillons d&#039;utiliser la plateforme Roboflow Universe pour trouver un dataset public.&lt;br /&gt;
:Rechercher avec des mots-clés précis (ex : &amp;quot;forklift&amp;quot;, &amp;quot;helmet detection&amp;quot;, etc.).&lt;br /&gt;
:Vérifier le nombre d&#039;images, la diversité des photos et la qualité des annotations.&lt;br /&gt;
:Choisir un dataset avec plusieurs centaines ou milliers d&#039;images bien étiquetées.&lt;br /&gt;
:Une fois le bon dataset trouvé, le télécharger en format ZIP.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Attention :&#039;&#039;&#039; Vérifier que le dataset contient des &#039;&#039;&#039;images nulles&#039;&#039;&#039; (images sans l&#039;objet à détecter). Ces images sont essentielles pour éviter les faux positifs.&lt;br /&gt;
 &lt;br /&gt;
:Une fois extrait, vérifier que le dossier contient les 3 éléments importants : data.yaml, train/ et valid/.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;2. Ajouter le modèle YOLO de base&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:YOLO possède des modèles de base pré-entraînés. Nous utilisons la version &#039;&#039;&#039;yolo11n&#039;&#039;&#039; (nano), la plus légère pour fonctionner sur Raspberry Pi.&lt;br /&gt;
:Télécharger yolo11n.pt depuis le site officiel d&#039;Ultralytics et le placer dans le même dossier que data.yaml.&lt;br /&gt;
 &lt;br /&gt;
:[[File:version_yolo.png|600px]]&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;3. Entraînement&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:L&#039;entraînement est recommandé sur un ordinateur Linux avec une carte graphique NVIDIA.&lt;br /&gt;
:Dans le terminal, entrer la commande :&lt;br /&gt;
 &lt;br /&gt;
: &#039;&#039;&#039;yolo detect train model=yolo11n.pt data=data.yaml epochs=100 imgsz=640 batch=16 patience=20&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Paramètre !! Description !! Valeur recommandée&lt;br /&gt;
|-&lt;br /&gt;
| model || Modèle de base pré-entraîné || yolo11n.pt&lt;br /&gt;
|-&lt;br /&gt;
| data || Fichier de configuration du dataset || data.yaml&lt;br /&gt;
|-&lt;br /&gt;
| epochs || Nombre de cycles d&#039;apprentissage || 100&lt;br /&gt;
|-&lt;br /&gt;
| imgsz || Taille des images (maximum YOLO) || 640&lt;br /&gt;
|-&lt;br /&gt;
| batch || Images traitées simultanément (selon le GPU) || 16&lt;br /&gt;
|-&lt;br /&gt;
| patience || Arrête si plus d&#039;amélioration || 20&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
:Le modèle entraîné sera disponible dans runs/detect/train/weights/best.pt.&lt;br /&gt;
 &lt;br /&gt;
:Pour faire l&#039;entraînement sur Windows, voici une vidéo de référence : https://www.youtube.com/watch?v=r0RspiLG260&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Librairies requises pour l&#039;entraînement :&#039;&#039;&#039;&lt;br /&gt;
*ultralytics&lt;br /&gt;
*torch et torchvision&lt;br /&gt;
*opencv-python&lt;br /&gt;
*python3&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Conversion NCNN (optimisation Raspberry Pi)====&lt;br /&gt;
 &lt;br /&gt;
Le format NCNN est optimisé pour les processeurs ARM comme celui du Raspberry Pi. La conversion du modèle .pt en format NCNN permet de passer de &#039;&#039;&#039;3 FPS à 12 FPS&#039;&#039;&#039; sur le Raspberry Pi 5. Cette étape est fortement recommandée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
: &#039;&#039;&#039;python3 convert_ncnn.py&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
:Le script génère un dossier modelv1_ncnn_model/ contenant tous les fichiers nécessaires.&lt;br /&gt;
:Dans main.py, changer MODEL_PATH pour pointer vers ce dossier au lieu du fichier .pt.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Important :&#039;&#039;&#039; Effectuer la conversion sur le Raspberry Pi lui-même pour garantir la compatibilité.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====Créer son propre dataset personnalisé====&lt;br /&gt;
 &lt;br /&gt;
Si le dataset public ne correspond pas suffisamment à l&#039;environnement de production, il est possible d&#039;améliorer le modèle en filmant sur place.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;1.&#039;&#039;&#039; Filmer plusieurs courtes vidéos (5 à 15 minutes) dans différentes zones et conditions d&#039;éclairage avec record.py.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;2.&#039;&#039;&#039; Extraire les frames automatiquement avec extract_frames.py — une image toutes les 3 secondes génère environ 200 à 300 images par vidéo.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;3.&#039;&#039;&#039; Annoter les images sur Roboflow en utilisant la fonction Auto-Label avec le modèle existant pour minimiser le travail manuel.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;4.&#039;&#039;&#039; Réentraîner le modèle avec le nouveau dataset.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Conseil :&#039;&#039;&#039; Filmer avec la même caméra USB que celle utilisée en production garantit que le modèle sera entraîné sur des images identiques à ce qu&#039;il verra en temps réel.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Installation des librairies====&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Sur le Raspberry Pi 5 (exécution) :&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
: pip install torch torchvision --index-url &amp;lt;nowiki&amp;gt;https://download.pytorch.org/whl/cpu&amp;lt;/nowiki&amp;gt; --break-system-packages --no-cache-dir&lt;br /&gt;
: pip install ultralytics opencv-python lgpio ncnn pnnx --break-system-packages --no-cache-dir&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Sur un ordinateur Linux (entraînement et conversion) :&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
: pip install ultralytics torch torchvision opencv-python ncnn pnnx&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Librairie !! Rôle !! Pi 5 !! PC Linux&lt;br /&gt;
|-&lt;br /&gt;
| ultralytics || Modèle YOLO || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| torch / torchvision || Moteur d&#039;apprentissage PyTorch || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| opencv-python || Capture et affichage vidéo || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| lgpio || Contrôle des broches GPIO || ✓ || ✗&lt;br /&gt;
|-&lt;br /&gt;
| ncnn / pnnx || Conversion et inférence NCNN || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| numpy || Calculs mathématiques (inclus automatiquement) || ✓ || ✓&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
 &lt;br /&gt;
*Raspberry Pi 5 (8 Go recommandé, 4 Go minimum)&lt;br /&gt;
*Carte microSD classe A2, 32 Go minimum (SanDisk ou Samsung Endurance recommandé)&lt;br /&gt;
*Câble d&#039;alimentation USB-C 5V/5A (27W) — câble officiel Raspberry Pi 5 obligatoire&lt;br /&gt;
*Caméra USB type A&lt;br /&gt;
*Relais 5V (module 1 canal)&lt;br /&gt;
*Gyrophare 120V CA&lt;br /&gt;
*Câbles Dupont mâle-femelle (connexions GPIO)&lt;br /&gt;
*Câble micro HDMI (optionnel — pour connecter un écran)&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Attention :&#039;&#039;&#039; Toujours éteindre le Raspberry Pi proprement avec la commande &#039;&#039;&#039;sudo shutdown -h now&#039;&#039;&#039; avant de couper l&#039;alimentation. Une coupure brusque peut corrompre la carte microSD.&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=1038</id>
		<title>Reconnaissance objet</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=1038"/>
		<updated>2026-03-29T21:42:02Z</updated>

		<summary type="html">&lt;p&gt;2182036 : /* Fichier Python principal (main.py) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description du projet==&lt;br /&gt;
Le but du projet est de détecter un objet (dans notre cas, un chariot élévateur) dans une image provenant d&#039;une caméra à l&#039;aide d&#039;un modèle de reconnaissance d&#039;objets préentraîné. Lorsque le programme détecte un chariot élévateur, un gyrophare s&#039;active afin d&#039;avertir les travailleurs de sa présence. Le programme s&#039;exécute sur un Raspberry Pi 5, un micro-ordinateur doté d&#039;entrées et de sorties programmables. La caméra y est connectée directement par USB. Étant donné que les sorties du Raspberry Pi fonctionnent en 3,3 V CC, un relais est utilisé pour commander l&#039;alimentation d&#039;un gyrophare fonctionnant en 120 V CA.&lt;br /&gt;
 &lt;br /&gt;
:[[File:lift.png|800px]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
===Fonctionnement global===&lt;br /&gt;
 &lt;br /&gt;
Le projet repose sur un seul fichier Python principal (main.py) qui gère simultanément la détection YOLO et le contrôle des sorties GPIO grâce à un système de thread séparé.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Structure des fichiers====&lt;br /&gt;
 &lt;br /&gt;
Le dossier de projet est organisé en trois catégories selon leur utilisation.&lt;br /&gt;
 &lt;br /&gt;
:[[File:wikilayout.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Fichier !! Rôle !! Catégorie&lt;br /&gt;
|-&lt;br /&gt;
| main.py || Fichier principal — lance la détection YOLO et contrôle les GPIO || Exécution&lt;br /&gt;
|-&lt;br /&gt;
| modelv1_ncnn_model/ || Modèle YOLO converti au format NCNN (dossier) || Exécution&lt;br /&gt;
|-&lt;br /&gt;
| record.py || Enregistre une vidéo depuis la caméra USB || Création du dataset&lt;br /&gt;
|-&lt;br /&gt;
| extract_frames.py || Extrait des images d&#039;une vidéo pour créer un dataset || Création du dataset&lt;br /&gt;
|-&lt;br /&gt;
| convert_ncnn.py || Convertit un modèle .pt au format NCNN || Conversion&lt;br /&gt;
|-&lt;br /&gt;
| modelv1.pt || Modèle YOLO original (format PyTorch) || Conversion&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====Fichier Python principal (main.py)====&lt;br /&gt;
 &lt;br /&gt;
Le fichier main.py gère l&#039;image de la caméra en appliquant le modèle pré-entraîné sur chaque frame. Il affiche le nombre d&#039;objets détectés, les FPS, le pourcentage de certitude et la boîte de détection de classe. La classe cible, le seuil de confiance et tous les paramètres sont configurables directement en haut du fichier.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Le programme supporte deux types de sources : une caméra USB ou un fichier vidéo, sélectionnable via la variable SOURCE en haut du fichier.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Paramètres configurables en haut du fichier :&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Paramètre !! Description !! Valeur par défaut&lt;br /&gt;
|-&lt;br /&gt;
| MODEL_PATH || Chemin vers le modèle YOLO (.pt ou dossier NCNN) || &#039;modelv1_ncnn_model&#039;&lt;br /&gt;
|-&lt;br /&gt;
| SOURCE || Source vidéo — &#039;usb0&#039; pour caméra, &#039;video.mp4&#039; pour fichier || &#039;usb0&#039;&lt;br /&gt;
|-&lt;br /&gt;
| CONFIANCE_MIN || Seuil de confiance minimum (0.0 à 1.0) || 0.5&lt;br /&gt;
|-&lt;br /&gt;
| CLASSE_CIBLE || Classe à détecter, ou &#039;any&#039; pour toutes les classes || &#039;Forklift&#039;&lt;br /&gt;
|-&lt;br /&gt;
| GPIO_PIN || Broche BCM de la sortie principale || 17&lt;br /&gt;
|-&lt;br /&gt;
| PIN_LUMIERE_DETECTION || Lumière qui suit le GPIO principal || 27&lt;br /&gt;
|-&lt;br /&gt;
| PIN_LUMIERE_STATUT || Lumière allumée au démarrage, éteinte à la fermeture || 22&lt;br /&gt;
|-&lt;br /&gt;
| DUREE_DETECTION || Secondes que la condition doit être maintenue avant activation || 2.0&lt;br /&gt;
|-&lt;br /&gt;
| DUREE_ACTIVATION || Secondes que le GPIO reste actif || 3.0&lt;br /&gt;
|-&lt;br /&gt;
| RESOLUTION || Résolution caméra et inférence || (640, 640)&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Note :&#039;&#039;&#039; La valeur de CLASSE_CIBLE est insensible à la casse. Écrire &#039;forklift&#039;, &#039;Forklift&#039; ou &#039;FORKLIFT&#039; donnera le même résultat.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====Contrôle GPIO====&lt;br /&gt;
 &lt;br /&gt;
La logique GPIO tourne dans un thread séparé en parallèle de la détection YOLO, ce qui évite tout ralentissement. Trois sorties sont disponibles :&lt;br /&gt;
 &lt;br /&gt;
*&#039;&#039;&#039;GPIO principal (GPIO_PIN)&#039;&#039;&#039; — activé lorsque la classe cible est détectée pendant DUREE_DETECTION secondes.&lt;br /&gt;
*&#039;&#039;&#039;Lumière de détection (PIN_LUMIERE_DETECTION)&#039;&#039;&#039; — suit exactement le même comportement que le GPIO principal.&lt;br /&gt;
*&#039;&#039;&#039;Lumière de statut (PIN_LUMIERE_STATUT)&#039;&#039;&#039; — s&#039;allume au démarrage du programme et s&#039;éteint à la fermeture.&lt;br /&gt;
 &lt;br /&gt;
Si la condition est toujours vraie à la fin de DUREE_ACTIVATION, le GPIO se renouvelle automatiquement sans coupure. À la fermeture du programme (touche q ou Ctrl+C), toutes les sorties sont éteintes proprement.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Création du modèle pré-entraîné====&lt;br /&gt;
 &lt;br /&gt;
Un modèle YOLO pré-entraîné (.pt) est une intelligence artificielle qui a appris à reconnaître certains objets grâce à un entraînement préalable sur une grande quantité d&#039;images. C&#039;est le cerveau du projet.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;1. Choisir le bon dataset&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:Nous conseillons d&#039;utiliser la plateforme Roboflow Universe pour trouver un dataset public.&lt;br /&gt;
:Rechercher avec des mots-clés précis (ex : &amp;quot;forklift&amp;quot;, &amp;quot;helmet detection&amp;quot;, etc.).&lt;br /&gt;
:Vérifier le nombre d&#039;images, la diversité des photos et la qualité des annotations.&lt;br /&gt;
:Choisir un dataset avec plusieurs centaines ou milliers d&#039;images bien étiquetées.&lt;br /&gt;
:Une fois le bon dataset trouvé, le télécharger en format ZIP.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Attention :&#039;&#039;&#039; Vérifier que le dataset contient des &#039;&#039;&#039;images nulles&#039;&#039;&#039; (images sans l&#039;objet à détecter). Ces images sont essentielles pour éviter les faux positifs.&lt;br /&gt;
 &lt;br /&gt;
:Une fois extrait, vérifier que le dossier contient les 3 éléments importants : data.yaml, train/ et valid/.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;2. Ajouter le modèle YOLO de base&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:YOLO possède des modèles de base pré-entraînés. Nous utilisons la version &#039;&#039;&#039;yolo11n&#039;&#039;&#039; (nano), la plus légère pour fonctionner sur Raspberry Pi.&lt;br /&gt;
:Télécharger yolo11n.pt depuis le site officiel d&#039;Ultralytics et le placer dans le même dossier que data.yaml.&lt;br /&gt;
 &lt;br /&gt;
:[[File:version_yolo.png|600px]]&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;3. Entraînement&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:L&#039;entraînement est recommandé sur un ordinateur Linux avec une carte graphique NVIDIA.&lt;br /&gt;
:Dans le terminal, entrer la commande :&lt;br /&gt;
 &lt;br /&gt;
: &#039;&#039;&#039;yolo detect train model=yolo11n.pt data=data.yaml epochs=100 imgsz=640 batch=16 patience=20&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Paramètre !! Description !! Valeur recommandée&lt;br /&gt;
|-&lt;br /&gt;
| model || Modèle de base pré-entraîné || yolo11n.pt&lt;br /&gt;
|-&lt;br /&gt;
| data || Fichier de configuration du dataset || data.yaml&lt;br /&gt;
|-&lt;br /&gt;
| epochs || Nombre de cycles d&#039;apprentissage || 100&lt;br /&gt;
|-&lt;br /&gt;
| imgsz || Taille des images (maximum YOLO) || 640&lt;br /&gt;
|-&lt;br /&gt;
| batch || Images traitées simultanément (selon le GPU) || 16&lt;br /&gt;
|-&lt;br /&gt;
| patience || Arrête si plus d&#039;amélioration || 20&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
:Le modèle entraîné sera disponible dans runs/detect/train/weights/best.pt.&lt;br /&gt;
 &lt;br /&gt;
:Pour faire l&#039;entraînement sur Windows, voici une vidéo de référence : https://www.youtube.com/watch?v=r0RspiLG260&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Librairies requises pour l&#039;entraînement :&#039;&#039;&#039;&lt;br /&gt;
*ultralytics&lt;br /&gt;
*torch et torchvision&lt;br /&gt;
*opencv-python&lt;br /&gt;
*python3&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Conversion NCNN (optimisation Raspberry Pi)====&lt;br /&gt;
 &lt;br /&gt;
Le format NCNN est optimisé pour les processeurs ARM comme celui du Raspberry Pi. La conversion du modèle .pt en format NCNN permet de passer de &#039;&#039;&#039;3 FPS à 12 FPS&#039;&#039;&#039; sur le Raspberry Pi 5. Cette étape est fortement recommandée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
: &#039;&#039;&#039;python3 convert_ncnn.py&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
:Le script génère un dossier modelv1_ncnn_model/ contenant tous les fichiers nécessaires.&lt;br /&gt;
:Dans main.py, changer MODEL_PATH pour pointer vers ce dossier au lieu du fichier .pt.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Important :&#039;&#039;&#039; Effectuer la conversion sur le Raspberry Pi lui-même pour garantir la compatibilité.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====Créer son propre dataset personnalisé====&lt;br /&gt;
 &lt;br /&gt;
Si le dataset public ne correspond pas suffisamment à l&#039;environnement de production, il est possible d&#039;améliorer le modèle en filmant sur place.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;1.&#039;&#039;&#039; Filmer plusieurs courtes vidéos (5 à 15 minutes) dans différentes zones et conditions d&#039;éclairage avec record.py.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;2.&#039;&#039;&#039; Extraire les frames automatiquement avec extract_frames.py — une image toutes les 3 secondes génère environ 200 à 300 images par vidéo.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;3.&#039;&#039;&#039; Annoter les images sur Roboflow en utilisant la fonction Auto-Label avec le modèle existant pour minimiser le travail manuel.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;4.&#039;&#039;&#039; Réentraîner le modèle avec le nouveau dataset.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Conseil :&#039;&#039;&#039; Filmer avec la même caméra USB que celle utilisée en production garantit que le modèle sera entraîné sur des images identiques à ce qu&#039;il verra en temps réel.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Installation des librairies====&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Sur le Raspberry Pi 5 (exécution) :&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
: pip install torch torchvision --index-url &amp;lt;nowiki&amp;gt;https://download.pytorch.org/whl/cpu&amp;lt;/nowiki&amp;gt; --break-system-packages --no-cache-dir&lt;br /&gt;
: pip install ultralytics opencv-python lgpio ncnn pnnx --break-system-packages --no-cache-dir&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Sur un ordinateur Linux (entraînement et conversion) :&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
: pip install ultralytics torch torchvision opencv-python ncnn pnnx&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Librairie !! Rôle !! Pi 5 !! PC Linux&lt;br /&gt;
|-&lt;br /&gt;
| ultralytics || Modèle YOLO || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| torch / torchvision || Moteur d&#039;apprentissage PyTorch || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| opencv-python || Capture et affichage vidéo || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| lgpio || Contrôle des broches GPIO || ✓ || ✗&lt;br /&gt;
|-&lt;br /&gt;
| ncnn / pnnx || Conversion et inférence NCNN || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| numpy || Calculs mathématiques (inclus automatiquement) || ✓ || ✓&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
 &lt;br /&gt;
*Raspberry Pi 5 (8 Go recommandé, 4 Go minimum)&lt;br /&gt;
*Carte microSD classe A2, 32 Go minimum (SanDisk ou Samsung Endurance recommandé)&lt;br /&gt;
*Câble d&#039;alimentation USB-C 5V/5A (27W) — câble officiel Raspberry Pi 5 obligatoire&lt;br /&gt;
*Caméra USB type A&lt;br /&gt;
*Relais 5V (module 1 canal)&lt;br /&gt;
*Gyrophare 120V CA&lt;br /&gt;
*Câbles Dupont mâle-femelle (connexions GPIO)&lt;br /&gt;
*Câble micro HDMI (optionnel — pour connecter un écran)&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Attention :&#039;&#039;&#039; Toujours éteindre le Raspberry Pi proprement avec la commande &#039;&#039;&#039;sudo shutdown -h now&#039;&#039;&#039; avant de couper l&#039;alimentation. Une coupure brusque peut corrompre la carte microSD.&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=1037</id>
		<title>Reconnaissance objet</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=1037"/>
		<updated>2026-03-29T21:40:30Z</updated>

		<summary type="html">&lt;p&gt;2182036 : /* Structure des fichiers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description du projet==&lt;br /&gt;
Le but du projet est de détecter un objet (dans notre cas, un chariot élévateur) dans une image provenant d&#039;une caméra à l&#039;aide d&#039;un modèle de reconnaissance d&#039;objets préentraîné. Lorsque le programme détecte un chariot élévateur, un gyrophare s&#039;active afin d&#039;avertir les travailleurs de sa présence. Le programme s&#039;exécute sur un Raspberry Pi 5, un micro-ordinateur doté d&#039;entrées et de sorties programmables. La caméra y est connectée directement par USB. Étant donné que les sorties du Raspberry Pi fonctionnent en 3,3 V CC, un relais est utilisé pour commander l&#039;alimentation d&#039;un gyrophare fonctionnant en 120 V CA.&lt;br /&gt;
 &lt;br /&gt;
:[[File:lift.png|800px]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
===Fonctionnement global===&lt;br /&gt;
 &lt;br /&gt;
Le projet repose sur un seul fichier Python principal (main.py) qui gère simultanément la détection YOLO et le contrôle des sorties GPIO grâce à un système de thread séparé.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Structure des fichiers====&lt;br /&gt;
 &lt;br /&gt;
Le dossier de projet est organisé en trois catégories selon leur utilisation.&lt;br /&gt;
 &lt;br /&gt;
:[[File:wikilayout.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Fichier !! Rôle !! Catégorie&lt;br /&gt;
|-&lt;br /&gt;
| main.py || Fichier principal — lance la détection YOLO et contrôle les GPIO || Exécution&lt;br /&gt;
|-&lt;br /&gt;
| modelv1_ncnn_model/ || Modèle YOLO converti au format NCNN (dossier) || Exécution&lt;br /&gt;
|-&lt;br /&gt;
| record.py || Enregistre une vidéo depuis la caméra USB || Création du dataset&lt;br /&gt;
|-&lt;br /&gt;
| extract_frames.py || Extrait des images d&#039;une vidéo pour créer un dataset || Création du dataset&lt;br /&gt;
|-&lt;br /&gt;
| convert_ncnn.py || Convertit un modèle .pt au format NCNN || Conversion&lt;br /&gt;
|-&lt;br /&gt;
| modelv1.pt || Modèle YOLO original (format PyTorch) || Conversion&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====Fichier Python principal (main.py)====&lt;br /&gt;
 &lt;br /&gt;
Le fichier main.py gère l&#039;image de la caméra en appliquant le modèle pré-entraîné sur chaque frame. Il affiche le nombre d&#039;objets détectés, les FPS, le pourcentage de certitude et la boîte de détection de classe. La classe cible, le seuil de confiance et tous les paramètres sont configurables directement en haut du fichier.&lt;br /&gt;
 &lt;br /&gt;
Le programme supporte deux types de sources : une caméra USB ou un fichier vidéo, sélectionnable via la variable SOURCE en haut du fichier.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Paramètres configurables en haut du fichier :&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Paramètre !! Description !! Valeur par défaut&lt;br /&gt;
|-&lt;br /&gt;
| MODEL_PATH || Chemin vers le modèle YOLO (.pt ou dossier NCNN) || &#039;modelv1_ncnn_model&#039;&lt;br /&gt;
|-&lt;br /&gt;
| SOURCE || Source vidéo — &#039;usb0&#039; pour caméra, &#039;video.mp4&#039; pour fichier || &#039;usb0&#039;&lt;br /&gt;
|-&lt;br /&gt;
| CONFIANCE_MIN || Seuil de confiance minimum (0.0 à 1.0) || 0.5&lt;br /&gt;
|-&lt;br /&gt;
| CLASSE_CIBLE || Classe à détecter, ou &#039;any&#039; pour toutes les classes || &#039;Forklift&#039;&lt;br /&gt;
|-&lt;br /&gt;
| GPIO_PIN || Broche BCM de la sortie principale || 17&lt;br /&gt;
|-&lt;br /&gt;
| PIN_LUMIERE_DETECTION || Lumière qui suit le GPIO principal || 27&lt;br /&gt;
|-&lt;br /&gt;
| PIN_LUMIERE_STATUT || Lumière allumée au démarrage, éteinte à la fermeture || 22&lt;br /&gt;
|-&lt;br /&gt;
| DUREE_DETECTION || Secondes que la condition doit être maintenue avant activation || 2.0&lt;br /&gt;
|-&lt;br /&gt;
| DUREE_ACTIVATION || Secondes que le GPIO reste actif || 3.0&lt;br /&gt;
|-&lt;br /&gt;
| RESOLUTION || Résolution caméra et inférence || (640, 640)&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Note :&#039;&#039;&#039; La valeur de CLASSE_CIBLE est insensible à la casse. Écrire &#039;forklift&#039;, &#039;Forklift&#039; ou &#039;FORKLIFT&#039; donnera le même résultat.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Contrôle GPIO====&lt;br /&gt;
 &lt;br /&gt;
La logique GPIO tourne dans un thread séparé en parallèle de la détection YOLO, ce qui évite tout ralentissement. Trois sorties sont disponibles :&lt;br /&gt;
 &lt;br /&gt;
*&#039;&#039;&#039;GPIO principal (GPIO_PIN)&#039;&#039;&#039; — activé lorsque la classe cible est détectée pendant DUREE_DETECTION secondes.&lt;br /&gt;
*&#039;&#039;&#039;Lumière de détection (PIN_LUMIERE_DETECTION)&#039;&#039;&#039; — suit exactement le même comportement que le GPIO principal.&lt;br /&gt;
*&#039;&#039;&#039;Lumière de statut (PIN_LUMIERE_STATUT)&#039;&#039;&#039; — s&#039;allume au démarrage du programme et s&#039;éteint à la fermeture.&lt;br /&gt;
 &lt;br /&gt;
Si la condition est toujours vraie à la fin de DUREE_ACTIVATION, le GPIO se renouvelle automatiquement sans coupure. À la fermeture du programme (touche q ou Ctrl+C), toutes les sorties sont éteintes proprement.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Création du modèle pré-entraîné====&lt;br /&gt;
 &lt;br /&gt;
Un modèle YOLO pré-entraîné (.pt) est une intelligence artificielle qui a appris à reconnaître certains objets grâce à un entraînement préalable sur une grande quantité d&#039;images. C&#039;est le cerveau du projet.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;1. Choisir le bon dataset&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:Nous conseillons d&#039;utiliser la plateforme Roboflow Universe pour trouver un dataset public.&lt;br /&gt;
:Rechercher avec des mots-clés précis (ex : &amp;quot;forklift&amp;quot;, &amp;quot;helmet detection&amp;quot;, etc.).&lt;br /&gt;
:Vérifier le nombre d&#039;images, la diversité des photos et la qualité des annotations.&lt;br /&gt;
:Choisir un dataset avec plusieurs centaines ou milliers d&#039;images bien étiquetées.&lt;br /&gt;
:Une fois le bon dataset trouvé, le télécharger en format ZIP.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Attention :&#039;&#039;&#039; Vérifier que le dataset contient des &#039;&#039;&#039;images nulles&#039;&#039;&#039; (images sans l&#039;objet à détecter). Ces images sont essentielles pour éviter les faux positifs.&lt;br /&gt;
 &lt;br /&gt;
:Une fois extrait, vérifier que le dossier contient les 3 éléments importants : data.yaml, train/ et valid/.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;2. Ajouter le modèle YOLO de base&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:YOLO possède des modèles de base pré-entraînés. Nous utilisons la version &#039;&#039;&#039;yolo11n&#039;&#039;&#039; (nano), la plus légère pour fonctionner sur Raspberry Pi.&lt;br /&gt;
:Télécharger yolo11n.pt depuis le site officiel d&#039;Ultralytics et le placer dans le même dossier que data.yaml.&lt;br /&gt;
 &lt;br /&gt;
:[[File:version_yolo.png|600px]]&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;3. Entraînement&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:L&#039;entraînement est recommandé sur un ordinateur Linux avec une carte graphique NVIDIA.&lt;br /&gt;
:Dans le terminal, entrer la commande :&lt;br /&gt;
 &lt;br /&gt;
: &#039;&#039;&#039;yolo detect train model=yolo11n.pt data=data.yaml epochs=100 imgsz=640 batch=16 patience=20&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Paramètre !! Description !! Valeur recommandée&lt;br /&gt;
|-&lt;br /&gt;
| model || Modèle de base pré-entraîné || yolo11n.pt&lt;br /&gt;
|-&lt;br /&gt;
| data || Fichier de configuration du dataset || data.yaml&lt;br /&gt;
|-&lt;br /&gt;
| epochs || Nombre de cycles d&#039;apprentissage || 100&lt;br /&gt;
|-&lt;br /&gt;
| imgsz || Taille des images (maximum YOLO) || 640&lt;br /&gt;
|-&lt;br /&gt;
| batch || Images traitées simultanément (selon le GPU) || 16&lt;br /&gt;
|-&lt;br /&gt;
| patience || Arrête si plus d&#039;amélioration || 20&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
:Le modèle entraîné sera disponible dans runs/detect/train/weights/best.pt.&lt;br /&gt;
 &lt;br /&gt;
:Pour faire l&#039;entraînement sur Windows, voici une vidéo de référence : https://www.youtube.com/watch?v=r0RspiLG260&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Librairies requises pour l&#039;entraînement :&#039;&#039;&#039;&lt;br /&gt;
*ultralytics&lt;br /&gt;
*torch et torchvision&lt;br /&gt;
*opencv-python&lt;br /&gt;
*python3&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Conversion NCNN (optimisation Raspberry Pi)====&lt;br /&gt;
 &lt;br /&gt;
Le format NCNN est optimisé pour les processeurs ARM comme celui du Raspberry Pi. La conversion du modèle .pt en format NCNN permet de passer de &#039;&#039;&#039;3 FPS à 12 FPS&#039;&#039;&#039; sur le Raspberry Pi 5. Cette étape est fortement recommandée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
: &#039;&#039;&#039;python3 convert_ncnn.py&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
:Le script génère un dossier modelv1_ncnn_model/ contenant tous les fichiers nécessaires.&lt;br /&gt;
:Dans main.py, changer MODEL_PATH pour pointer vers ce dossier au lieu du fichier .pt.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Important :&#039;&#039;&#039; Effectuer la conversion sur le Raspberry Pi lui-même pour garantir la compatibilité.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====Créer son propre dataset personnalisé====&lt;br /&gt;
 &lt;br /&gt;
Si le dataset public ne correspond pas suffisamment à l&#039;environnement de production, il est possible d&#039;améliorer le modèle en filmant sur place.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;1.&#039;&#039;&#039; Filmer plusieurs courtes vidéos (5 à 15 minutes) dans différentes zones et conditions d&#039;éclairage avec record.py.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;2.&#039;&#039;&#039; Extraire les frames automatiquement avec extract_frames.py — une image toutes les 3 secondes génère environ 200 à 300 images par vidéo.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;3.&#039;&#039;&#039; Annoter les images sur Roboflow en utilisant la fonction Auto-Label avec le modèle existant pour minimiser le travail manuel.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;4.&#039;&#039;&#039; Réentraîner le modèle avec le nouveau dataset.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Conseil :&#039;&#039;&#039; Filmer avec la même caméra USB que celle utilisée en production garantit que le modèle sera entraîné sur des images identiques à ce qu&#039;il verra en temps réel.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Installation des librairies====&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Sur le Raspberry Pi 5 (exécution) :&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
: pip install torch torchvision --index-url &amp;lt;nowiki&amp;gt;https://download.pytorch.org/whl/cpu&amp;lt;/nowiki&amp;gt; --break-system-packages --no-cache-dir&lt;br /&gt;
: pip install ultralytics opencv-python lgpio ncnn pnnx --break-system-packages --no-cache-dir&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Sur un ordinateur Linux (entraînement et conversion) :&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
: pip install ultralytics torch torchvision opencv-python ncnn pnnx&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Librairie !! Rôle !! Pi 5 !! PC Linux&lt;br /&gt;
|-&lt;br /&gt;
| ultralytics || Modèle YOLO || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| torch / torchvision || Moteur d&#039;apprentissage PyTorch || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| opencv-python || Capture et affichage vidéo || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| lgpio || Contrôle des broches GPIO || ✓ || ✗&lt;br /&gt;
|-&lt;br /&gt;
| ncnn / pnnx || Conversion et inférence NCNN || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| numpy || Calculs mathématiques (inclus automatiquement) || ✓ || ✓&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
 &lt;br /&gt;
*Raspberry Pi 5 (8 Go recommandé, 4 Go minimum)&lt;br /&gt;
*Carte microSD classe A2, 32 Go minimum (SanDisk ou Samsung Endurance recommandé)&lt;br /&gt;
*Câble d&#039;alimentation USB-C 5V/5A (27W) — câble officiel Raspberry Pi 5 obligatoire&lt;br /&gt;
*Caméra USB type A&lt;br /&gt;
*Relais 5V (module 1 canal)&lt;br /&gt;
*Gyrophare 120V CA&lt;br /&gt;
*Câbles Dupont mâle-femelle (connexions GPIO)&lt;br /&gt;
*Câble micro HDMI (optionnel — pour connecter un écran)&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Attention :&#039;&#039;&#039; Toujours éteindre le Raspberry Pi proprement avec la commande &#039;&#039;&#039;sudo shutdown -h now&#039;&#039;&#039; avant de couper l&#039;alimentation. Une coupure brusque peut corrompre la carte microSD.&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=1036</id>
		<title>Reconnaissance objet</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=1036"/>
		<updated>2026-03-29T21:39:45Z</updated>

		<summary type="html">&lt;p&gt;2182036 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description du projet==&lt;br /&gt;
Le but du projet est de détecter un objet (dans notre cas, un chariot élévateur) dans une image provenant d&#039;une caméra à l&#039;aide d&#039;un modèle de reconnaissance d&#039;objets préentraîné. Lorsque le programme détecte un chariot élévateur, un gyrophare s&#039;active afin d&#039;avertir les travailleurs de sa présence. Le programme s&#039;exécute sur un Raspberry Pi 5, un micro-ordinateur doté d&#039;entrées et de sorties programmables. La caméra y est connectée directement par USB. Étant donné que les sorties du Raspberry Pi fonctionnent en 3,3 V CC, un relais est utilisé pour commander l&#039;alimentation d&#039;un gyrophare fonctionnant en 120 V CA.&lt;br /&gt;
 &lt;br /&gt;
:[[File:lift.png|800px]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
===Fonctionnement global===&lt;br /&gt;
 &lt;br /&gt;
Le projet repose sur un seul fichier Python principal (main.py) qui gère simultanément la détection YOLO et le contrôle des sorties GPIO grâce à un système de thread séparé.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Structure des fichiers====&lt;br /&gt;
 &lt;br /&gt;
Le dossier de projet est organisé en trois catégories selon leur utilisation.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Fichier !! Rôle !! Catégorie&lt;br /&gt;
|-&lt;br /&gt;
| main.py || Fichier principal — lance la détection YOLO et contrôle les GPIO || Exécution&lt;br /&gt;
|-&lt;br /&gt;
| modelv1_ncnn_model/ || Modèle YOLO converti au format NCNN (dossier) || Exécution&lt;br /&gt;
|-&lt;br /&gt;
| record.py || Enregistre une vidéo depuis la caméra USB || Création du dataset&lt;br /&gt;
|-&lt;br /&gt;
| extract_frames.py || Extrait des images d&#039;une vidéo pour créer un dataset || Création du dataset&lt;br /&gt;
|-&lt;br /&gt;
| convert_ncnn.py || Convertit un modèle .pt au format NCNN || Conversion&lt;br /&gt;
|-&lt;br /&gt;
| modelv1.pt || Modèle YOLO original (format PyTorch) || Conversion&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====Fichier Python principal (main.py)====&lt;br /&gt;
 &lt;br /&gt;
Le fichier main.py gère l&#039;image de la caméra en appliquant le modèle pré-entraîné sur chaque frame. Il affiche le nombre d&#039;objets détectés, les FPS, le pourcentage de certitude et la boîte de détection de classe. La classe cible, le seuil de confiance et tous les paramètres sont configurables directement en haut du fichier.&lt;br /&gt;
 &lt;br /&gt;
Le programme supporte deux types de sources : une caméra USB ou un fichier vidéo, sélectionnable via la variable SOURCE en haut du fichier.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Paramètres configurables en haut du fichier :&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Paramètre !! Description !! Valeur par défaut&lt;br /&gt;
|-&lt;br /&gt;
| MODEL_PATH || Chemin vers le modèle YOLO (.pt ou dossier NCNN) || &#039;modelv1_ncnn_model&#039;&lt;br /&gt;
|-&lt;br /&gt;
| SOURCE || Source vidéo — &#039;usb0&#039; pour caméra, &#039;video.mp4&#039; pour fichier || &#039;usb0&#039;&lt;br /&gt;
|-&lt;br /&gt;
| CONFIANCE_MIN || Seuil de confiance minimum (0.0 à 1.0) || 0.5&lt;br /&gt;
|-&lt;br /&gt;
| CLASSE_CIBLE || Classe à détecter, ou &#039;any&#039; pour toutes les classes || &#039;Forklift&#039;&lt;br /&gt;
|-&lt;br /&gt;
| GPIO_PIN || Broche BCM de la sortie principale || 17&lt;br /&gt;
|-&lt;br /&gt;
| PIN_LUMIERE_DETECTION || Lumière qui suit le GPIO principal || 27&lt;br /&gt;
|-&lt;br /&gt;
| PIN_LUMIERE_STATUT || Lumière allumée au démarrage, éteinte à la fermeture || 22&lt;br /&gt;
|-&lt;br /&gt;
| DUREE_DETECTION || Secondes que la condition doit être maintenue avant activation || 2.0&lt;br /&gt;
|-&lt;br /&gt;
| DUREE_ACTIVATION || Secondes que le GPIO reste actif || 3.0&lt;br /&gt;
|-&lt;br /&gt;
| RESOLUTION || Résolution caméra et inférence || (640, 640)&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Note :&#039;&#039;&#039; La valeur de CLASSE_CIBLE est insensible à la casse. Écrire &#039;forklift&#039;, &#039;Forklift&#039; ou &#039;FORKLIFT&#039; donnera le même résultat.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Contrôle GPIO====&lt;br /&gt;
 &lt;br /&gt;
La logique GPIO tourne dans un thread séparé en parallèle de la détection YOLO, ce qui évite tout ralentissement. Trois sorties sont disponibles :&lt;br /&gt;
 &lt;br /&gt;
*&#039;&#039;&#039;GPIO principal (GPIO_PIN)&#039;&#039;&#039; — activé lorsque la classe cible est détectée pendant DUREE_DETECTION secondes.&lt;br /&gt;
*&#039;&#039;&#039;Lumière de détection (PIN_LUMIERE_DETECTION)&#039;&#039;&#039; — suit exactement le même comportement que le GPIO principal.&lt;br /&gt;
*&#039;&#039;&#039;Lumière de statut (PIN_LUMIERE_STATUT)&#039;&#039;&#039; — s&#039;allume au démarrage du programme et s&#039;éteint à la fermeture.&lt;br /&gt;
 &lt;br /&gt;
Si la condition est toujours vraie à la fin de DUREE_ACTIVATION, le GPIO se renouvelle automatiquement sans coupure. À la fermeture du programme (touche q ou Ctrl+C), toutes les sorties sont éteintes proprement.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Création du modèle pré-entraîné====&lt;br /&gt;
 &lt;br /&gt;
Un modèle YOLO pré-entraîné (.pt) est une intelligence artificielle qui a appris à reconnaître certains objets grâce à un entraînement préalable sur une grande quantité d&#039;images. C&#039;est le cerveau du projet.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;1. Choisir le bon dataset&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:Nous conseillons d&#039;utiliser la plateforme Roboflow Universe pour trouver un dataset public.&lt;br /&gt;
:Rechercher avec des mots-clés précis (ex : &amp;quot;forklift&amp;quot;, &amp;quot;helmet detection&amp;quot;, etc.).&lt;br /&gt;
:Vérifier le nombre d&#039;images, la diversité des photos et la qualité des annotations.&lt;br /&gt;
:Choisir un dataset avec plusieurs centaines ou milliers d&#039;images bien étiquetées.&lt;br /&gt;
:Une fois le bon dataset trouvé, le télécharger en format ZIP.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Attention :&#039;&#039;&#039; Vérifier que le dataset contient des &#039;&#039;&#039;images nulles&#039;&#039;&#039; (images sans l&#039;objet à détecter). Ces images sont essentielles pour éviter les faux positifs.&lt;br /&gt;
 &lt;br /&gt;
:Une fois extrait, vérifier que le dossier contient les 3 éléments importants : data.yaml, train/ et valid/.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;2. Ajouter le modèle YOLO de base&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:YOLO possède des modèles de base pré-entraînés. Nous utilisons la version &#039;&#039;&#039;yolo11n&#039;&#039;&#039; (nano), la plus légère pour fonctionner sur Raspberry Pi.&lt;br /&gt;
:Télécharger yolo11n.pt depuis le site officiel d&#039;Ultralytics et le placer dans le même dossier que data.yaml.&lt;br /&gt;
 &lt;br /&gt;
:[[File:version_yolo.png|600px]]&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;3. Entraînement&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:L&#039;entraînement est recommandé sur un ordinateur Linux avec une carte graphique NVIDIA.&lt;br /&gt;
:Dans le terminal, entrer la commande :&lt;br /&gt;
 &lt;br /&gt;
: &#039;&#039;&#039;yolo detect train model=yolo11n.pt data=data.yaml epochs=100 imgsz=640 batch=16 patience=20&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Paramètre !! Description !! Valeur recommandée&lt;br /&gt;
|-&lt;br /&gt;
| model || Modèle de base pré-entraîné || yolo11n.pt&lt;br /&gt;
|-&lt;br /&gt;
| data || Fichier de configuration du dataset || data.yaml&lt;br /&gt;
|-&lt;br /&gt;
| epochs || Nombre de cycles d&#039;apprentissage || 100&lt;br /&gt;
|-&lt;br /&gt;
| imgsz || Taille des images (maximum YOLO) || 640&lt;br /&gt;
|-&lt;br /&gt;
| batch || Images traitées simultanément (selon le GPU) || 16&lt;br /&gt;
|-&lt;br /&gt;
| patience || Arrête si plus d&#039;amélioration || 20&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
:Le modèle entraîné sera disponible dans runs/detect/train/weights/best.pt.&lt;br /&gt;
 &lt;br /&gt;
:Pour faire l&#039;entraînement sur Windows, voici une vidéo de référence : https://www.youtube.com/watch?v=r0RspiLG260&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Librairies requises pour l&#039;entraînement :&#039;&#039;&#039;&lt;br /&gt;
*ultralytics&lt;br /&gt;
*torch et torchvision&lt;br /&gt;
*opencv-python&lt;br /&gt;
*python3&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Conversion NCNN (optimisation Raspberry Pi)====&lt;br /&gt;
 &lt;br /&gt;
Le format NCNN est optimisé pour les processeurs ARM comme celui du Raspberry Pi. La conversion du modèle .pt en format NCNN permet de passer de &#039;&#039;&#039;3 FPS à 12 FPS&#039;&#039;&#039; sur le Raspberry Pi 5. Cette étape est fortement recommandée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
: &#039;&#039;&#039;python3 convert_ncnn.py&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
:Le script génère un dossier modelv1_ncnn_model/ contenant tous les fichiers nécessaires.&lt;br /&gt;
:Dans main.py, changer MODEL_PATH pour pointer vers ce dossier au lieu du fichier .pt.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Important :&#039;&#039;&#039; Effectuer la conversion sur le Raspberry Pi lui-même pour garantir la compatibilité.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====Créer son propre dataset personnalisé====&lt;br /&gt;
 &lt;br /&gt;
Si le dataset public ne correspond pas suffisamment à l&#039;environnement de production, il est possible d&#039;améliorer le modèle en filmant sur place.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;1.&#039;&#039;&#039; Filmer plusieurs courtes vidéos (5 à 15 minutes) dans différentes zones et conditions d&#039;éclairage avec record.py.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;2.&#039;&#039;&#039; Extraire les frames automatiquement avec extract_frames.py — une image toutes les 3 secondes génère environ 200 à 300 images par vidéo.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;3.&#039;&#039;&#039; Annoter les images sur Roboflow en utilisant la fonction Auto-Label avec le modèle existant pour minimiser le travail manuel.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;4.&#039;&#039;&#039; Réentraîner le modèle avec le nouveau dataset.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Conseil :&#039;&#039;&#039; Filmer avec la même caméra USB que celle utilisée en production garantit que le modèle sera entraîné sur des images identiques à ce qu&#039;il verra en temps réel.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Installation des librairies====&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Sur le Raspberry Pi 5 (exécution) :&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
: pip install torch torchvision --index-url &amp;lt;nowiki&amp;gt;https://download.pytorch.org/whl/cpu&amp;lt;/nowiki&amp;gt; --break-system-packages --no-cache-dir&lt;br /&gt;
: pip install ultralytics opencv-python lgpio ncnn pnnx --break-system-packages --no-cache-dir&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Sur un ordinateur Linux (entraînement et conversion) :&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
: pip install ultralytics torch torchvision opencv-python ncnn pnnx&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Librairie !! Rôle !! Pi 5 !! PC Linux&lt;br /&gt;
|-&lt;br /&gt;
| ultralytics || Modèle YOLO || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| torch / torchvision || Moteur d&#039;apprentissage PyTorch || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| opencv-python || Capture et affichage vidéo || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| lgpio || Contrôle des broches GPIO || ✓ || ✗&lt;br /&gt;
|-&lt;br /&gt;
| ncnn / pnnx || Conversion et inférence NCNN || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| numpy || Calculs mathématiques (inclus automatiquement) || ✓ || ✓&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
 &lt;br /&gt;
*Raspberry Pi 5 (8 Go recommandé, 4 Go minimum)&lt;br /&gt;
*Carte microSD classe A2, 32 Go minimum (SanDisk ou Samsung Endurance recommandé)&lt;br /&gt;
*Câble d&#039;alimentation USB-C 5V/5A (27W) — câble officiel Raspberry Pi 5 obligatoire&lt;br /&gt;
*Caméra USB type A&lt;br /&gt;
*Relais 5V (module 1 canal)&lt;br /&gt;
*Gyrophare 120V CA&lt;br /&gt;
*Câbles Dupont mâle-femelle (connexions GPIO)&lt;br /&gt;
*Câble micro HDMI (optionnel — pour connecter un écran)&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Attention :&#039;&#039;&#039; Toujours éteindre le Raspberry Pi proprement avec la commande &#039;&#039;&#039;sudo shutdown -h now&#039;&#039;&#039; avant de couper l&#039;alimentation. Une coupure brusque peut corrompre la carte microSD.&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Fichier:Lift.png&amp;diff=1035</id>
		<title>Fichier:Lift.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Fichier:Lift.png&amp;diff=1035"/>
		<updated>2026-03-29T21:38:29Z</updated>

		<summary type="html">&lt;p&gt;2182036 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Fichier:Pin.jpg&amp;diff=1034</id>
		<title>Fichier:Pin.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Fichier:Pin.jpg&amp;diff=1034"/>
		<updated>2026-03-29T21:38:12Z</updated>

		<summary type="html">&lt;p&gt;2182036 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=1033</id>
		<title>Reconnaissance objet</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=1033"/>
		<updated>2026-03-29T21:36:40Z</updated>

		<summary type="html">&lt;p&gt;2182036 : /* Structure des fichiers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description du projet==&lt;br /&gt;
Le but du projet est de détecter un objet (dans notre cas, un chariot élévateur) dans une image provenant d&#039;une caméra à l&#039;aide d&#039;un modèle de reconnaissance d&#039;objets préentraîné. Lorsque le programme détecte un chariot élévateur, un gyrophare s&#039;active afin d&#039;avertir les travailleurs de sa présence. Le programme s&#039;exécute sur un Raspberry Pi 5, un micro-ordinateur doté d&#039;entrées et de sorties programmables. La caméra y est connectée directement par USB. Étant donné que les sorties du Raspberry Pi fonctionnent en 3,3 V CC, un relais est utilisé pour commander l&#039;alimentation d&#039;un gyrophare fonctionnant en 120 V CA.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
===Fonctionnement global===&lt;br /&gt;
 &lt;br /&gt;
Le projet repose sur un seul fichier Python principal (main.py) qui gère simultanément la détection YOLO et le contrôle des sorties GPIO grâce à un système de thread séparé.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Structure des fichiers====&lt;br /&gt;
 &lt;br /&gt;
Le dossier de projet est organisé en trois catégories selon leur utilisation.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Fichier !! Rôle !! Catégorie&lt;br /&gt;
|-&lt;br /&gt;
| main.py || Fichier principal — lance la détection YOLO et contrôle les GPIO || Exécution&lt;br /&gt;
|-&lt;br /&gt;
| modelv1_ncnn_model/ || Modèle YOLO converti au format NCNN (dossier) || Exécution&lt;br /&gt;
|-&lt;br /&gt;
| record.py || Enregistre une vidéo depuis la caméra USB || Création du dataset&lt;br /&gt;
|-&lt;br /&gt;
| extract_frames.py || Extrait des images d&#039;une vidéo pour créer un dataset || Création du dataset&lt;br /&gt;
|-&lt;br /&gt;
| convert_ncnn.py || Convertit un modèle .pt au format NCNN || Conversion&lt;br /&gt;
|-&lt;br /&gt;
| modelv1.pt || Modèle YOLO original (format PyTorch) || Conversion&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====Fichier Python principal (main.py)====&lt;br /&gt;
 &lt;br /&gt;
Le fichier main.py gère l&#039;image de la caméra en appliquant le modèle pré-entraîné sur chaque frame. Il affiche le nombre d&#039;objets détectés, les FPS, le pourcentage de certitude et la boîte de détection de classe. La classe cible, le seuil de confiance et tous les paramètres sont configurables directement en haut du fichier.&lt;br /&gt;
 &lt;br /&gt;
Le programme supporte deux types de sources : une caméra USB ou un fichier vidéo, sélectionnable via la variable SOURCE en haut du fichier.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Paramètres configurables en haut du fichier :&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Paramètre !! Description !! Valeur par défaut&lt;br /&gt;
|-&lt;br /&gt;
| MODEL_PATH || Chemin vers le modèle YOLO (.pt ou dossier NCNN) || &#039;modelv1_ncnn_model&#039;&lt;br /&gt;
|-&lt;br /&gt;
| SOURCE || Source vidéo — &#039;usb0&#039; pour caméra, &#039;video.mp4&#039; pour fichier || &#039;usb0&#039;&lt;br /&gt;
|-&lt;br /&gt;
| CONFIANCE_MIN || Seuil de confiance minimum (0.0 à 1.0) || 0.5&lt;br /&gt;
|-&lt;br /&gt;
| CLASSE_CIBLE || Classe à détecter, ou &#039;any&#039; pour toutes les classes || &#039;Forklift&#039;&lt;br /&gt;
|-&lt;br /&gt;
| GPIO_PIN || Broche BCM de la sortie principale || 17&lt;br /&gt;
|-&lt;br /&gt;
| PIN_LUMIERE_DETECTION || Lumière qui suit le GPIO principal || 27&lt;br /&gt;
|-&lt;br /&gt;
| PIN_LUMIERE_STATUT || Lumière allumée au démarrage, éteinte à la fermeture || 22&lt;br /&gt;
|-&lt;br /&gt;
| DUREE_DETECTION || Secondes que la condition doit être maintenue avant activation || 2.0&lt;br /&gt;
|-&lt;br /&gt;
| DUREE_ACTIVATION || Secondes que le GPIO reste actif || 3.0&lt;br /&gt;
|-&lt;br /&gt;
| RESOLUTION || Résolution caméra et inférence || (640, 640)&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Note :&#039;&#039;&#039; La valeur de CLASSE_CIBLE est insensible à la casse. Écrire &#039;forklift&#039;, &#039;Forklift&#039; ou &#039;FORKLIFT&#039; donnera le même résultat.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Contrôle GPIO====&lt;br /&gt;
 &lt;br /&gt;
La logique GPIO tourne dans un thread séparé en parallèle de la détection YOLO, ce qui évite tout ralentissement. Trois sorties sont disponibles :&lt;br /&gt;
 &lt;br /&gt;
*&#039;&#039;&#039;GPIO principal (GPIO_PIN)&#039;&#039;&#039; — activé lorsque la classe cible est détectée pendant DUREE_DETECTION secondes.&lt;br /&gt;
*&#039;&#039;&#039;Lumière de détection (PIN_LUMIERE_DETECTION)&#039;&#039;&#039; — suit exactement le même comportement que le GPIO principal.&lt;br /&gt;
*&#039;&#039;&#039;Lumière de statut (PIN_LUMIERE_STATUT)&#039;&#039;&#039; — s&#039;allume au démarrage du programme et s&#039;éteint à la fermeture.&lt;br /&gt;
 &lt;br /&gt;
Si la condition est toujours vraie à la fin de DUREE_ACTIVATION, le GPIO se renouvelle automatiquement sans coupure. À la fermeture du programme (touche q ou Ctrl+C), toutes les sorties sont éteintes proprement.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Création du modèle pré-entraîné====&lt;br /&gt;
 &lt;br /&gt;
Un modèle YOLO pré-entraîné (.pt) est une intelligence artificielle qui a appris à reconnaître certains objets grâce à un entraînement préalable sur une grande quantité d&#039;images. C&#039;est le cerveau du projet.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;1. Choisir le bon dataset&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:Nous conseillons d&#039;utiliser la plateforme Roboflow Universe pour trouver un dataset public.&lt;br /&gt;
:Rechercher avec des mots-clés précis (ex : &amp;quot;forklift&amp;quot;, &amp;quot;helmet detection&amp;quot;, etc.).&lt;br /&gt;
:Vérifier le nombre d&#039;images, la diversité des photos et la qualité des annotations.&lt;br /&gt;
:Choisir un dataset avec plusieurs centaines ou milliers d&#039;images bien étiquetées.&lt;br /&gt;
:Une fois le bon dataset trouvé, le télécharger en format ZIP.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Attention :&#039;&#039;&#039; Vérifier que le dataset contient des &#039;&#039;&#039;images nulles&#039;&#039;&#039; (images sans l&#039;objet à détecter). Ces images sont essentielles pour éviter les faux positifs.&lt;br /&gt;
 &lt;br /&gt;
:Une fois extrait, vérifier que le dossier contient les 3 éléments importants : data.yaml, train/ et valid/.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;2. Ajouter le modèle YOLO de base&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:YOLO possède des modèles de base pré-entraînés. Nous utilisons la version &#039;&#039;&#039;yolo11n&#039;&#039;&#039; (nano), la plus légère pour fonctionner sur Raspberry Pi.&lt;br /&gt;
:Télécharger yolo11n.pt depuis le site officiel d&#039;Ultralytics et le placer dans le même dossier que data.yaml.&lt;br /&gt;
 &lt;br /&gt;
:[[File:version_yolo.png|600px]]&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;3. Entraînement&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:L&#039;entraînement est recommandé sur un ordinateur Linux avec une carte graphique NVIDIA.&lt;br /&gt;
:Dans le terminal, entrer la commande :&lt;br /&gt;
 &lt;br /&gt;
: &#039;&#039;&#039;yolo detect train model=yolo11n.pt data=data.yaml epochs=100 imgsz=640 batch=16 patience=20&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Paramètre !! Description !! Valeur recommandée&lt;br /&gt;
|-&lt;br /&gt;
| model || Modèle de base pré-entraîné || yolo11n.pt&lt;br /&gt;
|-&lt;br /&gt;
| data || Fichier de configuration du dataset || data.yaml&lt;br /&gt;
|-&lt;br /&gt;
| epochs || Nombre de cycles d&#039;apprentissage || 100&lt;br /&gt;
|-&lt;br /&gt;
| imgsz || Taille des images (maximum YOLO) || 640&lt;br /&gt;
|-&lt;br /&gt;
| batch || Images traitées simultanément (selon le GPU) || 16&lt;br /&gt;
|-&lt;br /&gt;
| patience || Arrête si plus d&#039;amélioration || 20&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
:Le modèle entraîné sera disponible dans runs/detect/train/weights/best.pt.&lt;br /&gt;
 &lt;br /&gt;
:Pour faire l&#039;entraînement sur Windows, voici une vidéo de référence : https://www.youtube.com/watch?v=r0RspiLG260&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Librairies requises pour l&#039;entraînement :&#039;&#039;&#039;&lt;br /&gt;
*ultralytics&lt;br /&gt;
*torch et torchvision&lt;br /&gt;
*opencv-python&lt;br /&gt;
*python3&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Conversion NCNN (optimisation Raspberry Pi)====&lt;br /&gt;
 &lt;br /&gt;
Le format NCNN est optimisé pour les processeurs ARM comme celui du Raspberry Pi. La conversion du modèle .pt en format NCNN permet de passer de &#039;&#039;&#039;3 FPS à 12 FPS&#039;&#039;&#039; sur le Raspberry Pi 5. Cette étape est fortement recommandée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
: &#039;&#039;&#039;python3 convert_ncnn.py&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
:Le script génère un dossier modelv1_ncnn_model/ contenant tous les fichiers nécessaires.&lt;br /&gt;
:Dans main.py, changer MODEL_PATH pour pointer vers ce dossier au lieu du fichier .pt.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Important :&#039;&#039;&#039; Effectuer la conversion sur le Raspberry Pi lui-même pour garantir la compatibilité.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====Créer son propre dataset personnalisé====&lt;br /&gt;
 &lt;br /&gt;
Si le dataset public ne correspond pas suffisamment à l&#039;environnement de production, il est possible d&#039;améliorer le modèle en filmant sur place.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;1.&#039;&#039;&#039; Filmer plusieurs courtes vidéos (5 à 15 minutes) dans différentes zones et conditions d&#039;éclairage avec record.py.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;2.&#039;&#039;&#039; Extraire les frames automatiquement avec extract_frames.py — une image toutes les 3 secondes génère environ 200 à 300 images par vidéo.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;3.&#039;&#039;&#039; Annoter les images sur Roboflow en utilisant la fonction Auto-Label avec le modèle existant pour minimiser le travail manuel.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;4.&#039;&#039;&#039; Réentraîner le modèle avec le nouveau dataset.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Conseil :&#039;&#039;&#039; Filmer avec la même caméra USB que celle utilisée en production garantit que le modèle sera entraîné sur des images identiques à ce qu&#039;il verra en temps réel.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Installation des librairies====&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Sur le Raspberry Pi 5 (exécution) :&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
: pip install torch torchvision --index-url &amp;lt;nowiki&amp;gt;https://download.pytorch.org/whl/cpu&amp;lt;/nowiki&amp;gt; --break-system-packages --no-cache-dir&lt;br /&gt;
: pip install ultralytics opencv-python lgpio ncnn pnnx --break-system-packages --no-cache-dir&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Sur un ordinateur Linux (entraînement et conversion) :&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
: pip install ultralytics torch torchvision opencv-python ncnn pnnx&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Librairie !! Rôle !! Pi 5 !! PC Linux&lt;br /&gt;
|-&lt;br /&gt;
| ultralytics || Modèle YOLO || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| torch / torchvision || Moteur d&#039;apprentissage PyTorch || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| opencv-python || Capture et affichage vidéo || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| lgpio || Contrôle des broches GPIO || ✓ || ✗&lt;br /&gt;
|-&lt;br /&gt;
| ncnn / pnnx || Conversion et inférence NCNN || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| numpy || Calculs mathématiques (inclus automatiquement) || ✓ || ✓&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
 &lt;br /&gt;
*Raspberry Pi 5 (8 Go recommandé, 4 Go minimum)&lt;br /&gt;
*Carte microSD classe A2, 32 Go minimum (SanDisk ou Samsung Endurance recommandé)&lt;br /&gt;
*Câble d&#039;alimentation USB-C 5V/5A (27W) — câble officiel Raspberry Pi 5 obligatoire&lt;br /&gt;
*Caméra USB type A&lt;br /&gt;
*Relais 5V (module 1 canal)&lt;br /&gt;
*Gyrophare 120V CA&lt;br /&gt;
*Câbles Dupont mâle-femelle (connexions GPIO)&lt;br /&gt;
*Câble micro HDMI (optionnel — pour connecter un écran)&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Attention :&#039;&#039;&#039; Toujours éteindre le Raspberry Pi proprement avec la commande &#039;&#039;&#039;sudo shutdown -h now&#039;&#039;&#039; avant de couper l&#039;alimentation. Une coupure brusque peut corrompre la carte microSD.&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Fichier:Wikilayout.png&amp;diff=1032</id>
		<title>Fichier:Wikilayout.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Fichier:Wikilayout.png&amp;diff=1032"/>
		<updated>2026-03-29T21:31:24Z</updated>

		<summary type="html">&lt;p&gt;2182036 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=1031</id>
		<title>Reconnaissance objet</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=1031"/>
		<updated>2026-03-29T21:30:25Z</updated>

		<summary type="html">&lt;p&gt;2182036 : /* Conversion NCNN (optimisation Raspberry Pi) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description du projet==&lt;br /&gt;
Le but du projet est de détecter un objet (dans notre cas, un chariot élévateur) dans une image provenant d&#039;une caméra à l&#039;aide d&#039;un modèle de reconnaissance d&#039;objets préentraîné. Lorsque le programme détecte un chariot élévateur, un gyrophare s&#039;active afin d&#039;avertir les travailleurs de sa présence. Le programme s&#039;exécute sur un Raspberry Pi 5, un micro-ordinateur doté d&#039;entrées et de sorties programmables. La caméra y est connectée directement par USB. Étant donné que les sorties du Raspberry Pi fonctionnent en 3,3 V CC, un relais est utilisé pour commander l&#039;alimentation d&#039;un gyrophare fonctionnant en 120 V CA.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
===Fonctionnement global===&lt;br /&gt;
 &lt;br /&gt;
Le projet repose sur un seul fichier Python principal (main.py) qui gère simultanément la détection YOLO et le contrôle des sorties GPIO grâce à un système de thread séparé.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Structure des fichiers====&lt;br /&gt;
 &lt;br /&gt;
Le dossier de projet est organisé en trois catégories selon leur utilisation.&lt;br /&gt;
 &lt;br /&gt;
:[[File:wikilayout.png|600px]]&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Fichier !! Rôle !! Catégorie&lt;br /&gt;
|-&lt;br /&gt;
| main.py || Fichier principal — lance la détection YOLO et contrôle les GPIO || Exécution&lt;br /&gt;
|-&lt;br /&gt;
| modelv1_ncnn_model/ || Modèle YOLO converti au format NCNN (dossier) || Exécution&lt;br /&gt;
|-&lt;br /&gt;
| record.py || Enregistre une vidéo depuis la caméra USB || Création du dataset&lt;br /&gt;
|-&lt;br /&gt;
| extract_frames.py || Extrait des images d&#039;une vidéo pour créer un dataset || Création du dataset&lt;br /&gt;
|-&lt;br /&gt;
| convert_ncnn.py || Convertit un modèle .pt au format NCNN || Conversion&lt;br /&gt;
|-&lt;br /&gt;
| modelv1.pt || Modèle YOLO original (format PyTorch) || Conversion&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Fichier Python principal (main.py)====&lt;br /&gt;
 &lt;br /&gt;
Le fichier main.py gère l&#039;image de la caméra en appliquant le modèle pré-entraîné sur chaque frame. Il affiche le nombre d&#039;objets détectés, les FPS, le pourcentage de certitude et la boîte de détection de classe. La classe cible, le seuil de confiance et tous les paramètres sont configurables directement en haut du fichier.&lt;br /&gt;
 &lt;br /&gt;
Le programme supporte deux types de sources : une caméra USB ou un fichier vidéo, sélectionnable via la variable SOURCE en haut du fichier.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Paramètres configurables en haut du fichier :&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Paramètre !! Description !! Valeur par défaut&lt;br /&gt;
|-&lt;br /&gt;
| MODEL_PATH || Chemin vers le modèle YOLO (.pt ou dossier NCNN) || &#039;modelv1_ncnn_model&#039;&lt;br /&gt;
|-&lt;br /&gt;
| SOURCE || Source vidéo — &#039;usb0&#039; pour caméra, &#039;video.mp4&#039; pour fichier || &#039;usb0&#039;&lt;br /&gt;
|-&lt;br /&gt;
| CONFIANCE_MIN || Seuil de confiance minimum (0.0 à 1.0) || 0.5&lt;br /&gt;
|-&lt;br /&gt;
| CLASSE_CIBLE || Classe à détecter, ou &#039;any&#039; pour toutes les classes || &#039;Forklift&#039;&lt;br /&gt;
|-&lt;br /&gt;
| GPIO_PIN || Broche BCM de la sortie principale || 17&lt;br /&gt;
|-&lt;br /&gt;
| PIN_LUMIERE_DETECTION || Lumière qui suit le GPIO principal || 27&lt;br /&gt;
|-&lt;br /&gt;
| PIN_LUMIERE_STATUT || Lumière allumée au démarrage, éteinte à la fermeture || 22&lt;br /&gt;
|-&lt;br /&gt;
| DUREE_DETECTION || Secondes que la condition doit être maintenue avant activation || 2.0&lt;br /&gt;
|-&lt;br /&gt;
| DUREE_ACTIVATION || Secondes que le GPIO reste actif || 3.0&lt;br /&gt;
|-&lt;br /&gt;
| RESOLUTION || Résolution caméra et inférence || (640, 640)&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Note :&#039;&#039;&#039; La valeur de CLASSE_CIBLE est insensible à la casse. Écrire &#039;forklift&#039;, &#039;Forklift&#039; ou &#039;FORKLIFT&#039; donnera le même résultat.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Contrôle GPIO====&lt;br /&gt;
 &lt;br /&gt;
La logique GPIO tourne dans un thread séparé en parallèle de la détection YOLO, ce qui évite tout ralentissement. Trois sorties sont disponibles :&lt;br /&gt;
 &lt;br /&gt;
*&#039;&#039;&#039;GPIO principal (GPIO_PIN)&#039;&#039;&#039; — activé lorsque la classe cible est détectée pendant DUREE_DETECTION secondes.&lt;br /&gt;
*&#039;&#039;&#039;Lumière de détection (PIN_LUMIERE_DETECTION)&#039;&#039;&#039; — suit exactement le même comportement que le GPIO principal.&lt;br /&gt;
*&#039;&#039;&#039;Lumière de statut (PIN_LUMIERE_STATUT)&#039;&#039;&#039; — s&#039;allume au démarrage du programme et s&#039;éteint à la fermeture.&lt;br /&gt;
 &lt;br /&gt;
Si la condition est toujours vraie à la fin de DUREE_ACTIVATION, le GPIO se renouvelle automatiquement sans coupure. À la fermeture du programme (touche q ou Ctrl+C), toutes les sorties sont éteintes proprement.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Création du modèle pré-entraîné====&lt;br /&gt;
 &lt;br /&gt;
Un modèle YOLO pré-entraîné (.pt) est une intelligence artificielle qui a appris à reconnaître certains objets grâce à un entraînement préalable sur une grande quantité d&#039;images. C&#039;est le cerveau du projet.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;1. Choisir le bon dataset&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:Nous conseillons d&#039;utiliser la plateforme Roboflow Universe pour trouver un dataset public.&lt;br /&gt;
:Rechercher avec des mots-clés précis (ex : &amp;quot;forklift&amp;quot;, &amp;quot;helmet detection&amp;quot;, etc.).&lt;br /&gt;
:Vérifier le nombre d&#039;images, la diversité des photos et la qualité des annotations.&lt;br /&gt;
:Choisir un dataset avec plusieurs centaines ou milliers d&#039;images bien étiquetées.&lt;br /&gt;
:Une fois le bon dataset trouvé, le télécharger en format ZIP.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Attention :&#039;&#039;&#039; Vérifier que le dataset contient des &#039;&#039;&#039;images nulles&#039;&#039;&#039; (images sans l&#039;objet à détecter). Ces images sont essentielles pour éviter les faux positifs.&lt;br /&gt;
 &lt;br /&gt;
:Une fois extrait, vérifier que le dossier contient les 3 éléments importants : data.yaml, train/ et valid/.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;2. Ajouter le modèle YOLO de base&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:YOLO possède des modèles de base pré-entraînés. Nous utilisons la version &#039;&#039;&#039;yolo11n&#039;&#039;&#039; (nano), la plus légère pour fonctionner sur Raspberry Pi.&lt;br /&gt;
:Télécharger yolo11n.pt depuis le site officiel d&#039;Ultralytics et le placer dans le même dossier que data.yaml.&lt;br /&gt;
 &lt;br /&gt;
:[[File:version_yolo.png|600px]]&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;3. Entraînement&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:L&#039;entraînement est recommandé sur un ordinateur Linux avec une carte graphique NVIDIA.&lt;br /&gt;
:Dans le terminal, entrer la commande :&lt;br /&gt;
 &lt;br /&gt;
: &#039;&#039;&#039;yolo detect train model=yolo11n.pt data=data.yaml epochs=100 imgsz=640 batch=16 patience=20&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Paramètre !! Description !! Valeur recommandée&lt;br /&gt;
|-&lt;br /&gt;
| model || Modèle de base pré-entraîné || yolo11n.pt&lt;br /&gt;
|-&lt;br /&gt;
| data || Fichier de configuration du dataset || data.yaml&lt;br /&gt;
|-&lt;br /&gt;
| epochs || Nombre de cycles d&#039;apprentissage || 100&lt;br /&gt;
|-&lt;br /&gt;
| imgsz || Taille des images (maximum YOLO) || 640&lt;br /&gt;
|-&lt;br /&gt;
| batch || Images traitées simultanément (selon le GPU) || 16&lt;br /&gt;
|-&lt;br /&gt;
| patience || Arrête si plus d&#039;amélioration || 20&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
:Le modèle entraîné sera disponible dans runs/detect/train/weights/best.pt.&lt;br /&gt;
 &lt;br /&gt;
:Pour faire l&#039;entraînement sur Windows, voici une vidéo de référence : https://www.youtube.com/watch?v=r0RspiLG260&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Librairies requises pour l&#039;entraînement :&#039;&#039;&#039;&lt;br /&gt;
*ultralytics&lt;br /&gt;
*torch et torchvision&lt;br /&gt;
*opencv-python&lt;br /&gt;
*python3&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Conversion NCNN (optimisation Raspberry Pi)====&lt;br /&gt;
 &lt;br /&gt;
Le format NCNN est optimisé pour les processeurs ARM comme celui du Raspberry Pi. La conversion du modèle .pt en format NCNN permet de passer de &#039;&#039;&#039;3 FPS à 12 FPS&#039;&#039;&#039; sur le Raspberry Pi 5. Cette étape est fortement recommandée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
: &#039;&#039;&#039;python3 convert_ncnn.py&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
:Le script génère un dossier modelv1_ncnn_model/ contenant tous les fichiers nécessaires.&lt;br /&gt;
:Dans main.py, changer MODEL_PATH pour pointer vers ce dossier au lieu du fichier .pt.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Important :&#039;&#039;&#039; Effectuer la conversion sur le Raspberry Pi lui-même pour garantir la compatibilité.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====Créer son propre dataset personnalisé====&lt;br /&gt;
 &lt;br /&gt;
Si le dataset public ne correspond pas suffisamment à l&#039;environnement de production, il est possible d&#039;améliorer le modèle en filmant sur place.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;1.&#039;&#039;&#039; Filmer plusieurs courtes vidéos (5 à 15 minutes) dans différentes zones et conditions d&#039;éclairage avec record.py.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;2.&#039;&#039;&#039; Extraire les frames automatiquement avec extract_frames.py — une image toutes les 3 secondes génère environ 200 à 300 images par vidéo.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;3.&#039;&#039;&#039; Annoter les images sur Roboflow en utilisant la fonction Auto-Label avec le modèle existant pour minimiser le travail manuel.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;4.&#039;&#039;&#039; Réentraîner le modèle avec le nouveau dataset.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Conseil :&#039;&#039;&#039; Filmer avec la même caméra USB que celle utilisée en production garantit que le modèle sera entraîné sur des images identiques à ce qu&#039;il verra en temps réel.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Installation des librairies====&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Sur le Raspberry Pi 5 (exécution) :&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
: pip install torch torchvision --index-url &amp;lt;nowiki&amp;gt;https://download.pytorch.org/whl/cpu&amp;lt;/nowiki&amp;gt; --break-system-packages --no-cache-dir&lt;br /&gt;
: pip install ultralytics opencv-python lgpio ncnn pnnx --break-system-packages --no-cache-dir&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Sur un ordinateur Linux (entraînement et conversion) :&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
: pip install ultralytics torch torchvision opencv-python ncnn pnnx&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Librairie !! Rôle !! Pi 5 !! PC Linux&lt;br /&gt;
|-&lt;br /&gt;
| ultralytics || Modèle YOLO || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| torch / torchvision || Moteur d&#039;apprentissage PyTorch || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| opencv-python || Capture et affichage vidéo || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| lgpio || Contrôle des broches GPIO || ✓ || ✗&lt;br /&gt;
|-&lt;br /&gt;
| ncnn / pnnx || Conversion et inférence NCNN || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| numpy || Calculs mathématiques (inclus automatiquement) || ✓ || ✓&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
 &lt;br /&gt;
*Raspberry Pi 5 (8 Go recommandé, 4 Go minimum)&lt;br /&gt;
*Carte microSD classe A2, 32 Go minimum (SanDisk ou Samsung Endurance recommandé)&lt;br /&gt;
*Câble d&#039;alimentation USB-C 5V/5A (27W) — câble officiel Raspberry Pi 5 obligatoire&lt;br /&gt;
*Caméra USB type A&lt;br /&gt;
*Relais 5V (module 1 canal)&lt;br /&gt;
*Gyrophare 120V CA&lt;br /&gt;
*Câbles Dupont mâle-femelle (connexions GPIO)&lt;br /&gt;
*Câble micro HDMI (optionnel — pour connecter un écran)&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Attention :&#039;&#039;&#039; Toujours éteindre le Raspberry Pi proprement avec la commande &#039;&#039;&#039;sudo shutdown -h now&#039;&#039;&#039; avant de couper l&#039;alimentation. Une coupure brusque peut corrompre la carte microSD.&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=1030</id>
		<title>Reconnaissance objet</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=1030"/>
		<updated>2026-03-29T21:30:14Z</updated>

		<summary type="html">&lt;p&gt;2182036 : /* Conversion NCNN (optimisation Raspberry Pi) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description du projet==&lt;br /&gt;
Le but du projet est de détecter un objet (dans notre cas, un chariot élévateur) dans une image provenant d&#039;une caméra à l&#039;aide d&#039;un modèle de reconnaissance d&#039;objets préentraîné. Lorsque le programme détecte un chariot élévateur, un gyrophare s&#039;active afin d&#039;avertir les travailleurs de sa présence. Le programme s&#039;exécute sur un Raspberry Pi 5, un micro-ordinateur doté d&#039;entrées et de sorties programmables. La caméra y est connectée directement par USB. Étant donné que les sorties du Raspberry Pi fonctionnent en 3,3 V CC, un relais est utilisé pour commander l&#039;alimentation d&#039;un gyrophare fonctionnant en 120 V CA.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
===Fonctionnement global===&lt;br /&gt;
 &lt;br /&gt;
Le projet repose sur un seul fichier Python principal (main.py) qui gère simultanément la détection YOLO et le contrôle des sorties GPIO grâce à un système de thread séparé.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Structure des fichiers====&lt;br /&gt;
 &lt;br /&gt;
Le dossier de projet est organisé en trois catégories selon leur utilisation.&lt;br /&gt;
 &lt;br /&gt;
:[[File:wikilayout.png|600px]]&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Fichier !! Rôle !! Catégorie&lt;br /&gt;
|-&lt;br /&gt;
| main.py || Fichier principal — lance la détection YOLO et contrôle les GPIO || Exécution&lt;br /&gt;
|-&lt;br /&gt;
| modelv1_ncnn_model/ || Modèle YOLO converti au format NCNN (dossier) || Exécution&lt;br /&gt;
|-&lt;br /&gt;
| record.py || Enregistre une vidéo depuis la caméra USB || Création du dataset&lt;br /&gt;
|-&lt;br /&gt;
| extract_frames.py || Extrait des images d&#039;une vidéo pour créer un dataset || Création du dataset&lt;br /&gt;
|-&lt;br /&gt;
| convert_ncnn.py || Convertit un modèle .pt au format NCNN || Conversion&lt;br /&gt;
|-&lt;br /&gt;
| modelv1.pt || Modèle YOLO original (format PyTorch) || Conversion&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Fichier Python principal (main.py)====&lt;br /&gt;
 &lt;br /&gt;
Le fichier main.py gère l&#039;image de la caméra en appliquant le modèle pré-entraîné sur chaque frame. Il affiche le nombre d&#039;objets détectés, les FPS, le pourcentage de certitude et la boîte de détection de classe. La classe cible, le seuil de confiance et tous les paramètres sont configurables directement en haut du fichier.&lt;br /&gt;
 &lt;br /&gt;
Le programme supporte deux types de sources : une caméra USB ou un fichier vidéo, sélectionnable via la variable SOURCE en haut du fichier.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Paramètres configurables en haut du fichier :&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Paramètre !! Description !! Valeur par défaut&lt;br /&gt;
|-&lt;br /&gt;
| MODEL_PATH || Chemin vers le modèle YOLO (.pt ou dossier NCNN) || &#039;modelv1_ncnn_model&#039;&lt;br /&gt;
|-&lt;br /&gt;
| SOURCE || Source vidéo — &#039;usb0&#039; pour caméra, &#039;video.mp4&#039; pour fichier || &#039;usb0&#039;&lt;br /&gt;
|-&lt;br /&gt;
| CONFIANCE_MIN || Seuil de confiance minimum (0.0 à 1.0) || 0.5&lt;br /&gt;
|-&lt;br /&gt;
| CLASSE_CIBLE || Classe à détecter, ou &#039;any&#039; pour toutes les classes || &#039;Forklift&#039;&lt;br /&gt;
|-&lt;br /&gt;
| GPIO_PIN || Broche BCM de la sortie principale || 17&lt;br /&gt;
|-&lt;br /&gt;
| PIN_LUMIERE_DETECTION || Lumière qui suit le GPIO principal || 27&lt;br /&gt;
|-&lt;br /&gt;
| PIN_LUMIERE_STATUT || Lumière allumée au démarrage, éteinte à la fermeture || 22&lt;br /&gt;
|-&lt;br /&gt;
| DUREE_DETECTION || Secondes que la condition doit être maintenue avant activation || 2.0&lt;br /&gt;
|-&lt;br /&gt;
| DUREE_ACTIVATION || Secondes que le GPIO reste actif || 3.0&lt;br /&gt;
|-&lt;br /&gt;
| RESOLUTION || Résolution caméra et inférence || (640, 640)&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Note :&#039;&#039;&#039; La valeur de CLASSE_CIBLE est insensible à la casse. Écrire &#039;forklift&#039;, &#039;Forklift&#039; ou &#039;FORKLIFT&#039; donnera le même résultat.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Contrôle GPIO====&lt;br /&gt;
 &lt;br /&gt;
La logique GPIO tourne dans un thread séparé en parallèle de la détection YOLO, ce qui évite tout ralentissement. Trois sorties sont disponibles :&lt;br /&gt;
 &lt;br /&gt;
*&#039;&#039;&#039;GPIO principal (GPIO_PIN)&#039;&#039;&#039; — activé lorsque la classe cible est détectée pendant DUREE_DETECTION secondes.&lt;br /&gt;
*&#039;&#039;&#039;Lumière de détection (PIN_LUMIERE_DETECTION)&#039;&#039;&#039; — suit exactement le même comportement que le GPIO principal.&lt;br /&gt;
*&#039;&#039;&#039;Lumière de statut (PIN_LUMIERE_STATUT)&#039;&#039;&#039; — s&#039;allume au démarrage du programme et s&#039;éteint à la fermeture.&lt;br /&gt;
 &lt;br /&gt;
Si la condition est toujours vraie à la fin de DUREE_ACTIVATION, le GPIO se renouvelle automatiquement sans coupure. À la fermeture du programme (touche q ou Ctrl+C), toutes les sorties sont éteintes proprement.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Création du modèle pré-entraîné====&lt;br /&gt;
 &lt;br /&gt;
Un modèle YOLO pré-entraîné (.pt) est une intelligence artificielle qui a appris à reconnaître certains objets grâce à un entraînement préalable sur une grande quantité d&#039;images. C&#039;est le cerveau du projet.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;1. Choisir le bon dataset&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:Nous conseillons d&#039;utiliser la plateforme Roboflow Universe pour trouver un dataset public.&lt;br /&gt;
:Rechercher avec des mots-clés précis (ex : &amp;quot;forklift&amp;quot;, &amp;quot;helmet detection&amp;quot;, etc.).&lt;br /&gt;
:Vérifier le nombre d&#039;images, la diversité des photos et la qualité des annotations.&lt;br /&gt;
:Choisir un dataset avec plusieurs centaines ou milliers d&#039;images bien étiquetées.&lt;br /&gt;
:Une fois le bon dataset trouvé, le télécharger en format ZIP.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Attention :&#039;&#039;&#039; Vérifier que le dataset contient des &#039;&#039;&#039;images nulles&#039;&#039;&#039; (images sans l&#039;objet à détecter). Ces images sont essentielles pour éviter les faux positifs.&lt;br /&gt;
 &lt;br /&gt;
:Une fois extrait, vérifier que le dossier contient les 3 éléments importants : data.yaml, train/ et valid/.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;2. Ajouter le modèle YOLO de base&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:YOLO possède des modèles de base pré-entraînés. Nous utilisons la version &#039;&#039;&#039;yolo11n&#039;&#039;&#039; (nano), la plus légère pour fonctionner sur Raspberry Pi.&lt;br /&gt;
:Télécharger yolo11n.pt depuis le site officiel d&#039;Ultralytics et le placer dans le même dossier que data.yaml.&lt;br /&gt;
 &lt;br /&gt;
:[[File:version_yolo.png|600px]]&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;3. Entraînement&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:L&#039;entraînement est recommandé sur un ordinateur Linux avec une carte graphique NVIDIA.&lt;br /&gt;
:Dans le terminal, entrer la commande :&lt;br /&gt;
 &lt;br /&gt;
: &#039;&#039;&#039;yolo detect train model=yolo11n.pt data=data.yaml epochs=100 imgsz=640 batch=16 patience=20&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Paramètre !! Description !! Valeur recommandée&lt;br /&gt;
|-&lt;br /&gt;
| model || Modèle de base pré-entraîné || yolo11n.pt&lt;br /&gt;
|-&lt;br /&gt;
| data || Fichier de configuration du dataset || data.yaml&lt;br /&gt;
|-&lt;br /&gt;
| epochs || Nombre de cycles d&#039;apprentissage || 100&lt;br /&gt;
|-&lt;br /&gt;
| imgsz || Taille des images (maximum YOLO) || 640&lt;br /&gt;
|-&lt;br /&gt;
| batch || Images traitées simultanément (selon le GPU) || 16&lt;br /&gt;
|-&lt;br /&gt;
| patience || Arrête si plus d&#039;amélioration || 20&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
:Le modèle entraîné sera disponible dans runs/detect/train/weights/best.pt.&lt;br /&gt;
 &lt;br /&gt;
:Pour faire l&#039;entraînement sur Windows, voici une vidéo de référence : https://www.youtube.com/watch?v=r0RspiLG260&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Librairies requises pour l&#039;entraînement :&#039;&#039;&#039;&lt;br /&gt;
*ultralytics&lt;br /&gt;
*torch et torchvision&lt;br /&gt;
*opencv-python&lt;br /&gt;
*python3&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Conversion NCNN (optimisation Raspberry Pi)====&lt;br /&gt;
 &lt;br /&gt;
Le format NCNN est optimisé pour les processeurs ARM comme celui du Raspberry Pi. La conversion du modèle .pt en format NCNN permet de passer de &#039;&#039;&#039;3 FPS à 12 FPS&#039;&#039;&#039; sur le Raspberry Pi 5. Cette étape est fortement recommandée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
: &#039;&#039;&#039;python3 convert_ncnn.py&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
:Le script génère un dossier modelv1_ncnn_model/ contenant tous les fichiers nécessaires.&lt;br /&gt;
:Dans main.py, changer MODEL_PATH pour pointer vers ce dossier au lieu du fichier .pt.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Important :&#039;&#039;&#039; Effectuer la conversion sur le Raspberry Pi lui-même pour garantir la compatibilité.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====Créer son propre dataset personnalisé====&lt;br /&gt;
 &lt;br /&gt;
Si le dataset public ne correspond pas suffisamment à l&#039;environnement de production, il est possible d&#039;améliorer le modèle en filmant sur place.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;1.&#039;&#039;&#039; Filmer plusieurs courtes vidéos (5 à 15 minutes) dans différentes zones et conditions d&#039;éclairage avec record.py.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;2.&#039;&#039;&#039; Extraire les frames automatiquement avec extract_frames.py — une image toutes les 3 secondes génère environ 200 à 300 images par vidéo.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;3.&#039;&#039;&#039; Annoter les images sur Roboflow en utilisant la fonction Auto-Label avec le modèle existant pour minimiser le travail manuel.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;4.&#039;&#039;&#039; Réentraîner le modèle avec le nouveau dataset.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Conseil :&#039;&#039;&#039; Filmer avec la même caméra USB que celle utilisée en production garantit que le modèle sera entraîné sur des images identiques à ce qu&#039;il verra en temps réel.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Installation des librairies====&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Sur le Raspberry Pi 5 (exécution) :&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
: pip install torch torchvision --index-url &amp;lt;nowiki&amp;gt;https://download.pytorch.org/whl/cpu&amp;lt;/nowiki&amp;gt; --break-system-packages --no-cache-dir&lt;br /&gt;
: pip install ultralytics opencv-python lgpio ncnn pnnx --break-system-packages --no-cache-dir&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Sur un ordinateur Linux (entraînement et conversion) :&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
: pip install ultralytics torch torchvision opencv-python ncnn pnnx&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Librairie !! Rôle !! Pi 5 !! PC Linux&lt;br /&gt;
|-&lt;br /&gt;
| ultralytics || Modèle YOLO || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| torch / torchvision || Moteur d&#039;apprentissage PyTorch || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| opencv-python || Capture et affichage vidéo || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| lgpio || Contrôle des broches GPIO || ✓ || ✗&lt;br /&gt;
|-&lt;br /&gt;
| ncnn / pnnx || Conversion et inférence NCNN || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| numpy || Calculs mathématiques (inclus automatiquement) || ✓ || ✓&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
 &lt;br /&gt;
*Raspberry Pi 5 (8 Go recommandé, 4 Go minimum)&lt;br /&gt;
*Carte microSD classe A2, 32 Go minimum (SanDisk ou Samsung Endurance recommandé)&lt;br /&gt;
*Câble d&#039;alimentation USB-C 5V/5A (27W) — câble officiel Raspberry Pi 5 obligatoire&lt;br /&gt;
*Caméra USB type A&lt;br /&gt;
*Relais 5V (module 1 canal)&lt;br /&gt;
*Gyrophare 120V CA&lt;br /&gt;
*Câbles Dupont mâle-femelle (connexions GPIO)&lt;br /&gt;
*Câble micro HDMI (optionnel — pour connecter un écran)&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Attention :&#039;&#039;&#039; Toujours éteindre le Raspberry Pi proprement avec la commande &#039;&#039;&#039;sudo shutdown -h now&#039;&#039;&#039; avant de couper l&#039;alimentation. Une coupure brusque peut corrompre la carte microSD.&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=1029</id>
		<title>Reconnaissance objet</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=1029"/>
		<updated>2026-03-29T21:30:00Z</updated>

		<summary type="html">&lt;p&gt;2182036 : /* Description du projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description du projet==&lt;br /&gt;
Le but du projet est de détecter un objet (dans notre cas, un chariot élévateur) dans une image provenant d&#039;une caméra à l&#039;aide d&#039;un modèle de reconnaissance d&#039;objets préentraîné. Lorsque le programme détecte un chariot élévateur, un gyrophare s&#039;active afin d&#039;avertir les travailleurs de sa présence. Le programme s&#039;exécute sur un Raspberry Pi 5, un micro-ordinateur doté d&#039;entrées et de sorties programmables. La caméra y est connectée directement par USB. Étant donné que les sorties du Raspberry Pi fonctionnent en 3,3 V CC, un relais est utilisé pour commander l&#039;alimentation d&#039;un gyrophare fonctionnant en 120 V CA.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
===Fonctionnement global===&lt;br /&gt;
 &lt;br /&gt;
Le projet repose sur un seul fichier Python principal (main.py) qui gère simultanément la détection YOLO et le contrôle des sorties GPIO grâce à un système de thread séparé.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Structure des fichiers====&lt;br /&gt;
 &lt;br /&gt;
Le dossier de projet est organisé en trois catégories selon leur utilisation.&lt;br /&gt;
 &lt;br /&gt;
:[[File:wikilayout.png|600px]]&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Fichier !! Rôle !! Catégorie&lt;br /&gt;
|-&lt;br /&gt;
| main.py || Fichier principal — lance la détection YOLO et contrôle les GPIO || Exécution&lt;br /&gt;
|-&lt;br /&gt;
| modelv1_ncnn_model/ || Modèle YOLO converti au format NCNN (dossier) || Exécution&lt;br /&gt;
|-&lt;br /&gt;
| record.py || Enregistre une vidéo depuis la caméra USB || Création du dataset&lt;br /&gt;
|-&lt;br /&gt;
| extract_frames.py || Extrait des images d&#039;une vidéo pour créer un dataset || Création du dataset&lt;br /&gt;
|-&lt;br /&gt;
| convert_ncnn.py || Convertit un modèle .pt au format NCNN || Conversion&lt;br /&gt;
|-&lt;br /&gt;
| modelv1.pt || Modèle YOLO original (format PyTorch) || Conversion&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Fichier Python principal (main.py)====&lt;br /&gt;
 &lt;br /&gt;
Le fichier main.py gère l&#039;image de la caméra en appliquant le modèle pré-entraîné sur chaque frame. Il affiche le nombre d&#039;objets détectés, les FPS, le pourcentage de certitude et la boîte de détection de classe. La classe cible, le seuil de confiance et tous les paramètres sont configurables directement en haut du fichier.&lt;br /&gt;
 &lt;br /&gt;
Le programme supporte deux types de sources : une caméra USB ou un fichier vidéo, sélectionnable via la variable SOURCE en haut du fichier.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Paramètres configurables en haut du fichier :&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Paramètre !! Description !! Valeur par défaut&lt;br /&gt;
|-&lt;br /&gt;
| MODEL_PATH || Chemin vers le modèle YOLO (.pt ou dossier NCNN) || &#039;modelv1_ncnn_model&#039;&lt;br /&gt;
|-&lt;br /&gt;
| SOURCE || Source vidéo — &#039;usb0&#039; pour caméra, &#039;video.mp4&#039; pour fichier || &#039;usb0&#039;&lt;br /&gt;
|-&lt;br /&gt;
| CONFIANCE_MIN || Seuil de confiance minimum (0.0 à 1.0) || 0.5&lt;br /&gt;
|-&lt;br /&gt;
| CLASSE_CIBLE || Classe à détecter, ou &#039;any&#039; pour toutes les classes || &#039;Forklift&#039;&lt;br /&gt;
|-&lt;br /&gt;
| GPIO_PIN || Broche BCM de la sortie principale || 17&lt;br /&gt;
|-&lt;br /&gt;
| PIN_LUMIERE_DETECTION || Lumière qui suit le GPIO principal || 27&lt;br /&gt;
|-&lt;br /&gt;
| PIN_LUMIERE_STATUT || Lumière allumée au démarrage, éteinte à la fermeture || 22&lt;br /&gt;
|-&lt;br /&gt;
| DUREE_DETECTION || Secondes que la condition doit être maintenue avant activation || 2.0&lt;br /&gt;
|-&lt;br /&gt;
| DUREE_ACTIVATION || Secondes que le GPIO reste actif || 3.0&lt;br /&gt;
|-&lt;br /&gt;
| RESOLUTION || Résolution caméra et inférence || (640, 640)&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Note :&#039;&#039;&#039; La valeur de CLASSE_CIBLE est insensible à la casse. Écrire &#039;forklift&#039;, &#039;Forklift&#039; ou &#039;FORKLIFT&#039; donnera le même résultat.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Contrôle GPIO====&lt;br /&gt;
 &lt;br /&gt;
La logique GPIO tourne dans un thread séparé en parallèle de la détection YOLO, ce qui évite tout ralentissement. Trois sorties sont disponibles :&lt;br /&gt;
 &lt;br /&gt;
*&#039;&#039;&#039;GPIO principal (GPIO_PIN)&#039;&#039;&#039; — activé lorsque la classe cible est détectée pendant DUREE_DETECTION secondes.&lt;br /&gt;
*&#039;&#039;&#039;Lumière de détection (PIN_LUMIERE_DETECTION)&#039;&#039;&#039; — suit exactement le même comportement que le GPIO principal.&lt;br /&gt;
*&#039;&#039;&#039;Lumière de statut (PIN_LUMIERE_STATUT)&#039;&#039;&#039; — s&#039;allume au démarrage du programme et s&#039;éteint à la fermeture.&lt;br /&gt;
 &lt;br /&gt;
Si la condition est toujours vraie à la fin de DUREE_ACTIVATION, le GPIO se renouvelle automatiquement sans coupure. À la fermeture du programme (touche q ou Ctrl+C), toutes les sorties sont éteintes proprement.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Création du modèle pré-entraîné====&lt;br /&gt;
 &lt;br /&gt;
Un modèle YOLO pré-entraîné (.pt) est une intelligence artificielle qui a appris à reconnaître certains objets grâce à un entraînement préalable sur une grande quantité d&#039;images. C&#039;est le cerveau du projet.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;1. Choisir le bon dataset&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:Nous conseillons d&#039;utiliser la plateforme Roboflow Universe pour trouver un dataset public.&lt;br /&gt;
:Rechercher avec des mots-clés précis (ex : &amp;quot;forklift&amp;quot;, &amp;quot;helmet detection&amp;quot;, etc.).&lt;br /&gt;
:Vérifier le nombre d&#039;images, la diversité des photos et la qualité des annotations.&lt;br /&gt;
:Choisir un dataset avec plusieurs centaines ou milliers d&#039;images bien étiquetées.&lt;br /&gt;
:Une fois le bon dataset trouvé, le télécharger en format ZIP.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Attention :&#039;&#039;&#039; Vérifier que le dataset contient des &#039;&#039;&#039;images nulles&#039;&#039;&#039; (images sans l&#039;objet à détecter). Ces images sont essentielles pour éviter les faux positifs.&lt;br /&gt;
 &lt;br /&gt;
:Une fois extrait, vérifier que le dossier contient les 3 éléments importants : data.yaml, train/ et valid/.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;2. Ajouter le modèle YOLO de base&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:YOLO possède des modèles de base pré-entraînés. Nous utilisons la version &#039;&#039;&#039;yolo11n&#039;&#039;&#039; (nano), la plus légère pour fonctionner sur Raspberry Pi.&lt;br /&gt;
:Télécharger yolo11n.pt depuis le site officiel d&#039;Ultralytics et le placer dans le même dossier que data.yaml.&lt;br /&gt;
 &lt;br /&gt;
:[[File:version_yolo.png|600px]]&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;3. Entraînement&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:L&#039;entraînement est recommandé sur un ordinateur Linux avec une carte graphique NVIDIA.&lt;br /&gt;
:Dans le terminal, entrer la commande :&lt;br /&gt;
 &lt;br /&gt;
: &#039;&#039;&#039;yolo detect train model=yolo11n.pt data=data.yaml epochs=100 imgsz=640 batch=16 patience=20&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Paramètre !! Description !! Valeur recommandée&lt;br /&gt;
|-&lt;br /&gt;
| model || Modèle de base pré-entraîné || yolo11n.pt&lt;br /&gt;
|-&lt;br /&gt;
| data || Fichier de configuration du dataset || data.yaml&lt;br /&gt;
|-&lt;br /&gt;
| epochs || Nombre de cycles d&#039;apprentissage || 100&lt;br /&gt;
|-&lt;br /&gt;
| imgsz || Taille des images (maximum YOLO) || 640&lt;br /&gt;
|-&lt;br /&gt;
| batch || Images traitées simultanément (selon le GPU) || 16&lt;br /&gt;
|-&lt;br /&gt;
| patience || Arrête si plus d&#039;amélioration || 20&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
:Le modèle entraîné sera disponible dans runs/detect/train/weights/best.pt.&lt;br /&gt;
 &lt;br /&gt;
:Pour faire l&#039;entraînement sur Windows, voici une vidéo de référence : https://www.youtube.com/watch?v=r0RspiLG260&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Librairies requises pour l&#039;entraînement :&#039;&#039;&#039;&lt;br /&gt;
*ultralytics&lt;br /&gt;
*torch et torchvision&lt;br /&gt;
*opencv-python&lt;br /&gt;
*python3&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Conversion NCNN (optimisation Raspberry Pi)====&lt;br /&gt;
 &lt;br /&gt;
Le format NCNN est optimisé pour les processeurs ARM comme celui du Raspberry Pi. La conversion du modèle .pt en format NCNN permet de passer de &#039;&#039;&#039;3 FPS à 12 FPS&#039;&#039;&#039; sur le Raspberry Pi 5. Cette étape est fortement recommandée.&lt;br /&gt;
 &lt;br /&gt;
: &#039;&#039;&#039;python3 convert_ncnn.py&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:Le script génère un dossier modelv1_ncnn_model/ contenant tous les fichiers nécessaires.&lt;br /&gt;
:Dans main.py, changer MODEL_PATH pour pointer vers ce dossier au lieu du fichier .pt.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Important :&#039;&#039;&#039; Effectuer la conversion sur le Raspberry Pi lui-même pour garantir la compatibilité.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Créer son propre dataset personnalisé====&lt;br /&gt;
 &lt;br /&gt;
Si le dataset public ne correspond pas suffisamment à l&#039;environnement de production, il est possible d&#039;améliorer le modèle en filmant sur place.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;1.&#039;&#039;&#039; Filmer plusieurs courtes vidéos (5 à 15 minutes) dans différentes zones et conditions d&#039;éclairage avec record.py.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;2.&#039;&#039;&#039; Extraire les frames automatiquement avec extract_frames.py — une image toutes les 3 secondes génère environ 200 à 300 images par vidéo.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;3.&#039;&#039;&#039; Annoter les images sur Roboflow en utilisant la fonction Auto-Label avec le modèle existant pour minimiser le travail manuel.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;4.&#039;&#039;&#039; Réentraîner le modèle avec le nouveau dataset.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Conseil :&#039;&#039;&#039; Filmer avec la même caméra USB que celle utilisée en production garantit que le modèle sera entraîné sur des images identiques à ce qu&#039;il verra en temps réel.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Installation des librairies====&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Sur le Raspberry Pi 5 (exécution) :&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
: pip install torch torchvision --index-url &amp;lt;nowiki&amp;gt;https://download.pytorch.org/whl/cpu&amp;lt;/nowiki&amp;gt; --break-system-packages --no-cache-dir&lt;br /&gt;
: pip install ultralytics opencv-python lgpio ncnn pnnx --break-system-packages --no-cache-dir&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Sur un ordinateur Linux (entraînement et conversion) :&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
: pip install ultralytics torch torchvision opencv-python ncnn pnnx&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Librairie !! Rôle !! Pi 5 !! PC Linux&lt;br /&gt;
|-&lt;br /&gt;
| ultralytics || Modèle YOLO || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| torch / torchvision || Moteur d&#039;apprentissage PyTorch || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| opencv-python || Capture et affichage vidéo || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| lgpio || Contrôle des broches GPIO || ✓ || ✗&lt;br /&gt;
|-&lt;br /&gt;
| ncnn / pnnx || Conversion et inférence NCNN || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| numpy || Calculs mathématiques (inclus automatiquement) || ✓ || ✓&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
 &lt;br /&gt;
*Raspberry Pi 5 (8 Go recommandé, 4 Go minimum)&lt;br /&gt;
*Carte microSD classe A2, 32 Go minimum (SanDisk ou Samsung Endurance recommandé)&lt;br /&gt;
*Câble d&#039;alimentation USB-C 5V/5A (27W) — câble officiel Raspberry Pi 5 obligatoire&lt;br /&gt;
*Caméra USB type A&lt;br /&gt;
*Relais 5V (module 1 canal)&lt;br /&gt;
*Gyrophare 120V CA&lt;br /&gt;
*Câbles Dupont mâle-femelle (connexions GPIO)&lt;br /&gt;
*Câble micro HDMI (optionnel — pour connecter un écran)&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Attention :&#039;&#039;&#039; Toujours éteindre le Raspberry Pi proprement avec la commande &#039;&#039;&#039;sudo shutdown -h now&#039;&#039;&#039; avant de couper l&#039;alimentation. Une coupure brusque peut corrompre la carte microSD.&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=1028</id>
		<title>Reconnaissance objet</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=1028"/>
		<updated>2026-03-29T21:29:49Z</updated>

		<summary type="html">&lt;p&gt;2182036 : /* Fonctionnement global */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description du projet==&lt;br /&gt;
Le but du projet est de détecter un objet (dans notre cas, un chariot élévateur) dans une image provenant d&#039;une caméra à l&#039;aide d&#039;un modèle de reconnaissance d&#039;objets préentraîné. Lorsque le programme détecte un chariot élévateur, un gyrophare s&#039;active afin d&#039;avertir les travailleurs de sa présence. Le programme s&#039;exécute sur un Raspberry Pi 5, un micro-ordinateur doté d&#039;entrées et de sorties programmables. La caméra y est connectée directement par USB. Étant donné que les sorties du Raspberry Pi fonctionnent en 3,3 V CC, un relais est utilisé pour commander l&#039;alimentation d&#039;un gyrophare fonctionnant en 120 V CA.&lt;br /&gt;
 &lt;br /&gt;
:[[File:schema.png|800px]]&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
===Fonctionnement global===&lt;br /&gt;
 &lt;br /&gt;
Le projet repose sur un seul fichier Python principal (main.py) qui gère simultanément la détection YOLO et le contrôle des sorties GPIO grâce à un système de thread séparé.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Structure des fichiers====&lt;br /&gt;
 &lt;br /&gt;
Le dossier de projet est organisé en trois catégories selon leur utilisation.&lt;br /&gt;
 &lt;br /&gt;
:[[File:wikilayout.png|600px]]&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Fichier !! Rôle !! Catégorie&lt;br /&gt;
|-&lt;br /&gt;
| main.py || Fichier principal — lance la détection YOLO et contrôle les GPIO || Exécution&lt;br /&gt;
|-&lt;br /&gt;
| modelv1_ncnn_model/ || Modèle YOLO converti au format NCNN (dossier) || Exécution&lt;br /&gt;
|-&lt;br /&gt;
| record.py || Enregistre une vidéo depuis la caméra USB || Création du dataset&lt;br /&gt;
|-&lt;br /&gt;
| extract_frames.py || Extrait des images d&#039;une vidéo pour créer un dataset || Création du dataset&lt;br /&gt;
|-&lt;br /&gt;
| convert_ncnn.py || Convertit un modèle .pt au format NCNN || Conversion&lt;br /&gt;
|-&lt;br /&gt;
| modelv1.pt || Modèle YOLO original (format PyTorch) || Conversion&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Fichier Python principal (main.py)====&lt;br /&gt;
 &lt;br /&gt;
Le fichier main.py gère l&#039;image de la caméra en appliquant le modèle pré-entraîné sur chaque frame. Il affiche le nombre d&#039;objets détectés, les FPS, le pourcentage de certitude et la boîte de détection de classe. La classe cible, le seuil de confiance et tous les paramètres sont configurables directement en haut du fichier.&lt;br /&gt;
 &lt;br /&gt;
Le programme supporte deux types de sources : une caméra USB ou un fichier vidéo, sélectionnable via la variable SOURCE en haut du fichier.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Paramètres configurables en haut du fichier :&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Paramètre !! Description !! Valeur par défaut&lt;br /&gt;
|-&lt;br /&gt;
| MODEL_PATH || Chemin vers le modèle YOLO (.pt ou dossier NCNN) || &#039;modelv1_ncnn_model&#039;&lt;br /&gt;
|-&lt;br /&gt;
| SOURCE || Source vidéo — &#039;usb0&#039; pour caméra, &#039;video.mp4&#039; pour fichier || &#039;usb0&#039;&lt;br /&gt;
|-&lt;br /&gt;
| CONFIANCE_MIN || Seuil de confiance minimum (0.0 à 1.0) || 0.5&lt;br /&gt;
|-&lt;br /&gt;
| CLASSE_CIBLE || Classe à détecter, ou &#039;any&#039; pour toutes les classes || &#039;Forklift&#039;&lt;br /&gt;
|-&lt;br /&gt;
| GPIO_PIN || Broche BCM de la sortie principale || 17&lt;br /&gt;
|-&lt;br /&gt;
| PIN_LUMIERE_DETECTION || Lumière qui suit le GPIO principal || 27&lt;br /&gt;
|-&lt;br /&gt;
| PIN_LUMIERE_STATUT || Lumière allumée au démarrage, éteinte à la fermeture || 22&lt;br /&gt;
|-&lt;br /&gt;
| DUREE_DETECTION || Secondes que la condition doit être maintenue avant activation || 2.0&lt;br /&gt;
|-&lt;br /&gt;
| DUREE_ACTIVATION || Secondes que le GPIO reste actif || 3.0&lt;br /&gt;
|-&lt;br /&gt;
| RESOLUTION || Résolution caméra et inférence || (640, 640)&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Note :&#039;&#039;&#039; La valeur de CLASSE_CIBLE est insensible à la casse. Écrire &#039;forklift&#039;, &#039;Forklift&#039; ou &#039;FORKLIFT&#039; donnera le même résultat.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Contrôle GPIO====&lt;br /&gt;
 &lt;br /&gt;
La logique GPIO tourne dans un thread séparé en parallèle de la détection YOLO, ce qui évite tout ralentissement. Trois sorties sont disponibles :&lt;br /&gt;
 &lt;br /&gt;
*&#039;&#039;&#039;GPIO principal (GPIO_PIN)&#039;&#039;&#039; — activé lorsque la classe cible est détectée pendant DUREE_DETECTION secondes.&lt;br /&gt;
*&#039;&#039;&#039;Lumière de détection (PIN_LUMIERE_DETECTION)&#039;&#039;&#039; — suit exactement le même comportement que le GPIO principal.&lt;br /&gt;
*&#039;&#039;&#039;Lumière de statut (PIN_LUMIERE_STATUT)&#039;&#039;&#039; — s&#039;allume au démarrage du programme et s&#039;éteint à la fermeture.&lt;br /&gt;
 &lt;br /&gt;
Si la condition est toujours vraie à la fin de DUREE_ACTIVATION, le GPIO se renouvelle automatiquement sans coupure. À la fermeture du programme (touche q ou Ctrl+C), toutes les sorties sont éteintes proprement.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Création du modèle pré-entraîné====&lt;br /&gt;
 &lt;br /&gt;
Un modèle YOLO pré-entraîné (.pt) est une intelligence artificielle qui a appris à reconnaître certains objets grâce à un entraînement préalable sur une grande quantité d&#039;images. C&#039;est le cerveau du projet.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;1. Choisir le bon dataset&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:Nous conseillons d&#039;utiliser la plateforme Roboflow Universe pour trouver un dataset public.&lt;br /&gt;
:Rechercher avec des mots-clés précis (ex : &amp;quot;forklift&amp;quot;, &amp;quot;helmet detection&amp;quot;, etc.).&lt;br /&gt;
:Vérifier le nombre d&#039;images, la diversité des photos et la qualité des annotations.&lt;br /&gt;
:Choisir un dataset avec plusieurs centaines ou milliers d&#039;images bien étiquetées.&lt;br /&gt;
:Une fois le bon dataset trouvé, le télécharger en format ZIP.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Attention :&#039;&#039;&#039; Vérifier que le dataset contient des &#039;&#039;&#039;images nulles&#039;&#039;&#039; (images sans l&#039;objet à détecter). Ces images sont essentielles pour éviter les faux positifs.&lt;br /&gt;
 &lt;br /&gt;
:Une fois extrait, vérifier que le dossier contient les 3 éléments importants : data.yaml, train/ et valid/.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;2. Ajouter le modèle YOLO de base&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:YOLO possède des modèles de base pré-entraînés. Nous utilisons la version &#039;&#039;&#039;yolo11n&#039;&#039;&#039; (nano), la plus légère pour fonctionner sur Raspberry Pi.&lt;br /&gt;
:Télécharger yolo11n.pt depuis le site officiel d&#039;Ultralytics et le placer dans le même dossier que data.yaml.&lt;br /&gt;
 &lt;br /&gt;
:[[File:version_yolo.png|600px]]&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;3. Entraînement&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:L&#039;entraînement est recommandé sur un ordinateur Linux avec une carte graphique NVIDIA.&lt;br /&gt;
:Dans le terminal, entrer la commande :&lt;br /&gt;
 &lt;br /&gt;
: &#039;&#039;&#039;yolo detect train model=yolo11n.pt data=data.yaml epochs=100 imgsz=640 batch=16 patience=20&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Paramètre !! Description !! Valeur recommandée&lt;br /&gt;
|-&lt;br /&gt;
| model || Modèle de base pré-entraîné || yolo11n.pt&lt;br /&gt;
|-&lt;br /&gt;
| data || Fichier de configuration du dataset || data.yaml&lt;br /&gt;
|-&lt;br /&gt;
| epochs || Nombre de cycles d&#039;apprentissage || 100&lt;br /&gt;
|-&lt;br /&gt;
| imgsz || Taille des images (maximum YOLO) || 640&lt;br /&gt;
|-&lt;br /&gt;
| batch || Images traitées simultanément (selon le GPU) || 16&lt;br /&gt;
|-&lt;br /&gt;
| patience || Arrête si plus d&#039;amélioration || 20&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
:Le modèle entraîné sera disponible dans runs/detect/train/weights/best.pt.&lt;br /&gt;
 &lt;br /&gt;
:Pour faire l&#039;entraînement sur Windows, voici une vidéo de référence : https://www.youtube.com/watch?v=r0RspiLG260&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Librairies requises pour l&#039;entraînement :&#039;&#039;&#039;&lt;br /&gt;
*ultralytics&lt;br /&gt;
*torch et torchvision&lt;br /&gt;
*opencv-python&lt;br /&gt;
*python3&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Conversion NCNN (optimisation Raspberry Pi)====&lt;br /&gt;
 &lt;br /&gt;
Le format NCNN est optimisé pour les processeurs ARM comme celui du Raspberry Pi. La conversion du modèle .pt en format NCNN permet de passer de &#039;&#039;&#039;3 FPS à 12 FPS&#039;&#039;&#039; sur le Raspberry Pi 5. Cette étape est fortement recommandée.&lt;br /&gt;
 &lt;br /&gt;
: &#039;&#039;&#039;python3 convert_ncnn.py&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:Le script génère un dossier modelv1_ncnn_model/ contenant tous les fichiers nécessaires.&lt;br /&gt;
:Dans main.py, changer MODEL_PATH pour pointer vers ce dossier au lieu du fichier .pt.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Important :&#039;&#039;&#039; Effectuer la conversion sur le Raspberry Pi lui-même pour garantir la compatibilité.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Créer son propre dataset personnalisé====&lt;br /&gt;
 &lt;br /&gt;
Si le dataset public ne correspond pas suffisamment à l&#039;environnement de production, il est possible d&#039;améliorer le modèle en filmant sur place.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;1.&#039;&#039;&#039; Filmer plusieurs courtes vidéos (5 à 15 minutes) dans différentes zones et conditions d&#039;éclairage avec record.py.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;2.&#039;&#039;&#039; Extraire les frames automatiquement avec extract_frames.py — une image toutes les 3 secondes génère environ 200 à 300 images par vidéo.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;3.&#039;&#039;&#039; Annoter les images sur Roboflow en utilisant la fonction Auto-Label avec le modèle existant pour minimiser le travail manuel.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;4.&#039;&#039;&#039; Réentraîner le modèle avec le nouveau dataset.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Conseil :&#039;&#039;&#039; Filmer avec la même caméra USB que celle utilisée en production garantit que le modèle sera entraîné sur des images identiques à ce qu&#039;il verra en temps réel.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Installation des librairies====&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Sur le Raspberry Pi 5 (exécution) :&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
: pip install torch torchvision --index-url &amp;lt;nowiki&amp;gt;https://download.pytorch.org/whl/cpu&amp;lt;/nowiki&amp;gt; --break-system-packages --no-cache-dir&lt;br /&gt;
: pip install ultralytics opencv-python lgpio ncnn pnnx --break-system-packages --no-cache-dir&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Sur un ordinateur Linux (entraînement et conversion) :&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
: pip install ultralytics torch torchvision opencv-python ncnn pnnx&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Librairie !! Rôle !! Pi 5 !! PC Linux&lt;br /&gt;
|-&lt;br /&gt;
| ultralytics || Modèle YOLO || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| torch / torchvision || Moteur d&#039;apprentissage PyTorch || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| opencv-python || Capture et affichage vidéo || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| lgpio || Contrôle des broches GPIO || ✓ || ✗&lt;br /&gt;
|-&lt;br /&gt;
| ncnn / pnnx || Conversion et inférence NCNN || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| numpy || Calculs mathématiques (inclus automatiquement) || ✓ || ✓&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
 &lt;br /&gt;
*Raspberry Pi 5 (8 Go recommandé, 4 Go minimum)&lt;br /&gt;
*Carte microSD classe A2, 32 Go minimum (SanDisk ou Samsung Endurance recommandé)&lt;br /&gt;
*Câble d&#039;alimentation USB-C 5V/5A (27W) — câble officiel Raspberry Pi 5 obligatoire&lt;br /&gt;
*Caméra USB type A&lt;br /&gt;
*Relais 5V (module 1 canal)&lt;br /&gt;
*Gyrophare 120V CA&lt;br /&gt;
*Câbles Dupont mâle-femelle (connexions GPIO)&lt;br /&gt;
*Câble micro HDMI (optionnel — pour connecter un écran)&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Attention :&#039;&#039;&#039; Toujours éteindre le Raspberry Pi proprement avec la commande &#039;&#039;&#039;sudo shutdown -h now&#039;&#039;&#039; avant de couper l&#039;alimentation. Une coupure brusque peut corrompre la carte microSD.&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=1027</id>
		<title>Reconnaissance objet</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=1027"/>
		<updated>2026-03-29T21:28:56Z</updated>

		<summary type="html">&lt;p&gt;2182036 : /* Fonctionnement global */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description du projet==&lt;br /&gt;
Le but du projet est de détecter un objet (dans notre cas, un chariot élévateur) dans une image provenant d&#039;une caméra à l&#039;aide d&#039;un modèle de reconnaissance d&#039;objets préentraîné. Lorsque le programme détecte un chariot élévateur, un gyrophare s&#039;active afin d&#039;avertir les travailleurs de sa présence. Le programme s&#039;exécute sur un Raspberry Pi 5, un micro-ordinateur doté d&#039;entrées et de sorties programmables. La caméra y est connectée directement par USB. Étant donné que les sorties du Raspberry Pi fonctionnent en 3,3 V CC, un relais est utilisé pour commander l&#039;alimentation d&#039;un gyrophare fonctionnant en 120 V CA.&lt;br /&gt;
 &lt;br /&gt;
:[[File:schema.png|800px]]&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
===Fonctionnement global===&lt;br /&gt;
 &lt;br /&gt;
Le projet repose sur un seul fichier Python principal (main.py) qui gère simultanément la détection YOLO et le contrôle des sorties GPIO grâce à un système de thread séparé.&lt;br /&gt;
 &lt;br /&gt;
:[[File:logic.png|800px]]&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Structure des fichiers====&lt;br /&gt;
 &lt;br /&gt;
Le dossier de projet est organisé en trois catégories selon leur utilisation.&lt;br /&gt;
 &lt;br /&gt;
:[[File:wikilayout.png|600px]]&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Fichier !! Rôle !! Catégorie&lt;br /&gt;
|-&lt;br /&gt;
| main.py || Fichier principal — lance la détection YOLO et contrôle les GPIO || Exécution&lt;br /&gt;
|-&lt;br /&gt;
| modelv1_ncnn_model/ || Modèle YOLO converti au format NCNN (dossier) || Exécution&lt;br /&gt;
|-&lt;br /&gt;
| record.py || Enregistre une vidéo depuis la caméra USB || Création du dataset&lt;br /&gt;
|-&lt;br /&gt;
| extract_frames.py || Extrait des images d&#039;une vidéo pour créer un dataset || Création du dataset&lt;br /&gt;
|-&lt;br /&gt;
| convert_ncnn.py || Convertit un modèle .pt au format NCNN || Conversion&lt;br /&gt;
|-&lt;br /&gt;
| modelv1.pt || Modèle YOLO original (format PyTorch) || Conversion&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Fichier Python principal (main.py)====&lt;br /&gt;
 &lt;br /&gt;
Le fichier main.py gère l&#039;image de la caméra en appliquant le modèle pré-entraîné sur chaque frame. Il affiche le nombre d&#039;objets détectés, les FPS, le pourcentage de certitude et la boîte de détection de classe. La classe cible, le seuil de confiance et tous les paramètres sont configurables directement en haut du fichier.&lt;br /&gt;
 &lt;br /&gt;
Le programme supporte deux types de sources : une caméra USB ou un fichier vidéo, sélectionnable via la variable SOURCE en haut du fichier.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Paramètres configurables en haut du fichier :&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Paramètre !! Description !! Valeur par défaut&lt;br /&gt;
|-&lt;br /&gt;
| MODEL_PATH || Chemin vers le modèle YOLO (.pt ou dossier NCNN) || &#039;modelv1_ncnn_model&#039;&lt;br /&gt;
|-&lt;br /&gt;
| SOURCE || Source vidéo — &#039;usb0&#039; pour caméra, &#039;video.mp4&#039; pour fichier || &#039;usb0&#039;&lt;br /&gt;
|-&lt;br /&gt;
| CONFIANCE_MIN || Seuil de confiance minimum (0.0 à 1.0) || 0.5&lt;br /&gt;
|-&lt;br /&gt;
| CLASSE_CIBLE || Classe à détecter, ou &#039;any&#039; pour toutes les classes || &#039;Forklift&#039;&lt;br /&gt;
|-&lt;br /&gt;
| GPIO_PIN || Broche BCM de la sortie principale || 17&lt;br /&gt;
|-&lt;br /&gt;
| PIN_LUMIERE_DETECTION || Lumière qui suit le GPIO principal || 27&lt;br /&gt;
|-&lt;br /&gt;
| PIN_LUMIERE_STATUT || Lumière allumée au démarrage, éteinte à la fermeture || 22&lt;br /&gt;
|-&lt;br /&gt;
| DUREE_DETECTION || Secondes que la condition doit être maintenue avant activation || 2.0&lt;br /&gt;
|-&lt;br /&gt;
| DUREE_ACTIVATION || Secondes que le GPIO reste actif || 3.0&lt;br /&gt;
|-&lt;br /&gt;
| RESOLUTION || Résolution caméra et inférence || (640, 640)&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Note :&#039;&#039;&#039; La valeur de CLASSE_CIBLE est insensible à la casse. Écrire &#039;forklift&#039;, &#039;Forklift&#039; ou &#039;FORKLIFT&#039; donnera le même résultat.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Contrôle GPIO====&lt;br /&gt;
 &lt;br /&gt;
La logique GPIO tourne dans un thread séparé en parallèle de la détection YOLO, ce qui évite tout ralentissement. Trois sorties sont disponibles :&lt;br /&gt;
 &lt;br /&gt;
*&#039;&#039;&#039;GPIO principal (GPIO_PIN)&#039;&#039;&#039; — activé lorsque la classe cible est détectée pendant DUREE_DETECTION secondes.&lt;br /&gt;
*&#039;&#039;&#039;Lumière de détection (PIN_LUMIERE_DETECTION)&#039;&#039;&#039; — suit exactement le même comportement que le GPIO principal.&lt;br /&gt;
*&#039;&#039;&#039;Lumière de statut (PIN_LUMIERE_STATUT)&#039;&#039;&#039; — s&#039;allume au démarrage du programme et s&#039;éteint à la fermeture.&lt;br /&gt;
 &lt;br /&gt;
Si la condition est toujours vraie à la fin de DUREE_ACTIVATION, le GPIO se renouvelle automatiquement sans coupure. À la fermeture du programme (touche q ou Ctrl+C), toutes les sorties sont éteintes proprement.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Création du modèle pré-entraîné====&lt;br /&gt;
 &lt;br /&gt;
Un modèle YOLO pré-entraîné (.pt) est une intelligence artificielle qui a appris à reconnaître certains objets grâce à un entraînement préalable sur une grande quantité d&#039;images. C&#039;est le cerveau du projet.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;1. Choisir le bon dataset&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:Nous conseillons d&#039;utiliser la plateforme Roboflow Universe pour trouver un dataset public.&lt;br /&gt;
:Rechercher avec des mots-clés précis (ex : &amp;quot;forklift&amp;quot;, &amp;quot;helmet detection&amp;quot;, etc.).&lt;br /&gt;
:Vérifier le nombre d&#039;images, la diversité des photos et la qualité des annotations.&lt;br /&gt;
:Choisir un dataset avec plusieurs centaines ou milliers d&#039;images bien étiquetées.&lt;br /&gt;
:Une fois le bon dataset trouvé, le télécharger en format ZIP.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Attention :&#039;&#039;&#039; Vérifier que le dataset contient des &#039;&#039;&#039;images nulles&#039;&#039;&#039; (images sans l&#039;objet à détecter). Ces images sont essentielles pour éviter les faux positifs.&lt;br /&gt;
 &lt;br /&gt;
:Une fois extrait, vérifier que le dossier contient les 3 éléments importants : data.yaml, train/ et valid/.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;2. Ajouter le modèle YOLO de base&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:YOLO possède des modèles de base pré-entraînés. Nous utilisons la version &#039;&#039;&#039;yolo11n&#039;&#039;&#039; (nano), la plus légère pour fonctionner sur Raspberry Pi.&lt;br /&gt;
:Télécharger yolo11n.pt depuis le site officiel d&#039;Ultralytics et le placer dans le même dossier que data.yaml.&lt;br /&gt;
 &lt;br /&gt;
:[[File:version_yolo.png|600px]]&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;3. Entraînement&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:L&#039;entraînement est recommandé sur un ordinateur Linux avec une carte graphique NVIDIA.&lt;br /&gt;
:Dans le terminal, entrer la commande :&lt;br /&gt;
 &lt;br /&gt;
: &#039;&#039;&#039;yolo detect train model=yolo11n.pt data=data.yaml epochs=100 imgsz=640 batch=16 patience=20&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Paramètre !! Description !! Valeur recommandée&lt;br /&gt;
|-&lt;br /&gt;
| model || Modèle de base pré-entraîné || yolo11n.pt&lt;br /&gt;
|-&lt;br /&gt;
| data || Fichier de configuration du dataset || data.yaml&lt;br /&gt;
|-&lt;br /&gt;
| epochs || Nombre de cycles d&#039;apprentissage || 100&lt;br /&gt;
|-&lt;br /&gt;
| imgsz || Taille des images (maximum YOLO) || 640&lt;br /&gt;
|-&lt;br /&gt;
| batch || Images traitées simultanément (selon le GPU) || 16&lt;br /&gt;
|-&lt;br /&gt;
| patience || Arrête si plus d&#039;amélioration || 20&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
:Le modèle entraîné sera disponible dans runs/detect/train/weights/best.pt.&lt;br /&gt;
 &lt;br /&gt;
:Pour faire l&#039;entraînement sur Windows, voici une vidéo de référence : https://www.youtube.com/watch?v=r0RspiLG260&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Librairies requises pour l&#039;entraînement :&#039;&#039;&#039;&lt;br /&gt;
*ultralytics&lt;br /&gt;
*torch et torchvision&lt;br /&gt;
*opencv-python&lt;br /&gt;
*python3&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Conversion NCNN (optimisation Raspberry Pi)====&lt;br /&gt;
 &lt;br /&gt;
Le format NCNN est optimisé pour les processeurs ARM comme celui du Raspberry Pi. La conversion du modèle .pt en format NCNN permet de passer de &#039;&#039;&#039;3 FPS à 12 FPS&#039;&#039;&#039; sur le Raspberry Pi 5. Cette étape est fortement recommandée.&lt;br /&gt;
 &lt;br /&gt;
: &#039;&#039;&#039;python3 convert_ncnn.py&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:Le script génère un dossier modelv1_ncnn_model/ contenant tous les fichiers nécessaires.&lt;br /&gt;
:Dans main.py, changer MODEL_PATH pour pointer vers ce dossier au lieu du fichier .pt.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Important :&#039;&#039;&#039; Effectuer la conversion sur le Raspberry Pi lui-même pour garantir la compatibilité.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Créer son propre dataset personnalisé====&lt;br /&gt;
 &lt;br /&gt;
Si le dataset public ne correspond pas suffisamment à l&#039;environnement de production, il est possible d&#039;améliorer le modèle en filmant sur place.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;1.&#039;&#039;&#039; Filmer plusieurs courtes vidéos (5 à 15 minutes) dans différentes zones et conditions d&#039;éclairage avec record.py.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;2.&#039;&#039;&#039; Extraire les frames automatiquement avec extract_frames.py — une image toutes les 3 secondes génère environ 200 à 300 images par vidéo.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;3.&#039;&#039;&#039; Annoter les images sur Roboflow en utilisant la fonction Auto-Label avec le modèle existant pour minimiser le travail manuel.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;4.&#039;&#039;&#039; Réentraîner le modèle avec le nouveau dataset.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Conseil :&#039;&#039;&#039; Filmer avec la même caméra USB que celle utilisée en production garantit que le modèle sera entraîné sur des images identiques à ce qu&#039;il verra en temps réel.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Installation des librairies====&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Sur le Raspberry Pi 5 (exécution) :&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
: pip install torch torchvision --index-url &amp;lt;nowiki&amp;gt;https://download.pytorch.org/whl/cpu&amp;lt;/nowiki&amp;gt; --break-system-packages --no-cache-dir&lt;br /&gt;
: pip install ultralytics opencv-python lgpio ncnn pnnx --break-system-packages --no-cache-dir&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Sur un ordinateur Linux (entraînement et conversion) :&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
: pip install ultralytics torch torchvision opencv-python ncnn pnnx&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Librairie !! Rôle !! Pi 5 !! PC Linux&lt;br /&gt;
|-&lt;br /&gt;
| ultralytics || Modèle YOLO || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| torch / torchvision || Moteur d&#039;apprentissage PyTorch || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| opencv-python || Capture et affichage vidéo || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| lgpio || Contrôle des broches GPIO || ✓ || ✗&lt;br /&gt;
|-&lt;br /&gt;
| ncnn / pnnx || Conversion et inférence NCNN || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| numpy || Calculs mathématiques (inclus automatiquement) || ✓ || ✓&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
 &lt;br /&gt;
*Raspberry Pi 5 (8 Go recommandé, 4 Go minimum)&lt;br /&gt;
*Carte microSD classe A2, 32 Go minimum (SanDisk ou Samsung Endurance recommandé)&lt;br /&gt;
*Câble d&#039;alimentation USB-C 5V/5A (27W) — câble officiel Raspberry Pi 5 obligatoire&lt;br /&gt;
*Caméra USB type A&lt;br /&gt;
*Relais 5V (module 1 canal)&lt;br /&gt;
*Gyrophare 120V CA&lt;br /&gt;
*Câbles Dupont mâle-femelle (connexions GPIO)&lt;br /&gt;
*Câble micro HDMI (optionnel — pour connecter un écran)&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Attention :&#039;&#039;&#039; Toujours éteindre le Raspberry Pi proprement avec la commande &#039;&#039;&#039;sudo shutdown -h now&#039;&#039;&#039; avant de couper l&#039;alimentation. Une coupure brusque peut corrompre la carte microSD.&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Fichier:Diagram.png&amp;diff=1026</id>
		<title>Fichier:Diagram.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Fichier:Diagram.png&amp;diff=1026"/>
		<updated>2026-03-29T21:28:26Z</updated>

		<summary type="html">&lt;p&gt;2182036 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=1025</id>
		<title>Reconnaissance objet</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=1025"/>
		<updated>2026-03-29T21:22:40Z</updated>

		<summary type="html">&lt;p&gt;2182036 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description du projet==&lt;br /&gt;
Le but du projet est de détecter un objet (dans notre cas, un chariot élévateur) dans une image provenant d&#039;une caméra à l&#039;aide d&#039;un modèle de reconnaissance d&#039;objets préentraîné. Lorsque le programme détecte un chariot élévateur, un gyrophare s&#039;active afin d&#039;avertir les travailleurs de sa présence. Le programme s&#039;exécute sur un Raspberry Pi 5, un micro-ordinateur doté d&#039;entrées et de sorties programmables. La caméra y est connectée directement par USB. Étant donné que les sorties du Raspberry Pi fonctionnent en 3,3 V CC, un relais est utilisé pour commander l&#039;alimentation d&#039;un gyrophare fonctionnant en 120 V CA.&lt;br /&gt;
 &lt;br /&gt;
:[[File:schema.png|800px]]&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
===Fonctionnement global===&lt;br /&gt;
 &lt;br /&gt;
Le projet repose sur un seul fichier Python principal (main.py) qui gère simultanément la détection YOLO et le contrôle des sorties GPIO grâce à un système de thread séparé.&lt;br /&gt;
 &lt;br /&gt;
:[[File:logic.png|800px]]&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Structure des fichiers====&lt;br /&gt;
 &lt;br /&gt;
Le dossier de projet est organisé en trois catégories selon leur utilisation.&lt;br /&gt;
 &lt;br /&gt;
:[[File:diagram.png|600px]]&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Fichier !! Rôle !! Catégorie&lt;br /&gt;
|-&lt;br /&gt;
| main.py || Fichier principal — lance la détection YOLO et contrôle les GPIO || Exécution&lt;br /&gt;
|-&lt;br /&gt;
| modelv1_ncnn_model/ || Modèle YOLO converti au format NCNN (dossier) || Exécution&lt;br /&gt;
|-&lt;br /&gt;
| record.py || Enregistre une vidéo depuis la caméra USB || Création du dataset&lt;br /&gt;
|-&lt;br /&gt;
| extract_frames.py || Extrait des images d&#039;une vidéo pour créer un dataset || Création du dataset&lt;br /&gt;
|-&lt;br /&gt;
| convert_ncnn.py || Convertit un modèle .pt au format NCNN || Conversion&lt;br /&gt;
|-&lt;br /&gt;
| modelv1.pt || Modèle YOLO original (format PyTorch) || Conversion&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Fichier Python principal (main.py)====&lt;br /&gt;
 &lt;br /&gt;
Le fichier main.py gère l&#039;image de la caméra en appliquant le modèle pré-entraîné sur chaque frame. Il affiche le nombre d&#039;objets détectés, les FPS, le pourcentage de certitude et la boîte de détection de classe. La classe cible, le seuil de confiance et tous les paramètres sont configurables directement en haut du fichier.&lt;br /&gt;
 &lt;br /&gt;
Le programme supporte deux types de sources : une caméra USB ou un fichier vidéo, sélectionnable via la variable SOURCE en haut du fichier.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Paramètres configurables en haut du fichier :&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Paramètre !! Description !! Valeur par défaut&lt;br /&gt;
|-&lt;br /&gt;
| MODEL_PATH || Chemin vers le modèle YOLO (.pt ou dossier NCNN) || &#039;modelv1_ncnn_model&#039;&lt;br /&gt;
|-&lt;br /&gt;
| SOURCE || Source vidéo — &#039;usb0&#039; pour caméra, &#039;video.mp4&#039; pour fichier || &#039;usb0&#039;&lt;br /&gt;
|-&lt;br /&gt;
| CONFIANCE_MIN || Seuil de confiance minimum (0.0 à 1.0) || 0.5&lt;br /&gt;
|-&lt;br /&gt;
| CLASSE_CIBLE || Classe à détecter, ou &#039;any&#039; pour toutes les classes || &#039;Forklift&#039;&lt;br /&gt;
|-&lt;br /&gt;
| GPIO_PIN || Broche BCM de la sortie principale || 17&lt;br /&gt;
|-&lt;br /&gt;
| PIN_LUMIERE_DETECTION || Lumière qui suit le GPIO principal || 27&lt;br /&gt;
|-&lt;br /&gt;
| PIN_LUMIERE_STATUT || Lumière allumée au démarrage, éteinte à la fermeture || 22&lt;br /&gt;
|-&lt;br /&gt;
| DUREE_DETECTION || Secondes que la condition doit être maintenue avant activation || 2.0&lt;br /&gt;
|-&lt;br /&gt;
| DUREE_ACTIVATION || Secondes que le GPIO reste actif || 3.0&lt;br /&gt;
|-&lt;br /&gt;
| RESOLUTION || Résolution caméra et inférence || (640, 640)&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Note :&#039;&#039;&#039; La valeur de CLASSE_CIBLE est insensible à la casse. Écrire &#039;forklift&#039;, &#039;Forklift&#039; ou &#039;FORKLIFT&#039; donnera le même résultat.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Contrôle GPIO====&lt;br /&gt;
 &lt;br /&gt;
La logique GPIO tourne dans un thread séparé en parallèle de la détection YOLO, ce qui évite tout ralentissement. Trois sorties sont disponibles :&lt;br /&gt;
 &lt;br /&gt;
*&#039;&#039;&#039;GPIO principal (GPIO_PIN)&#039;&#039;&#039; — activé lorsque la classe cible est détectée pendant DUREE_DETECTION secondes.&lt;br /&gt;
*&#039;&#039;&#039;Lumière de détection (PIN_LUMIERE_DETECTION)&#039;&#039;&#039; — suit exactement le même comportement que le GPIO principal.&lt;br /&gt;
*&#039;&#039;&#039;Lumière de statut (PIN_LUMIERE_STATUT)&#039;&#039;&#039; — s&#039;allume au démarrage du programme et s&#039;éteint à la fermeture.&lt;br /&gt;
 &lt;br /&gt;
Si la condition est toujours vraie à la fin de DUREE_ACTIVATION, le GPIO se renouvelle automatiquement sans coupure. À la fermeture du programme (touche q ou Ctrl+C), toutes les sorties sont éteintes proprement.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Création du modèle pré-entraîné====&lt;br /&gt;
 &lt;br /&gt;
Un modèle YOLO pré-entraîné (.pt) est une intelligence artificielle qui a appris à reconnaître certains objets grâce à un entraînement préalable sur une grande quantité d&#039;images. C&#039;est le cerveau du projet.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;1. Choisir le bon dataset&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:Nous conseillons d&#039;utiliser la plateforme Roboflow Universe pour trouver un dataset public.&lt;br /&gt;
:Rechercher avec des mots-clés précis (ex : &amp;quot;forklift&amp;quot;, &amp;quot;helmet detection&amp;quot;, etc.).&lt;br /&gt;
:Vérifier le nombre d&#039;images, la diversité des photos et la qualité des annotations.&lt;br /&gt;
:Choisir un dataset avec plusieurs centaines ou milliers d&#039;images bien étiquetées.&lt;br /&gt;
:Une fois le bon dataset trouvé, le télécharger en format ZIP.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Attention :&#039;&#039;&#039; Vérifier que le dataset contient des &#039;&#039;&#039;images nulles&#039;&#039;&#039; (images sans l&#039;objet à détecter). Ces images sont essentielles pour éviter les faux positifs.&lt;br /&gt;
 &lt;br /&gt;
:Une fois extrait, vérifier que le dossier contient les 3 éléments importants : data.yaml, train/ et valid/.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;2. Ajouter le modèle YOLO de base&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:YOLO possède des modèles de base pré-entraînés. Nous utilisons la version &#039;&#039;&#039;yolo11n&#039;&#039;&#039; (nano), la plus légère pour fonctionner sur Raspberry Pi.&lt;br /&gt;
:Télécharger yolo11n.pt depuis le site officiel d&#039;Ultralytics et le placer dans le même dossier que data.yaml.&lt;br /&gt;
 &lt;br /&gt;
:[[File:version_yolo.png|600px]]&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;3. Entraînement&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:L&#039;entraînement est recommandé sur un ordinateur Linux avec une carte graphique NVIDIA.&lt;br /&gt;
:Dans le terminal, entrer la commande :&lt;br /&gt;
 &lt;br /&gt;
: &#039;&#039;&#039;yolo detect train model=yolo11n.pt data=data.yaml epochs=100 imgsz=640 batch=16 patience=20&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Paramètre !! Description !! Valeur recommandée&lt;br /&gt;
|-&lt;br /&gt;
| model || Modèle de base pré-entraîné || yolo11n.pt&lt;br /&gt;
|-&lt;br /&gt;
| data || Fichier de configuration du dataset || data.yaml&lt;br /&gt;
|-&lt;br /&gt;
| epochs || Nombre de cycles d&#039;apprentissage || 100&lt;br /&gt;
|-&lt;br /&gt;
| imgsz || Taille des images (maximum YOLO) || 640&lt;br /&gt;
|-&lt;br /&gt;
| batch || Images traitées simultanément (selon le GPU) || 16&lt;br /&gt;
|-&lt;br /&gt;
| patience || Arrête si plus d&#039;amélioration || 20&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
:Le modèle entraîné sera disponible dans runs/detect/train/weights/best.pt.&lt;br /&gt;
 &lt;br /&gt;
:Pour faire l&#039;entraînement sur Windows, voici une vidéo de référence : https://www.youtube.com/watch?v=r0RspiLG260&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Librairies requises pour l&#039;entraînement :&#039;&#039;&#039;&lt;br /&gt;
*ultralytics&lt;br /&gt;
*torch et torchvision&lt;br /&gt;
*opencv-python&lt;br /&gt;
*python3&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Conversion NCNN (optimisation Raspberry Pi)====&lt;br /&gt;
 &lt;br /&gt;
Le format NCNN est optimisé pour les processeurs ARM comme celui du Raspberry Pi. La conversion du modèle .pt en format NCNN permet de passer de &#039;&#039;&#039;3 FPS à 12 FPS&#039;&#039;&#039; sur le Raspberry Pi 5. Cette étape est fortement recommandée.&lt;br /&gt;
 &lt;br /&gt;
: &#039;&#039;&#039;python3 convert_ncnn.py&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:Le script génère un dossier modelv1_ncnn_model/ contenant tous les fichiers nécessaires.&lt;br /&gt;
:Dans main.py, changer MODEL_PATH pour pointer vers ce dossier au lieu du fichier .pt.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Important :&#039;&#039;&#039; Effectuer la conversion sur le Raspberry Pi lui-même pour garantir la compatibilité.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Créer son propre dataset personnalisé====&lt;br /&gt;
 &lt;br /&gt;
Si le dataset public ne correspond pas suffisamment à l&#039;environnement de production, il est possible d&#039;améliorer le modèle en filmant sur place.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;1.&#039;&#039;&#039; Filmer plusieurs courtes vidéos (5 à 15 minutes) dans différentes zones et conditions d&#039;éclairage avec record.py.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;2.&#039;&#039;&#039; Extraire les frames automatiquement avec extract_frames.py — une image toutes les 3 secondes génère environ 200 à 300 images par vidéo.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;3.&#039;&#039;&#039; Annoter les images sur Roboflow en utilisant la fonction Auto-Label avec le modèle existant pour minimiser le travail manuel.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;4.&#039;&#039;&#039; Réentraîner le modèle avec le nouveau dataset.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Conseil :&#039;&#039;&#039; Filmer avec la même caméra USB que celle utilisée en production garantit que le modèle sera entraîné sur des images identiques à ce qu&#039;il verra en temps réel.&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Installation des librairies====&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Sur le Raspberry Pi 5 (exécution) :&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
: pip install torch torchvision --index-url &amp;lt;nowiki&amp;gt;https://download.pytorch.org/whl/cpu&amp;lt;/nowiki&amp;gt; --break-system-packages --no-cache-dir&lt;br /&gt;
: pip install ultralytics opencv-python lgpio ncnn pnnx --break-system-packages --no-cache-dir&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Sur un ordinateur Linux (entraînement et conversion) :&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
: pip install ultralytics torch torchvision opencv-python ncnn pnnx&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Librairie !! Rôle !! Pi 5 !! PC Linux&lt;br /&gt;
|-&lt;br /&gt;
| ultralytics || Modèle YOLO || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| torch / torchvision || Moteur d&#039;apprentissage PyTorch || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| opencv-python || Capture et affichage vidéo || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| lgpio || Contrôle des broches GPIO || ✓ || ✗&lt;br /&gt;
|-&lt;br /&gt;
| ncnn / pnnx || Conversion et inférence NCNN || ✓ || ✓&lt;br /&gt;
|-&lt;br /&gt;
| numpy || Calculs mathématiques (inclus automatiquement) || ✓ || ✓&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
====Liste de matériel====&lt;br /&gt;
 &lt;br /&gt;
*Raspberry Pi 5 (8 Go recommandé, 4 Go minimum)&lt;br /&gt;
*Carte microSD classe A2, 32 Go minimum (SanDisk ou Samsung Endurance recommandé)&lt;br /&gt;
*Câble d&#039;alimentation USB-C 5V/5A (27W) — câble officiel Raspberry Pi 5 obligatoire&lt;br /&gt;
*Caméra USB type A&lt;br /&gt;
*Relais 5V (module 1 canal)&lt;br /&gt;
*Gyrophare 120V CA&lt;br /&gt;
*Câbles Dupont mâle-femelle (connexions GPIO)&lt;br /&gt;
*Câble micro HDMI (optionnel — pour connecter un écran)&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Attention :&#039;&#039;&#039; Toujours éteindre le Raspberry Pi proprement avec la commande &#039;&#039;&#039;sudo shutdown -h now&#039;&#039;&#039; avant de couper l&#039;alimentation. Une coupure brusque peut corrompre la carte microSD.&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=681</id>
		<title>Reconnaissance objet</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=681"/>
		<updated>2026-02-27T15:07:48Z</updated>

		<summary type="html">&lt;p&gt;2182036 : /* Création du modèle pré-entrainée */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description du projet==&lt;br /&gt;
Le but final du projet est de détecter un objet (dans notre cas, un chariot élévateur) dans une image provenant d’une caméra à l’aide d’un modèle de reconnaissance d’objets préentraîné. Lorsque le programme détecte un chariot élévateur, un gyrophare s’active afin d’avertir les travailleurs de sa présence.Le programme s’exécute sur un Raspberry Pi 5, un micro-ordinateur doté d’entrées et de sorties programmables. La caméra y est connectée directement par USB. Étant donné que les sorties du Raspberry Pi fonctionnent en 3,3 VCC, un relais est utilisé pour commander l’alimentation d’un projecteur fonctionnant en 120 VCA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:[[File:image_proj.png|800px]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Fonctionnement global===&lt;br /&gt;
&lt;br /&gt;
Pour fonctionner, le projet a trois grande étapes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. La programmation python.&#039;&#039;&#039;&lt;br /&gt;
:Le script charge un modèle .pt et applique la détection sur chaque image, affiche les boîtes englobantes avec le niveau de confiance et calcule le nombre d&#039;image par seconde moyen.&lt;br /&gt;
:Il permet aussi d’enregistrer la vidéo traitée et de compter le nombre d’objets détectés à chaque image.&lt;br /&gt;
:Ce n&#039;est pas ce programme qui est entrainé a reconnaitre un objet. Il fait seulement le paramétrer (afficher les boites, le degré de confiance et le nombre d&#039;objet détecté.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Le fichier .pt (Pré-entrainée)&#039;&#039;&#039;&lt;br /&gt;
:Un modèle YOLO déjà entraîné (.pt) est une intelligence artificielle qui a déjà appris à reconnaître certains objets grâce à un entraînement préalable sur une grande quantité d’images.Le modèle pré-entrainé c&#039;est comme le cerveau du projet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Fichier de contrôle GPIO&#039;&#039;&#039;&lt;br /&gt;
:Le Raspberry pi 5 possède plusieurs pin programmable qui doivent être contrôler à l&#039;aide d&#039;un fichier. Les pins GPIO peuvent être soit une entrée ou une sortie. Le fichier fais aussi le liens entre les variables python et les pins.&lt;br /&gt;
&lt;br /&gt;
:[[File:logic.png|800px]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
====Création du modèle pré-entrainée====&lt;br /&gt;
&lt;br /&gt;
Pour entraîner le modèle, il faut un dataset, c’est-à-dire une collection d’images déjà annotées.&lt;br /&gt;
Il existe deux options : le créer soi-même ou en utiliser un déjà disponible en ligne.&lt;br /&gt;
Nous recommandons d’en prendre un déjà fait, car créer son propre dataset demande des milliers de photos et beaucoup de temps pour les annoter une par une.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Choisir le bon dataset&#039;&#039;&#039;&lt;br /&gt;
:Nous conseillons d&#039;utiliser la plateforme RobotFlow sur internet pour trouver un dataset.&lt;br /&gt;
:Sur Roboflow, va dans l’onglet Universe (bibliothèque publique).&lt;br /&gt;
:Rechercher avec des mots-clés précis (ex : “forklift”, “helmet detection”, etc.).&lt;br /&gt;
:Vérifie le nombre d’images, la diversité des photos et la qualité des annotations.&lt;br /&gt;
:Choisis un dataset avec plusieurs centaines ou milliers d’images bien étiquetées.&lt;br /&gt;
:Une fois le bon dataset trouvé, il reste juste à le télécharger en format zip.&lt;br /&gt;
:Une erreur que nous avons rencontrée étais que notre dataset n&#039;avais aucune image&lt;br /&gt;
:nulle, qui sont une images sans l&#039;objet qu&#039;on veut détecter. les images nulle &lt;br /&gt;
:sont important pour l&#039;entrainement.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Préparer le dataset à l’entrainement.&#039;&#039;&#039;&lt;br /&gt;
:Une fois le fichier téléchargé, vous devez l&#039;extraire à l&#039;endroit de votre choix.&lt;br /&gt;
:Ensuite, vérifiez que le fichier contient les 3 éléments  importants: data.yaml, train, valid.&lt;br /&gt;
:Si ces 3 éléments sont présents, tout est correct.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Ajouter le Yolo de base.&#039;&#039;&#039;&lt;br /&gt;
:Yolo possède des modèles de base pré entrainés généralisé et il est nécessaire d&#039;ajouter une&lt;br /&gt;
:de ces version à notre dataset pour l’entrainement. Nous utilisons la version 11n qui est la&lt;br /&gt;
:version officielle la plus récente. Le n signifie nano. Il existe d&#039;autres modèle plus performants,&lt;br /&gt;
:mais nous avons besoin de la version la plus léger pour fonctionner avec le Raspberry pi. &lt;br /&gt;
:pour l&#039;ajouter au dataset, vous devez le télécharger à partir du site de Yolo.&lt;br /&gt;
&lt;br /&gt;
Vous devez ensuite glisser le fichier téléchargé au même endroit que les autres fichiers énumérés à l&#039;étape 2.&lt;br /&gt;
:[[File:version_yolo.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Entrainement&#039;&#039;&#039;&lt;br /&gt;
:Il est possible de faire l’entrainement sur Windows, nous conseillons d&#039;utiliser Linux, mais voici une vidéo expliquant les démarches nécessaire avec Windows.&lt;br /&gt;
&lt;br /&gt;
:https://www.youtube.com/watch?v=r0RspiLG260&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Pour le faire sur Linux, vous devez avoir téléchargé les librairies suivantes:&lt;br /&gt;
*ultralitics&lt;br /&gt;
*pytorch&lt;br /&gt;
*python3&lt;br /&gt;
*opencv&lt;br /&gt;
&lt;br /&gt;
:Nous conseillons l&#039;utilisation de l&#039;outil pip pour rendre l&#039;installation de c&#039;est librairie plus simple. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Maintenant, Dans le terminal entrez la commande:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;yolo detect train model=yolo11n.pt data=data.yaml epochs=X imgsz=X batch=X patience=X&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*model : modèle de base pré-entraîné utilisé pour commencer.&lt;br /&gt;
&lt;br /&gt;
*data : fichier qui indique où sont les images et les classes.&lt;br /&gt;
&lt;br /&gt;
*epochs : nombre de cycles d’apprentissage.&lt;br /&gt;
&lt;br /&gt;
*imgsz : taille des images (640 est le maximum de YOLO).&lt;br /&gt;
&lt;br /&gt;
*batch : nombre d’images traitées en même temps (selon le gpu).&lt;br /&gt;
&lt;br /&gt;
*patience : arrête l’entraînement si le modèle n’améliore plus ses performances&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Il est nécessaire de remplacer les x par les bonnes valeurs selon vos besoins, dépendamment de votre nombre d&#039;images et votre application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Ensuite, vous exécutez la commande et votre ordinateur lance l’entraînement du modèle, cela peut prendre plusieurs heures selon la puissance de votre machine et la taille du dataset.Une erreur possible est que votre processeur ou votre environnement ne dispose pas des bibliothèques logicielles nécessaires pour exécuter l’entraînement. Ce problème est plus fréquent sur des ordinateurs plus anciens ou lorsque certaines dépendances ne sont pas correctement installées.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====Python de détection====&lt;br /&gt;
&lt;br /&gt;
:Le fichier python gère l&#039;image de la caméra en appliquant le modèle pre-trained sur chaque frame.&lt;br /&gt;
:De plus, il affiche le nombre d&#039;objet détectés, les fps, le pourcentage de certitude et la boite&lt;br /&gt;
:de détection de classe. Dans notre cas la seule classe est le forklift, mais le même python&lt;br /&gt;
:fonctionnerait avec n&#039;importe quelle classe sans modification.&lt;br /&gt;
:Dans ce programme vous pouvez aussi décider à partir de quel pourcentage de certitude (confidence) la boite s&#039;affiche.&lt;br /&gt;
&lt;br /&gt;
Il existe d&#039;autres fichiers pythons sur le web adaptés a tout les besoins.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=====Contrôle des entrées/sorties digitales=====&lt;br /&gt;
&lt;br /&gt;
:Ce fichier python est le point d&#039;entrée du projet (Ces lui qu&#039;on exécute pour démarrer).&lt;br /&gt;
:Il lance automatiquement le python de détection et surveille le nombre d&#039;objets&lt;br /&gt;
:détectés par la caméra via un fichier temporaire .txt partagé entre les deux scripts.&lt;br /&gt;
:Il est créer et supprimer à chaque fois. &lt;br /&gt;
:Lorsque object_count atteint la valeur cible pendant un délai défini, la sortie GPIO&lt;br /&gt;
:s&#039;active pour une durée déterminée, puis revient à 0 automatiquement.&lt;br /&gt;
:Toutes les valeurs (broche GPIO, délais, seuil de détection) sont modifiables en haut du fichier.&lt;br /&gt;
:Ne pas oublier d&#039;installer la librairie GPIO sur le cranberry pi.&lt;br /&gt;
&lt;br /&gt;
:[[File:GPIO.png|800px]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
======Liste de matériel======&lt;br /&gt;
&lt;br /&gt;
*Raspberry pi 5 (8 GB ou plus conseillé)&lt;br /&gt;
&lt;br /&gt;
*Relais 5v&lt;br /&gt;
&lt;br /&gt;
*Câble d&#039;alimentation 5v 45w&lt;br /&gt;
&lt;br /&gt;
*Caméra USB type A&lt;br /&gt;
&lt;br /&gt;
*Câble micro HDMI (optionnel)&lt;br /&gt;
&lt;br /&gt;
*Câbles Dupont pour le relais (GPIO)&lt;br /&gt;
&lt;br /&gt;
*Clavier/Souris&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=666</id>
		<title>Reconnaissance objet</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=666"/>
		<updated>2026-02-27T14:41:34Z</updated>

		<summary type="html">&lt;p&gt;2182036 : /* Description du projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description du projet==&lt;br /&gt;
Le but final du projet est de détecter un objet (dans notre cas, un chariot élévateur) dans une image provenant d’une caméra à l’aide d’un modèle de reconnaissance d’objets préentraîné. Lorsque le programme détecte un chariot élévateur, un gyrophare s’active afin d’avertir les travailleurs de sa présence.Le programme s’exécute sur un Raspberry Pi 5, un micro-ordinateur doté d’entrées et de sorties programmables. La caméra y est connectée directement par USB. Étant donné que les sorties du Raspberry Pi fonctionnent en 3,3 VCC, un relais est utilisé pour commander l’alimentation d’un projecteur fonctionnant en 120 VCA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:[[File:image_proj.png|800px]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Fonctionnement global===&lt;br /&gt;
&lt;br /&gt;
Pour fonctionner, le projet a trois grande étapes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. La programmation python.&#039;&#039;&#039;&lt;br /&gt;
:Le script charge un modèle .pt et applique la détection sur chaque image, affiche les boîtes englobantes avec le niveau de confiance et calcule le nombre d&#039;image par seconde moyen.&lt;br /&gt;
:Il permet aussi d’enregistrer la vidéo traitée et de compter le nombre d’objets détectés à chaque image.&lt;br /&gt;
:Ce n&#039;est pas ce programme qui est entrainé a reconnaitre un objet. Il fait seulement le paramétrer (afficher les boites, le degré de confiance et le nombre d&#039;objet détecté.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Le fichier .pt (Pré-entrainée)&#039;&#039;&#039;&lt;br /&gt;
:Un modèle YOLO déjà entraîné (.pt) est une intelligence artificielle qui a déjà appris à reconnaître certains objets grâce à un entraînement préalable sur une grande quantité d’images.Le modèle pré-entrainé c&#039;est comme le cerveau du projet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Fichier de contrôle GPIO&#039;&#039;&#039;&lt;br /&gt;
:Le Raspberry pi 5 possède plusieurs pin programmable qui doivent être contrôler à l&#039;aide d&#039;un fichier. Les pins GPIO peuvent être soit une entrée ou une sortie. Le fichier fais aussi le liens entre les variables python et les pins.&lt;br /&gt;
&lt;br /&gt;
:[[File:logic.png|800px]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
====Création du modèle pré-entrainée====&lt;br /&gt;
&lt;br /&gt;
Pour entraîner le modèle, il faut un dataset, c’est-à-dire une collection d’images déjà annotées.&lt;br /&gt;
Il existe deux options : le créer soi-même ou en utiliser un déjà disponible en ligne.&lt;br /&gt;
Nous recommandons d’en prendre un déjà fait, car créer son propre dataset demande des milliers de photos et beaucoup de temps pour les annoter une par une.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Choisir le bon dataset&#039;&#039;&#039;&lt;br /&gt;
:Nous conseillons d&#039;utiliser la plateforme RobotFlow sur internet pour trouver un dataset.&lt;br /&gt;
:Sur Roboflow, va dans l’onglet Universe (bibliothèque publique).&lt;br /&gt;
:Rechercher avec des mots-clés précis (ex : “forklift”, “helmet detection”, etc.).&lt;br /&gt;
:Vérifie le nombre d’images, la diversité des photos et la qualité des annotations.&lt;br /&gt;
:Choisis un dataset avec plusieurs centaines ou milliers d’images bien étiquetées.&lt;br /&gt;
:Une fois le bon dataset trouvé, il reste juste à le télécharger en format zip.&lt;br /&gt;
:Une erreur que nous avons rencontrée étais que notre dataset n&#039;avais aucune image&lt;br /&gt;
:nulle, qui sont une images sans l&#039;objet qu&#039;on veut détecter. les images nulle &lt;br /&gt;
:sont important pour l&#039;entrainement.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Préparer le dataset à l’entrainement.&#039;&#039;&#039;&lt;br /&gt;
:Une fois le fichier téléchargé, vous devez l&#039;extraire à l&#039;endroit de votre choix.&lt;br /&gt;
:Ensuite, vérifiez que le fichier contient les 3 éléments  importants: data.yaml, train, valid.&lt;br /&gt;
:Si ces 3 éléments sont présents, tout est correct.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Ajouter le Yolo de base.&#039;&#039;&#039;&lt;br /&gt;
:Yolo possède des modèles de base pré entrainés généralisé et il est nécessaire d&#039;ajouter une&lt;br /&gt;
:de ces version à notre dataset pour l’entrainement. Nous utilisons la version 11n qui est la&lt;br /&gt;
:version officielle la plus récente. Le n signifie nano. Il existe d&#039;autres modèle plus performants,&lt;br /&gt;
:mais nous avons besoin de la version la plus léger pour fonctionner avec le Raspberry pi. &lt;br /&gt;
:pour l&#039;ajouter au dataset, vous devez le télécharger à partir du site de Yolo.&lt;br /&gt;
&lt;br /&gt;
Vous devez ensuite glisser le fichier téléchargé au même endroit que les autres fichiers énumérés à l&#039;étape 2.&lt;br /&gt;
:[[File:version_yolo.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Entrainement&#039;&#039;&#039;&lt;br /&gt;
:Il est possible de faire l’entrainement sur Windows, nous conseillons d&#039;utiliser Linux, mais voici une vidéo expliquant les démarches nécessaire avec Windows.&lt;br /&gt;
&lt;br /&gt;
:https://www.youtube.com/watch?v=r0RspiLG260&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Pour le faire sur Linux, vous devez avoir téléchargé les librairies suivantes:&lt;br /&gt;
*ultralitics&lt;br /&gt;
*pytorch&lt;br /&gt;
*python3&lt;br /&gt;
*opencv&lt;br /&gt;
&lt;br /&gt;
:Nous conseillons l&#039;utilisation de l&#039;outil pip pour rendre l&#039;installation de c&#039;est librairie plus simple. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Maintenant, Dans le terminal entrez la commande:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;yolo detect train model=yolo11n.pt data=data.yaml epochs=X imgsz=X batch=X patience=X&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*model : modèle de base pré-entraîné utilisé pour commencer.&lt;br /&gt;
&lt;br /&gt;
*data : fichier qui indique où sont les images et les classes.&lt;br /&gt;
&lt;br /&gt;
*epochs : nombre de cycles d’apprentissage.&lt;br /&gt;
&lt;br /&gt;
*imgsz : taille des images (640 si vous utiliser notre python).&lt;br /&gt;
&lt;br /&gt;
*batch : nombre d’images traitées en même temps (selon le gpu).&lt;br /&gt;
&lt;br /&gt;
*patience : arrête l’entraînement si le modèle n’améliore plus ses performances&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Il est nécessaire de remplacer les x par les bonnes valeurs selon vos besoins, dépendamment de votre nombre d&#039;images et votre application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Ensuite, vous exécutez la commande et votre ordinateur lance l’entraînement du modèle, cela peut prendre plusieurs heures selon la puissance de votre machine et la taille du dataset.Une erreur possible est que votre processeur ou votre environnement ne dispose pas des bibliothèques logicielles nécessaires pour exécuter l’entraînement. Ce problème est plus fréquent sur des ordinateurs plus anciens ou lorsque certaines dépendances ne sont pas correctement installées.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
====Python de détection====&lt;br /&gt;
&lt;br /&gt;
:Le fichier python gère l&#039;image de la caméra en appliquant le modèle pre-trained sur chaque frame.&lt;br /&gt;
:De plus, il affiche le nombre d&#039;objet détectés, les fps, le pourcentage de certitude et la boite&lt;br /&gt;
:de détection de classe. Dans notre cas la seule classe est le forklift, mais le même python&lt;br /&gt;
:fonctionnerait avec n&#039;importe quelle classe sans modification.&lt;br /&gt;
:Dans ce programme vous pouvez aussi décider à partir de quel pourcentage de certitude (confidence) la boite s&#039;affiche.&lt;br /&gt;
&lt;br /&gt;
Il existe d&#039;autres fichiers pythons sur le web adaptés a tout les besoins.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=====Contrôle des entrées/sorties digitales=====&lt;br /&gt;
&lt;br /&gt;
:Ce fichier python est le point d&#039;entrée du projet (Ces lui qu&#039;on exécute pour démarrer).&lt;br /&gt;
:Il lance automatiquement le python de détection et surveille le nombre d&#039;objets&lt;br /&gt;
:détectés par la caméra via un fichier temporaire .txt partagé entre les deux scripts.&lt;br /&gt;
:Il est créer et supprimer à chaque fois. &lt;br /&gt;
:Lorsque object_count atteint la valeur cible pendant un délai défini, la sortie GPIO&lt;br /&gt;
:s&#039;active pour une durée déterminée, puis revient à 0 automatiquement.&lt;br /&gt;
:Toutes les valeurs (broche GPIO, délais, seuil de détection) sont modifiables en haut du fichier.&lt;br /&gt;
:Ne pas oublier d&#039;installer la librairie GPIO sur le cranberry pi.&lt;br /&gt;
&lt;br /&gt;
:[[File:GPIO.png|800px]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
======Liste de matériel======&lt;br /&gt;
&lt;br /&gt;
*Raspberry pi 5 (8 GB ou plus conseillé)&lt;br /&gt;
&lt;br /&gt;
*Relais 5v&lt;br /&gt;
&lt;br /&gt;
*Câble d&#039;alimentation 5v 45w&lt;br /&gt;
&lt;br /&gt;
*Caméra USB type A&lt;br /&gt;
&lt;br /&gt;
*Câble micro HDMI (optionnel)&lt;br /&gt;
&lt;br /&gt;
*Câbles Dupont pour le relais (GPIO)&lt;br /&gt;
&lt;br /&gt;
*Clavier/Souris&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=662</id>
		<title>Reconnaissance objet</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=662"/>
		<updated>2026-02-27T14:36:03Z</updated>

		<summary type="html">&lt;p&gt;2182036 : /* Description du projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description du projet==&lt;br /&gt;
Le but final du projet est de détecter un objet (dans notre cas un lift) dans une image de caméra grâce à un modèle de reconnaissance d&#039;objet pré-entrainé.&lt;br /&gt;
Lorsque que le programme détectera un chariot élévateur, un gyrophare s&#039;activera pour avertir les travailleurs.&lt;br /&gt;
Le programme se trouvera dans un Raspberry pi 5, un petit ordinateur avec des entrées sorties programmables. La camera sera connectée dans celui-ci directement par USB.&lt;br /&gt;
Puisque les sorties du Raspberry pi fonctionne à 3.3 VCC, nous utilisons un petit relais pour alimenter un projecteur 120 VCA.&lt;br /&gt;
&lt;br /&gt;
:[[File:image_proj.png|800px]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Fonctionnement global===&lt;br /&gt;
&lt;br /&gt;
Pour fonctionner, le projet a trois grande étapes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. La programmation python.&#039;&#039;&#039;&lt;br /&gt;
:Le script charge un modèle .pt et applique la détection sur chaque image, affiche les boîtes englobantes avec le niveau de confiance et calcule le nombre d&#039;image par seconde moyen.&lt;br /&gt;
:Il permet aussi d’enregistrer la vidéo traitée et de compter le nombre d’objets détectés à chaque image.&lt;br /&gt;
:Ce n&#039;est pas ce programme qui est entrainé a reconnaitre un objet. Il fait seulement le paramétrer (afficher les boites, le degré de confiance et le nombre d&#039;objet détecté.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Le fichier .pt (Pré-entrainée)&#039;&#039;&#039;&lt;br /&gt;
:Un modèle YOLO déjà entraîné (.pt) est une intelligence artificielle qui a déjà appris à reconnaître certains objets grâce à un entraînement préalable sur une grande quantité d’images.Le modèle pré-entrainé c&#039;est comme le cerveau du projet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Fichier de contrôle GPIO&#039;&#039;&#039;&lt;br /&gt;
:Le Raspberry pi 5 possède plusieurs pin programmable qui doivent être contrôler à l&#039;aide d&#039;un fichier. Les pins GPIO peuvent être soit une entrée ou une sortie. Le fichier fais aussi le liens entre les variables python et les pins.&lt;br /&gt;
&lt;br /&gt;
:[[File:logic.png|800px]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
====Création du modèle pré-entrainée====&lt;br /&gt;
&lt;br /&gt;
Pour entraîner le modèle, il faut un dataset, c’est-à-dire une collection d’images déjà annotées.&lt;br /&gt;
Il existe deux options : le créer soi-même ou en utiliser un déjà disponible en ligne.&lt;br /&gt;
Nous recommandons d’en prendre un déjà fait, car créer son propre dataset demande des milliers de photos et beaucoup de temps pour les annoter une par une.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Choisir le bon dataset&#039;&#039;&#039;&lt;br /&gt;
:Nous conseillons d&#039;utiliser la plateforme RobotFlow sur internet pour trouver un dataset.&lt;br /&gt;
:Sur Roboflow, va dans l’onglet Universe (bibliothèque publique).&lt;br /&gt;
:Rechercher avec des mots-clés précis (ex : “forklift”, “helmet detection”, etc.).&lt;br /&gt;
:Vérifie le nombre d’images, la diversité des photos et la qualité des annotations.&lt;br /&gt;
:Choisis un dataset avec plusieurs centaines ou milliers d’images bien étiquetées.&lt;br /&gt;
:Une fois le bon dataset trouvé, il reste juste à le télécharger en format zip.&lt;br /&gt;
:Une erreur que nous avons rencontrée étais que notre dataset n&#039;avais aucune image&lt;br /&gt;
:nulle, qui sont une images sans l&#039;objet qu&#039;on veut détecter. les images nulle &lt;br /&gt;
:sont important pour l&#039;entrainement.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Préparer le dataset à l’entrainement.&#039;&#039;&#039;&lt;br /&gt;
:Une fois le fichier téléchargé, vous devez l&#039;extraire à l&#039;endroit de votre choix.&lt;br /&gt;
:Ensuite, vérifiez que le fichier contient les 3 éléments  importants: data.yaml, train, valid.&lt;br /&gt;
:Si ces 3 éléments sont présents, tout est correct.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Ajouter le Yolo de base.&#039;&#039;&#039;&lt;br /&gt;
:Yolo possède des modèles de base pré entrainés généralisé et il est nécessaire d&#039;ajouter une&lt;br /&gt;
:de ces version à notre dataset pour l’entrainement. Nous utilisons la version 11n qui est la&lt;br /&gt;
:version officielle la plus récente. Le n signifie nano. Il existe d&#039;autres modèle plus performants,&lt;br /&gt;
:mais nous avons besoin de la version la plus léger pour fonctionner avec le Raspberry pi. &lt;br /&gt;
:pour l&#039;ajouter au dataset, vous devez le télécharger à partir du site de Yolo.&lt;br /&gt;
&lt;br /&gt;
Vous devez ensuite glisser le fichier téléchargé au même endroit que les autres fichiers énumérés à l&#039;étape 2.&lt;br /&gt;
:[[File:version_yolo.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Entrainement&#039;&#039;&#039;&lt;br /&gt;
:Il est possible de faire l’entrainement sur Windows, nous conseillons d&#039;utiliser Linux, mais voici une vidéo expliquant les démarches nécessaire avec Windows.&lt;br /&gt;
&lt;br /&gt;
:https://www.youtube.com/watch?v=r0RspiLG260&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Pour le faire sur Linux, vous devez avoir téléchargé les librairies suivantes:&lt;br /&gt;
*ultralitics&lt;br /&gt;
*pytorch&lt;br /&gt;
*python3&lt;br /&gt;
*opencv&lt;br /&gt;
&lt;br /&gt;
:Nous conseillons l&#039;utilisation de l&#039;outil pip pour rendre l&#039;installation de c&#039;est librairie plus simple. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Maintenant, Dans le terminal entrez la commande:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;yolo detect train model=yolo11n.pt data=data.yaml epochs=X imgsz=X batch=X patience=X&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*model : modèle de base pré-entraîné utilisé pour commencer.&lt;br /&gt;
&lt;br /&gt;
*data : fichier qui indique où sont les images et les classes.&lt;br /&gt;
&lt;br /&gt;
*epochs : nombre de cycles d’apprentissage.&lt;br /&gt;
&lt;br /&gt;
*imgsz : taille des images (640 si vous utiliser notre python).&lt;br /&gt;
&lt;br /&gt;
*batch : nombre d’images traitées en même temps (selon le gpu).&lt;br /&gt;
&lt;br /&gt;
*patience : arrête l’entraînement si le modèle n’améliore plus ses performances&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Il est nécessaire de remplacer les x par les bonnes valeurs selon vos besoins, dépendamment de votre nombre d&#039;images et votre application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Ensuite, vous exécutez la commande et votre ordinateur lance l’entraînement du modèle, cela peut prendre plusieurs heures selon la puissance de votre machine et la taille du dataset.Une erreur possible est que votre processeur ou votre environnement ne dispose pas des bibliothèques logicielles nécessaires pour exécuter l’entraînement. Ce problème est plus fréquent sur des ordinateurs plus anciens ou lorsque certaines dépendances ne sont pas correctement installées.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
====Python de détection====&lt;br /&gt;
&lt;br /&gt;
:Le fichier python gère l&#039;image de la caméra en appliquant le modèle pre-trained sur chaque frame.&lt;br /&gt;
:De plus, il affiche le nombre d&#039;objet détectés, les fps, le pourcentage de certitude et la boite&lt;br /&gt;
:de détection de classe. Dans notre cas la seule classe est le forklift, mais le même python&lt;br /&gt;
:fonctionnerait avec n&#039;importe quelle classe sans modification.&lt;br /&gt;
:Dans ce programme vous pouvez aussi décider à partir de quel pourcentage de certitude (confidence) la boite s&#039;affiche.&lt;br /&gt;
&lt;br /&gt;
Il existe d&#039;autres fichiers pythons sur le web adaptés a tout les besoins.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=====Contrôle des entrées/sorties digitales=====&lt;br /&gt;
&lt;br /&gt;
:Ce fichier python est le point d&#039;entrée du projet (Ces lui qu&#039;on exécute pour démarrer).&lt;br /&gt;
:Il lance automatiquement le python de détection et surveille le nombre d&#039;objets&lt;br /&gt;
:détectés par la caméra via un fichier temporaire .txt partagé entre les deux scripts.&lt;br /&gt;
:Il est créer et supprimer à chaque fois. &lt;br /&gt;
:Lorsque object_count atteint la valeur cible pendant un délai défini, la sortie GPIO&lt;br /&gt;
:s&#039;active pour une durée déterminée, puis revient à 0 automatiquement.&lt;br /&gt;
:Toutes les valeurs (broche GPIO, délais, seuil de détection) sont modifiables en haut du fichier.&lt;br /&gt;
:Ne pas oublier d&#039;installer la librairie GPIO sur le cranberry pi.&lt;br /&gt;
&lt;br /&gt;
:[[File:GPIO.png|800px]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
======Liste de matériel======&lt;br /&gt;
&lt;br /&gt;
*Raspberry pi 5 (8 GB ou plus conseillé)&lt;br /&gt;
&lt;br /&gt;
*Relais 5v&lt;br /&gt;
&lt;br /&gt;
*Câble d&#039;alimentation 5v 45w&lt;br /&gt;
&lt;br /&gt;
*Caméra USB type A&lt;br /&gt;
&lt;br /&gt;
*Câble micro HDMI (optionnel)&lt;br /&gt;
&lt;br /&gt;
*Câbles Dupont pour le relais (GPIO)&lt;br /&gt;
&lt;br /&gt;
*Clavier/Souris&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=661</id>
		<title>Reconnaissance objet</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=661"/>
		<updated>2026-02-27T14:35:30Z</updated>

		<summary type="html">&lt;p&gt;2182036 : /* Fonctionnement global */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description du projet==&lt;br /&gt;
Le but final du projet est de détecter un objet (dans notre cas un lift) dans une image de caméra grâce à un modèle de reconnaissance d&#039;objet pré-entrainé.&lt;br /&gt;
Lorsque que le programme détectera un chariot élévateur, un gyrophare s&#039;activera pour avertir les travailleurs.&lt;br /&gt;
Le programme se trouvera dans un Raspberry pi 5, un petit ordinateur avec des entrées sorties programmables. La camera sera connectée dans celui-ci directement par USB.&lt;br /&gt;
Puisque les sorties du Raspberry pi fonctionne à 3.3 VCC, nous utilisons un petit relais pour alimenter un gyrophare 120 VCA.&lt;br /&gt;
&lt;br /&gt;
:[[File:image_proj.png|800px]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Fonctionnement global===&lt;br /&gt;
&lt;br /&gt;
Pour fonctionner, le projet a trois grande étapes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. La programmation python.&#039;&#039;&#039;&lt;br /&gt;
:Le script charge un modèle .pt et applique la détection sur chaque image, affiche les boîtes englobantes avec le niveau de confiance et calcule le nombre d&#039;image par seconde moyen.&lt;br /&gt;
:Il permet aussi d’enregistrer la vidéo traitée et de compter le nombre d’objets détectés à chaque image.&lt;br /&gt;
:Ce n&#039;est pas ce programme qui est entrainé a reconnaitre un objet. Il fait seulement le paramétrer (afficher les boites, le degré de confiance et le nombre d&#039;objet détecté.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Le fichier .pt (Pré-entrainée)&#039;&#039;&#039;&lt;br /&gt;
:Un modèle YOLO déjà entraîné (.pt) est une intelligence artificielle qui a déjà appris à reconnaître certains objets grâce à un entraînement préalable sur une grande quantité d’images.Le modèle pré-entrainé c&#039;est comme le cerveau du projet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Fichier de contrôle GPIO&#039;&#039;&#039;&lt;br /&gt;
:Le Raspberry pi 5 possède plusieurs pin programmable qui doivent être contrôler à l&#039;aide d&#039;un fichier. Les pins GPIO peuvent être soit une entrée ou une sortie. Le fichier fais aussi le liens entre les variables python et les pins.&lt;br /&gt;
&lt;br /&gt;
:[[File:logic.png|800px]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
====Création du modèle pré-entrainée====&lt;br /&gt;
&lt;br /&gt;
Pour entraîner le modèle, il faut un dataset, c’est-à-dire une collection d’images déjà annotées.&lt;br /&gt;
Il existe deux options : le créer soi-même ou en utiliser un déjà disponible en ligne.&lt;br /&gt;
Nous recommandons d’en prendre un déjà fait, car créer son propre dataset demande des milliers de photos et beaucoup de temps pour les annoter une par une.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Choisir le bon dataset&#039;&#039;&#039;&lt;br /&gt;
:Nous conseillons d&#039;utiliser la plateforme RobotFlow sur internet pour trouver un dataset.&lt;br /&gt;
:Sur Roboflow, va dans l’onglet Universe (bibliothèque publique).&lt;br /&gt;
:Rechercher avec des mots-clés précis (ex : “forklift”, “helmet detection”, etc.).&lt;br /&gt;
:Vérifie le nombre d’images, la diversité des photos et la qualité des annotations.&lt;br /&gt;
:Choisis un dataset avec plusieurs centaines ou milliers d’images bien étiquetées.&lt;br /&gt;
:Une fois le bon dataset trouvé, il reste juste à le télécharger en format zip.&lt;br /&gt;
:Une erreur que nous avons rencontrée étais que notre dataset n&#039;avais aucune image&lt;br /&gt;
:nulle, qui sont une images sans l&#039;objet qu&#039;on veut détecter. les images nulle &lt;br /&gt;
:sont important pour l&#039;entrainement.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Préparer le dataset à l’entrainement.&#039;&#039;&#039;&lt;br /&gt;
:Une fois le fichier téléchargé, vous devez l&#039;extraire à l&#039;endroit de votre choix.&lt;br /&gt;
:Ensuite, vérifiez que le fichier contient les 3 éléments  importants: data.yaml, train, valid.&lt;br /&gt;
:Si ces 3 éléments sont présents, tout est correct.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Ajouter le Yolo de base.&#039;&#039;&#039;&lt;br /&gt;
:Yolo possède des modèles de base pré entrainés généralisé et il est nécessaire d&#039;ajouter une&lt;br /&gt;
:de ces version à notre dataset pour l’entrainement. Nous utilisons la version 11n qui est la&lt;br /&gt;
:version officielle la plus récente. Le n signifie nano. Il existe d&#039;autres modèle plus performants,&lt;br /&gt;
:mais nous avons besoin de la version la plus léger pour fonctionner avec le Raspberry pi. &lt;br /&gt;
:pour l&#039;ajouter au dataset, vous devez le télécharger à partir du site de Yolo.&lt;br /&gt;
&lt;br /&gt;
Vous devez ensuite glisser le fichier téléchargé au même endroit que les autres fichiers énumérés à l&#039;étape 2.&lt;br /&gt;
:[[File:version_yolo.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Entrainement&#039;&#039;&#039;&lt;br /&gt;
:Il est possible de faire l’entrainement sur Windows, nous conseillons d&#039;utiliser Linux, mais voici une vidéo expliquant les démarches nécessaire avec Windows.&lt;br /&gt;
&lt;br /&gt;
:https://www.youtube.com/watch?v=r0RspiLG260&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Pour le faire sur Linux, vous devez avoir téléchargé les librairies suivantes:&lt;br /&gt;
*ultralitics&lt;br /&gt;
*pytorch&lt;br /&gt;
*python3&lt;br /&gt;
*opencv&lt;br /&gt;
&lt;br /&gt;
:Nous conseillons l&#039;utilisation de l&#039;outil pip pour rendre l&#039;installation de c&#039;est librairie plus simple. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Maintenant, Dans le terminal entrez la commande:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;yolo detect train model=yolo11n.pt data=data.yaml epochs=X imgsz=X batch=X patience=X&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*model : modèle de base pré-entraîné utilisé pour commencer.&lt;br /&gt;
&lt;br /&gt;
*data : fichier qui indique où sont les images et les classes.&lt;br /&gt;
&lt;br /&gt;
*epochs : nombre de cycles d’apprentissage.&lt;br /&gt;
&lt;br /&gt;
*imgsz : taille des images (640 si vous utiliser notre python).&lt;br /&gt;
&lt;br /&gt;
*batch : nombre d’images traitées en même temps (selon le gpu).&lt;br /&gt;
&lt;br /&gt;
*patience : arrête l’entraînement si le modèle n’améliore plus ses performances&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Il est nécessaire de remplacer les x par les bonnes valeurs selon vos besoins, dépendamment de votre nombre d&#039;images et votre application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Ensuite, vous exécutez la commande et votre ordinateur lance l’entraînement du modèle, cela peut prendre plusieurs heures selon la puissance de votre machine et la taille du dataset.Une erreur possible est que votre processeur ou votre environnement ne dispose pas des bibliothèques logicielles nécessaires pour exécuter l’entraînement. Ce problème est plus fréquent sur des ordinateurs plus anciens ou lorsque certaines dépendances ne sont pas correctement installées.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
====Python de détection====&lt;br /&gt;
&lt;br /&gt;
:Le fichier python gère l&#039;image de la caméra en appliquant le modèle pre-trained sur chaque frame.&lt;br /&gt;
:De plus, il affiche le nombre d&#039;objet détectés, les fps, le pourcentage de certitude et la boite&lt;br /&gt;
:de détection de classe. Dans notre cas la seule classe est le forklift, mais le même python&lt;br /&gt;
:fonctionnerait avec n&#039;importe quelle classe sans modification.&lt;br /&gt;
:Dans ce programme vous pouvez aussi décider à partir de quel pourcentage de certitude (confidence) la boite s&#039;affiche.&lt;br /&gt;
&lt;br /&gt;
Il existe d&#039;autres fichiers pythons sur le web adaptés a tout les besoins.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=====Contrôle des entrées/sorties digitales=====&lt;br /&gt;
&lt;br /&gt;
:Ce fichier python est le point d&#039;entrée du projet (Ces lui qu&#039;on exécute pour démarrer).&lt;br /&gt;
:Il lance automatiquement le python de détection et surveille le nombre d&#039;objets&lt;br /&gt;
:détectés par la caméra via un fichier temporaire .txt partagé entre les deux scripts.&lt;br /&gt;
:Il est créer et supprimer à chaque fois. &lt;br /&gt;
:Lorsque object_count atteint la valeur cible pendant un délai défini, la sortie GPIO&lt;br /&gt;
:s&#039;active pour une durée déterminée, puis revient à 0 automatiquement.&lt;br /&gt;
:Toutes les valeurs (broche GPIO, délais, seuil de détection) sont modifiables en haut du fichier.&lt;br /&gt;
:Ne pas oublier d&#039;installer la librairie GPIO sur le cranberry pi.&lt;br /&gt;
&lt;br /&gt;
:[[File:GPIO.png|800px]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
======Liste de matériel======&lt;br /&gt;
&lt;br /&gt;
*Raspberry pi 5 (8 GB ou plus conseillé)&lt;br /&gt;
&lt;br /&gt;
*Relais 5v&lt;br /&gt;
&lt;br /&gt;
*Câble d&#039;alimentation 5v 45w&lt;br /&gt;
&lt;br /&gt;
*Caméra USB type A&lt;br /&gt;
&lt;br /&gt;
*Câble micro HDMI (optionnel)&lt;br /&gt;
&lt;br /&gt;
*Câbles Dupont pour le relais (GPIO)&lt;br /&gt;
&lt;br /&gt;
*Clavier/Souris&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Fichier:Logic.png&amp;diff=660</id>
		<title>Fichier:Logic.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Fichier:Logic.png&amp;diff=660"/>
		<updated>2026-02-27T14:34:31Z</updated>

		<summary type="html">&lt;p&gt;2182036 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=659</id>
		<title>Reconnaissance objet</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=659"/>
		<updated>2026-02-27T14:32:47Z</updated>

		<summary type="html">&lt;p&gt;2182036 : /* Contrôle des entrées/sorties digitales */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description du projet==&lt;br /&gt;
Le but final du projet est de détecter un objet (dans notre cas un lift) dans une image de caméra grâce à un modèle de reconnaissance d&#039;objet pré-entrainé.&lt;br /&gt;
Lorsque que le programme détectera un chariot élévateur, un gyrophare s&#039;activera pour avertir les travailleurs.&lt;br /&gt;
Le programme se trouvera dans un Raspberry pi 5, un petit ordinateur avec des entrées sorties programmables. La camera sera connectée dans celui-ci directement par USB.&lt;br /&gt;
Puisque les sorties du Raspberry pi fonctionne à 3.3 VCC, nous utilisons un petit relais pour alimenter un gyrophare 120 VCA.&lt;br /&gt;
&lt;br /&gt;
:[[File:image_proj.png|800px]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Fonctionnement global===&lt;br /&gt;
&lt;br /&gt;
Pour fonctionner, le projet a trois grande étapes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. La programmation python.&#039;&#039;&#039;&lt;br /&gt;
:Le script charge un modèle .pt et applique la détection sur chaque image, affiche les boîtes englobantes avec le niveau de confiance et calcule le nombre d&#039;image par seconde moyen.&lt;br /&gt;
:Il permet aussi d’enregistrer la vidéo traitée et de compter le nombre d’objets détectés à chaque image.&lt;br /&gt;
:Ce n&#039;est pas ce programme qui est entrainé a reconnaitre un objet. Il fait seulement le paramétrer (afficher les boites, le degré de confiance et le nombre d&#039;objet détecté.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Le fichier .pt (Pré-entrainée)&#039;&#039;&#039;&lt;br /&gt;
:Un modèle YOLO déjà entraîné (.pt) est une intelligence artificielle qui a déjà appris à reconnaître certains objets grâce à un entraînement préalable sur une grande quantité d’images.Le modèle pré-entrainé c&#039;est comme le cerveau du projet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Fichier de contrôle GPIO&#039;&#039;&#039;&lt;br /&gt;
:Le Raspberry pi 5 possède plusieurs pin programmable qui doivent être contrôler à l&#039;aide d&#039;un fichier. Les pins GPIO peuvent être soit une entrée ou une sortie. Le fichier fais aussi le liens entre les variables python et les pins.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
====Création du modèle pré-entrainée====&lt;br /&gt;
&lt;br /&gt;
Pour entraîner le modèle, il faut un dataset, c’est-à-dire une collection d’images déjà annotées.&lt;br /&gt;
Il existe deux options : le créer soi-même ou en utiliser un déjà disponible en ligne.&lt;br /&gt;
Nous recommandons d’en prendre un déjà fait, car créer son propre dataset demande des milliers de photos et beaucoup de temps pour les annoter une par une.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Choisir le bon dataset&#039;&#039;&#039;&lt;br /&gt;
:Nous conseillons d&#039;utiliser la plateforme RobotFlow sur internet pour trouver un dataset.&lt;br /&gt;
:Sur Roboflow, va dans l’onglet Universe (bibliothèque publique).&lt;br /&gt;
:Rechercher avec des mots-clés précis (ex : “forklift”, “helmet detection”, etc.).&lt;br /&gt;
:Vérifie le nombre d’images, la diversité des photos et la qualité des annotations.&lt;br /&gt;
:Choisis un dataset avec plusieurs centaines ou milliers d’images bien étiquetées.&lt;br /&gt;
:Une fois le bon dataset trouvé, il reste juste à le télécharger en format zip.&lt;br /&gt;
:Une erreur que nous avons rencontrée étais que notre dataset n&#039;avais aucune image&lt;br /&gt;
:nulle, qui sont une images sans l&#039;objet qu&#039;on veut détecter. les images nulle &lt;br /&gt;
:sont important pour l&#039;entrainement.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Préparer le dataset à l’entrainement.&#039;&#039;&#039;&lt;br /&gt;
:Une fois le fichier téléchargé, vous devez l&#039;extraire à l&#039;endroit de votre choix.&lt;br /&gt;
:Ensuite, vérifiez que le fichier contient les 3 éléments  importants: data.yaml, train, valid.&lt;br /&gt;
:Si ces 3 éléments sont présents, tout est correct.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Ajouter le Yolo de base.&#039;&#039;&#039;&lt;br /&gt;
:Yolo possède des modèles de base pré entrainés généralisé et il est nécessaire d&#039;ajouter une&lt;br /&gt;
:de ces version à notre dataset pour l’entrainement. Nous utilisons la version 11n qui est la&lt;br /&gt;
:version officielle la plus récente. Le n signifie nano. Il existe d&#039;autres modèle plus performants,&lt;br /&gt;
:mais nous avons besoin de la version la plus léger pour fonctionner avec le Raspberry pi. &lt;br /&gt;
:pour l&#039;ajouter au dataset, vous devez le télécharger à partir du site de Yolo.&lt;br /&gt;
&lt;br /&gt;
Vous devez ensuite glisser le fichier téléchargé au même endroit que les autres fichiers énumérés à l&#039;étape 2.&lt;br /&gt;
:[[File:version_yolo.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Entrainement&#039;&#039;&#039;&lt;br /&gt;
:Il est possible de faire l’entrainement sur Windows, nous conseillons d&#039;utiliser Linux, mais voici une vidéo expliquant les démarches nécessaire avec Windows.&lt;br /&gt;
&lt;br /&gt;
:https://www.youtube.com/watch?v=r0RspiLG260&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Pour le faire sur Linux, vous devez avoir téléchargé les librairies suivantes:&lt;br /&gt;
*ultralitics&lt;br /&gt;
*pytorch&lt;br /&gt;
*python3&lt;br /&gt;
*opencv&lt;br /&gt;
&lt;br /&gt;
:Nous conseillons l&#039;utilisation de l&#039;outil pip pour rendre l&#039;installation de c&#039;est librairie plus simple. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Maintenant, Dans le terminal entrez la commande:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;yolo detect train model=yolo11n.pt data=data.yaml epochs=X imgsz=X batch=X patience=X&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*model : modèle de base pré-entraîné utilisé pour commencer.&lt;br /&gt;
&lt;br /&gt;
*data : fichier qui indique où sont les images et les classes.&lt;br /&gt;
&lt;br /&gt;
*epochs : nombre de cycles d’apprentissage.&lt;br /&gt;
&lt;br /&gt;
*imgsz : taille des images (640 si vous utiliser notre python).&lt;br /&gt;
&lt;br /&gt;
*batch : nombre d’images traitées en même temps (selon le gpu).&lt;br /&gt;
&lt;br /&gt;
*patience : arrête l’entraînement si le modèle n’améliore plus ses performances&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Il est nécessaire de remplacer les x par les bonnes valeurs selon vos besoins, dépendamment de votre nombre d&#039;images et votre application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Ensuite, vous exécutez la commande et votre ordinateur lance l’entraînement du modèle, cela peut prendre plusieurs heures selon la puissance de votre machine et la taille du dataset.Une erreur possible est que votre processeur ou votre environnement ne dispose pas des bibliothèques logicielles nécessaires pour exécuter l’entraînement. Ce problème est plus fréquent sur des ordinateurs plus anciens ou lorsque certaines dépendances ne sont pas correctement installées.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
====Python de détection====&lt;br /&gt;
&lt;br /&gt;
:Le fichier python gère l&#039;image de la caméra en appliquant le modèle pre-trained sur chaque frame.&lt;br /&gt;
:De plus, il affiche le nombre d&#039;objet détectés, les fps, le pourcentage de certitude et la boite&lt;br /&gt;
:de détection de classe. Dans notre cas la seule classe est le forklift, mais le même python&lt;br /&gt;
:fonctionnerait avec n&#039;importe quelle classe sans modification.&lt;br /&gt;
:Dans ce programme vous pouvez aussi décider à partir de quel pourcentage de certitude (confidence) la boite s&#039;affiche.&lt;br /&gt;
&lt;br /&gt;
Il existe d&#039;autres fichiers pythons sur le web adaptés a tout les besoins.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=====Contrôle des entrées/sorties digitales=====&lt;br /&gt;
&lt;br /&gt;
:Ce fichier python est le point d&#039;entrée du projet (Ces lui qu&#039;on exécute pour démarrer).&lt;br /&gt;
:Il lance automatiquement le python de détection et surveille le nombre d&#039;objets&lt;br /&gt;
:détectés par la caméra via un fichier temporaire .txt partagé entre les deux scripts.&lt;br /&gt;
:Il est créer et supprimer à chaque fois. &lt;br /&gt;
:Lorsque object_count atteint la valeur cible pendant un délai défini, la sortie GPIO&lt;br /&gt;
:s&#039;active pour une durée déterminée, puis revient à 0 automatiquement.&lt;br /&gt;
:Toutes les valeurs (broche GPIO, délais, seuil de détection) sont modifiables en haut du fichier.&lt;br /&gt;
:Ne pas oublier d&#039;installer la librairie GPIO sur le cranberry pi.&lt;br /&gt;
&lt;br /&gt;
:[[File:GPIO.png|800px]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
======Liste de matériel======&lt;br /&gt;
&lt;br /&gt;
*Raspberry pi 5 (8 GB ou plus conseillé)&lt;br /&gt;
&lt;br /&gt;
*Relais 5v&lt;br /&gt;
&lt;br /&gt;
*Câble d&#039;alimentation 5v 45w&lt;br /&gt;
&lt;br /&gt;
*Caméra USB type A&lt;br /&gt;
&lt;br /&gt;
*Câble micro HDMI (optionnel)&lt;br /&gt;
&lt;br /&gt;
*Câbles Dupont pour le relais (GPIO)&lt;br /&gt;
&lt;br /&gt;
*Clavier/Souris&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=656</id>
		<title>Reconnaissance objet</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=656"/>
		<updated>2026-02-27T14:27:13Z</updated>

		<summary type="html">&lt;p&gt;2182036 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description du projet==&lt;br /&gt;
Le but final du projet est de détecter un objet (dans notre cas un lift) dans une image de caméra grâce à un modèle de reconnaissance d&#039;objet pré-entrainé.&lt;br /&gt;
Lorsque que le programme détectera un chariot élévateur, un gyrophare s&#039;activera pour avertir les travailleurs.&lt;br /&gt;
Le programme se trouvera dans un Raspberry pi 5, un petit ordinateur avec des entrées sorties programmables. La camera sera connectée dans celui-ci directement par USB.&lt;br /&gt;
Puisque les sorties du Raspberry pi fonctionne à 3.3 VCC, nous utilisons un petit relais pour alimenter un gyrophare 120 VCA.&lt;br /&gt;
&lt;br /&gt;
:[[File:image_proj.png|800px]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Fonctionnement global===&lt;br /&gt;
&lt;br /&gt;
Pour fonctionner, le projet a trois grande étapes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. La programmation python.&#039;&#039;&#039;&lt;br /&gt;
:Le script charge un modèle .pt et applique la détection sur chaque image, affiche les boîtes englobantes avec le niveau de confiance et calcule le nombre d&#039;image par seconde moyen.&lt;br /&gt;
:Il permet aussi d’enregistrer la vidéo traitée et de compter le nombre d’objets détectés à chaque image.&lt;br /&gt;
:Ce n&#039;est pas ce programme qui est entrainé a reconnaitre un objet. Il fait seulement le paramétrer (afficher les boites, le degré de confiance et le nombre d&#039;objet détecté.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Le fichier .pt (Pré-entrainée)&#039;&#039;&#039;&lt;br /&gt;
:Un modèle YOLO déjà entraîné (.pt) est une intelligence artificielle qui a déjà appris à reconnaître certains objets grâce à un entraînement préalable sur une grande quantité d’images.Le modèle pré-entrainé c&#039;est comme le cerveau du projet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Fichier de contrôle GPIO&#039;&#039;&#039;&lt;br /&gt;
:Le Raspberry pi 5 possède plusieurs pin programmable qui doivent être contrôler à l&#039;aide d&#039;un fichier. Les pins GPIO peuvent être soit une entrée ou une sortie. Le fichier fais aussi le liens entre les variables python et les pins.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
====Création du modèle pré-entrainée====&lt;br /&gt;
&lt;br /&gt;
Pour entraîner le modèle, il faut un dataset, c’est-à-dire une collection d’images déjà annotées.&lt;br /&gt;
Il existe deux options : le créer soi-même ou en utiliser un déjà disponible en ligne.&lt;br /&gt;
Nous recommandons d’en prendre un déjà fait, car créer son propre dataset demande des milliers de photos et beaucoup de temps pour les annoter une par une.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Choisir le bon dataset&#039;&#039;&#039;&lt;br /&gt;
:Nous conseillons d&#039;utiliser la plateforme RobotFlow sur internet pour trouver un dataset.&lt;br /&gt;
:Sur Roboflow, va dans l’onglet Universe (bibliothèque publique).&lt;br /&gt;
:Rechercher avec des mots-clés précis (ex : “forklift”, “helmet detection”, etc.).&lt;br /&gt;
:Vérifie le nombre d’images, la diversité des photos et la qualité des annotations.&lt;br /&gt;
:Choisis un dataset avec plusieurs centaines ou milliers d’images bien étiquetées.&lt;br /&gt;
:Une fois le bon dataset trouvé, il reste juste à le télécharger en format zip.&lt;br /&gt;
:Une erreur que nous avons rencontrée étais que notre dataset n&#039;avais aucune image&lt;br /&gt;
:nulle, qui sont une images sans l&#039;objet qu&#039;on veut détecter. les images nulle &lt;br /&gt;
:sont important pour l&#039;entrainement.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Préparer le dataset à l’entrainement.&#039;&#039;&#039;&lt;br /&gt;
:Une fois le fichier téléchargé, vous devez l&#039;extraire à l&#039;endroit de votre choix.&lt;br /&gt;
:Ensuite, vérifiez que le fichier contient les 3 éléments  importants: data.yaml, train, valid.&lt;br /&gt;
:Si ces 3 éléments sont présents, tout est correct.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Ajouter le Yolo de base.&#039;&#039;&#039;&lt;br /&gt;
:Yolo possède des modèles de base pré entrainés généralisé et il est nécessaire d&#039;ajouter une&lt;br /&gt;
:de ces version à notre dataset pour l’entrainement. Nous utilisons la version 11n qui est la&lt;br /&gt;
:version officielle la plus récente. Le n signifie nano. Il existe d&#039;autres modèle plus performants,&lt;br /&gt;
:mais nous avons besoin de la version la plus léger pour fonctionner avec le Raspberry pi. &lt;br /&gt;
:pour l&#039;ajouter au dataset, vous devez le télécharger à partir du site de Yolo.&lt;br /&gt;
&lt;br /&gt;
Vous devez ensuite glisser le fichier téléchargé au même endroit que les autres fichiers énumérés à l&#039;étape 2.&lt;br /&gt;
:[[File:version_yolo.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Entrainement&#039;&#039;&#039;&lt;br /&gt;
:Il est possible de faire l’entrainement sur Windows, nous conseillons d&#039;utiliser Linux, mais voici une vidéo expliquant les démarches nécessaire avec Windows.&lt;br /&gt;
&lt;br /&gt;
:https://www.youtube.com/watch?v=r0RspiLG260&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Pour le faire sur Linux, vous devez avoir téléchargé les librairies suivantes:&lt;br /&gt;
*ultralitics&lt;br /&gt;
*pytorch&lt;br /&gt;
*python3&lt;br /&gt;
*opencv&lt;br /&gt;
&lt;br /&gt;
:Nous conseillons l&#039;utilisation de l&#039;outil pip pour rendre l&#039;installation de c&#039;est librairie plus simple. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Maintenant, Dans le terminal entrez la commande:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;yolo detect train model=yolo11n.pt data=data.yaml epochs=X imgsz=X batch=X patience=X&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*model : modèle de base pré-entraîné utilisé pour commencer.&lt;br /&gt;
&lt;br /&gt;
*data : fichier qui indique où sont les images et les classes.&lt;br /&gt;
&lt;br /&gt;
*epochs : nombre de cycles d’apprentissage.&lt;br /&gt;
&lt;br /&gt;
*imgsz : taille des images (640 si vous utiliser notre python).&lt;br /&gt;
&lt;br /&gt;
*batch : nombre d’images traitées en même temps (selon le gpu).&lt;br /&gt;
&lt;br /&gt;
*patience : arrête l’entraînement si le modèle n’améliore plus ses performances&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Il est nécessaire de remplacer les x par les bonnes valeurs selon vos besoins, dépendamment de votre nombre d&#039;images et votre application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Ensuite, vous exécutez la commande et votre ordinateur lance l’entraînement du modèle, cela peut prendre plusieurs heures selon la puissance de votre machine et la taille du dataset.Une erreur possible est que votre processeur ou votre environnement ne dispose pas des bibliothèques logicielles nécessaires pour exécuter l’entraînement. Ce problème est plus fréquent sur des ordinateurs plus anciens ou lorsque certaines dépendances ne sont pas correctement installées.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
====Python de détection====&lt;br /&gt;
&lt;br /&gt;
:Le fichier python gère l&#039;image de la caméra en appliquant le modèle pre-trained sur chaque frame.&lt;br /&gt;
:De plus, il affiche le nombre d&#039;objet détectés, les fps, le pourcentage de certitude et la boite&lt;br /&gt;
:de détection de classe. Dans notre cas la seule classe est le forklift, mais le même python&lt;br /&gt;
:fonctionnerait avec n&#039;importe quelle classe sans modification.&lt;br /&gt;
:Dans ce programme vous pouvez aussi décider à partir de quel pourcentage de certitude (confidence) la boite s&#039;affiche.&lt;br /&gt;
&lt;br /&gt;
Il existe d&#039;autres fichiers pythons sur le web adaptés a tout les besoins.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=====Contrôle des entrées/sorties digitales=====&lt;br /&gt;
&lt;br /&gt;
:Ce fichier est le point d&#039;entrée du projet (Ces lui qu&#039;on exécute pour démarrer).&lt;br /&gt;
:Il lance automatiquement le python de détection et surveille le nombre d&#039;objets&lt;br /&gt;
:détectés par la caméra via un fichier temporaire .txt partagé entre les deux scripts.&lt;br /&gt;
:Il est créer et supprimer à chaque fois. &lt;br /&gt;
:Lorsque object_count atteint la valeur cible pendant un délai défini, la sortie GPIO&lt;br /&gt;
:s&#039;active pour une durée déterminée, puis revient à 0 automatiquement.&lt;br /&gt;
:Toutes les valeurs (broche GPIO, délais, seuil de détection) sont modifiables en haut du fichier.&lt;br /&gt;
:Ne pas oublier d&#039;installer la librairie GPIO sur le cranberry pi.&lt;br /&gt;
&lt;br /&gt;
:[[File:GPIO.png|800px]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
======Liste de matériel======&lt;br /&gt;
&lt;br /&gt;
*Raspberry pi 5 (8 GB ou plus conseillé)&lt;br /&gt;
&lt;br /&gt;
*Relais 5v&lt;br /&gt;
&lt;br /&gt;
*Câble d&#039;alimentation 5v 45w&lt;br /&gt;
&lt;br /&gt;
*Caméra USB type A&lt;br /&gt;
&lt;br /&gt;
*Câble micro HDMI (optionnel)&lt;br /&gt;
&lt;br /&gt;
*Câbles Dupont pour le relais (GPIO)&lt;br /&gt;
&lt;br /&gt;
*Clavier/Souris&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Fichier:GPIO.png&amp;diff=654</id>
		<title>Fichier:GPIO.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Fichier:GPIO.png&amp;diff=654"/>
		<updated>2026-02-27T14:26:25Z</updated>

		<summary type="html">&lt;p&gt;2182036 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Fichier:Image_proj.png&amp;diff=653</id>
		<title>Fichier:Image proj.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Fichier:Image_proj.png&amp;diff=653"/>
		<updated>2026-02-27T14:24:35Z</updated>

		<summary type="html">&lt;p&gt;2182036 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=652</id>
		<title>Reconnaissance objet</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=652"/>
		<updated>2026-02-27T14:24:16Z</updated>

		<summary type="html">&lt;p&gt;2182036 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description du projet==&lt;br /&gt;
Le but final du projet est de détecter un objet (dans notre cas un lift) dans une image de caméra grâce à un modèle de reconnaissance d&#039;objet pré-entrainé.&lt;br /&gt;
Lorsque que le programme détectera un chariot élévateur, un gyrophare s&#039;activera pour avertir les travailleurs.&lt;br /&gt;
Le programme se trouvera dans un Raspberry pi 5, un petit ordinateur avec des entrées sorties programmables. La camera sera connectée dans celui-ci directement par USB.&lt;br /&gt;
Puisque les sorties du Raspberry pi fonctionne à 3.3 VCC, nous utilisons un petit relais pour alimenter un gyrophare 120 VCA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Fonctionnement global===&lt;br /&gt;
&lt;br /&gt;
Pour fonctionner, le projet a trois grande étapes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. La programmation python.&#039;&#039;&#039;&lt;br /&gt;
:Le script charge un modèle .pt et applique la détection sur chaque image, affiche les boîtes englobantes avec le niveau de confiance et calcule le nombre d&#039;image par seconde moyen.&lt;br /&gt;
:Il permet aussi d’enregistrer la vidéo traitée et de compter le nombre d’objets détectés à chaque image.&lt;br /&gt;
:Ce n&#039;est pas ce programme qui est entrainé a reconnaitre un objet. Il fait seulement le paramétrer (afficher les boites, le degré de confiance et le nombre d&#039;objet détecté.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Le fichier .pt (Pré-entrainée)&#039;&#039;&#039;&lt;br /&gt;
:Un modèle YOLO déjà entraîné (.pt) est une intelligence artificielle qui a déjà appris à reconnaître certains objets grâce à un entraînement préalable sur une grande quantité d’images.Le modèle pré-entrainé c&#039;est comme le cerveau du projet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Fichier de contrôle GPIO&#039;&#039;&#039;&lt;br /&gt;
:Le Raspberry pi 5 possède plusieurs pin programmable qui doivent être contrôler à l&#039;aide d&#039;un fichier. Les pins GPIO peuvent être soit une entrée ou une sortie. Le fichier fais aussi le liens entre les variables python et les pins.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
====Création du modèle pré-entrainée====&lt;br /&gt;
&lt;br /&gt;
Pour entraîner le modèle, il faut un dataset, c’est-à-dire une collection d’images déjà annotées.&lt;br /&gt;
Il existe deux options : le créer soi-même ou en utiliser un déjà disponible en ligne.&lt;br /&gt;
Nous recommandons d’en prendre un déjà fait, car créer son propre dataset demande des milliers de photos et beaucoup de temps pour les annoter une par une.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Choisir le bon dataset&#039;&#039;&#039;&lt;br /&gt;
:Nous conseillons d&#039;utiliser la plateforme RobotFlow sur internet pour trouver un dataset.&lt;br /&gt;
:Sur Roboflow, va dans l’onglet Universe (bibliothèque publique).&lt;br /&gt;
:Rechercher avec des mots-clés précis (ex : “forklift”, “helmet detection”, etc.).&lt;br /&gt;
:Vérifie le nombre d’images, la diversité des photos et la qualité des annotations.&lt;br /&gt;
:Choisis un dataset avec plusieurs centaines ou milliers d’images bien étiquetées.&lt;br /&gt;
:Une fois le bon dataset trouvé, il reste juste à le télécharger en format zip.&lt;br /&gt;
:Une erreur que nous avons rencontrée étais que notre dataset n&#039;avais aucune image&lt;br /&gt;
:nulle, qui sont une images sans l&#039;objet qu&#039;on veut détecter. les images nulle &lt;br /&gt;
:sont important pour l&#039;entrainement.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Préparer le dataset à l’entrainement.&#039;&#039;&#039;&lt;br /&gt;
:Une fois le fichier téléchargé, vous devez l&#039;extraire à l&#039;endroit de votre choix.&lt;br /&gt;
:Ensuite, vérifiez que le fichier contient les 3 éléments  importants: data.yaml, train, valid.&lt;br /&gt;
:Si ces 3 éléments sont présents, tout est correct.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Ajouter le Yolo de base.&#039;&#039;&#039;&lt;br /&gt;
:Yolo possède des modèles de base pré entrainés généralisé et il est nécessaire d&#039;ajouter une&lt;br /&gt;
:de ces version à notre dataset pour l’entrainement. Nous utilisons la version 11n qui est la&lt;br /&gt;
:version officielle la plus récente. Le n signifie nano. Il existe d&#039;autres modèle plus performants,&lt;br /&gt;
:mais nous avons besoin de la version la plus léger pour fonctionner avec le Raspberry pi. &lt;br /&gt;
:pour l&#039;ajouter au dataset, vous devez le télécharger à partir du site de Yolo.&lt;br /&gt;
&lt;br /&gt;
Vous devez ensuite glisser le fichier téléchargé au même endroit que les autres fichiers énumérés à l&#039;étape 2.&lt;br /&gt;
:[[File:version_yolo.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Entrainement&#039;&#039;&#039;&lt;br /&gt;
:Il est possible de faire l’entrainement sur Windows, nous conseillons d&#039;utiliser Linux, mais voici une vidéo expliquant les démarches nécessaire avec Windows.&lt;br /&gt;
&lt;br /&gt;
:https://www.youtube.com/watch?v=r0RspiLG260&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Pour le faire sur Linux, vous devez avoir téléchargé les librairies suivantes:&lt;br /&gt;
*ultralitics&lt;br /&gt;
*pytorch&lt;br /&gt;
*python3&lt;br /&gt;
*opencv&lt;br /&gt;
&lt;br /&gt;
:Nous conseillons l&#039;utilisation de l&#039;outil pip pour rendre l&#039;installation de c&#039;est librairie plus simple. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Maintenant, Dans le terminal entrez la commande:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;yolo detect train model=yolo11n.pt data=data.yaml epochs=X imgsz=X batch=X patience=X&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*model : modèle de base pré-entraîné utilisé pour commencer.&lt;br /&gt;
&lt;br /&gt;
*data : fichier qui indique où sont les images et les classes.&lt;br /&gt;
&lt;br /&gt;
*epochs : nombre de cycles d’apprentissage.&lt;br /&gt;
&lt;br /&gt;
*imgsz : taille des images (640 si vous utiliser notre python).&lt;br /&gt;
&lt;br /&gt;
*batch : nombre d’images traitées en même temps (selon le gpu).&lt;br /&gt;
&lt;br /&gt;
*patience : arrête l’entraînement si le modèle n’améliore plus ses performances&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Il est nécessaire de remplacer les x par les bonnes valeurs selon vos besoins, dépendamment de votre nombre d&#039;images et votre application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Ensuite, vous exécutez la commande et votre ordinateur lance l’entraînement du modèle, cela peut prendre plusieurs heures selon la puissance de votre machine et la taille du dataset.Une erreur possible est que votre processeur ou votre environnement ne dispose pas des bibliothèques logicielles nécessaires pour exécuter l’entraînement. Ce problème est plus fréquent sur des ordinateurs plus anciens ou lorsque certaines dépendances ne sont pas correctement installées.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
====Python de détection====&lt;br /&gt;
&lt;br /&gt;
:Le fichier python gère l&#039;image de la caméra en appliquant le modèle pre-trained sur chaque frame.&lt;br /&gt;
:De plus, il affiche le nombre d&#039;objet détectés, les fps, le pourcentage de certitude et la boite&lt;br /&gt;
:de détection de classe. Dans notre cas la seule classe est le forklift, mais le même python&lt;br /&gt;
:fonctionnerait avec n&#039;importe quelle classe sans modification.&lt;br /&gt;
:Dans ce programme vous pouvez aussi décider à partir de quel pourcentage de certitude (confidence) la boite s&#039;affiche.&lt;br /&gt;
&lt;br /&gt;
Il existe d&#039;autres fichiers pythons sur le web adaptés a tout les besoins.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=====Contrôle des entrées/sorties digitales=====&lt;br /&gt;
&lt;br /&gt;
:Ce fichier est le point d&#039;entrée du projet (Ces lui qu&#039;on exécute pour démarrer).&lt;br /&gt;
:Il lance automatiquement le python de détection et surveille le nombre d&#039;objets&lt;br /&gt;
:détectés par la caméra via un fichier temporaire .txt partagé entre les deux scripts.&lt;br /&gt;
:Il est créer et supprimer à chaque fois. &lt;br /&gt;
:Lorsque object_count atteint la valeur cible pendant un délai défini, la sortie GPIO&lt;br /&gt;
:s&#039;active pour une durée déterminée, puis revient à 0 automatiquement.&lt;br /&gt;
:Toutes les valeurs (broche GPIO, délais, seuil de détection) sont modifiables en haut du fichier.&lt;br /&gt;
:Ne pas oublier d&#039;installer la librairie GPIO sur le cranberry pi.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
======Liste de matériel======&lt;br /&gt;
&lt;br /&gt;
*Raspberry pi 5 (8 GB ou plus conseillé)&lt;br /&gt;
&lt;br /&gt;
*Relais 5v&lt;br /&gt;
&lt;br /&gt;
*Câble d&#039;alimentation 5v 45w&lt;br /&gt;
&lt;br /&gt;
*Caméra USB type A&lt;br /&gt;
&lt;br /&gt;
*Câble micro HDMI (optionnel)&lt;br /&gt;
&lt;br /&gt;
*Câbles Dupont pour le relais (GPIO)&lt;br /&gt;
&lt;br /&gt;
*Clavier/Souris&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=650</id>
		<title>Reconnaissance objet</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=650"/>
		<updated>2026-02-27T14:09:08Z</updated>

		<summary type="html">&lt;p&gt;2182036 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description du projet==&lt;br /&gt;
Le but final du projet est de détecter un objet (dans notre cas un lift) dans une image de caméra grâce à un modèle de reconnaissance d&#039;objet pré-entrainé.&lt;br /&gt;
Lorsque que le programme détectera un chariot élévateur, un gyrophare s&#039;activera pour avertir les travailleurs.&lt;br /&gt;
Le programme se trouvera dans un Raspberry pi 5, un petit ordinateur avec des entrées sorties programmables. La camera sera connectée dans celui-ci directement par USB.&lt;br /&gt;
Puisque les sorties du Raspberry pi fonctionne à 3.3 VCC, nous utilisons un petit relais pour alimenter un gyrophare 120 VCA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Fonctionnement global===&lt;br /&gt;
&lt;br /&gt;
Pour fonctionner, le projet a trois grande étapes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. La programmation python.&#039;&#039;&#039;&lt;br /&gt;
:Le script charge un modèle .pt et applique la détection sur chaque image, affiche les boîtes englobantes avec le niveau de confiance et calcule le nombre d&#039;image par seconde moyen.&lt;br /&gt;
:Il permet aussi d’enregistrer la vidéo traitée et de compter le nombre d’objets détectés à chaque image.&lt;br /&gt;
:Ce n&#039;est pas ce programme qui est entrainé a reconnaitre un objet. Il fait seulement le paramétrer (afficher les boites, le degré de confiance et le nombre d&#039;objet détecté.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Le fichier .pt (Pré-entrainée)&#039;&#039;&#039;&lt;br /&gt;
:Un modèle YOLO déjà entraîné (.pt) est une intelligence artificielle qui a déjà appris à reconnaître certains objets grâce à un entraînement préalable sur une grande quantité d’images.Le modèle pré-entrainé c&#039;est comme le cerveau du projet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Fichier de contrôle GPIO&#039;&#039;&#039;&lt;br /&gt;
:Le Raspberry pi 5 possède plusieurs pin programmable qui doivent être contrôler à l&#039;aide d&#039;un fichier. Les pins GPIO peuvent être soit une entrée ou une sortie. Le fichier fais aussi le liens entre les variables python et les pins.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
====Création du modèle pré-entrainée====&lt;br /&gt;
&lt;br /&gt;
Pour entraîner le modèle, il faut un dataset, c’est-à-dire une collection d’images déjà annotées.&lt;br /&gt;
Il existe deux options : le créer soi-même ou en utiliser un déjà disponible en ligne.&lt;br /&gt;
Nous recommandons d’en prendre un déjà fait, car créer son propre dataset demande des milliers de photos et beaucoup de temps pour les annoter une par une.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Choisir le bon dataset&#039;&#039;&#039;&lt;br /&gt;
:Nous conseillons d&#039;utiliser la plateforme RobotFlow sur internet pour trouver un dataset.&lt;br /&gt;
:Sur Roboflow, va dans l’onglet Universe (bibliothèque publique).&lt;br /&gt;
:Rechercher avec des mots-clés précis (ex : “forklift”, “helmet detection”, etc.).&lt;br /&gt;
:Vérifie le nombre d’images, la diversité des photos et la qualité des annotations.&lt;br /&gt;
:Choisis un dataset avec plusieurs centaines ou milliers d’images bien étiquetées.&lt;br /&gt;
:Une fois le bon dataset trouvé, il reste juste à le télécharger en format zip.&lt;br /&gt;
:Une erreur que nous avons rencontrée étais que notre dataset n&#039;avais aucune image&lt;br /&gt;
:nulle, qui sont une images sans l&#039;objet qu&#039;on veut détecter. les images nulle &lt;br /&gt;
:sont important pour l&#039;entrainement.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Préparer le dataset à l’entrainement.&#039;&#039;&#039;&lt;br /&gt;
:Une fois le fichier téléchargé, vous devez l&#039;extraire à l&#039;endroit de votre choix.&lt;br /&gt;
:Ensuite, vérifiez que le fichier contient les 3 éléments  importants: data.yaml, train, valid.&lt;br /&gt;
:Si ces 3 éléments sont présents, tout est correct.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Ajouter le Yolo de base.&#039;&#039;&#039;&lt;br /&gt;
:Yolo possède des modèles de base pré entrainés généralisé et il est nécessaire d&#039;ajouter une&lt;br /&gt;
:de ces version à notre dataset pour l’entrainement. Nous utilisons la version 11n qui est la&lt;br /&gt;
:version officielle la plus récente. Le n signifie nano. Il existe d&#039;autres modèle plus performants,&lt;br /&gt;
:mais nous avons besoin de la version la plus léger pour fonctionner avec le Raspberry pi. &lt;br /&gt;
:pour l&#039;ajouter au dataset, vous devez le télécharger à partir du site de Yolo.&lt;br /&gt;
&lt;br /&gt;
Vous devez ensuite glisser le fichier téléchargé au même endroit que les autres fichiers énumérés à l&#039;étape 2.&lt;br /&gt;
:[[File:version_yolo.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Entrainement&#039;&#039;&#039;&lt;br /&gt;
:Il est possible de faire l’entrainement sur Windows, nous conseillons d&#039;utiliser Linux, mais voici une vidéo expliquant les démarches nécessaire avec Windows.&lt;br /&gt;
&lt;br /&gt;
:https://www.youtube.com/watch?v=r0RspiLG260&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Pour le faire sur Linux, vous devez avoir téléchargé les librairies suivantes:&lt;br /&gt;
*ultralitics&lt;br /&gt;
*pytorch&lt;br /&gt;
*python3&lt;br /&gt;
*opencv&lt;br /&gt;
&lt;br /&gt;
:Nous conseillons l&#039;utilisation de l&#039;outil pip pour rendre l&#039;installation de c&#039;est librairie plus simple. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Maintenant, Dans le terminal entrez la commande:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;yolo detect train model=yolo11n.pt data=data.yaml epochs=X imgsz=X batch=X patience=X&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*model : modèle de base pré-entraîné utilisé pour commencer.&lt;br /&gt;
&lt;br /&gt;
*data : fichier qui indique où sont les images et les classes.&lt;br /&gt;
&lt;br /&gt;
*epochs : nombre de cycles d’apprentissage.&lt;br /&gt;
&lt;br /&gt;
*imgsz : taille des images (640 si vous utiliser notre python).&lt;br /&gt;
&lt;br /&gt;
*batch : nombre d’images traitées en même temps (selon le gpu).&lt;br /&gt;
&lt;br /&gt;
*patience : arrête l’entraînement si le modèle n’améliore plus ses performances&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Il est nécessaire de remplacer les x par les bonnes valeurs selon vos besoins, dépendamment de votre nombre d&#039;images et votre application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Ensuite, vous exécutez la commande et votre ordinateur lance l’entraînement du modèle, cela peut prendre plusieurs heures selon la puissance de votre machine et la taille du dataset.Une erreur possible est que votre processeur ou votre environnement ne dispose pas des bibliothèques logicielles nécessaires pour exécuter l’entraînement. Ce problème est plus fréquent sur des ordinateurs plus anciens ou lorsque certaines dépendances ne sont pas correctement installées.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
====Python de détection====&lt;br /&gt;
&lt;br /&gt;
:Le fichier python gère l&#039;image de la caméra en appliquant le modèle pre-trained sur chaque frame.&lt;br /&gt;
:De plus, il affiche le nombre d&#039;objet détectés, les fps, le pourcentage de certitude et la boite&lt;br /&gt;
:de détection de classe. Dans notre cas la seule classe est le forklift, mais le même python&lt;br /&gt;
:fonctionnerait avec n&#039;importe quelle classe sans modification.&lt;br /&gt;
:Dans ce programme vous pouvez aussi décider à partir de quel pourcentage de certitude (confidence) la boite s&#039;affiche.&lt;br /&gt;
&lt;br /&gt;
Il existe d&#039;autres fichiers pythons sur le web adaptés a tout les besoins.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=====Contrôle des entrées/sorties digitales=====&lt;br /&gt;
&lt;br /&gt;
:Ce fichier est le point d&#039;entrée du projet (Ces lui qu&#039;on exécute pour démarrer).&lt;br /&gt;
:Il lance automatiquement le python de détection et surveille le nombre d&#039;objets&lt;br /&gt;
:détectés par la caméra via un fichier temporaire .txt partagé entre les deux scripts.&lt;br /&gt;
:Il est créer et supprimer à chaque fois. &lt;br /&gt;
:Lorsque object_count atteint la valeur cible pendant un délai défini, la sortie GPIO&lt;br /&gt;
:s&#039;active pour une durée déterminée, puis revient à 0 automatiquement.&lt;br /&gt;
:Toutes les valeurs (broche GPIO, délais, seuil de détection) sont modifiables en haut du fichier.&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=556</id>
		<title>Reconnaissance objet</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=556"/>
		<updated>2026-02-25T15:37:37Z</updated>

		<summary type="html">&lt;p&gt;2182036 : /* Création du modèle pré-entrainée */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description du projet==&lt;br /&gt;
Le but final du projet est de détecter un objet (dans notre cas un lift) dans une image de caméra grâce à un modèle de reconnaissance d&#039;objet pré-entrainé.&lt;br /&gt;
Lorsque que le programme détectera un chariot élévateur, un gyrophare s&#039;activera pour avertir les travailleurs.&lt;br /&gt;
Le programme se trouvera dans un Raspberry pi 5, un petit ordinateur avec des entrées sorties programmables. La camera sera connectée dans celui-ci directement par USB.&lt;br /&gt;
Puisque les sorties du Raspberry pi fonctionne à 3.3 VCC, nous utilisons un petit relais pour alimenter un gyrophare 120 VCA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Fonctionnement global===&lt;br /&gt;
&lt;br /&gt;
Pour fonctionner, le projet a trois grande étapes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. La programmation python.&#039;&#039;&#039;&lt;br /&gt;
:Le script charge un modèle .pt et applique la détection sur chaque image, affiche les boîtes englobantes avec le niveau de confiance et calcule le nombre d&#039;image par seconde moyen.&lt;br /&gt;
:Il permet aussi d’enregistrer la vidéo traitée et de compter le nombre d’objets détectés à chaque image.&lt;br /&gt;
:Ce n&#039;est pas ce programme qui est entrainé a reconnaitre un objet. Il fait seulement le paramétrer (afficher les boites, le degré de confiance et le nombre d&#039;objet détecté.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Le fichier .pt (Pré-entrainée)&#039;&#039;&#039;&lt;br /&gt;
:Un modèle YOLO déjà entraîné (.pt) est une intelligence artificielle qui a déjà appris à reconnaître certains objets grâce à un entraînement préalable sur une grande quantité d’images.Le modèle pré-entrainé c&#039;est comme le cerveau du projet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Fichier de contrôle GPIO&#039;&#039;&#039;&lt;br /&gt;
:Le Raspberry pi 5 possède plusieurs pin programmable qui doivent être contrôler à l&#039;aide d&#039;un fichier. Les pins GPIO peuvent être soit une entrée ou une sortie. Le fichier fais aussi le liens entre les variables python et les pins.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
====Création du modèle pré-entrainée====&lt;br /&gt;
&lt;br /&gt;
Pour entraîner le modèle, il faut un dataset, c’est-à-dire une collection d’images déjà annotées.&lt;br /&gt;
Il existe deux options : le créer soi-même ou en utiliser un déjà disponible en ligne.&lt;br /&gt;
Nous recommandons d’en prendre un déjà fait, car créer son propre dataset demande des milliers de photos et beaucoup de temps pour les annoter une par une.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Choisir le bon dataset&#039;&#039;&#039;&lt;br /&gt;
:Nous conseillons d&#039;utiliser la plateforme RobotFlow sur internet pour trouver un dataset.&lt;br /&gt;
:Sur Roboflow, va dans l’onglet Universe (bibliothèque publique).&lt;br /&gt;
:Rechercher avec des mots-clés précis (ex : “forklift”, “helmet detection”, etc.).&lt;br /&gt;
:Vérifie le nombre d’images, la diversité des photos et la qualité des annotations.&lt;br /&gt;
:Choisis un dataset avec plusieurs centaines ou milliers d’images bien étiquetées.&lt;br /&gt;
:Une fois le bon dataset trouvé, il reste juste à le télécharger en format zip.&lt;br /&gt;
:Une erreur que nous avons rencontrée étais que notre dataset n&#039;avais aucune image&lt;br /&gt;
:nulle, qui sont une images sans l&#039;objet qu&#039;on veut détecter. les images nulle &lt;br /&gt;
:sont important pour l&#039;entrainement.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Préparer le dataset à l’entrainement.&#039;&#039;&#039;&lt;br /&gt;
:Une fois le fichier téléchargé, vous devez l&#039;extraire à l&#039;endroit de votre choix.&lt;br /&gt;
:Ensuite, vérifiez que le fichier contient les 3 éléments  importants: data.yaml, train, valid.&lt;br /&gt;
:Si ces 3 éléments sont présents, tout est correct.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Ajouter le Yolo de base.&#039;&#039;&#039;&lt;br /&gt;
:Yolo possède des modèles de base pré entrainés généralisé et il est nécessaire d&#039;ajouter une&lt;br /&gt;
:de ces version à notre dataset pour l’entrainement. Nous utilisons la version 11n qui est la&lt;br /&gt;
:version officielle la plus récente. Le n signifie nano. Il existe d&#039;autres modèle plus performants,&lt;br /&gt;
:mais nous avons besoin de la version la plus léger pour fonctionner avec le Raspberry pi. &lt;br /&gt;
:pour l&#039;ajouter au dataset, vous devez le télécharger à partir du site de Yolo.&lt;br /&gt;
&lt;br /&gt;
Vous devez ensuite glisser le fichier téléchargé au même endroit que les autres fichiers énumérés à l&#039;étape 2.&lt;br /&gt;
:[[File:version_yolo.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Entrainement&#039;&#039;&#039;&lt;br /&gt;
:Il est possible de faire l’entrainement sur Windows, nous conseillons d&#039;utiliser Linux, mais voici une vidéo expliquant les démarches nécessaire avec Windows.&lt;br /&gt;
&lt;br /&gt;
:https://www.youtube.com/watch?v=r0RspiLG260&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Pour le faire sur Linux, vous devez avoir téléchargé les librairies suivantes:&lt;br /&gt;
*ultralitics&lt;br /&gt;
*pytorch&lt;br /&gt;
*python3&lt;br /&gt;
*opencv&lt;br /&gt;
&lt;br /&gt;
:Nous conseillons l&#039;utilisation de l&#039;outil pip pour rendre l&#039;installation de c&#039;est librairie plus simple. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Maintenant, Dans le terminal entrez la commande:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;yolo detect train model=yolo11n.pt data=data.yaml epochs=X imgsz=X batch=X patience=X&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*model : modèle de base pré-entraîné utilisé pour commencer.&lt;br /&gt;
&lt;br /&gt;
*data : fichier qui indique où sont les images et les classes.&lt;br /&gt;
&lt;br /&gt;
*epochs : nombre de cycles d’apprentissage.&lt;br /&gt;
&lt;br /&gt;
*imgsz : taille des images (640 si vous utiliser notre python).&lt;br /&gt;
&lt;br /&gt;
*batch : nombre d’images traitées en même temps (selon le gpu).&lt;br /&gt;
&lt;br /&gt;
*patience : arrête l’entraînement si le modèle n’améliore plus ses performances&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Il est nécessaire de remplacer les x par les bonnes valeurs selon vos besoins, dépendamment de votre nombre d&#039;images et votre application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Ensuite, vous exécutez la commande et votre ordinateur lance l’entraînement du modèle, cela peut prendre plusieurs heures selon la puissance de votre machine et la taille du dataset.Une erreur possible est que votre processeur ou votre environnement ne dispose pas des bibliothèques logicielles nécessaires pour exécuter l’entraînement. Ce problème est plus fréquent sur des ordinateurs plus anciens ou lorsque certaines dépendances ne sont pas correctement installées.&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=555</id>
		<title>Reconnaissance objet</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=555"/>
		<updated>2026-02-25T15:36:46Z</updated>

		<summary type="html">&lt;p&gt;2182036 : /* Création du modèle pré-entrainée */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description du projet==&lt;br /&gt;
Le but final du projet est de détecter un objet (dans notre cas un lift) dans une image de caméra grâce à un modèle de reconnaissance d&#039;objet pré-entrainé.&lt;br /&gt;
Lorsque que le programme détectera un chariot élévateur, un gyrophare s&#039;activera pour avertir les travailleurs.&lt;br /&gt;
Le programme se trouvera dans un Raspberry pi 5, un petit ordinateur avec des entrées sorties programmables. La camera sera connectée dans celui-ci directement par USB.&lt;br /&gt;
Puisque les sorties du Raspberry pi fonctionne à 3.3 VCC, nous utilisons un petit relais pour alimenter un gyrophare 120 VCA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Fonctionnement global===&lt;br /&gt;
&lt;br /&gt;
Pour fonctionner, le projet a trois grande étapes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. La programmation python.&#039;&#039;&#039;&lt;br /&gt;
:Le script charge un modèle .pt et applique la détection sur chaque image, affiche les boîtes englobantes avec le niveau de confiance et calcule le nombre d&#039;image par seconde moyen.&lt;br /&gt;
:Il permet aussi d’enregistrer la vidéo traitée et de compter le nombre d’objets détectés à chaque image.&lt;br /&gt;
:Ce n&#039;est pas ce programme qui est entrainé a reconnaitre un objet. Il fait seulement le paramétrer (afficher les boites, le degré de confiance et le nombre d&#039;objet détecté.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Le fichier .pt (Pré-entrainée)&#039;&#039;&#039;&lt;br /&gt;
:Un modèle YOLO déjà entraîné (.pt) est une intelligence artificielle qui a déjà appris à reconnaître certains objets grâce à un entraînement préalable sur une grande quantité d’images.Le modèle pré-entrainé c&#039;est comme le cerveau du projet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Fichier de contrôle GPIO&#039;&#039;&#039;&lt;br /&gt;
:Le Raspberry pi 5 possède plusieurs pin programmable qui doivent être contrôler à l&#039;aide d&#039;un fichier. Les pins GPIO peuvent être soit une entrée ou une sortie. Le fichier fais aussi le liens entre les variables python et les pins.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
====Création du modèle pré-entrainée====&lt;br /&gt;
&lt;br /&gt;
Pour entraîner le modèle, il faut un dataset, c’est-à-dire une collection d’images déjà annotées.&lt;br /&gt;
Il existe deux options : le créer soi-même ou en utiliser un déjà disponible en ligne.&lt;br /&gt;
Nous recommandons d’en prendre un déjà fait, car créer son propre dataset demande des milliers de photos et beaucoup de temps pour les annoter une par une.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Choisir le bon dataset&#039;&#039;&#039;&lt;br /&gt;
:Nous conseillons d&#039;utiliser la plateforme RobotFlow sur internet pour trouver un dataset.&lt;br /&gt;
:Sur Roboflow, va dans l’onglet Universe (bibliothèque publique).&lt;br /&gt;
:Rechercher avec des mots-clés précis (ex : “forklift”, “helmet detection”, etc.).&lt;br /&gt;
:Vérifie le nombre d’images, la diversité des photos et la qualité des annotations.&lt;br /&gt;
:Choisis un dataset avec plusieurs centaines ou milliers d’images bien étiquetées.&lt;br /&gt;
:Une fois le bon dataset trouvé, il reste juste à le télécharger en format zip.&lt;br /&gt;
:Une erreur que nous avons rencontrée étais que notre dataset n&#039;avais aucune image&lt;br /&gt;
:nulle, qui sont une images sans l&#039;objet qu&#039;on veut détecter. les images nulle &lt;br /&gt;
:sont important pour l&#039;entrainement.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Préparer le dataset à l’entrainement.&#039;&#039;&#039;&lt;br /&gt;
:Une fois le fichier téléchargé, vous devez l&#039;extraire à l&#039;endroit de votre choix.&lt;br /&gt;
:Ensuite, vérifiez que le fichier contient les 3 éléments  importants: data.yaml, train, valid.&lt;br /&gt;
:Si ces 3 éléments sont présents, tout est correct.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Ajouter le Yolo de base.&#039;&#039;&#039;&lt;br /&gt;
:Yolo possède des modèles de base pré entrainés généralisé et il est nécessaire d&#039;ajouter une&lt;br /&gt;
:de ces version à notre dataset pour l’entrainement. Nous utilisons la version 11n qui est la&lt;br /&gt;
:version officielle la plus récente. Le n signifie nano. Il existe d&#039;autres modèle plus performants,&lt;br /&gt;
:mais nous avons besoin de la version la plus léger pour fonctionner avec le Raspberry pi. &lt;br /&gt;
:pour l&#039;ajouter au dataset, vous devez le télécharger à partir du site de Yolo.&lt;br /&gt;
&lt;br /&gt;
Vous devez ensuite glisser le fichier téléchargé au même endroit que les autres fichiers énumérés à l&#039;étape 2.&lt;br /&gt;
:[[File:version_yolo.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Entrainement&#039;&#039;&#039;&lt;br /&gt;
:Il est possible de faire l’entrainement sur Windows, nous conseillons d&#039;utiliser Linux, mais voici une vidéo expliquant les démarches nécessaire avec Windows.&lt;br /&gt;
&lt;br /&gt;
:https://www.youtube.com/watch?v=r0RspiLG260&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Pour le faire sur Linux, vous devez avoir téléchargé les librairies suivantes:&lt;br /&gt;
*ultralitics&lt;br /&gt;
*pytorch&lt;br /&gt;
*python3&lt;br /&gt;
*opencv&lt;br /&gt;
&lt;br /&gt;
:Nous conseillons l&#039;utilisation de l&#039;outil pip pour rendre l&#039;installation de c&#039;est librairie plus simple. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Maintenant, Dans le terminal entrez la commande:&lt;br /&gt;
&lt;br /&gt;
:yolo detect train model=yolo11n.pt data=data.yaml epochs=X imgsz=X batch=X patience=X&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*model : modèle de base pré-entraîné utilisé pour commencer.&lt;br /&gt;
&lt;br /&gt;
*data : fichier qui indique où sont les images et les classes.&lt;br /&gt;
&lt;br /&gt;
*epochs : nombre de cycles d’apprentissage.&lt;br /&gt;
&lt;br /&gt;
*imgsz : taille des images (640 si vous utiliser notre python).&lt;br /&gt;
&lt;br /&gt;
*batch : nombre d’images traitées en même temps (selon le gpu).&lt;br /&gt;
&lt;br /&gt;
*patience : arrête l’entraînement si le modèle n’améliore plus ses performances&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Il est nécessaire de remplacer les x par les bonnes valeurs selon vos besoins, dépendamment de votre nombre d&#039;images et votre application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Ensuite, vous exécutez la commande et votre ordinateur lance l’entraînement du modèle, cela peut prendre plusieurs heures selon la puissance de votre machine et la taille du dataset.Une erreur possible est que votre processeur ou votre environnement ne dispose pas des bibliothèques logicielles nécessaires pour exécuter l’entraînement. Ce problème est plus fréquent sur des ordinateurs plus anciens ou lorsque certaines dépendances ne sont pas correctement installées.&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=554</id>
		<title>Reconnaissance objet</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=554"/>
		<updated>2026-02-25T15:36:28Z</updated>

		<summary type="html">&lt;p&gt;2182036 : /* Création du modèle pré-entrainée */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description du projet==&lt;br /&gt;
Le but final du projet est de détecter un objet (dans notre cas un lift) dans une image de caméra grâce à un modèle de reconnaissance d&#039;objet pré-entrainé.&lt;br /&gt;
Lorsque que le programme détectera un chariot élévateur, un gyrophare s&#039;activera pour avertir les travailleurs.&lt;br /&gt;
Le programme se trouvera dans un Raspberry pi 5, un petit ordinateur avec des entrées sorties programmables. La camera sera connectée dans celui-ci directement par USB.&lt;br /&gt;
Puisque les sorties du Raspberry pi fonctionne à 3.3 VCC, nous utilisons un petit relais pour alimenter un gyrophare 120 VCA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Fonctionnement global===&lt;br /&gt;
&lt;br /&gt;
Pour fonctionner, le projet a trois grande étapes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. La programmation python.&#039;&#039;&#039;&lt;br /&gt;
:Le script charge un modèle .pt et applique la détection sur chaque image, affiche les boîtes englobantes avec le niveau de confiance et calcule le nombre d&#039;image par seconde moyen.&lt;br /&gt;
:Il permet aussi d’enregistrer la vidéo traitée et de compter le nombre d’objets détectés à chaque image.&lt;br /&gt;
:Ce n&#039;est pas ce programme qui est entrainé a reconnaitre un objet. Il fait seulement le paramétrer (afficher les boites, le degré de confiance et le nombre d&#039;objet détecté.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Le fichier .pt (Pré-entrainée)&#039;&#039;&#039;&lt;br /&gt;
:Un modèle YOLO déjà entraîné (.pt) est une intelligence artificielle qui a déjà appris à reconnaître certains objets grâce à un entraînement préalable sur une grande quantité d’images.Le modèle pré-entrainé c&#039;est comme le cerveau du projet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Fichier de contrôle GPIO&#039;&#039;&#039;&lt;br /&gt;
:Le Raspberry pi 5 possède plusieurs pin programmable qui doivent être contrôler à l&#039;aide d&#039;un fichier. Les pins GPIO peuvent être soit une entrée ou une sortie. Le fichier fais aussi le liens entre les variables python et les pins.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
====Création du modèle pré-entrainée====&lt;br /&gt;
&lt;br /&gt;
Pour entraîner le modèle, il faut un dataset, c’est-à-dire une collection d’images déjà annotées.&lt;br /&gt;
Il existe deux options : le créer soi-même ou en utiliser un déjà disponible en ligne.&lt;br /&gt;
Nous recommandons d’en prendre un déjà fait, car créer son propre dataset demande des milliers de photos et beaucoup de temps pour les annoter une par une.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Choisir le bon dataset&#039;&#039;&#039;&lt;br /&gt;
:Nous conseillons d&#039;utiliser la plateforme RobotFlow sur internet pour trouver un dataset.&lt;br /&gt;
:Sur Roboflow, va dans l’onglet Universe (bibliothèque publique).&lt;br /&gt;
:Rechercher avec des mots-clés précis (ex : “forklift”, “helmet detection”, etc.).&lt;br /&gt;
:Vérifie le nombre d’images, la diversité des photos et la qualité des annotations.&lt;br /&gt;
:Choisis un dataset avec plusieurs centaines ou milliers d’images bien étiquetées.&lt;br /&gt;
:Une fois le bon dataset trouvé, il reste juste à le télécharger en format zip.&lt;br /&gt;
:Une erreur que nous avons rencontrée étais que notre dataset n&#039;avais aucune image&lt;br /&gt;
:nulle, qui sont une images sans l&#039;objet qu&#039;on veut détecter. les images nulle &lt;br /&gt;
:sont important pour l&#039;entrainement.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Préparer le dataset à l’entrainement.&#039;&#039;&#039;&lt;br /&gt;
:Une fois le fichier téléchargé, vous devez l&#039;extraire à l&#039;endroit de votre choix.&lt;br /&gt;
:Ensuite, vérifiez que le fichier contient les 3 éléments  importants: data.yaml, train, valid.&lt;br /&gt;
:Si ces 3 éléments sont présents, tout est correct.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Ajouter le Yolo de base.&#039;&#039;&#039;&lt;br /&gt;
:Yolo possède des modèles de base pré entrainés généralisé et il est nécessaire d&#039;ajouter une&lt;br /&gt;
:de ces version à notre dataset pour l’entrainement. Nous utilisons la version 11n qui est la&lt;br /&gt;
:version officielle la plus récente. Le n signifie nano. Il existe d&#039;autres modèle plus performants,&lt;br /&gt;
:mais nous avons besoin de la version la plus léger pour fonctionner avec le Raspberry pi. &lt;br /&gt;
:pour l&#039;ajouter au dataset, vous devez le télécharger à partir du site de Yolo.&lt;br /&gt;
&lt;br /&gt;
Vous devez ensuite glisser le fichier téléchargé au même endroit que les autres fichiers énumérés à l&#039;étape 2.&lt;br /&gt;
:[[File:version_yolo.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Entrainement&#039;&#039;&#039;&lt;br /&gt;
:Il est possible de faire l’entrainement sur Windows, nous conseillons d&#039;utiliser Linux, mais voici une vidéo expliquant les démarches nécessaire avec Windows.&lt;br /&gt;
&lt;br /&gt;
:https://www.youtube.com/watch?v=r0RspiLG260&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Pour le faire sur Linux, vous devez avoir téléchargé les librairies suivantes:&lt;br /&gt;
*ultralitics&lt;br /&gt;
*pytorch&lt;br /&gt;
*python3&lt;br /&gt;
*opencv&lt;br /&gt;
&lt;br /&gt;
:Nous conseillons l&#039;utilisation de l&#039;outil pip pour rendre l&#039;installation de c&#039;est librairie plus simple. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Maintenant, Dans le terminal entrez la commande:&lt;br /&gt;
:yolo detect train model=yolo11n.pt data=data.yaml epochs=X imgsz=X batch=X patience=X&lt;br /&gt;
&lt;br /&gt;
*model : modèle de base pré-entraîné utilisé pour commencer.&lt;br /&gt;
&lt;br /&gt;
*data : fichier qui indique où sont les images et les classes.&lt;br /&gt;
&lt;br /&gt;
*epochs : nombre de cycles d’apprentissage.&lt;br /&gt;
&lt;br /&gt;
*imgsz : taille des images (640 si vous utiliser notre python).&lt;br /&gt;
&lt;br /&gt;
*batch : nombre d’images traitées en même temps (selon le gpu).&lt;br /&gt;
&lt;br /&gt;
*patience : arrête l’entraînement si le modèle n’améliore plus ses performances&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Il est nécessaire de remplacer les x par les bonnes valeurs selon vos besoins, dépendamment de votre nombre d&#039;images et votre application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Ensuite, vous exécutez la commande et votre ordinateur lance l’entraînement du modèle, cela peut prendre plusieurs heures selon la puissance de votre machine et la taille du dataset.Une erreur possible est que votre processeur ou votre environnement ne dispose pas des bibliothèques logicielles nécessaires pour exécuter l’entraînement. Ce problème est plus fréquent sur des ordinateurs plus anciens ou lorsque certaines dépendances ne sont pas correctement installées.&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=553</id>
		<title>Reconnaissance objet</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=553"/>
		<updated>2026-02-25T15:35:57Z</updated>

		<summary type="html">&lt;p&gt;2182036 : /* Création du modèle pré-entrainée */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description du projet==&lt;br /&gt;
Le but final du projet est de détecter un objet (dans notre cas un lift) dans une image de caméra grâce à un modèle de reconnaissance d&#039;objet pré-entrainé.&lt;br /&gt;
Lorsque que le programme détectera un chariot élévateur, un gyrophare s&#039;activera pour avertir les travailleurs.&lt;br /&gt;
Le programme se trouvera dans un Raspberry pi 5, un petit ordinateur avec des entrées sorties programmables. La camera sera connectée dans celui-ci directement par USB.&lt;br /&gt;
Puisque les sorties du Raspberry pi fonctionne à 3.3 VCC, nous utilisons un petit relais pour alimenter un gyrophare 120 VCA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Fonctionnement global===&lt;br /&gt;
&lt;br /&gt;
Pour fonctionner, le projet a trois grande étapes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. La programmation python.&#039;&#039;&#039;&lt;br /&gt;
:Le script charge un modèle .pt et applique la détection sur chaque image, affiche les boîtes englobantes avec le niveau de confiance et calcule le nombre d&#039;image par seconde moyen.&lt;br /&gt;
:Il permet aussi d’enregistrer la vidéo traitée et de compter le nombre d’objets détectés à chaque image.&lt;br /&gt;
:Ce n&#039;est pas ce programme qui est entrainé a reconnaitre un objet. Il fait seulement le paramétrer (afficher les boites, le degré de confiance et le nombre d&#039;objet détecté.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Le fichier .pt (Pré-entrainée)&#039;&#039;&#039;&lt;br /&gt;
:Un modèle YOLO déjà entraîné (.pt) est une intelligence artificielle qui a déjà appris à reconnaître certains objets grâce à un entraînement préalable sur une grande quantité d’images.Le modèle pré-entrainé c&#039;est comme le cerveau du projet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Fichier de contrôle GPIO&#039;&#039;&#039;&lt;br /&gt;
:Le Raspberry pi 5 possède plusieurs pin programmable qui doivent être contrôler à l&#039;aide d&#039;un fichier. Les pins GPIO peuvent être soit une entrée ou une sortie. Le fichier fais aussi le liens entre les variables python et les pins.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
====Création du modèle pré-entrainée====&lt;br /&gt;
&lt;br /&gt;
Pour entraîner le modèle, il faut un dataset, c’est-à-dire une collection d’images déjà annotées.&lt;br /&gt;
Il existe deux options : le créer soi-même ou en utiliser un déjà disponible en ligne.&lt;br /&gt;
Nous recommandons d’en prendre un déjà fait, car créer son propre dataset demande des milliers de photos et beaucoup de temps pour les annoter une par une.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Choisir le bon dataset&#039;&#039;&#039;&lt;br /&gt;
:Nous conseillons d&#039;utiliser la plateforme RobotFlow sur internet pour trouver un dataset.&lt;br /&gt;
:Sur Roboflow, va dans l’onglet Universe (bibliothèque publique).&lt;br /&gt;
:Rechercher avec des mots-clés précis (ex : “forklift”, “helmet detection”, etc.).&lt;br /&gt;
:Vérifie le nombre d’images, la diversité des photos et la qualité des annotations.&lt;br /&gt;
:Choisis un dataset avec plusieurs centaines ou milliers d’images bien étiquetées.&lt;br /&gt;
:Une fois le bon dataset trouvé, il reste juste à le télécharger en format zip.&lt;br /&gt;
:Une erreur que nous avons rencontrée étais que notre dataset n&#039;avais aucune image&lt;br /&gt;
:nulle, qui sont une images sans l&#039;objet qu&#039;on veut détecter. les images nulle &lt;br /&gt;
:sont important pour l&#039;entrainement.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Préparer le dataset à l’entrainement.&#039;&#039;&#039;&lt;br /&gt;
:Une fois le fichier téléchargé, vous devez l&#039;extraire à l&#039;endroit de votre choix.&lt;br /&gt;
:Ensuite, vérifiez que le fichier contient les 3 éléments  importants: data.yaml, train, valid.&lt;br /&gt;
:Si ces 3 éléments sont présents, tout est correct.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Ajouter le Yolo de base.&#039;&#039;&#039;&lt;br /&gt;
:Yolo possède des modèles de base pré entrainés généralisé et il est nécessaire d&#039;ajouter une&lt;br /&gt;
:de ces version à notre dataset pour l’entrainement. Nous utilisons la version 11n qui est la&lt;br /&gt;
:version officielle la plus récente. Le n signifie nano. Il existe d&#039;autres modèle plus performants,&lt;br /&gt;
:mais nous avons besoin de la version la plus léger pour fonctionner avec le Raspberry pi. &lt;br /&gt;
:pour l&#039;ajouter au dataset, vous devez le télécharger à partir du site de Yolo.&lt;br /&gt;
&lt;br /&gt;
Vous devez ensuite glisser le fichier téléchargé au même endroit que les autres fichiers énumérés à l&#039;étape 2.&lt;br /&gt;
:[[File:version_yolo.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Entrainement&#039;&#039;&#039;&lt;br /&gt;
:Il est possible de faire l’entrainement sur Windows, nous conseillons d&#039;utiliser Linux, mais voici une vidéo expliquant les démarches nécessaire avec Windows.&lt;br /&gt;
&lt;br /&gt;
:https://www.youtube.com/watch?v=r0RspiLG260&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Pour le faire sur Linux, vous devez avoir téléchargé les librairies suivantes:&lt;br /&gt;
*ultralitics&lt;br /&gt;
*pytorch&lt;br /&gt;
*python3&lt;br /&gt;
*opencv&lt;br /&gt;
&lt;br /&gt;
:Nous conseillons l&#039;utilisation de l&#039;outil pip pour rendre l&#039;installation de c&#039;est librairie plus simple. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Maintenant, Dans le terminal entrez la commande: yolo detect train model=yolo11n.pt data=data.yaml epochs=X imgsz=X batch=X patience=x&lt;br /&gt;
&lt;br /&gt;
*model : modèle de base pré-entraîné utilisé pour commencer.&lt;br /&gt;
&lt;br /&gt;
*data : fichier qui indique où sont les images et les classes.&lt;br /&gt;
&lt;br /&gt;
*epochs : nombre de cycles d’apprentissage.&lt;br /&gt;
&lt;br /&gt;
*imgsz : taille des images (640 si vous utiliser notre python).&lt;br /&gt;
&lt;br /&gt;
*batch : nombre d’images traitées en même temps (selon le gpu).&lt;br /&gt;
&lt;br /&gt;
*patience : arrête l’entraînement si le modèle n’améliore plus ses performances&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Il est nécessaire de remplacer les x par les bonnes valeurs selon vos besoins, dépendamment de votre nombre d&#039;images et votre application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Ensuite, vous exécutez la commande et votre ordinateur lance l’entraînement du modèle, cela peut prendre plusieurs heures selon la puissance de votre machine et la taille du dataset.Une erreur possible est que votre processeur ou votre environnement ne dispose pas des bibliothèques logicielles nécessaires pour exécuter l’entraînement. Ce problème est plus fréquent sur des ordinateurs plus anciens ou lorsque certaines dépendances ne sont pas correctement installées.&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=552</id>
		<title>Reconnaissance objet</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=552"/>
		<updated>2026-02-25T15:33:46Z</updated>

		<summary type="html">&lt;p&gt;2182036 : /* Création du modèle pré-entrainée */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description du projet==&lt;br /&gt;
Le but final du projet est de détecter un objet (dans notre cas un lift) dans une image de caméra grâce à un modèle de reconnaissance d&#039;objet pré-entrainé.&lt;br /&gt;
Lorsque que le programme détectera un chariot élévateur, un gyrophare s&#039;activera pour avertir les travailleurs.&lt;br /&gt;
Le programme se trouvera dans un Raspberry pi 5, un petit ordinateur avec des entrées sorties programmables. La camera sera connectée dans celui-ci directement par USB.&lt;br /&gt;
Puisque les sorties du Raspberry pi fonctionne à 3.3 VCC, nous utilisons un petit relais pour alimenter un gyrophare 120 VCA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Fonctionnement global===&lt;br /&gt;
&lt;br /&gt;
Pour fonctionner, le projet a trois grande étapes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. La programmation python.&#039;&#039;&#039;&lt;br /&gt;
:Le script charge un modèle .pt et applique la détection sur chaque image, affiche les boîtes englobantes avec le niveau de confiance et calcule le nombre d&#039;image par seconde moyen.&lt;br /&gt;
:Il permet aussi d’enregistrer la vidéo traitée et de compter le nombre d’objets détectés à chaque image.&lt;br /&gt;
:Ce n&#039;est pas ce programme qui est entrainé a reconnaitre un objet. Il fait seulement le paramétrer (afficher les boites, le degré de confiance et le nombre d&#039;objet détecté.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Le fichier .pt (Pré-entrainée)&#039;&#039;&#039;&lt;br /&gt;
:Un modèle YOLO déjà entraîné (.pt) est une intelligence artificielle qui a déjà appris à reconnaître certains objets grâce à un entraînement préalable sur une grande quantité d’images.Le modèle pré-entrainé c&#039;est comme le cerveau du projet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Fichier de contrôle GPIO&#039;&#039;&#039;&lt;br /&gt;
:Le Raspberry pi 5 possède plusieurs pin programmable qui doivent être contrôler à l&#039;aide d&#039;un fichier. Les pins GPIO peuvent être soit une entrée ou une sortie. Le fichier fais aussi le liens entre les variables python et les pins.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
====Création du modèle pré-entrainée====&lt;br /&gt;
&lt;br /&gt;
Pour entraîner le modèle, il faut un dataset, c’est-à-dire une collection d’images déjà annotées.&lt;br /&gt;
Il existe deux options : le créer soi-même ou en utiliser un déjà disponible en ligne.&lt;br /&gt;
Nous recommandons d’en prendre un déjà fait, car créer son propre dataset demande des milliers de photos et beaucoup de temps pour les annoter une par une.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Choisir le bon dataset&#039;&#039;&#039;&lt;br /&gt;
:Nous conseillons d&#039;utiliser la plateforme RobotFlow sur internet pour trouver un dataset.&lt;br /&gt;
:Sur Roboflow, va dans l’onglet Universe (bibliothèque publique).&lt;br /&gt;
:Rechercher avec des mots-clés précis (ex : “forklift”, “helmet detection”, etc.).&lt;br /&gt;
:Vérifie le nombre d’images, la diversité des photos et la qualité des annotations.&lt;br /&gt;
:Choisis un dataset avec plusieurs centaines ou milliers d’images bien étiquetées.&lt;br /&gt;
:Une fois le bon dataset trouvé, il reste juste à le télécharger en format zip.&lt;br /&gt;
:Une erreur que nous avons rencontrée étais que notre dataset n&#039;avais aucune image&lt;br /&gt;
:nulle, qui sont une images sans l&#039;objet qu&#039;on veut détecter. les images nulle &lt;br /&gt;
:sont important pour l&#039;entrainement.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Préparer le dataset à l’entrainement.&#039;&#039;&#039;&lt;br /&gt;
:Une fois le fichier téléchargé, vous devez l&#039;extraire à l&#039;endroit de votre choix.&lt;br /&gt;
:Ensuite, vérifiez que le fichier contient les 3 éléments  importants: data.yaml, train, valid.&lt;br /&gt;
:Si ces 3 éléments sont présents, tout est correct.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Ajouter le Yolo de base.&#039;&#039;&#039;&lt;br /&gt;
:Yolo possède des modèles de base pré entrainés généralisé et il est nécessaire d&#039;ajouter une&lt;br /&gt;
:de ces version à notre dataset pour l’entrainement. Nous utilisons la version 11n qui est la&lt;br /&gt;
:version officielle la plus récente. Le n signifie nano. Il existe d&#039;autres modèle plus performants,&lt;br /&gt;
:mais nous avons besoin de la version la plus léger pour fonctionner avec le Raspberry pi. &lt;br /&gt;
:pour l&#039;ajouter au dataset, vous devez le télécharger à partir du site de Yolo.&lt;br /&gt;
&lt;br /&gt;
Vous devez ensuite glisser le fichier téléchargé au même endroit que les autres fichiers énumérés à l&#039;étape 2.&lt;br /&gt;
:[[File:version_yolo.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Entrainement&#039;&#039;&#039;&lt;br /&gt;
:Il est possible de faire l’entrainement sur Windows, nous conseillons d&#039;utiliser Linux, mais voici une vidéo expliquant les démarches nécessaire avec Windows.&lt;br /&gt;
&lt;br /&gt;
:https://www.youtube.com/watch?v=r0RspiLG260&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Pour le faire sur Linux, vous devez avoir téléchargé les librairies suivantes:&lt;br /&gt;
*ultralitics&lt;br /&gt;
*pytorch&lt;br /&gt;
*python3&lt;br /&gt;
*opencv&lt;br /&gt;
&lt;br /&gt;
:Nous conseillons l&#039;utilisation de l&#039;outil pip pour rendre l&#039;installation de c&#039;est librairie plus simple. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Maintenant, ouvres le terminal et entrez la commande: yolo detect train model=yolo11n.pt data=data.yaml epochs=X imgsz=X batch=X patience=x&lt;br /&gt;
&lt;br /&gt;
*model : modèle de base pré-entraîné utilisé pour commencer.&lt;br /&gt;
&lt;br /&gt;
*data : fichier qui indique où sont les images et les classes.&lt;br /&gt;
&lt;br /&gt;
*epochs : nombre de cycles d’apprentissage.&lt;br /&gt;
&lt;br /&gt;
*imgsz : taille des images (640 si vous utiliser notre python).&lt;br /&gt;
&lt;br /&gt;
*batch : nombre d’images traitées en même temps (selon le gpu).&lt;br /&gt;
&lt;br /&gt;
*patience : arrête l’entraînement si le modèle n’améliore plus ses performances&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Il est nécessaire de remplacer les x par les bonnes valeurs selon vos besoins, dépendamment de votre nombre d&#039;images et votre application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Ensuite, vous exécutez la commande et votre ordinateur lance l’entraînement du modèle, cela peut prendre plusieurs heures selon la puissance de votre machine et la taille du dataset.Une erreur possible est que votre processeur ou votre environnement ne dispose pas des bibliothèques logicielles nécessaires pour exécuter l’entraînement. Ce problème est plus fréquent sur des ordinateurs plus anciens ou lorsque certaines dépendances ne sont pas correctement installées.&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=551</id>
		<title>Reconnaissance objet</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=551"/>
		<updated>2026-02-25T15:32:37Z</updated>

		<summary type="html">&lt;p&gt;2182036 : /* Description du projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description du projet==&lt;br /&gt;
Le but final du projet est de détecter un objet (dans notre cas un lift) dans une image de caméra grâce à un modèle de reconnaissance d&#039;objet pré-entrainé.&lt;br /&gt;
Lorsque que le programme détectera un chariot élévateur, un gyrophare s&#039;activera pour avertir les travailleurs.&lt;br /&gt;
Le programme se trouvera dans un Raspberry pi 5, un petit ordinateur avec des entrées sorties programmables. La camera sera connectée dans celui-ci directement par USB.&lt;br /&gt;
Puisque les sorties du Raspberry pi fonctionne à 3.3 VCC, nous utilisons un petit relais pour alimenter un gyrophare 120 VCA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Fonctionnement global===&lt;br /&gt;
&lt;br /&gt;
Pour fonctionner, le projet a trois grande étapes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. La programmation python.&#039;&#039;&#039;&lt;br /&gt;
:Le script charge un modèle .pt et applique la détection sur chaque image, affiche les boîtes englobantes avec le niveau de confiance et calcule le nombre d&#039;image par seconde moyen.&lt;br /&gt;
:Il permet aussi d’enregistrer la vidéo traitée et de compter le nombre d’objets détectés à chaque image.&lt;br /&gt;
:Ce n&#039;est pas ce programme qui est entrainé a reconnaitre un objet. Il fait seulement le paramétrer (afficher les boites, le degré de confiance et le nombre d&#039;objet détecté.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Le fichier .pt (Pré-entrainée)&#039;&#039;&#039;&lt;br /&gt;
:Un modèle YOLO déjà entraîné (.pt) est une intelligence artificielle qui a déjà appris à reconnaître certains objets grâce à un entraînement préalable sur une grande quantité d’images.Le modèle pré-entrainé c&#039;est comme le cerveau du projet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Fichier de contrôle GPIO&#039;&#039;&#039;&lt;br /&gt;
:Le Raspberry pi 5 possède plusieurs pin programmable qui doivent être contrôler à l&#039;aide d&#039;un fichier. Les pins GPIO peuvent être soit une entrée ou une sortie. Le fichier fais aussi le liens entre les variables python et les pins.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
====Création du modèle pré-entrainée====&lt;br /&gt;
&lt;br /&gt;
Pour entraîner le modèle, il faut un dataset, c’est-à-dire une collection d’images déjà annotées.&lt;br /&gt;
Il existe deux options : le créer soi-même ou en utiliser un déjà disponible en ligne.&lt;br /&gt;
Nous recommandons d’en prendre un déjà fait, car créer son propre dataset demande des milliers de photos et beaucoup de temps pour les annoter une par une.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Choisir le bon dataset&#039;&#039;&#039;&lt;br /&gt;
:Nous conseillons d&#039;utiliser la plateforme RobotFlow sur internet pour trouver un dataset.&lt;br /&gt;
:Sur Roboflow, va dans l’onglet Universe (bibliothèque publique).&lt;br /&gt;
:Rechercher avec des mots-clés précis (ex : “forklift”, “helmet detection”, etc.).&lt;br /&gt;
:Vérifie le nombre d’images, la diversité des photos et la qualité des annotations.&lt;br /&gt;
:Choisis un dataset avec plusieurs centaines ou milliers d’images bien étiquetées.&lt;br /&gt;
:Une fois le bon dataset trouvé, il reste juste à le télécharger en format zip.&lt;br /&gt;
:Une erreur que nous avons rencontrée étais que notre dataset n&#039;avais aucune image&lt;br /&gt;
:nulle, qui sont une images sans l&#039;objet qu&#039;on veut détecter. les images nulle &lt;br /&gt;
:sont important pour l&#039;entrainement.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Préparer le dataset à l’entrainement.&#039;&#039;&#039;&lt;br /&gt;
:Une fois le fichier téléchargé, vous devez l&#039;extraire à l&#039;endroit de votre choix.&lt;br /&gt;
:Ensuite, vérifiez que le fichier contient les 3 éléments  importants: data.yaml, train, valid.&lt;br /&gt;
:Si ces 3 éléments sont présents, tout est correct.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Ajouter le Yolo de base.&#039;&#039;&#039;&lt;br /&gt;
:Yolo possède des modèles de base pré entrainés généralisé et il est nécessaire d&#039;ajouter une&lt;br /&gt;
:de ces version à notre dataset pour l’entrainement. Nous utilisons la version 11n qui est la&lt;br /&gt;
:version officielle la plus récente. Le n signifie nano. Il existe d&#039;autres modèle plus performants,&lt;br /&gt;
:mais nous avons besoin de la version la plus léger pour fonctionner avec le Raspberry pi. &lt;br /&gt;
:pour l&#039;ajouter au dataset, vous devez le télécharger à partir du site de Yolo.&lt;br /&gt;
&lt;br /&gt;
Vous devez ensuite glisser le fichier téléchargé au même endroit que les autres fichiers énumérés à l&#039;étape 2.&lt;br /&gt;
:[[File:version_yolo.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Entrainement&#039;&#039;&#039;&lt;br /&gt;
:Il est possible de faire l’entrainement sur Windows, nous conseillons d&#039;utiliser Linux, mais voici une vidéo expliquant les démarches nécessaire avec Windows.&lt;br /&gt;
&lt;br /&gt;
:https://www.youtube.com/watch?v=r0RspiLG260&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Pour le faire sur Linux, vous devez avoir téléchargé les librairies suivantes:&lt;br /&gt;
*ultralitics&lt;br /&gt;
*pytorch&lt;br /&gt;
*python3&lt;br /&gt;
*opencv&lt;br /&gt;
&lt;br /&gt;
:Nous conseillons l&#039;utilisation de l&#039;outil pip pour rendre l&#039;installation de c&#039;est librairie plus simple. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Maintenant, ouvres le terminal et entrez la commande: yolo detect train model=yolo11n.pt data=data.yaml epochs=X imgsz=X batch=X patience=x&lt;br /&gt;
&lt;br /&gt;
*model : modèle de base pré-entraîné utilisé pour commencer.&lt;br /&gt;
&lt;br /&gt;
*data : fichier qui indique où sont les images et les classes.&lt;br /&gt;
&lt;br /&gt;
*epochs : nombre de cycles d’apprentissage.&lt;br /&gt;
&lt;br /&gt;
*imgsz : taille des images (640 si vous utiliser notre python).&lt;br /&gt;
&lt;br /&gt;
*batch : nombre d’images traitées en même temps (selon le gpu).&lt;br /&gt;
&lt;br /&gt;
*patience : arrête l’entraînement si le modèle n’améliore plus ses performances&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Il est nécessaire de remplacer les x par les bonnes valeurs selon vos besoins, dépendamment de votre nombre d&#039;images et votre application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Ensuite, vous exécutez la commande et votre ordinateur lance l’entraînement du modèle, ce qui peut prendre plusieurs heures selon la puissance de votre machine et la taille du dataset.Une erreur possible est que votre processeur ou votre environnement ne dispose pas des bibliothèques logicielles nécessaires pour exécuter l’entraînement. Ce problème est plus fréquent sur des ordinateurs plus anciens ou lorsque certaines dépendances ne sont pas correctement installées.&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=550</id>
		<title>Reconnaissance objet</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=550"/>
		<updated>2026-02-25T15:30:43Z</updated>

		<summary type="html">&lt;p&gt;2182036 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description du projet==&lt;br /&gt;
Le but final du projet est de détecter un objet (dans notre cas un lift) dans une image de caméra grâce à un modèle de reconnaissance d&#039;objet pré-entrainé.&lt;br /&gt;
Lorsque que le programme détectera un chariot élévateur, un gyrophare s&#039;activera pour avertir les travailleurs.&lt;br /&gt;
Le programme se trouvera dans un Raspberry pi 5, un petit ordinateur avec des entrées sorties programmables. La camera sera connectée dans celui-ci directement par USB.&lt;br /&gt;
Puisque les sorties du Raspberry pi fonctionne à 3.3 VCC, nous utilisons un petit relais pour alimenter un gyrophare 120 VCA.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Fonctionnement global===&lt;br /&gt;
&lt;br /&gt;
Pour fonctionner, le projet a trois grande étapes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. La programmation python.&#039;&#039;&#039;&lt;br /&gt;
:Le script charge un modèle .pt et applique la détection sur chaque image, affiche les boîtes englobantes avec le niveau de confiance et calcule le nombre d&#039;image par seconde moyen.&lt;br /&gt;
:Il permet aussi d’enregistrer la vidéo traitée et de compter le nombre d’objets détectés à chaque image.&lt;br /&gt;
:Ce n&#039;est pas ce programme qui est entrainé a reconnaitre un objet. Il fait seulement le paramétrer (afficher les boites, le degré de confiance et le nombre d&#039;objet détecté.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Le fichier .pt (Pré-entrainée)&#039;&#039;&#039;&lt;br /&gt;
:Un modèle YOLO déjà entraîné (.pt) est une intelligence artificielle qui a déjà appris à reconnaître certains objets grâce à un entraînement préalable sur une grande quantité d’images.Le modèle pré-entrainé c&#039;est comme le cerveau du projet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Fichier de contrôle GPIO&#039;&#039;&#039;&lt;br /&gt;
:Le Raspberry pi 5 possède plusieurs pin programmable qui doivent être contrôler à l&#039;aide d&#039;un fichier. Les pins GPIO peuvent être soit une entrée ou une sortie. Le fichier fais aussi le liens entre les variables python et les pins.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
====Création du modèle pré-entrainée====&lt;br /&gt;
&lt;br /&gt;
Pour entraîner le modèle, il faut un dataset, c’est-à-dire une collection d’images déjà annotées.&lt;br /&gt;
Il existe deux options : le créer soi-même ou en utiliser un déjà disponible en ligne.&lt;br /&gt;
Nous recommandons d’en prendre un déjà fait, car créer son propre dataset demande des milliers de photos et beaucoup de temps pour les annoter une par une.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Choisir le bon dataset&#039;&#039;&#039;&lt;br /&gt;
:Nous conseillons d&#039;utiliser la plateforme RobotFlow sur internet pour trouver un dataset.&lt;br /&gt;
:Sur Roboflow, va dans l’onglet Universe (bibliothèque publique).&lt;br /&gt;
:Rechercher avec des mots-clés précis (ex : “forklift”, “helmet detection”, etc.).&lt;br /&gt;
:Vérifie le nombre d’images, la diversité des photos et la qualité des annotations.&lt;br /&gt;
:Choisis un dataset avec plusieurs centaines ou milliers d’images bien étiquetées.&lt;br /&gt;
:Une fois le bon dataset trouvé, il reste juste à le télécharger en format zip.&lt;br /&gt;
:Une erreur que nous avons rencontrée étais que notre dataset n&#039;avais aucune image&lt;br /&gt;
:nulle, qui sont une images sans l&#039;objet qu&#039;on veut détecter. les images nulle &lt;br /&gt;
:sont important pour l&#039;entrainement.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Préparer le dataset à l’entrainement.&#039;&#039;&#039;&lt;br /&gt;
:Une fois le fichier téléchargé, vous devez l&#039;extraire à l&#039;endroit de votre choix.&lt;br /&gt;
:Ensuite, vérifiez que le fichier contient les 3 éléments  importants: data.yaml, train, valid.&lt;br /&gt;
:Si ces 3 éléments sont présents, tout est correct.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Ajouter le Yolo de base.&#039;&#039;&#039;&lt;br /&gt;
:Yolo possède des modèles de base pré entrainés généralisé et il est nécessaire d&#039;ajouter une&lt;br /&gt;
:de ces version à notre dataset pour l’entrainement. Nous utilisons la version 11n qui est la&lt;br /&gt;
:version officielle la plus récente. Le n signifie nano. Il existe d&#039;autres modèle plus performants,&lt;br /&gt;
:mais nous avons besoin de la version la plus léger pour fonctionner avec le Raspberry pi. &lt;br /&gt;
:pour l&#039;ajouter au dataset, vous devez le télécharger à partir du site de Yolo.&lt;br /&gt;
&lt;br /&gt;
Vous devez ensuite glisser le fichier téléchargé au même endroit que les autres fichiers énumérés à l&#039;étape 2.&lt;br /&gt;
:[[File:version_yolo.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Entrainement&#039;&#039;&#039;&lt;br /&gt;
:Il est possible de faire l’entrainement sur Windows, nous conseillons d&#039;utiliser Linux, mais voici une vidéo expliquant les démarches nécessaire avec Windows.&lt;br /&gt;
&lt;br /&gt;
:https://www.youtube.com/watch?v=r0RspiLG260&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Pour le faire sur Linux, vous devez avoir téléchargé les librairies suivantes:&lt;br /&gt;
*ultralitics&lt;br /&gt;
*pytorch&lt;br /&gt;
*python3&lt;br /&gt;
*opencv&lt;br /&gt;
&lt;br /&gt;
:Nous conseillons l&#039;utilisation de l&#039;outil pip pour rendre l&#039;installation de c&#039;est librairie plus simple. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Maintenant, ouvres le terminal et entrez la commande: yolo detect train model=yolo11n.pt data=data.yaml epochs=X imgsz=X batch=X patience=x&lt;br /&gt;
&lt;br /&gt;
*model : modèle de base pré-entraîné utilisé pour commencer.&lt;br /&gt;
&lt;br /&gt;
*data : fichier qui indique où sont les images et les classes.&lt;br /&gt;
&lt;br /&gt;
*epochs : nombre de cycles d’apprentissage.&lt;br /&gt;
&lt;br /&gt;
*imgsz : taille des images (640 si vous utiliser notre python).&lt;br /&gt;
&lt;br /&gt;
*batch : nombre d’images traitées en même temps (selon le gpu).&lt;br /&gt;
&lt;br /&gt;
*patience : arrête l’entraînement si le modèle n’améliore plus ses performances&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Il est nécessaire de remplacer les x par les bonnes valeurs selon vos besoins, dépendamment de votre nombre d&#039;images et votre application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Ensuite, vous exécutez la commande et votre ordinateur lance l’entraînement du modèle, ce qui peut prendre plusieurs heures selon la puissance de votre machine et la taille du dataset.Une erreur possible est que votre processeur ou votre environnement ne dispose pas des bibliothèques logicielles nécessaires pour exécuter l’entraînement. Ce problème est plus fréquent sur des ordinateurs plus anciens ou lorsque certaines dépendances ne sont pas correctement installées.&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=549</id>
		<title>Reconnaissance objet</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=549"/>
		<updated>2026-02-25T15:27:01Z</updated>

		<summary type="html">&lt;p&gt;2182036 : /* Création du modèle pré-entrainée */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description du projet==&lt;br /&gt;
Le but final du projet est de détecter un objet (dans notre cas un lift) dans une image de caméra grâce à un modèle de reconnaissance d&#039;objet pré-entrainé.&lt;br /&gt;
Lorsque que le programme détectera un chariot élévateur, un gyrophare s&#039;activera pour avertir les travailleurs.&lt;br /&gt;
Le programme se trouvera dans un Raspberry pi 5, un petit ordinateur avec des entrées sorties programmables. La camera sera connectée dans celui-ci directement par USB.&lt;br /&gt;
Puisque les sorties du Raspberry pi fonctionne à 3.3 VCC, nous utilisons un petit relais pour alimenter un gyrophare 120 VCA.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Fonctionnement global===&lt;br /&gt;
&lt;br /&gt;
Pour fonctionner, le projet a trois grande étapes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. La programmation python.&#039;&#039;&#039;&lt;br /&gt;
:Le script charge un modèle .pt et applique la détection sur chaque image, affiche les boîtes englobantes avec le niveau de confiance et calcule le nombre d&#039;image par seconde moyen.&lt;br /&gt;
:Il permet aussi d’enregistrer la vidéo traitée et de compter le nombre d’objets détectés à chaque image.&lt;br /&gt;
:Ce n&#039;est pas ce programme qui est entrainé a reconnaitre un objet. Il fait seulement le paramétrer (afficher les boites, le degré de confiance et le nombre d&#039;objet détecté.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Le fichier .pt (Pré-entrainée)&#039;&#039;&#039;&lt;br /&gt;
:Un modèle YOLO déjà entraîné (.pt) est une intelligence artificielle qui a déjà appris à reconnaître certains objets grâce à un entraînement préalable sur une grande quantité d’images.Le modèle pré-entrainé c&#039;est comme le cerveau du projet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Fichier de contrôle GPIO&#039;&#039;&#039;&lt;br /&gt;
:Le Raspberry pi 5 possède plusieurs pin programmable qui doivent être contrôler à l&#039;aide d&#039;un fichier. Les pins GPIO peuvent être soit une entrée ou une sortie. Le fichier fais aussi le liens entre les variables python et les pins.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
====Création du modèle pré-entrainée====&lt;br /&gt;
&lt;br /&gt;
Pour entraîner le modèle, il faut un dataset, c’est-à-dire une collection d’images déjà annotées.&lt;br /&gt;
Il existe deux options : le créer soi-même ou en utiliser un déjà disponible en ligne.&lt;br /&gt;
Nous recommandons d’en prendre un déjà fait, car créer son propre dataset demande des milliers de photos et beaucoup de temps pour les annoter une par une.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Choisir le bon dataset&#039;&#039;&#039;&lt;br /&gt;
:Nous conseillons d&#039;utiliser la plateforme RobotFlow sur internet pour trouver un dataset.&lt;br /&gt;
:Sur Roboflow, va dans l’onglet Universe (bibliothèque publique).&lt;br /&gt;
:Rechercher avec des mots-clés précis (ex : “forklift”, “helmet detection”, etc.).&lt;br /&gt;
:Vérifie le nombre d’images, la diversité des photos et la qualité des annotations.&lt;br /&gt;
:Choisis un dataset avec plusieurs centaines ou milliers d’images bien étiquetées.&lt;br /&gt;
:Une fois le bon dataset trouvé, il reste juste à le télécharger en format zip.&lt;br /&gt;
:Une erreur que nous avons rencontrée étais que notre dataset n&#039;avais aucune image&lt;br /&gt;
:nulle, qui sont une images sans l&#039;objet qu&#039;on veut détecter. les images nulle &lt;br /&gt;
:sont important pour l&#039;entrainement.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Préparer le dataset à l’entrainement.&#039;&#039;&#039;&lt;br /&gt;
:Une fois le fichier téléchargé, vous devez l&#039;extraire à l&#039;endroit de votre choix.&lt;br /&gt;
:Ensuite, vérifiez que le fichier contient les 3 éléments  importants: data.yaml, train, valid.&lt;br /&gt;
:Si ces 3 éléments sont présents, tout est correct.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Ajouter le Yolo de base.&#039;&#039;&#039;&lt;br /&gt;
:Yolo possède des modèles de base pré entrainés généralisé et il est nécessaire d&#039;ajouter une&lt;br /&gt;
:de ces version à notre dataset pour l’entrainement. Nous utilisons la version 11n qui est la&lt;br /&gt;
:version officielle la plus récente. Le n signifie nano. Il existe d&#039;autres modèle plus performants,&lt;br /&gt;
:mais nous avons besoin de la version la plus léger pour fonctionner avec le Raspberry pi. &lt;br /&gt;
:pour l&#039;ajouter au dataset, vous devez le télécharger à partir du site de Yolo.&lt;br /&gt;
&lt;br /&gt;
Vous devez ensuite glisser le fichier téléchargé au même endroit que les autres fichiers énumérés à l&#039;étape 2.&lt;br /&gt;
:[[File:version_yolo.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Entrainement&#039;&#039;&#039;&lt;br /&gt;
:Il est possible de faire l’entrainement sur Windows, nous conseillons d&#039;utiliser Linux, mais voici une vidéo expliquant les démarches nécessaire avec Windows.&lt;br /&gt;
&lt;br /&gt;
:https://www.youtube.com/watch?v=r0RspiLG260&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Pour le faire sur Linux, vous devez avoir téléchargé les librairies suivantes:&lt;br /&gt;
*ultralitics&lt;br /&gt;
*pytorch&lt;br /&gt;
*python3&lt;br /&gt;
*opencv&lt;br /&gt;
&lt;br /&gt;
:Nous conseillons l&#039;utilisation de l&#039;outil pip pour rendre l&#039;installation de c&#039;est librairie plus simple. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Maintenant, ouvres le terminal et entrez la commande: yolo detect train model=yolo11n.pt data=data.yaml epochs=X imgsz=X batch=X patience=x&lt;br /&gt;
&lt;br /&gt;
*model : modèle de base pré-entraîné utilisé pour commencer.&lt;br /&gt;
&lt;br /&gt;
*data : fichier qui indique où sont les images et les classes.&lt;br /&gt;
&lt;br /&gt;
*epochs : nombre de cycles d’apprentissage.&lt;br /&gt;
&lt;br /&gt;
*imgsz : taille des images (640 si vous utiliser notre python).&lt;br /&gt;
&lt;br /&gt;
*batch : nombre d’images traitées en même temps (selon le gpu).&lt;br /&gt;
&lt;br /&gt;
*patience : arrête l’entraînement si le modèle n’améliore plus ses performances&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Faites vos recherches pour remplacer les x par les bonnes valeurs selon vos besoins (dépendement, de votre nombre d&#039;images et votre application) .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Ensuite, vous exécutez la commande et votre ordinateur lance l’entraînement du modèle, ce qui peut prendre plusieurs heures selon la puissance de votre machine et la taille du dataset.Une erreur possible est que votre processeur ou votre environnement ne dispose pas des bibliothèques logicielles nécessaires pour exécuter l’entraînement. Ce problème est plus fréquent sur des ordinateurs plus anciens ou lorsque certaines dépendances ne sont pas correctement installées.&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=548</id>
		<title>Reconnaissance objet</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=548"/>
		<updated>2026-02-25T15:26:53Z</updated>

		<summary type="html">&lt;p&gt;2182036 : /* Création du modèle pré-entrainée */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description du projet==&lt;br /&gt;
Le but final du projet est de détecter un objet (dans notre cas un lift) dans une image de caméra grâce à un modèle de reconnaissance d&#039;objet pré-entrainé.&lt;br /&gt;
Lorsque que le programme détectera un chariot élévateur, un gyrophare s&#039;activera pour avertir les travailleurs.&lt;br /&gt;
Le programme se trouvera dans un Raspberry pi 5, un petit ordinateur avec des entrées sorties programmables. La camera sera connectée dans celui-ci directement par USB.&lt;br /&gt;
Puisque les sorties du Raspberry pi fonctionne à 3.3 VCC, nous utilisons un petit relais pour alimenter un gyrophare 120 VCA.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Fonctionnement global===&lt;br /&gt;
&lt;br /&gt;
Pour fonctionner, le projet a trois grande étapes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. La programmation python.&#039;&#039;&#039;&lt;br /&gt;
:Le script charge un modèle .pt et applique la détection sur chaque image, affiche les boîtes englobantes avec le niveau de confiance et calcule le nombre d&#039;image par seconde moyen.&lt;br /&gt;
:Il permet aussi d’enregistrer la vidéo traitée et de compter le nombre d’objets détectés à chaque image.&lt;br /&gt;
:Ce n&#039;est pas ce programme qui est entrainé a reconnaitre un objet. Il fait seulement le paramétrer (afficher les boites, le degré de confiance et le nombre d&#039;objet détecté.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Le fichier .pt (Pré-entrainée)&#039;&#039;&#039;&lt;br /&gt;
:Un modèle YOLO déjà entraîné (.pt) est une intelligence artificielle qui a déjà appris à reconnaître certains objets grâce à un entraînement préalable sur une grande quantité d’images.Le modèle pré-entrainé c&#039;est comme le cerveau du projet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Fichier de contrôle GPIO&#039;&#039;&#039;&lt;br /&gt;
:Le Raspberry pi 5 possède plusieurs pin programmable qui doivent être contrôler à l&#039;aide d&#039;un fichier. Les pins GPIO peuvent être soit une entrée ou une sortie. Le fichier fais aussi le liens entre les variables python et les pins.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
====Création du modèle pré-entrainée====&lt;br /&gt;
&lt;br /&gt;
Pour entraîner le modèle, il faut un dataset, c’est-à-dire une collection d’images déjà annotées.&lt;br /&gt;
Il existe deux options : le créer soi-même ou en utiliser un déjà disponible en ligne.&lt;br /&gt;
Nous recommandons d’en prendre un déjà fait, car créer son propre dataset demande des milliers de photos et beaucoup de temps pour les annoter une par une.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Choisir le bon dataset&#039;&#039;&#039;&lt;br /&gt;
:Nous conseillons d&#039;utiliser la plateforme RobotFlow sur internet pour trouver un dataset.&lt;br /&gt;
:Sur Roboflow, va dans l’onglet Universe (bibliothèque publique).&lt;br /&gt;
:Rechercher avec des mots-clés précis (ex : “forklift”, “helmet detection”, etc.).&lt;br /&gt;
:Vérifie le nombre d’images, la diversité des photos et la qualité des annotations.&lt;br /&gt;
:Choisis un dataset avec plusieurs centaines ou milliers d’images bien étiquetées.&lt;br /&gt;
:Une fois le bon dataset trouvé, il reste juste à le télécharger en format zip.&lt;br /&gt;
:Une erreur que nous avons rencontrée étais que notre dataset n&#039;avais aucune image&lt;br /&gt;
:nulle, qui sont une images sans l&#039;objet qu&#039;on veut détecter. les images nulle &lt;br /&gt;
:sont important pour l&#039;entrainement.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Préparer le dataset à l’entrainement.&#039;&#039;&#039;&lt;br /&gt;
:Une fois le fichier téléchargé, vous devez l&#039;extraire à l&#039;endroit de votre choix.&lt;br /&gt;
:Ensuite, vérifiez que le fichier contient les 3 éléments  importants: data.yaml, train, valid.&lt;br /&gt;
:Si ces 3 éléments sont présents, tout est correct.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Ajouter le Yolo de base.&#039;&#039;&#039;&lt;br /&gt;
:Yolo possède des modèles de base pré entrainés généralisé et il est nécessaire d&#039;ajouter une&lt;br /&gt;
:de ces version à notre dataset pour l’entrainement. Nous utilisons la version 11n qui est la&lt;br /&gt;
:version officielle la plus récente. Le n signifie nano. Il existe d&#039;autres modèle plus performants,&lt;br /&gt;
:mais nous avons besoin de la version la plus léger pour fonctionner avec le Raspberry pi. &lt;br /&gt;
:pour l&#039;ajouter au dataset, vous devez le télécharger à partir du site de Yolo.&lt;br /&gt;
&lt;br /&gt;
Vous devez ensuite glisser le fichier téléchargé au même endroit que les autres fichiers énumérés à l&#039;étape 2.&lt;br /&gt;
:[[File:version_yolo.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Entrainement&#039;&#039;&#039;&lt;br /&gt;
:Il est possible de faire l’entrainement sur Windows, nous conseillons d&#039;utiliser Linux, mais voici une vidéo expliquant les démarches nécessaire avec Windows.&lt;br /&gt;
&lt;br /&gt;
:https://www.youtube.com/watch?v=r0RspiLG260&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Pour le faire sur Linux, vous devez avoir téléchargé les librairies suivantes:&lt;br /&gt;
*ultralitics&lt;br /&gt;
*pytorch&lt;br /&gt;
*python3&lt;br /&gt;
*opencv&lt;br /&gt;
&lt;br /&gt;
:Nous conseillons l&#039;utilisation de l&#039;outil pip pour rendre l&#039;installation de c&#039;est librairie plus simple. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Maintenant, ouvres le terminal et entrez la commande: yolo detect train model=yolo11n.pt data=data.yaml epochs=X imgsz=X batch=X patience=x&lt;br /&gt;
&lt;br /&gt;
*model : modèle de base pré-entraîné utilisé pour commencer.&lt;br /&gt;
&lt;br /&gt;
*data : fichier qui indique où sont les images et les classes.&lt;br /&gt;
&lt;br /&gt;
*epochs : nombre de cycles d’apprentissage.&lt;br /&gt;
&lt;br /&gt;
*imgsz : taille des images (640 si vous utiliser notre python).&lt;br /&gt;
&lt;br /&gt;
*batch : nombre d’images traitées en même temps (selon le gpu).&lt;br /&gt;
&lt;br /&gt;
*patience : arrête l’entraînement si le modèle n’améliore plus ses performances&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Faites vos recherches pour remplacer les x par les bonnes valeurs selon vos besoins (dépendement, de votre nombre d&#039;images et votre application) .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Ensuite, vous exécutez la commande et votre ordinateur lance l’entraînement du modèle, ce qui peut prendre plusieurs heures selon la puissance de votre machine et la taille du dataset.Une erreur possible est que votre processeur ou votre environnement ne dispose pas des bibliothèques logicielles nécessaires pour exécuter l’entraînement. Ce problème est plus fréquent sur des ordinateurs plus anciens ou lorsque certaines dépendances ne sont pas correctement installées.&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=547</id>
		<title>Reconnaissance objet</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=547"/>
		<updated>2026-02-25T15:26:14Z</updated>

		<summary type="html">&lt;p&gt;2182036 : /* Création du modèle pré-entrainée */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description du projet==&lt;br /&gt;
Le but final du projet est de détecter un objet (dans notre cas un lift) dans une image de caméra grâce à un modèle de reconnaissance d&#039;objet pré-entrainé.&lt;br /&gt;
Lorsque que le programme détectera un chariot élévateur, un gyrophare s&#039;activera pour avertir les travailleurs.&lt;br /&gt;
Le programme se trouvera dans un Raspberry pi 5, un petit ordinateur avec des entrées sorties programmables. La camera sera connectée dans celui-ci directement par USB.&lt;br /&gt;
Puisque les sorties du Raspberry pi fonctionne à 3.3 VCC, nous utilisons un petit relais pour alimenter un gyrophare 120 VCA.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Fonctionnement global===&lt;br /&gt;
&lt;br /&gt;
Pour fonctionner, le projet a trois grande étapes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. La programmation python.&#039;&#039;&#039;&lt;br /&gt;
:Le script charge un modèle .pt et applique la détection sur chaque image, affiche les boîtes englobantes avec le niveau de confiance et calcule le nombre d&#039;image par seconde moyen.&lt;br /&gt;
:Il permet aussi d’enregistrer la vidéo traitée et de compter le nombre d’objets détectés à chaque image.&lt;br /&gt;
:Ce n&#039;est pas ce programme qui est entrainé a reconnaitre un objet. Il fait seulement le paramétrer (afficher les boites, le degré de confiance et le nombre d&#039;objet détecté.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Le fichier .pt (Pré-entrainée)&#039;&#039;&#039;&lt;br /&gt;
:Un modèle YOLO déjà entraîné (.pt) est une intelligence artificielle qui a déjà appris à reconnaître certains objets grâce à un entraînement préalable sur une grande quantité d’images.Le modèle pré-entrainé c&#039;est comme le cerveau du projet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Fichier de contrôle GPIO&#039;&#039;&#039;&lt;br /&gt;
:Le Raspberry pi 5 possède plusieurs pin programmable qui doivent être contrôler à l&#039;aide d&#039;un fichier. Les pins GPIO peuvent être soit une entrée ou une sortie. Le fichier fais aussi le liens entre les variables python et les pins.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
====Création du modèle pré-entrainée====&lt;br /&gt;
&lt;br /&gt;
Pour entraîner le modèle, il faut un dataset, c’est-à-dire une collection d’images déjà annotées.&lt;br /&gt;
Il existe deux options : le créer soi-même ou en utiliser un déjà disponible en ligne.&lt;br /&gt;
Nous recommandons d’en prendre un déjà fait, car créer son propre dataset demande des milliers de photos et beaucoup de temps pour les annoter une par une.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Choisir le bon dataset&#039;&#039;&#039;&lt;br /&gt;
:Nous conseillons d&#039;utiliser la plateforme RobotFlow sur internet pour trouver un dataset.&lt;br /&gt;
:Sur Roboflow, va dans l’onglet Universe (bibliothèque publique).&lt;br /&gt;
:Recherche avec des mots-clés précis (ex : “forklift”, “helmet detection”, etc.).&lt;br /&gt;
:Vérifie le nombre d’images, la diversité des photos et la qualité des annotations.&lt;br /&gt;
:Choisis un dataset avec plusieurs centaines ou milliers d’images bien étiquetées.&lt;br /&gt;
:Une fois le bon dataset trouvé, il reste juste à le télécharger en format zip.&lt;br /&gt;
:Une erreur que nous avons rencontrée étais que notre dataset n&#039;avais aucune image&lt;br /&gt;
:nulle, qui sont une images sans l&#039;objet qu&#039;on veut détecter. les images nulle &lt;br /&gt;
:sont important pour l&#039;entrainement.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Préparer le dataset à l’entrainement.&#039;&#039;&#039;&lt;br /&gt;
:Une fois le fichier téléchargé, vous devez l&#039;extraire à l&#039;endroit de votre choix.&lt;br /&gt;
:Ensuite, vérifiez que le fichier contient les 3 éléments  importants: data.yaml, train, valid.&lt;br /&gt;
:Si ces 3 éléments sont présents, tout est correct.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Ajouter le Yolo de base.&#039;&#039;&#039;&lt;br /&gt;
:Yolo possède des modèles de base pré entrainés généralisé et il est nécessaire d&#039;ajouter une&lt;br /&gt;
:de ces version à notre dataset pour l’entrainement. Nous utilisons la version 11n qui est la&lt;br /&gt;
:version officielle la plus récente. Le n signifie nano. Il existe d&#039;autres modèle plus performants,&lt;br /&gt;
:mais nous avons besoin de la version la plus léger pour fonctionner avec le Raspberry pi. &lt;br /&gt;
:pour l&#039;ajouter au dataset, vous devez le télécharger à partir du site de Yolo.&lt;br /&gt;
&lt;br /&gt;
Vous devez ensuite glisser le fichier téléchargé au même endroit que les autres fichiers énumérés à l&#039;étape 2.&lt;br /&gt;
:[[File:version_yolo.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Entrainement&#039;&#039;&#039;&lt;br /&gt;
:Il est possible de faire l’entrainement sur Windows, nous conseillons d&#039;utiliser Linux, mais voici une vidéo expliquant les démarches nécessaire avec Windows.&lt;br /&gt;
&lt;br /&gt;
:https://www.youtube.com/watch?v=r0RspiLG260&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Pour le faire sur Linux, vous devez avoir téléchargé les librairies suivantes:&lt;br /&gt;
*ultralitics&lt;br /&gt;
*pytorch&lt;br /&gt;
*python3&lt;br /&gt;
*opencv&lt;br /&gt;
&lt;br /&gt;
:Nous conseillons l&#039;utilisation de l&#039;outil pip pour rendre l&#039;installation de c&#039;est librairie plus simple. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Maintenant, ouvres le terminal et entrez la commande: yolo detect train model=yolo11n.pt data=data.yaml epochs=X imgsz=X batch=X patience=x&lt;br /&gt;
&lt;br /&gt;
*model : modèle de base pré-entraîné utilisé pour commencer.&lt;br /&gt;
&lt;br /&gt;
*data : fichier qui indique où sont les images et les classes.&lt;br /&gt;
&lt;br /&gt;
*epochs : nombre de cycles d’apprentissage.&lt;br /&gt;
&lt;br /&gt;
*imgsz : taille des images (640 si vous utiliser notre python).&lt;br /&gt;
&lt;br /&gt;
*batch : nombre d’images traitées en même temps (selon le gpu).&lt;br /&gt;
&lt;br /&gt;
*patience : arrête l’entraînement si le modèle n’améliore plus ses performances&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Faites vos recherches pour remplacer les x par les bonnes valeurs selon vos besoins (dépendement, de votre nombre d&#039;images et votre application) .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Ensuite, vous exécutez la commande et votre ordinateur lance l’entraînement du modèle, ce qui peut prendre plusieurs heures selon la puissance de votre machine et la taille du dataset.Une erreur possible est que votre processeur ou votre environnement ne dispose pas des bibliothèques logicielles nécessaires pour exécuter l’entraînement. Ce problème est plus fréquent sur des ordinateurs plus anciens ou lorsque certaines dépendances ne sont pas correctement installées.&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=546</id>
		<title>Reconnaissance objet</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=546"/>
		<updated>2026-02-25T15:25:24Z</updated>

		<summary type="html">&lt;p&gt;2182036 : /* Création du modèle pré-entrainée */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description du projet==&lt;br /&gt;
Le but final du projet est de détecter un objet (dans notre cas un lift) dans une image de caméra grâce à un modèle de reconnaissance d&#039;objet pré-entrainé.&lt;br /&gt;
Lorsque que le programme détectera un chariot élévateur, un gyrophare s&#039;activera pour avertir les travailleurs.&lt;br /&gt;
Le programme se trouvera dans un Raspberry pi 5, un petit ordinateur avec des entrées sorties programmables. La camera sera connectée dans celui-ci directement par USB.&lt;br /&gt;
Puisque les sorties du Raspberry pi fonctionne à 3.3 VCC, nous utilisons un petit relais pour alimenter un gyrophare 120 VCA.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Fonctionnement global===&lt;br /&gt;
&lt;br /&gt;
Pour fonctionner, le projet a trois grande étapes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. La programmation python.&#039;&#039;&#039;&lt;br /&gt;
:Le script charge un modèle .pt et applique la détection sur chaque image, affiche les boîtes englobantes avec le niveau de confiance et calcule le nombre d&#039;image par seconde moyen.&lt;br /&gt;
:Il permet aussi d’enregistrer la vidéo traitée et de compter le nombre d’objets détectés à chaque image.&lt;br /&gt;
:Ce n&#039;est pas ce programme qui est entrainé a reconnaitre un objet. Il fait seulement le paramétrer (afficher les boites, le degré de confiance et le nombre d&#039;objet détecté.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Le fichier .pt (Pré-entrainée)&#039;&#039;&#039;&lt;br /&gt;
:Un modèle YOLO déjà entraîné (.pt) est une intelligence artificielle qui a déjà appris à reconnaître certains objets grâce à un entraînement préalable sur une grande quantité d’images.Le modèle pré-entrainé c&#039;est comme le cerveau du projet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Fichier de contrôle GPIO&#039;&#039;&#039;&lt;br /&gt;
:Le Raspberry pi 5 possède plusieurs pin programmable qui doivent être contrôler à l&#039;aide d&#039;un fichier. Les pins GPIO peuvent être soit une entrée ou une sortie. Le fichier fais aussi le liens entre les variables python et les pins.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
====Création du modèle pré-entrainée====&lt;br /&gt;
&lt;br /&gt;
Pour entraîner le modèle, il faut un dataset, c’est-à-dire une collection d’images déjà annotées.&lt;br /&gt;
Il existe deux options : le créer soi-même ou en utiliser un déjà disponible en ligne.&lt;br /&gt;
Nous recommandons d’en prendre un déjà fait, car créer son propre dataset demande des milliers de photos et beaucoup de temps pour les annoter une par une.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Choisir le bon dataset&#039;&#039;&#039;&lt;br /&gt;
:Nous conseillons d&#039;utiliser la plateforme RobotFlow sur internet pour trouver un dataset.&lt;br /&gt;
:Sur Roboflow, va dans l’onglet Universe (bibliothèque publique).&lt;br /&gt;
:Recherche avec des mots-clés précis (ex : “forklift”, “helmet detection”, etc.).&lt;br /&gt;
:Vérifie le nombre d’images, la diversité des photos et la qualité des annotations.&lt;br /&gt;
:Choisis un dataset avec plusieurs centaines ou milliers d’images bien étiquetées.&lt;br /&gt;
:Une fois le bon dataset trouvé, il reste juste à le télécharger en format zip.&lt;br /&gt;
:Une erreur que nous avons rencontrée étais que notre dataset n&#039;avais aucune image&lt;br /&gt;
:nulle, qui sont une images sans l&#039;objet qu&#039;on veut détecter. les images nulle &lt;br /&gt;
:sont important pour l&#039;entrainement.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Préparer le dataset à l’entrainement.&#039;&#039;&#039;&lt;br /&gt;
:Une fois le fichier téléchargé, vous devez l&#039;extraire à l&#039;endroit de votre choix.&lt;br /&gt;
:Ensuite, vérifiez que le fichier contient les 3 éléments  importants: data.yaml, train, valid.&lt;br /&gt;
:Si ces 3 éléments sont présents, tout est correct.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Ajouter le Yolo de base.&#039;&#039;&#039;&lt;br /&gt;
:Yolo possède des modèles de base pré entrainés généralisé et il est nécessaire d&#039;ajouter une&lt;br /&gt;
:de ces version à notre dataset pour l’entrainement. Nous utilisons la version 11n qui est la&lt;br /&gt;
:version officielle la plus récente. Le n signifie nano. Il existe d&#039;autres modèle plus performants,&lt;br /&gt;
:mais nous avons besoin de la version la plus léger pour fonctionner avec le Raspberry pi. &lt;br /&gt;
:pour l&#039;ajouter au dataset, vous devez le télécharger à partir du site de Yolo.&lt;br /&gt;
&lt;br /&gt;
Vous devez ensuite glisser le fichier téléchargé au même endroit que les autres fichiers énumérés à l&#039;étape 2.&lt;br /&gt;
:[[File:version_yolo.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Entrainement&#039;&#039;&#039;&lt;br /&gt;
:Il est possible de faire l’entrainement sur Windows, nous conseillons d&#039;utiliser Linux, mais voici une vidéo expliquant les démarches nécessaire avec Windows.&lt;br /&gt;
&lt;br /&gt;
:https://www.youtube.com/watch?v=r0RspiLG260&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Pour le faire sur Linux, vous devez avoir téléchargé les librairies suivantes:&lt;br /&gt;
:ultralitics&lt;br /&gt;
:pytorch&lt;br /&gt;
:python3&lt;br /&gt;
:opencv&lt;br /&gt;
&lt;br /&gt;
:Nous conseillons l&#039;utilisation de l&#039;outil pip pour rendre l&#039;installation de c&#039;est librairie plus simple. &lt;br /&gt;
&lt;br /&gt;
:Maintenant, ouvres le terminal et entrez la commande: yolo detect train model=yolo11n.pt data=data.yaml epochs=X imgsz=X batch=X patience=x&lt;br /&gt;
&lt;br /&gt;
*model : modèle de base pré-entraîné utilisé pour commencer.&lt;br /&gt;
&lt;br /&gt;
*data : fichier qui indique où sont les images et les classes.&lt;br /&gt;
&lt;br /&gt;
*epochs : nombre de cycles d’apprentissage.&lt;br /&gt;
&lt;br /&gt;
*imgsz : taille des images (640 si vous utiliser notre python).&lt;br /&gt;
&lt;br /&gt;
*batch : nombre d’images traitées en même temps (selon le gpu).&lt;br /&gt;
&lt;br /&gt;
*patience : arrête l’entraînement si le modèle n’améliore plus ses performances&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Faites vos recherches pour remplacer les x par les bonnes valeurs selon vos besoins (dépendement, de votre nombre d&#039;images et votre application) .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Ensuite, vous exécutez la commande et votre ordinateur lance l’entraînement du modèle, ce qui peut prendre plusieurs heures selon la puissance de votre machine et la taille du dataset.Une erreur possible est que votre processeur ou votre environnement ne dispose pas des bibliothèques logicielles nécessaires pour exécuter l’entraînement. Ce problème est plus fréquent sur des ordinateurs plus anciens ou lorsque certaines dépendances ne sont pas correctement installées.&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=545</id>
		<title>Reconnaissance objet</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=545"/>
		<updated>2026-02-25T15:22:49Z</updated>

		<summary type="html">&lt;p&gt;2182036 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description du projet==&lt;br /&gt;
Le but final du projet est de détecter un objet (dans notre cas un lift) dans une image de caméra grâce à un modèle de reconnaissance d&#039;objet pré-entrainé.&lt;br /&gt;
Lorsque que le programme détectera un chariot élévateur, un gyrophare s&#039;activera pour avertir les travailleurs.&lt;br /&gt;
Le programme se trouvera dans un Raspberry pi 5, un petit ordinateur avec des entrées sorties programmables. La camera sera connectée dans celui-ci directement par USB.&lt;br /&gt;
Puisque les sorties du Raspberry pi fonctionne à 3.3 VCC, nous utilisons un petit relais pour alimenter un gyrophare 120 VCA.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Fonctionnement global===&lt;br /&gt;
&lt;br /&gt;
Pour fonctionner, le projet a trois grande étapes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. La programmation python.&#039;&#039;&#039;&lt;br /&gt;
:Le script charge un modèle .pt et applique la détection sur chaque image, affiche les boîtes englobantes avec le niveau de confiance et calcule le nombre d&#039;image par seconde moyen.&lt;br /&gt;
:Il permet aussi d’enregistrer la vidéo traitée et de compter le nombre d’objets détectés à chaque image.&lt;br /&gt;
:Ce n&#039;est pas ce programme qui est entrainé a reconnaitre un objet. Il fait seulement le paramétrer (afficher les boites, le degré de confiance et le nombre d&#039;objet détecté.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Le fichier .pt (Pré-entrainée)&#039;&#039;&#039;&lt;br /&gt;
:Un modèle YOLO déjà entraîné (.pt) est une intelligence artificielle qui a déjà appris à reconnaître certains objets grâce à un entraînement préalable sur une grande quantité d’images.Le modèle pré-entrainé c&#039;est comme le cerveau du projet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Fichier de contrôle GPIO&#039;&#039;&#039;&lt;br /&gt;
:Le Raspberry pi 5 possède plusieurs pin programmable qui doivent être contrôler à l&#039;aide d&#039;un fichier. Les pins GPIO peuvent être soit une entrée ou une sortie. Le fichier fais aussi le liens entre les variables python et les pins.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
====Création du modèle pré-entrainée====&lt;br /&gt;
&lt;br /&gt;
Pour entraîner le modèle, il faut un dataset, c’est-à-dire une collection d’images déjà annotées.&lt;br /&gt;
Il existe deux options : le créer soi-même ou en utiliser un déjà disponible en ligne.&lt;br /&gt;
Nous recommandons d’en prendre un déjà fait, car créer son propre dataset demande des milliers de photos et beaucoup de temps pour les annoter une par une.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Choisir le bon dataset&#039;&#039;&#039;&lt;br /&gt;
:Nous conseillons d&#039;utiliser la plateforme RobotFlow sur internet pour trouver un dataset.&lt;br /&gt;
:Sur Roboflow, va dans l’onglet Universe (bibliothèque publique).&lt;br /&gt;
:Recherche avec des mots-clés précis (ex : “forklift”, “helmet detection”, etc.).&lt;br /&gt;
:Vérifie le nombre d’images, la diversité des photos et la qualité des annotations.&lt;br /&gt;
:Choisis un dataset avec plusieurs centaines ou milliers d’images bien étiquetées.&lt;br /&gt;
:Une fois le bon dataset trouvé, il reste juste à le télécharger en format zip.&lt;br /&gt;
:Une erreur que nous avons rencontrée étais que notre dataset n&#039;avais aucune image&lt;br /&gt;
:nulle, qui sont une images sans l&#039;objet qu&#039;on veut détecter. les images nulle &lt;br /&gt;
:sont important pour l&#039;entrainement.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Préparer le dataset à l’entrainement.&#039;&#039;&#039;&lt;br /&gt;
:Une fois le fichier téléchargé, vous devez l&#039;extraire à l&#039;endroit de votre choix.&lt;br /&gt;
:Ensuite, vérifiez que le fichier contient les 3 éléments  importants: data.yaml, train, valid.&lt;br /&gt;
:Si ces 3 éléments sont présents, tout est correct.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Ajouter le Yolo de base.&#039;&#039;&#039;&lt;br /&gt;
:Yolo possède des modèles de base pré entrainés généralisé et il est nécessaire d&#039;ajouter une&lt;br /&gt;
:de ces version à notre dataset pour l’entrainement. Nous utilisons la version 11n qui est la&lt;br /&gt;
:version officielle la plus récente. Le n signifie nano. Il existe d&#039;autres modèle plus performants,&lt;br /&gt;
:mais nous avons besoin de la version la plus léger pour fonctionner avec le Raspberry pi. &lt;br /&gt;
:pour l&#039;ajouter au dataset, vous devez le télécharger à partir du site de Yolo.&lt;br /&gt;
&lt;br /&gt;
Vous devez ensuite glisser le fichier téléchargé au même endroit que les autres fichiers énumérés à l&#039;étape 2.&lt;br /&gt;
:[[File:version_yolo.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Entrainement&#039;&#039;&#039;&lt;br /&gt;
:Il est possible de faire l’entrainement sur Windows, nous conseillons d&#039;utiliser Linux, mais voici une vidéo expliquant les démarches nécessaire avec Windows.&lt;br /&gt;
&lt;br /&gt;
:https://www.youtube.com/watch?v=r0RspiLG260&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Pour le faire sur Linux vous devez avoir téléchargé les librairies: ultralitics, pytorch, python3, pip, opencv.&lt;br /&gt;
:Maintenant, ouvres le terminal et entrez la commande: yolo detect train model=yolo11n.pt data=data.yaml epochs=X imgsz=X batch=X patience=x&lt;br /&gt;
&lt;br /&gt;
*model : modèle de base pré-entraîné utilisé pour commencer.&lt;br /&gt;
&lt;br /&gt;
*data : fichier qui indique où sont les images et les classes.&lt;br /&gt;
&lt;br /&gt;
*epochs : nombre de cycles d’apprentissage.&lt;br /&gt;
&lt;br /&gt;
*imgsz : taille des images (640 si vous utiliser notre python).&lt;br /&gt;
&lt;br /&gt;
*batch : nombre d’images traitées en même temps (selon le gpu).&lt;br /&gt;
&lt;br /&gt;
*patience : arrête l’entraînement si le modèle n’améliore plus ses performances&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Faites vos recherches pour remplacer les x par les bonnes valeurs selon vos besoins (dépendement, de votre nombre d&#039;images et votre application) .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Ensuite, vous exécutez la commande et votre ordinateur lance l’entraînement du modèle, ce qui peut prendre plusieurs heures selon la puissance de votre machine et la taille du dataset.Une erreur possible est que votre processeur ou votre environnement ne dispose pas des bibliothèques logicielles nécessaires pour exécuter l’entraînement. Ce problème est plus fréquent sur des ordinateurs plus anciens ou lorsque certaines dépendances ne sont pas correctement installées.&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=544</id>
		<title>Reconnaissance objet</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=544"/>
		<updated>2026-02-25T15:20:22Z</updated>

		<summary type="html">&lt;p&gt;2182036 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description du projet==&lt;br /&gt;
Le but final du projet est de détecter un objet (dans notre cas un lift) dans une image de caméra grâce à un modèle de reconnaissance d&#039;objet pré-entrainé.&lt;br /&gt;
Lorsque que le programme détectera un chariot élévateur, un gyrophare s&#039;activera pour avertir les travailleurs.&lt;br /&gt;
Le programme se trouvera dans un Raspberry pi 5, un petit ordinateur avec des entrées sorties programmables. La camera sera connectée dans celui-ci directement par USB.&lt;br /&gt;
Puisque les sorties du Raspberry pi fonctionne à 3.3 VCC, nous utilisons un petit relais pour alimenter un gyrophare 120 VCA.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Fonctionnement global===&lt;br /&gt;
&lt;br /&gt;
Pour fonctionner, le projet a trois grande étapes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. La programmation python.&#039;&#039;&#039;&lt;br /&gt;
:Le script charge un modèle .pt et applique la détection sur chaque image, affiche les boîtes englobantes avec le niveau de confiance et calcule le nombre d&#039;image par seconde moyen.&lt;br /&gt;
:Il permet aussi d’enregistrer la vidéo traitée et de compter le nombre d’objets détectés à chaque image.&lt;br /&gt;
:Ce n&#039;est pas ce programme qui est entrainé a reconnaitre un objet. Il fait seulement le paramétrer (afficher les boites, le degré de confiance et le nombre d&#039;objet détecté.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Le fichier .pt (Pré-entrainée)&#039;&#039;&#039;&lt;br /&gt;
:Un modèle YOLO déjà entraîné (.pt) est une intelligence artificielle qui a déjà appris à reconnaître certains objets grâce à un entraînement préalable sur une grande quantité d’images.Le modèle pré-entrainé c&#039;est comme le cerveau du projet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Fichier de contrôle GPIO&#039;&#039;&#039;&lt;br /&gt;
:Le Raspberry pi 5 possède plusieurs pin programmable qui doivent être contrôler à l&#039;aide d&#039;un fichier. Les pins GPIO peuvent être soit une entrée ou une sortie. Le fichier fais aussi le liens entre les variables python et les pins.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
====Création du modèle pré-entrainée====&lt;br /&gt;
&lt;br /&gt;
Pour entraîner le modèle, il faut un dataset, c’est-à-dire une collection d’images déjà annotées.&lt;br /&gt;
Il existe deux options : le créer soi-même ou en utiliser un déjà disponible en ligne.&lt;br /&gt;
Nous recommandons d’en prendre un déjà fait, car créer son propre dataset demande des milliers de photos et beaucoup de temps pour les annoter une par une.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Choisir le bon dataset&#039;&#039;&#039;&lt;br /&gt;
:Nous conseillons d&#039;utiliser la plateforme RobotFlow sur internet pour trouver un dataset.&lt;br /&gt;
:Sur Roboflow, va dans l’onglet Universe (bibliothèque publique).&lt;br /&gt;
:Recherche avec des mots-clés précis (ex : “forklift”, “helmet detection”, etc.).&lt;br /&gt;
:Vérifie le nombre d’images, la diversité des photos et la qualité des annotations.&lt;br /&gt;
:Choisis un dataset avec plusieurs centaines ou milliers d’images bien étiquetées.&lt;br /&gt;
:Une fois le bon dataset trouvé, il reste juste à le télécharger en format zip.&lt;br /&gt;
:Une erreur que nous avons rencontrée étais que notre dataset n&#039;avais aucune image&lt;br /&gt;
:nulle, qui sont une images sans l&#039;objet qu&#039;on veut détecter. les images nulle &lt;br /&gt;
:sont important pour l&#039;entrainement.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Préparer le dataset à l’entrainement.&#039;&#039;&#039;&lt;br /&gt;
:Une fois le fichier téléchargé, vous devez l&#039;extraire à l&#039;endroit de votre choix.&lt;br /&gt;
:Ensuite, vérifiez que le fichier contient les 3 éléments  importants: data.yaml, train, valid.&lt;br /&gt;
:Si ces 3 éléments sont présents, tout est correct.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Ajouter le Yolo de base.&#039;&#039;&#039;&lt;br /&gt;
:Yolo possède des modèles de base pré entrainés généralisé et il est nécessaire d&#039;ajouter une&lt;br /&gt;
:de ces version à notre dataset pour l’entrainement. Nous utilisons la version 11n qui est la&lt;br /&gt;
:version officielle la plus récente. Le n signifie nano. Il existe d&#039;autres modèle plus performants,&lt;br /&gt;
:mais nous avons besoin de la version la plus léger pour fonctionner avec le Raspberry pi. &lt;br /&gt;
:pour l&#039;ajouter au dataset, vous devez le télécharger à partir du site de Yolo.&lt;br /&gt;
&lt;br /&gt;
Vous devez ensuite glisser le fichier téléchargé au même endroit que les autres fichiers énumérés à l&#039;étape 2.&lt;br /&gt;
:[[File:version_yolo.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Entrainement&#039;&#039;&#039;&lt;br /&gt;
:Il est possible de faire l’entrainement sur Windows, mais comme nous on l&#039;a fait sur Linux vous devrez faire vos recherches par vous-même pour le faire avec &lt;br /&gt;
:Windows.&lt;br /&gt;
&lt;br /&gt;
:https://www.youtube.com/watch?v=r0RspiLG260&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Pour le faire sur Linux vous devez avoir téléchargé les librairies: ultralitics, pytorch, python3, pip, opencv.&lt;br /&gt;
:Maintenant, ouvres le terminal et entrez la commande: yolo detect train model=yolo11n.pt data=data.yaml epochs=X imgsz=X batch=X patience=x&lt;br /&gt;
&lt;br /&gt;
*model : modèle de base pré-entraîné utilisé pour commencer.&lt;br /&gt;
&lt;br /&gt;
*data : fichier qui indique où sont les images et les classes.&lt;br /&gt;
&lt;br /&gt;
*epochs : nombre de cycles d’apprentissage.&lt;br /&gt;
&lt;br /&gt;
*imgsz : taille des images (640 si vous utiliser notre python).&lt;br /&gt;
&lt;br /&gt;
*batch : nombre d’images traitées en même temps (selon le gpu).&lt;br /&gt;
&lt;br /&gt;
*patience : arrête l’entraînement si le modèle n’améliore plus ses performances&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Faites vos recherches pour remplacer les x par les bonnes valeurs selon vos besoins (dépendement, de votre nombre d&#039;images et votre application) .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Ensuite, vous exécutez la commande et votre ordinateur lance l’entraînement du modèle, ce qui peut prendre plusieurs heures selon la puissance de votre machine et la taille du dataset.Une erreur possible est que votre processeur ou votre environnement ne dispose pas des bibliothèques logicielles nécessaires pour exécuter l’entraînement. Ce problème est plus fréquent sur des ordinateurs plus anciens ou lorsque certaines dépendances ne sont pas correctement installées.&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=543</id>
		<title>Reconnaissance objet</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=543"/>
		<updated>2026-02-25T15:19:09Z</updated>

		<summary type="html">&lt;p&gt;2182036 : /* Création du modèle pré-entrainée */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description du projet==&lt;br /&gt;
Le but final du projet est de détecter un objet (dans notre cas un lift) dans une image de caméra grâce à un modèle de reconnaissance d&#039;objet pré-entrainé.&lt;br /&gt;
Lorsque que le programme détectera un chariot élévateur, un gyrophare s&#039;activera pour avertir les travailleurs.&lt;br /&gt;
Le programme se trouvera dans un Raspberry pi 5, un petit ordinateur avec des entrées sorties programmables. La camera sera connectée dans celui-ci directement par USB.&lt;br /&gt;
Puisque les sorties du Raspberry pi fonctionne à 3.3 VCC, nous utilisons un petit relais pour alimenter un gyrophare 120 VCA.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Fonctionnement global===&lt;br /&gt;
&lt;br /&gt;
Pour fonctionner, le projet a trois grande étapes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. La programmation python.&#039;&#039;&#039;&lt;br /&gt;
:Le script charge un modèle .pt et applique la détection sur chaque image, affiche les boîtes englobantes avec le niveau de confiance et calcule le nombre d&#039;image par seconde moyen.&lt;br /&gt;
:Il permet aussi d’enregistrer la vidéo traitée et de compter le nombre d’objets détectés à chaque image.&lt;br /&gt;
:Ce n&#039;est pas ce programme qui est entrainé a reconnaitre un objet. Il fait seulement le paramétrer (afficher les boites, le degré de confiance et le nombre d&#039;objet détecté.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Le fichier .pt (Pré-entrainée)&#039;&#039;&#039;&lt;br /&gt;
:Un modèle YOLO déjà entraîné (.pt) est une intelligence artificielle qui a déjà appris à reconnaître certains objets grâce à un entraînement préalable sur une grande quantité d’images.Le modèle pré-entrainé c&#039;est comme le cerveau du projet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Fichier de contrôle GPIO&#039;&#039;&#039;&lt;br /&gt;
:Le Raspberry pi 5 possède plusieurs pin programmable qui doivent être contrôler à l&#039;aide d&#039;un fichier. Les pins GPIO peuvent être soit une entrée ou une sortie. Le fichier fais aussi le liens entre les variables python et les pins.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
====Création du modèle pré-entrainée====&lt;br /&gt;
&lt;br /&gt;
Pour entraîner le modèle, il faut un dataset, c’est-à-dire une collection d’images déjà annotées.&lt;br /&gt;
Il existe deux options : le créer soi-même ou en utiliser un déjà disponible en ligne.&lt;br /&gt;
Nous recommandons d’en prendre un déjà fait, car créer son propre dataset demande des milliers de photos et beaucoup de temps pour les annoter une par une.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Choisir le bon dataset&#039;&#039;&#039;&lt;br /&gt;
:Nous conseillons d&#039;utiliser la plateforme RobotFlow sur internet pour trouver un dataset.&lt;br /&gt;
:Sur Roboflow, va dans l’onglet Universe (bibliothèque publique).&lt;br /&gt;
:Recherche avec des mots-clés précis (ex : “forklift”, “helmet detection”, etc.).&lt;br /&gt;
:Vérifie le nombre d’images, la diversité des photos et la qualité des annotations.&lt;br /&gt;
:Choisis un dataset avec plusieurs centaines ou milliers d’images bien étiquetées.&lt;br /&gt;
:Une fois le bon dataset trouvé, il reste juste à le télécharger en format zip.&lt;br /&gt;
:Une erreur que nous avons rencontrée étais que notre dataset n&#039;avais aucune image&lt;br /&gt;
:nulle, qui sont une images sans l&#039;objet qu&#039;on veut détecter. les images nulle &lt;br /&gt;
:sont important pour l&#039;entrainement.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Préparer le dataset à l’entrainement.&#039;&#039;&#039;&lt;br /&gt;
:Une fois le fichier téléchargé, vous devez l&#039;extraire à l&#039;endroit de votre choix.&lt;br /&gt;
:Ensuite, vérifiez que le fichier contient les 3 éléments  importants: data.yaml, train, valid.&lt;br /&gt;
:Si ces 3 éléments sont présents, tout est correct.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Ajouter le Yolo de base.&#039;&#039;&#039;&lt;br /&gt;
:Yolo possède des modèles de base pré entrainés généralisé et il est nécessaire d&#039;ajouter une de ces version à notre dataset pour l’entrainement. Nous utilisons la version 11n qui est la version officielle la plus récente. Le n signifie nano. Il existe d&#039;autres modèle plus performants, mais nous avons besoin de la version la plus léger pour fonctionner avec le Raspberry pi. &lt;br /&gt;
:pour l&#039;ajouter au dataset, vous devez le télécharger à partir du site de Yolo.&lt;br /&gt;
Vous devez ensuite glisser le fichier téléchargé au même endroit que les autres fichiers énumérés à l&#039;étape 2.&lt;br /&gt;
:[[File:version_yolo.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Entrainement&#039;&#039;&#039;&lt;br /&gt;
:Il est possible de faire l’entrainement sur Windows, mais comme nous on l&#039;a fait sur Linux vous devrez faire vos recherches par vous-même pour le faire avec &lt;br /&gt;
:Windows.&lt;br /&gt;
&lt;br /&gt;
:https://www.youtube.com/watch?v=r0RspiLG260&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Pour le faire sur Linux vous devez avoir téléchargé les librairies: ultralitics, pytorch, python3, pip, opencv.&lt;br /&gt;
:Maintenant, ouvres le terminal et entrez la commande: yolo detect train model=yolo11n.pt data=data.yaml epochs=X imgsz=X batch=X patience=x&lt;br /&gt;
&lt;br /&gt;
*model : modèle de base pré-entraîné utilisé pour commencer.&lt;br /&gt;
&lt;br /&gt;
*data : fichier qui indique où sont les images et les classes.&lt;br /&gt;
&lt;br /&gt;
*epochs : nombre de cycles d’apprentissage.&lt;br /&gt;
&lt;br /&gt;
*imgsz : taille des images (640 si vous utiliser notre python).&lt;br /&gt;
&lt;br /&gt;
*batch : nombre d’images traitées en même temps (selon le gpu).&lt;br /&gt;
&lt;br /&gt;
*patience : arrête l’entraînement si le modèle n’améliore plus ses performances&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Faites vos recherches pour remplacer les x par les bonnes valeurs selon vos besoins (dépendement, de votre nombre d&#039;images et votre application) .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Ensuite, vous exécutez la commande et votre ordinateur lance l’entraînement du modèle, ce qui peut prendre plusieurs heures selon la puissance de votre machine et la taille du dataset.Une erreur possible est que votre processeur ou votre environnement ne dispose pas des bibliothèques logicielles nécessaires pour exécuter l’entraînement. Ce problème est plus fréquent sur des ordinateurs plus anciens ou lorsque certaines dépendances ne sont pas correctement installées.&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=542</id>
		<title>Reconnaissance objet</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=542"/>
		<updated>2026-02-25T15:10:13Z</updated>

		<summary type="html">&lt;p&gt;2182036 : /* Fonctionnement global */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description du projet==&lt;br /&gt;
Le but final du projet est de détecter un objet (dans notre cas un lift) dans une image de caméra grâce à un modèle de reconnaissance d&#039;objet pré-entrainé.&lt;br /&gt;
Lorsque que le programme détectera un chariot élévateur, un gyrophare s&#039;activera pour avertir les travailleurs.&lt;br /&gt;
Le programme se trouvera dans un Raspberry pi 5, un petit ordinateur avec des entrées sorties programmables. La camera sera connectée dans celui-ci directement par USB.&lt;br /&gt;
Puisque les sorties du Raspberry pi fonctionne à 3.3 VCC, nous utilisons un petit relais pour alimenter un gyrophare 120 VCA.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Fonctionnement global===&lt;br /&gt;
&lt;br /&gt;
Pour fonctionner, le projet a trois grande étapes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. La programmation python.&#039;&#039;&#039;&lt;br /&gt;
:Le script charge un modèle .pt et applique la détection sur chaque image, affiche les boîtes englobantes avec le niveau de confiance et calcule le nombre d&#039;image par seconde moyen.&lt;br /&gt;
:Il permet aussi d’enregistrer la vidéo traitée et de compter le nombre d’objets détectés à chaque image.&lt;br /&gt;
:Ce n&#039;est pas ce programme qui est entrainé a reconnaitre un objet. Il fait seulement le paramétrer (afficher les boites, le degré de confiance et le nombre d&#039;objet détecté.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Le fichier .pt (Pré-entrainée)&#039;&#039;&#039;&lt;br /&gt;
:Un modèle YOLO déjà entraîné (.pt) est une intelligence artificielle qui a déjà appris à reconnaître certains objets grâce à un entraînement préalable sur une grande quantité d’images.Le modèle pré-entrainé c&#039;est comme le cerveau du projet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Fichier de contrôle GPIO&#039;&#039;&#039;&lt;br /&gt;
:Le Raspberry pi 5 possède plusieurs pin programmable qui doivent être contrôler à l&#039;aide d&#039;un fichier. Les pins GPIO peuvent être soit une entrée ou une sortie. Le fichier fais aussi le liens entre les variables python et les pins.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
====Création du modèle pré-entrainée====&lt;br /&gt;
&lt;br /&gt;
Pour entraîner le modèle, il faut un dataset, c’est-à-dire une collection d’images déjà annotées.&lt;br /&gt;
Il existe deux options : le créer soi-même ou en utiliser un déjà disponible en ligne.&lt;br /&gt;
Nous recommandons d’en prendre un déjà fait, car créer son propre dataset demande des milliers de photos et beaucoup de temps pour les annoter une par une.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Choisir le bon dataset&#039;&#039;&#039;&lt;br /&gt;
:Nous conseillons d&#039;utiliser la plateforme RobotFlow sur internet pour trouver un dataset.&lt;br /&gt;
:Sur Roboflow, va dans l’onglet Universe (bibliothèque publique).&lt;br /&gt;
:Recherche avec des mots-clés précis (ex : “forklift”, “helmet detection”, etc.).&lt;br /&gt;
:Vérifie le nombre d’images, la diversité des photos et la qualité des annotations.&lt;br /&gt;
:Choisis un dataset avec plusieurs centaines ou milliers d’images bien étiquetées.&lt;br /&gt;
:Une fois le bon dataset trouvé, il reste juste à le télécharger en format zip.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Préparer le dataset à l’entrainement.&#039;&#039;&#039;&lt;br /&gt;
:Une fois le fichier téléchargé, vous devez l&#039;extraire à l&#039;endroit de votre choix.&lt;br /&gt;
:Ensuite, vérifiez que le fichier contient les 3 éléments  importants: data.yaml, train, valid.&lt;br /&gt;
:Si ces 3 éléments sont présents, tout est correct.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Ajouter le Yolo de base.&#039;&#039;&#039;&lt;br /&gt;
:Yolo possède des modèles de base pré entrainés généralisé et il est nécessaire d&#039;ajouter une de ces version à notre dataset pour l’entrainement. Nous utilisons la version 11n qui est la version officielle la plus récente. Le n signifie nano. Il existe d&#039;autres modèle plus performants, mais nous avons besoin de la version la plus léger pour fonctionner avec le Raspberry pi. &lt;br /&gt;
:pour l&#039;ajouter au dataset, vous devez le télécharger à partir du site de Yolo.&lt;br /&gt;
Vous devez ensuite glisser le fichier téléchargé au même endroit que les autres fichiers énumérés à l&#039;étape 2.&lt;br /&gt;
:[[File:version_yolo.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Entrainement&#039;&#039;&#039;&lt;br /&gt;
:Il est possible de faire l’entrainement sur Windows, mais comme nous on l&#039;a fait sur Linux vous devrez faire vos recherches par vous-même pour le faire avec &lt;br /&gt;
:Windows.&lt;br /&gt;
&lt;br /&gt;
:https://www.youtube.com/watch?v=r0RspiLG260&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Pour le faire sur Linux vous devez avoir téléchargé les librairies: ultralitics, pytorch, python3, pip, opencv.&lt;br /&gt;
:Maintenant, ouvres le terminal et entrez la commande: yolo detect train model=yolo11n.pt data=data.yaml epochs=X imgsz=X batch=X patience=x&lt;br /&gt;
&lt;br /&gt;
*model : modèle de base pré-entraîné utilisé pour commencer.&lt;br /&gt;
&lt;br /&gt;
*data : fichier qui indique où sont les images et les classes.&lt;br /&gt;
&lt;br /&gt;
*epochs : nombre de cycles d’apprentissage.&lt;br /&gt;
&lt;br /&gt;
*imgsz : taille des images (640 si vous utiliser notre python).&lt;br /&gt;
&lt;br /&gt;
*batch : nombre d’images traitées en même temps (selon le gpu).&lt;br /&gt;
&lt;br /&gt;
*patience : arrête l’entraînement si le modèle n’améliore plus ses performances&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Faites vos recherches pour remplacer les x par les bonnes valeurs selon vos besoins (dépendement, de votre nombre d&#039;images et votre application) .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Ensuite, vous exécutez la commande et votre ordinateur lance l’entraînement du modèle, ce qui peut prendre plusieurs heures selon la puissance de votre machine et la taille du dataset.Une erreur possible est que votre processeur ou votre environnement ne dispose pas des bibliothèques logicielles nécessaires pour exécuter l’entraînement. Ce problème est plus fréquent sur des ordinateurs plus anciens ou lorsque certaines dépendances ne sont pas correctement installées.&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=541</id>
		<title>Reconnaissance objet</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=541"/>
		<updated>2026-02-25T15:09:56Z</updated>

		<summary type="html">&lt;p&gt;2182036 : /* Fonctionnement global */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description du projet==&lt;br /&gt;
Le but final du projet est de détecter un objet (dans notre cas un lift) dans une image de caméra grâce à un modèle de reconnaissance d&#039;objet pré-entrainé.&lt;br /&gt;
Lorsque que le programme détectera un chariot élévateur, un gyrophare s&#039;activera pour avertir les travailleurs.&lt;br /&gt;
Le programme se trouvera dans un Raspberry pi 5, un petit ordinateur avec des entrées sorties programmables. La camera sera connectée dans celui-ci directement par USB.&lt;br /&gt;
Puisque les sorties du Raspberry pi fonctionne à 3.3 VCC, nous utilisons un petit relais pour alimenter un gyrophare 120 VCA.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Fonctionnement global===&lt;br /&gt;
&lt;br /&gt;
Pour fonctionner, le projet a trois grande étapes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. La programmation python.&#039;&#039;&#039;&lt;br /&gt;
:Le script charge un modèle .pt, applique la détection sur chaque image, affiche les boîtes englobantes avec le niveau de confiance et calcule le nombre d&#039;image par seconde moyen.&lt;br /&gt;
:Il permet aussi d’enregistrer la vidéo traitée et de compter le nombre d’objets détectés à chaque image.&lt;br /&gt;
:Ce n&#039;est pas ce programme qui est entrainé a reconnaitre un objet. Il fait seulement le paramétrer (afficher les boites, le degré de confiance et le nombre d&#039;objet détecté.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Le fichier .pt (Pré-entrainée)&#039;&#039;&#039;&lt;br /&gt;
:Un modèle YOLO déjà entraîné (.pt) est une intelligence artificielle qui a déjà appris à reconnaître certains objets grâce à un entraînement préalable sur une grande quantité d’images.Le modèle pré-entrainé c&#039;est comme le cerveau du projet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Fichier de contrôle GPIO&#039;&#039;&#039;&lt;br /&gt;
:Le Raspberry pi 5 possède plusieurs pin programmable qui doivent être contrôler à l&#039;aide d&#039;un fichier. Les pins GPIO peuvent être soit une entrée ou une sortie. Le fichier fais aussi le liens entre les variables python et les pins.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
====Création du modèle pré-entrainée====&lt;br /&gt;
&lt;br /&gt;
Pour entraîner le modèle, il faut un dataset, c’est-à-dire une collection d’images déjà annotées.&lt;br /&gt;
Il existe deux options : le créer soi-même ou en utiliser un déjà disponible en ligne.&lt;br /&gt;
Nous recommandons d’en prendre un déjà fait, car créer son propre dataset demande des milliers de photos et beaucoup de temps pour les annoter une par une.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Choisir le bon dataset&#039;&#039;&#039;&lt;br /&gt;
:Nous conseillons d&#039;utiliser la plateforme RobotFlow sur internet pour trouver un dataset.&lt;br /&gt;
:Sur Roboflow, va dans l’onglet Universe (bibliothèque publique).&lt;br /&gt;
:Recherche avec des mots-clés précis (ex : “forklift”, “helmet detection”, etc.).&lt;br /&gt;
:Vérifie le nombre d’images, la diversité des photos et la qualité des annotations.&lt;br /&gt;
:Choisis un dataset avec plusieurs centaines ou milliers d’images bien étiquetées.&lt;br /&gt;
:Une fois le bon dataset trouvé, il reste juste à le télécharger en format zip.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Préparer le dataset à l’entrainement.&#039;&#039;&#039;&lt;br /&gt;
:Une fois le fichier téléchargé, vous devez l&#039;extraire à l&#039;endroit de votre choix.&lt;br /&gt;
:Ensuite, vérifiez que le fichier contient les 3 éléments  importants: data.yaml, train, valid.&lt;br /&gt;
:Si ces 3 éléments sont présents, tout est correct.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Ajouter le Yolo de base.&#039;&#039;&#039;&lt;br /&gt;
:Yolo possède des modèles de base pré entrainés généralisé et il est nécessaire d&#039;ajouter une de ces version à notre dataset pour l’entrainement. Nous utilisons la version 11n qui est la version officielle la plus récente. Le n signifie nano. Il existe d&#039;autres modèle plus performants, mais nous avons besoin de la version la plus léger pour fonctionner avec le Raspberry pi. &lt;br /&gt;
:pour l&#039;ajouter au dataset, vous devez le télécharger à partir du site de Yolo.&lt;br /&gt;
Vous devez ensuite glisser le fichier téléchargé au même endroit que les autres fichiers énumérés à l&#039;étape 2.&lt;br /&gt;
:[[File:version_yolo.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Entrainement&#039;&#039;&#039;&lt;br /&gt;
:Il est possible de faire l’entrainement sur Windows, mais comme nous on l&#039;a fait sur Linux vous devrez faire vos recherches par vous-même pour le faire avec &lt;br /&gt;
:Windows.&lt;br /&gt;
&lt;br /&gt;
:https://www.youtube.com/watch?v=r0RspiLG260&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Pour le faire sur Linux vous devez avoir téléchargé les librairies: ultralitics, pytorch, python3, pip, opencv.&lt;br /&gt;
:Maintenant, ouvres le terminal et entrez la commande: yolo detect train model=yolo11n.pt data=data.yaml epochs=X imgsz=X batch=X patience=x&lt;br /&gt;
&lt;br /&gt;
*model : modèle de base pré-entraîné utilisé pour commencer.&lt;br /&gt;
&lt;br /&gt;
*data : fichier qui indique où sont les images et les classes.&lt;br /&gt;
&lt;br /&gt;
*epochs : nombre de cycles d’apprentissage.&lt;br /&gt;
&lt;br /&gt;
*imgsz : taille des images (640 si vous utiliser notre python).&lt;br /&gt;
&lt;br /&gt;
*batch : nombre d’images traitées en même temps (selon le gpu).&lt;br /&gt;
&lt;br /&gt;
*patience : arrête l’entraînement si le modèle n’améliore plus ses performances&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Faites vos recherches pour remplacer les x par les bonnes valeurs selon vos besoins (dépendement, de votre nombre d&#039;images et votre application) .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Ensuite, vous exécutez la commande et votre ordinateur lance l’entraînement du modèle, ce qui peut prendre plusieurs heures selon la puissance de votre machine et la taille du dataset.Une erreur possible est que votre processeur ou votre environnement ne dispose pas des bibliothèques logicielles nécessaires pour exécuter l’entraînement. Ce problème est plus fréquent sur des ordinateurs plus anciens ou lorsque certaines dépendances ne sont pas correctement installées.&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=540</id>
		<title>Reconnaissance objet</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=540"/>
		<updated>2026-02-25T15:08:31Z</updated>

		<summary type="html">&lt;p&gt;2182036 : /* Fonctionnement global */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description du projet==&lt;br /&gt;
Le but final du projet est de détecter un objet (dans notre cas un lift) dans une image de caméra grâce à un modèle de reconnaissance d&#039;objet pré-entrainé.&lt;br /&gt;
Lorsque que le programme détectera un chariot élévateur, un gyrophare s&#039;activera pour avertir les travailleurs.&lt;br /&gt;
Le programme se trouvera dans un Raspberry pi 5, un petit ordinateur avec des entrées sorties programmables. La camera sera connectée dans celui-ci directement par USB.&lt;br /&gt;
Puisque les sorties du Raspberry pi fonctionne à 3.3 VCC, nous utilisons un petit relais pour alimenter un gyrophare 120 VCA.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Fonctionnement global===&lt;br /&gt;
&lt;br /&gt;
Pour fonctionner, le projet a trois grande étapes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. La programmation python.&#039;&#039;&#039;&lt;br /&gt;
:Le script Python utilise YOLO (You Only Look Once) de Ultralytics pour détecter des objets en temps réel à partir d’une image, d’un dossier, d’une vidéo ou d’une caméra USB.&lt;br /&gt;
:Il charge un modèle .pt, applique la détection sur chaque image, affiche les boîtes englobantes avec le niveau de confiance et calcule le nombre d&#039;image par seconde moyen.&lt;br /&gt;
:Il permet aussi d’enregistrer la vidéo traitée et de compter le nombre d’objets détectés à chaque image.&lt;br /&gt;
:Ce n&#039;est pas ce programme qui est entrainé a reconnaitre un objet. Il fait seulement le paramétrer (afficher les boites, le degré de confiance et le nombre d&#039;objet détecté.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Le fichier .pt (Pré-entrainée)&#039;&#039;&#039;&lt;br /&gt;
:Un modèle YOLO déjà entraîné (.pt) est une intelligence artificielle qui a déjà appris à reconnaître certains objets grâce à un entraînement préalable sur une grande quantité d’images.Le modèle pré-entrainé c&#039;est comme le cerveau du projet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Fichier de contrôle GPIO&#039;&#039;&#039;&lt;br /&gt;
:Le Raspberry pi 5 possède plusieurs pin programmable qui doivent être contrôler à l&#039;aide d&#039;un fichier. Les pins GPIO peuvent être soit une entrée ou une sortie. Le fichier fais aussi le liens entre les variables python et les pins.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
====Création du modèle pré-entrainée====&lt;br /&gt;
&lt;br /&gt;
Pour entraîner le modèle, il faut un dataset, c’est-à-dire une collection d’images déjà annotées.&lt;br /&gt;
Il existe deux options : le créer soi-même ou en utiliser un déjà disponible en ligne.&lt;br /&gt;
Nous recommandons d’en prendre un déjà fait, car créer son propre dataset demande des milliers de photos et beaucoup de temps pour les annoter une par une.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Choisir le bon dataset&#039;&#039;&#039;&lt;br /&gt;
:Nous conseillons d&#039;utiliser la plateforme RobotFlow sur internet pour trouver un dataset.&lt;br /&gt;
:Sur Roboflow, va dans l’onglet Universe (bibliothèque publique).&lt;br /&gt;
:Recherche avec des mots-clés précis (ex : “forklift”, “helmet detection”, etc.).&lt;br /&gt;
:Vérifie le nombre d’images, la diversité des photos et la qualité des annotations.&lt;br /&gt;
:Choisis un dataset avec plusieurs centaines ou milliers d’images bien étiquetées.&lt;br /&gt;
:Une fois le bon dataset trouvé, il reste juste à le télécharger en format zip.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Préparer le dataset à l’entrainement.&#039;&#039;&#039;&lt;br /&gt;
:Une fois le fichier téléchargé, vous devez l&#039;extraire à l&#039;endroit de votre choix.&lt;br /&gt;
:Ensuite, vérifiez que le fichier contient les 3 éléments  importants: data.yaml, train, valid.&lt;br /&gt;
:Si ces 3 éléments sont présents, tout est correct.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Ajouter le Yolo de base.&#039;&#039;&#039;&lt;br /&gt;
:Yolo possède des modèles de base pré entrainés généralisé et il est nécessaire d&#039;ajouter une de ces version à notre dataset pour l’entrainement. Nous utilisons la version 11n qui est la version officielle la plus récente. Le n signifie nano. Il existe d&#039;autres modèle plus performants, mais nous avons besoin de la version la plus léger pour fonctionner avec le Raspberry pi. &lt;br /&gt;
:pour l&#039;ajouter au dataset, vous devez le télécharger à partir du site de Yolo.&lt;br /&gt;
Vous devez ensuite glisser le fichier téléchargé au même endroit que les autres fichiers énumérés à l&#039;étape 2.&lt;br /&gt;
:[[File:version_yolo.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Entrainement&#039;&#039;&#039;&lt;br /&gt;
:Il est possible de faire l’entrainement sur Windows, mais comme nous on l&#039;a fait sur Linux vous devrez faire vos recherches par vous-même pour le faire avec &lt;br /&gt;
:Windows.&lt;br /&gt;
&lt;br /&gt;
:https://www.youtube.com/watch?v=r0RspiLG260&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Pour le faire sur Linux vous devez avoir téléchargé les librairies: ultralitics, pytorch, python3, pip, opencv.&lt;br /&gt;
:Maintenant, ouvres le terminal et entrez la commande: yolo detect train model=yolo11n.pt data=data.yaml epochs=X imgsz=X batch=X patience=x&lt;br /&gt;
&lt;br /&gt;
*model : modèle de base pré-entraîné utilisé pour commencer.&lt;br /&gt;
&lt;br /&gt;
*data : fichier qui indique où sont les images et les classes.&lt;br /&gt;
&lt;br /&gt;
*epochs : nombre de cycles d’apprentissage.&lt;br /&gt;
&lt;br /&gt;
*imgsz : taille des images (640 si vous utiliser notre python).&lt;br /&gt;
&lt;br /&gt;
*batch : nombre d’images traitées en même temps (selon le gpu).&lt;br /&gt;
&lt;br /&gt;
*patience : arrête l’entraînement si le modèle n’améliore plus ses performances&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Faites vos recherches pour remplacer les x par les bonnes valeurs selon vos besoins (dépendement, de votre nombre d&#039;images et votre application) .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Ensuite, vous exécutez la commande et votre ordinateur lance l’entraînement du modèle, ce qui peut prendre plusieurs heures selon la puissance de votre machine et la taille du dataset.Une erreur possible est que votre processeur ou votre environnement ne dispose pas des bibliothèques logicielles nécessaires pour exécuter l’entraînement. Ce problème est plus fréquent sur des ordinateurs plus anciens ou lorsque certaines dépendances ne sont pas correctement installées.&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=539</id>
		<title>Reconnaissance objet</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=539"/>
		<updated>2026-02-25T15:07:58Z</updated>

		<summary type="html">&lt;p&gt;2182036 : /* Fonctionnement global */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description du projet==&lt;br /&gt;
Le but final du projet est de détecter un objet (dans notre cas un lift) dans une image de caméra grâce à un modèle de reconnaissance d&#039;objet pré-entrainé.&lt;br /&gt;
Lorsque que le programme détectera un chariot élévateur, un gyrophare s&#039;activera pour avertir les travailleurs.&lt;br /&gt;
Le programme se trouvera dans un Raspberry pi 5, un petit ordinateur avec des entrées sorties programmables. La camera sera connectée dans celui-ci directement par USB.&lt;br /&gt;
Puisque les sorties du Raspberry pi fonctionne à 3.3 VCC, nous utilisons un petit relais pour alimenter un gyrophare 120 VCA.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Fonctionnement global===&lt;br /&gt;
&lt;br /&gt;
Pour fonctionner, le projet a trois grande étapes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. La programmation python.&#039;&#039;&#039;&lt;br /&gt;
:Le script Python utilise YOLO (You Only Look Once) de Ultralytics pour détecter des objets en temps réel à partir d’une image, d’un dossier, d’une vidéo ou d’une caméra USB.&lt;br /&gt;
:Il charge un modèle .pt, applique la détection sur chaque image, affiche les boîtes englobantes avec le niveau de confiance et calcule le nombre d&#039;image par seconde moyen.&lt;br /&gt;
:Il permet aussi d’enregistrer la vidéo traitée et de compter le nombre d’objets détectés à chaque image.&lt;br /&gt;
:Ce n&#039;est pas ce programme qui est entrainé a reconnaitre un lift. Il fait seulement le paramétrer (afficher les boites, le degré de confiance et le nombre d&#039;objet détecté.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Le fichier .pt (Pré-entrainée)&#039;&#039;&#039;&lt;br /&gt;
:Un modèle YOLO déjà entraîné (.pt) est une intelligence artificielle qui a déjà appris à reconnaître certains objets grâce à un entraînement préalable sur une grande quantité d’images.Le modèle pré-entrainé c&#039;est comme le cerveau du projet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Fichier de contrôle GPIO&#039;&#039;&#039;&lt;br /&gt;
:Le Raspberry pi 5 possède plusieurs pin programmable qui doivent être contrôler à l&#039;aide d&#039;un fichier. Les pins GPIO peuvent être soit une entrée ou une sortie. Le fichier fais aussi le liens entre les variables python et les pins.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
====Création du modèle pré-entrainée====&lt;br /&gt;
&lt;br /&gt;
Pour entraîner le modèle, il faut un dataset, c’est-à-dire une collection d’images déjà annotées.&lt;br /&gt;
Il existe deux options : le créer soi-même ou en utiliser un déjà disponible en ligne.&lt;br /&gt;
Nous recommandons d’en prendre un déjà fait, car créer son propre dataset demande des milliers de photos et beaucoup de temps pour les annoter une par une.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Choisir le bon dataset&#039;&#039;&#039;&lt;br /&gt;
:Nous conseillons d&#039;utiliser la plateforme RobotFlow sur internet pour trouver un dataset.&lt;br /&gt;
:Sur Roboflow, va dans l’onglet Universe (bibliothèque publique).&lt;br /&gt;
:Recherche avec des mots-clés précis (ex : “forklift”, “helmet detection”, etc.).&lt;br /&gt;
:Vérifie le nombre d’images, la diversité des photos et la qualité des annotations.&lt;br /&gt;
:Choisis un dataset avec plusieurs centaines ou milliers d’images bien étiquetées.&lt;br /&gt;
:Une fois le bon dataset trouvé, il reste juste à le télécharger en format zip.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Préparer le dataset à l’entrainement.&#039;&#039;&#039;&lt;br /&gt;
:Une fois le fichier téléchargé, vous devez l&#039;extraire à l&#039;endroit de votre choix.&lt;br /&gt;
:Ensuite, vérifiez que le fichier contient les 3 éléments  importants: data.yaml, train, valid.&lt;br /&gt;
:Si ces 3 éléments sont présents, tout est correct.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Ajouter le Yolo de base.&#039;&#039;&#039;&lt;br /&gt;
:Yolo possède des modèles de base pré entrainés généralisé et il est nécessaire d&#039;ajouter une de ces version à notre dataset pour l’entrainement. Nous utilisons la version 11n qui est la version officielle la plus récente. Le n signifie nano. Il existe d&#039;autres modèle plus performants, mais nous avons besoin de la version la plus léger pour fonctionner avec le Raspberry pi. &lt;br /&gt;
:pour l&#039;ajouter au dataset, vous devez le télécharger à partir du site de Yolo.&lt;br /&gt;
Vous devez ensuite glisser le fichier téléchargé au même endroit que les autres fichiers énumérés à l&#039;étape 2.&lt;br /&gt;
:[[File:version_yolo.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Entrainement&#039;&#039;&#039;&lt;br /&gt;
:Il est possible de faire l’entrainement sur Windows, mais comme nous on l&#039;a fait sur Linux vous devrez faire vos recherches par vous-même pour le faire avec &lt;br /&gt;
:Windows.&lt;br /&gt;
&lt;br /&gt;
:https://www.youtube.com/watch?v=r0RspiLG260&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Pour le faire sur Linux vous devez avoir téléchargé les librairies: ultralitics, pytorch, python3, pip, opencv.&lt;br /&gt;
:Maintenant, ouvres le terminal et entrez la commande: yolo detect train model=yolo11n.pt data=data.yaml epochs=X imgsz=X batch=X patience=x&lt;br /&gt;
&lt;br /&gt;
*model : modèle de base pré-entraîné utilisé pour commencer.&lt;br /&gt;
&lt;br /&gt;
*data : fichier qui indique où sont les images et les classes.&lt;br /&gt;
&lt;br /&gt;
*epochs : nombre de cycles d’apprentissage.&lt;br /&gt;
&lt;br /&gt;
*imgsz : taille des images (640 si vous utiliser notre python).&lt;br /&gt;
&lt;br /&gt;
*batch : nombre d’images traitées en même temps (selon le gpu).&lt;br /&gt;
&lt;br /&gt;
*patience : arrête l’entraînement si le modèle n’améliore plus ses performances&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Faites vos recherches pour remplacer les x par les bonnes valeurs selon vos besoins (dépendement, de votre nombre d&#039;images et votre application) .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Ensuite, vous exécutez la commande et votre ordinateur lance l’entraînement du modèle, ce qui peut prendre plusieurs heures selon la puissance de votre machine et la taille du dataset.Une erreur possible est que votre processeur ou votre environnement ne dispose pas des bibliothèques logicielles nécessaires pour exécuter l’entraînement. Ce problème est plus fréquent sur des ordinateurs plus anciens ou lorsque certaines dépendances ne sont pas correctement installées.&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=538</id>
		<title>Reconnaissance objet</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=538"/>
		<updated>2026-02-25T15:07:06Z</updated>

		<summary type="html">&lt;p&gt;2182036 : /* Description du projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description du projet==&lt;br /&gt;
Le but final du projet est de détecter un objet (dans notre cas un lift) dans une image de caméra grâce à un modèle de reconnaissance d&#039;objet pré-entrainé.&lt;br /&gt;
Lorsque que le programme détectera un chariot élévateur, un gyrophare s&#039;activera pour avertir les travailleurs.&lt;br /&gt;
Le programme se trouvera dans un Raspberry pi 5, un petit ordinateur avec des entrées sorties programmables. La camera sera connectée dans celui-ci directement par USB.&lt;br /&gt;
Puisque les sorties du Raspberry pi fonctionne à 3.3 VCC, nous utilisons un petit relais pour alimenter un gyrophare 120 VCA.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Fonctionnement global===&lt;br /&gt;
&lt;br /&gt;
Pour fonctionner, le projet a trois grande étapes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. La programmation python.&#039;&#039;&#039;&lt;br /&gt;
:Le script Python utilise YOLO (You Only Look Once) de Ultralytics pour détecter des objets en temps réel à partir d’une image, d’un dossier, d’une vidéo ou d’une caméra USB.&lt;br /&gt;
:Il charge un modèle .pt, applique l’inférence sur chaque frame, affiche les boîtes englobantes avec le niveau de confiance et calcule le nombre d&#039;image par seconde moyen.&lt;br /&gt;
:Il permet aussi d’enregistrer la vidéo traitée et de compter le nombre d’objets détectés à chaque image.&lt;br /&gt;
:Ce n&#039;est pas ce programme qui est entrainé a reconnaitre un lift. Il fait seulement le paramétrer (afficher les boites, le degré de confiance et le nombre d&#039;objet détecté.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Le fichier .pt (Pré-entrainée)&#039;&#039;&#039;&lt;br /&gt;
:Un modèle YOLO déjà entraîné (.pt) est une intelligence artificielle qui a déjà appris à reconnaître certains objets grâce à un entraînement préalable sur une grande quantité d’images.Le modèle pré-entrainé c&#039;est comme le cerveau du projet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Fichier de contrôle GPIO&#039;&#039;&#039;&lt;br /&gt;
:Le Raspberry pi 5 possède plusieurs pin programmable qui doivent être contrôler à l&#039;aide d&#039;un fichier. Les pins GPIO peuvent être soit une entrée ou une sortie. Le fichier fais aussi le liens entre les variables python et les pins.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
====Création du modèle pré-entrainée====&lt;br /&gt;
&lt;br /&gt;
Pour entraîner le modèle, il faut un dataset, c’est-à-dire une collection d’images déjà annotées.&lt;br /&gt;
Il existe deux options : le créer soi-même ou en utiliser un déjà disponible en ligne.&lt;br /&gt;
Nous recommandons d’en prendre un déjà fait, car créer son propre dataset demande des milliers de photos et beaucoup de temps pour les annoter une par une.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Choisir le bon dataset&#039;&#039;&#039;&lt;br /&gt;
:Nous conseillons d&#039;utiliser la plateforme RobotFlow sur internet pour trouver un dataset.&lt;br /&gt;
:Sur Roboflow, va dans l’onglet Universe (bibliothèque publique).&lt;br /&gt;
:Recherche avec des mots-clés précis (ex : “forklift”, “helmet detection”, etc.).&lt;br /&gt;
:Vérifie le nombre d’images, la diversité des photos et la qualité des annotations.&lt;br /&gt;
:Choisis un dataset avec plusieurs centaines ou milliers d’images bien étiquetées.&lt;br /&gt;
:Une fois le bon dataset trouvé, il reste juste à le télécharger en format zip.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Préparer le dataset à l’entrainement.&#039;&#039;&#039;&lt;br /&gt;
:Une fois le fichier téléchargé, vous devez l&#039;extraire à l&#039;endroit de votre choix.&lt;br /&gt;
:Ensuite, vérifiez que le fichier contient les 3 éléments  importants: data.yaml, train, valid.&lt;br /&gt;
:Si ces 3 éléments sont présents, tout est correct.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Ajouter le Yolo de base.&#039;&#039;&#039;&lt;br /&gt;
:Yolo possède des modèles de base pré entrainés généralisé et il est nécessaire d&#039;ajouter une de ces version à notre dataset pour l’entrainement. Nous utilisons la version 11n qui est la version officielle la plus récente. Le n signifie nano. Il existe d&#039;autres modèle plus performants, mais nous avons besoin de la version la plus léger pour fonctionner avec le Raspberry pi. &lt;br /&gt;
:pour l&#039;ajouter au dataset, vous devez le télécharger à partir du site de Yolo.&lt;br /&gt;
Vous devez ensuite glisser le fichier téléchargé au même endroit que les autres fichiers énumérés à l&#039;étape 2.&lt;br /&gt;
:[[File:version_yolo.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Entrainement&#039;&#039;&#039;&lt;br /&gt;
:Il est possible de faire l’entrainement sur Windows, mais comme nous on l&#039;a fait sur Linux vous devrez faire vos recherches par vous-même pour le faire avec &lt;br /&gt;
:Windows.&lt;br /&gt;
&lt;br /&gt;
:https://www.youtube.com/watch?v=r0RspiLG260&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Pour le faire sur Linux vous devez avoir téléchargé les librairies: ultralitics, pytorch, python3, pip, opencv.&lt;br /&gt;
:Maintenant, ouvres le terminal et entrez la commande: yolo detect train model=yolo11n.pt data=data.yaml epochs=X imgsz=X batch=X patience=x&lt;br /&gt;
&lt;br /&gt;
*model : modèle de base pré-entraîné utilisé pour commencer.&lt;br /&gt;
&lt;br /&gt;
*data : fichier qui indique où sont les images et les classes.&lt;br /&gt;
&lt;br /&gt;
*epochs : nombre de cycles d’apprentissage.&lt;br /&gt;
&lt;br /&gt;
*imgsz : taille des images (640 si vous utiliser notre python).&lt;br /&gt;
&lt;br /&gt;
*batch : nombre d’images traitées en même temps (selon le gpu).&lt;br /&gt;
&lt;br /&gt;
*patience : arrête l’entraînement si le modèle n’améliore plus ses performances&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Faites vos recherches pour remplacer les x par les bonnes valeurs selon vos besoins (dépendement, de votre nombre d&#039;images et votre application) .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Ensuite, vous exécutez la commande et votre ordinateur lance l’entraînement du modèle, ce qui peut prendre plusieurs heures selon la puissance de votre machine et la taille du dataset.Une erreur possible est que votre processeur ou votre environnement ne dispose pas des bibliothèques logicielles nécessaires pour exécuter l’entraînement. Ce problème est plus fréquent sur des ordinateurs plus anciens ou lorsque certaines dépendances ne sont pas correctement installées.&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=537</id>
		<title>Reconnaissance objet</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=537"/>
		<updated>2026-02-25T15:06:09Z</updated>

		<summary type="html">&lt;p&gt;2182036 : /* Description du projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description du projet==&lt;br /&gt;
Le but final du projet est de détecter un objet (dans notre cas un lift) dans une image de caméra grâce à un modèle de reconnaissance d&#039;objet pré-entrainé.&lt;br /&gt;
Lorsque que le programme détectera un chariot élévateur, un gyrophare s&#039;activera pour avertir les travailleurs.&lt;br /&gt;
Le programme se trouvera dans un Raspberry pi 5, un petit ordinateur avec des entrées sorties programmables. La camera sera connectée dans celui-ci directement par USB.&lt;br /&gt;
Puisque les &amp;lt;&amp;lt; i/o &amp;gt;&amp;gt; du Raspberry pi fonctionne à 3.3v, nous utilisons un petit relais pour alimenter le gyrophare.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Fonctionnement global===&lt;br /&gt;
&lt;br /&gt;
Pour fonctionner, le projet a trois grande étapes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. La programmation python.&#039;&#039;&#039;&lt;br /&gt;
:Le script Python utilise YOLO (You Only Look Once) de Ultralytics pour détecter des objets en temps réel à partir d’une image, d’un dossier, d’une vidéo ou d’une caméra USB.&lt;br /&gt;
:Il charge un modèle .pt, applique l’inférence sur chaque frame, affiche les boîtes englobantes avec le niveau de confiance et calcule le nombre d&#039;image par seconde moyen.&lt;br /&gt;
:Il permet aussi d’enregistrer la vidéo traitée et de compter le nombre d’objets détectés à chaque image.&lt;br /&gt;
:Ce n&#039;est pas ce programme qui est entrainé a reconnaitre un lift. Il fait seulement le paramétrer (afficher les boites, le degré de confiance et le nombre d&#039;objet détecté.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Le fichier .pt (Pré-entrainée)&#039;&#039;&#039;&lt;br /&gt;
:Un modèle YOLO déjà entraîné (.pt) est une intelligence artificielle qui a déjà appris à reconnaître certains objets grâce à un entraînement préalable sur une grande quantité d’images.Le modèle pré-entrainé c&#039;est comme le cerveau du projet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Fichier de contrôle GPIO&#039;&#039;&#039;&lt;br /&gt;
:Le Raspberry pi 5 possède plusieurs pin programmable qui doivent être contrôler à l&#039;aide d&#039;un fichier. Les pins GPIO peuvent être soit une entrée ou une sortie. Le fichier fais aussi le liens entre les variables python et les pins.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
====Création du modèle pré-entrainée====&lt;br /&gt;
&lt;br /&gt;
Pour entraîner le modèle, il faut un dataset, c’est-à-dire une collection d’images déjà annotées.&lt;br /&gt;
Il existe deux options : le créer soi-même ou en utiliser un déjà disponible en ligne.&lt;br /&gt;
Nous recommandons d’en prendre un déjà fait, car créer son propre dataset demande des milliers de photos et beaucoup de temps pour les annoter une par une.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Choisir le bon dataset&#039;&#039;&#039;&lt;br /&gt;
:Nous conseillons d&#039;utiliser la plateforme RobotFlow sur internet pour trouver un dataset.&lt;br /&gt;
:Sur Roboflow, va dans l’onglet Universe (bibliothèque publique).&lt;br /&gt;
:Recherche avec des mots-clés précis (ex : “forklift”, “helmet detection”, etc.).&lt;br /&gt;
:Vérifie le nombre d’images, la diversité des photos et la qualité des annotations.&lt;br /&gt;
:Choisis un dataset avec plusieurs centaines ou milliers d’images bien étiquetées.&lt;br /&gt;
:Une fois le bon dataset trouvé, il reste juste à le télécharger en format zip.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Préparer le dataset à l’entrainement.&#039;&#039;&#039;&lt;br /&gt;
:Une fois le fichier téléchargé, vous devez l&#039;extraire à l&#039;endroit de votre choix.&lt;br /&gt;
:Ensuite, vérifiez que le fichier contient les 3 éléments  importants: data.yaml, train, valid.&lt;br /&gt;
:Si ces 3 éléments sont présents, tout est correct.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Ajouter le Yolo de base.&#039;&#039;&#039;&lt;br /&gt;
:Yolo possède des modèles de base pré entrainés généralisé et il est nécessaire d&#039;ajouter une de ces version à notre dataset pour l’entrainement. Nous utilisons la version 11n qui est la version officielle la plus récente. Le n signifie nano. Il existe d&#039;autres modèle plus performants, mais nous avons besoin de la version la plus léger pour fonctionner avec le Raspberry pi. &lt;br /&gt;
:pour l&#039;ajouter au dataset, vous devez le télécharger à partir du site de Yolo.&lt;br /&gt;
Vous devez ensuite glisser le fichier téléchargé au même endroit que les autres fichiers énumérés à l&#039;étape 2.&lt;br /&gt;
:[[File:version_yolo.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Entrainement&#039;&#039;&#039;&lt;br /&gt;
:Il est possible de faire l’entrainement sur Windows, mais comme nous on l&#039;a fait sur Linux vous devrez faire vos recherches par vous-même pour le faire avec &lt;br /&gt;
:Windows.&lt;br /&gt;
&lt;br /&gt;
:https://www.youtube.com/watch?v=r0RspiLG260&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Pour le faire sur Linux vous devez avoir téléchargé les librairies: ultralitics, pytorch, python3, pip, opencv.&lt;br /&gt;
:Maintenant, ouvres le terminal et entrez la commande: yolo detect train model=yolo11n.pt data=data.yaml epochs=X imgsz=X batch=X patience=x&lt;br /&gt;
&lt;br /&gt;
*model : modèle de base pré-entraîné utilisé pour commencer.&lt;br /&gt;
&lt;br /&gt;
*data : fichier qui indique où sont les images et les classes.&lt;br /&gt;
&lt;br /&gt;
*epochs : nombre de cycles d’apprentissage.&lt;br /&gt;
&lt;br /&gt;
*imgsz : taille des images (640 si vous utiliser notre python).&lt;br /&gt;
&lt;br /&gt;
*batch : nombre d’images traitées en même temps (selon le gpu).&lt;br /&gt;
&lt;br /&gt;
*patience : arrête l’entraînement si le modèle n’améliore plus ses performances&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Faites vos recherches pour remplacer les x par les bonnes valeurs selon vos besoins (dépendement, de votre nombre d&#039;images et votre application) .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Ensuite, vous exécutez la commande et votre ordinateur lance l’entraînement du modèle, ce qui peut prendre plusieurs heures selon la puissance de votre machine et la taille du dataset.Une erreur possible est que votre processeur ou votre environnement ne dispose pas des bibliothèques logicielles nécessaires pour exécuter l’entraînement. Ce problème est plus fréquent sur des ordinateurs plus anciens ou lorsque certaines dépendances ne sont pas correctement installées.&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
	<entry>
		<id>https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=536</id>
		<title>Reconnaissance objet</title>
		<link rel="alternate" type="text/html" href="https://wiki.tge.cegeplabs.qc.ca/index.php?title=Reconnaissance_objet&amp;diff=536"/>
		<updated>2026-02-25T15:05:08Z</updated>

		<summary type="html">&lt;p&gt;2182036 : /* Description du projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description du projet==&lt;br /&gt;
Le but final du projet est de détecter un objet (dans notre cas un lift) dans une image de caméra grâce à un modèle de reconnaissance d&#039;objet pré-entrainé.&lt;br /&gt;
Lorsque que le programme détectera un chariot élévateur, un gyrophare s&#039;activera pour avertir les travailleurs.&lt;br /&gt;
Le programme se trouvera dans un Raspberry pi 5, un petit ordinateur avec des entrées sorties programmables. La camera sera connectée dans celui-ci directement par USB.&lt;br /&gt;
Puisque les &amp;lt;&amp;lt;i/o&amp;gt;&amp;gt; du Raspberry pi fonctionne à 3.3v, nous utilisons un petit relais pour alimenter le gyrophare.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Fonctionnement global===&lt;br /&gt;
&lt;br /&gt;
Pour fonctionner, le projet a trois grande étapes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. La programmation python.&#039;&#039;&#039;&lt;br /&gt;
:Le script Python utilise YOLO (You Only Look Once) de Ultralytics pour détecter des objets en temps réel à partir d’une image, d’un dossier, d’une vidéo ou d’une caméra USB.&lt;br /&gt;
:Il charge un modèle .pt, applique l’inférence sur chaque frame, affiche les boîtes englobantes avec le niveau de confiance et calcule le nombre d&#039;image par seconde moyen.&lt;br /&gt;
:Il permet aussi d’enregistrer la vidéo traitée et de compter le nombre d’objets détectés à chaque image.&lt;br /&gt;
:Ce n&#039;est pas ce programme qui est entrainé a reconnaitre un lift. Il fait seulement le paramétrer (afficher les boites, le degré de confiance et le nombre d&#039;objet détecté.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Le fichier .pt (Pré-entrainée)&#039;&#039;&#039;&lt;br /&gt;
:Un modèle YOLO déjà entraîné (.pt) est une intelligence artificielle qui a déjà appris à reconnaître certains objets grâce à un entraînement préalable sur une grande quantité d’images.Le modèle pré-entrainé c&#039;est comme le cerveau du projet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Fichier de contrôle GPIO&#039;&#039;&#039;&lt;br /&gt;
:Le Raspberry pi 5 possède plusieurs pin programmable qui doivent être contrôler à l&#039;aide d&#039;un fichier. Les pins GPIO peuvent être soit une entrée ou une sortie. Le fichier fais aussi le liens entre les variables python et les pins.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
====Création du modèle pré-entrainée====&lt;br /&gt;
&lt;br /&gt;
Pour entraîner le modèle, il faut un dataset, c’est-à-dire une collection d’images déjà annotées.&lt;br /&gt;
Il existe deux options : le créer soi-même ou en utiliser un déjà disponible en ligne.&lt;br /&gt;
Nous recommandons d’en prendre un déjà fait, car créer son propre dataset demande des milliers de photos et beaucoup de temps pour les annoter une par une.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Choisir le bon dataset&#039;&#039;&#039;&lt;br /&gt;
:Nous conseillons d&#039;utiliser la plateforme RobotFlow sur internet pour trouver un dataset.&lt;br /&gt;
:Sur Roboflow, va dans l’onglet Universe (bibliothèque publique).&lt;br /&gt;
:Recherche avec des mots-clés précis (ex : “forklift”, “helmet detection”, etc.).&lt;br /&gt;
:Vérifie le nombre d’images, la diversité des photos et la qualité des annotations.&lt;br /&gt;
:Choisis un dataset avec plusieurs centaines ou milliers d’images bien étiquetées.&lt;br /&gt;
:Une fois le bon dataset trouvé, il reste juste à le télécharger en format zip.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Préparer le dataset à l’entrainement.&#039;&#039;&#039;&lt;br /&gt;
:Une fois le fichier téléchargé, vous devez l&#039;extraire à l&#039;endroit de votre choix.&lt;br /&gt;
:Ensuite, vérifiez que le fichier contient les 3 éléments  importants: data.yaml, train, valid.&lt;br /&gt;
:Si ces 3 éléments sont présents, tout est correct.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Ajouter le Yolo de base.&#039;&#039;&#039;&lt;br /&gt;
:Yolo possède des modèles de base pré entrainés généralisé et il est nécessaire d&#039;ajouter une de ces version à notre dataset pour l’entrainement. Nous utilisons la version 11n qui est la version officielle la plus récente. Le n signifie nano. Il existe d&#039;autres modèle plus performants, mais nous avons besoin de la version la plus léger pour fonctionner avec le Raspberry pi. &lt;br /&gt;
:pour l&#039;ajouter au dataset, vous devez le télécharger à partir du site de Yolo.&lt;br /&gt;
Vous devez ensuite glisser le fichier téléchargé au même endroit que les autres fichiers énumérés à l&#039;étape 2.&lt;br /&gt;
:[[File:version_yolo.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Entrainement&#039;&#039;&#039;&lt;br /&gt;
:Il est possible de faire l’entrainement sur Windows, mais comme nous on l&#039;a fait sur Linux vous devrez faire vos recherches par vous-même pour le faire avec &lt;br /&gt;
:Windows.&lt;br /&gt;
&lt;br /&gt;
:https://www.youtube.com/watch?v=r0RspiLG260&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Pour le faire sur Linux vous devez avoir téléchargé les librairies: ultralitics, pytorch, python3, pip, opencv.&lt;br /&gt;
:Maintenant, ouvres le terminal et entrez la commande: yolo detect train model=yolo11n.pt data=data.yaml epochs=X imgsz=X batch=X patience=x&lt;br /&gt;
&lt;br /&gt;
*model : modèle de base pré-entraîné utilisé pour commencer.&lt;br /&gt;
&lt;br /&gt;
*data : fichier qui indique où sont les images et les classes.&lt;br /&gt;
&lt;br /&gt;
*epochs : nombre de cycles d’apprentissage.&lt;br /&gt;
&lt;br /&gt;
*imgsz : taille des images (640 si vous utiliser notre python).&lt;br /&gt;
&lt;br /&gt;
*batch : nombre d’images traitées en même temps (selon le gpu).&lt;br /&gt;
&lt;br /&gt;
*patience : arrête l’entraînement si le modèle n’améliore plus ses performances&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Faites vos recherches pour remplacer les x par les bonnes valeurs selon vos besoins (dépendement, de votre nombre d&#039;images et votre application) .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Ensuite, vous exécutez la commande et votre ordinateur lance l’entraînement du modèle, ce qui peut prendre plusieurs heures selon la puissance de votre machine et la taille du dataset.Une erreur possible est que votre processeur ou votre environnement ne dispose pas des bibliothèques logicielles nécessaires pour exécuter l’entraînement. Ce problème est plus fréquent sur des ordinateurs plus anciens ou lorsque certaines dépendances ne sont pas correctement installées.&lt;/div&gt;</summary>
		<author><name>2182036</name></author>
	</entry>
</feed>