You are on page 1of 219

République Tunisienne

Ministère de l’Enseignement Supérieur


et de la Recherche Scientifique

Université de Carthage

INSTITUT DES HAUTES ETUDES COMMERCIALES DE


CARTHAGE

Rapport de Projet de Fin d’Études

Présenté en vue de l’obtention du

Diplôme National de Licence en Business Intelligence


Spécialité : Business Intelligence

Par

Amira Karoui

Systeme d’inspection de pylone avec drone


intelligent

Encadrant professionnel : Mr. Mourad ben Mna


Encadrant académique : Mme. Jihene Tounsi

Réalisé au sein de SOTETEL

Année Universitaire 2022 - 2023


République Tunisienne

Ministère de l’Enseignement Supérieur


et de la Recherche Scientifique

Université de Carthage

INSTITUT DES HAUTES ETUDES COMMERCIALES DE


CARTHAGE

Rapport de Projet de Fin d’Études

Présenté en vue de l’obtention du

Diplôme National de Licence en Business Intelligence


Spécialité : Business Intelligence

Par

Amira Karoui

Systeme d’inspection de pylone avec drone


intelligent

Encadrant professionnel : Mr. Mourad ben Mna


Encadrant académique : Mme. Jihene Tounsi

Réalisé au sein de SOTETEL

Année Universitaire 2022 - 2023


J’autorise l’étudiant à faire le dépôt de son rapport de stage en vue d’une soutenance.

Encadrant professionnel, Mr. Mourad ben Mna

Signature et cachet

J’autorise l’étudiant à faire le dépôt de son rapport de stage en vue d’une soutenance.

Encadrant académique, Mme. Jihene Tounsi

Signature

i
Remerciements

D’abord et avant tout, je veux exprimer ma gratitude envers Dieu. Il a été notre soutien constant

et notre guide tout au long de ce projet. Malgré les problèmes graves que nous avons rencontrés, comme

l’explosion de la batterie et les défis de santé qui nous ont surpris, Sa présence nous a aidé à trouver des

solutions. Il était là, à chaque étape, toujours avec nous, nous guidant dans les moments difficiles. Chaque

difficulté surmontée, chaque succès atteint, nous le devons à Sa bonté sans fin. C’est donc avec une grande

humilité et reconnaissance que je dis : Hamdullah.

C’est avec une émotion bouleversante et un amour infini que je prends la plume pour rendre hommage

aux piliers de ma vie, mes parents, Achwek Tabessi et Jalel Karoui. Votre amour, aussi vaste que l’univers, a

été mon abri contre chaque tempête. Votre soutien, aussi solide que le plus grand des chênes, m’a permis de

me hisser vers les cimes les plus élevées. Vous êtes la symphonie douce-amère de mon existence, les artisans

dévoués de mon succès.

Mon affection pour mes frères et sœurs, Aziz et Olfa Karoui, est aussi profonde que l’océan et aussi

brillante que la constellation la plus lumineuse. Aziz, ta présence dans ma vie a été aussi rassurante qu’un

phare dans la nuit. Olfa, ta force et ta tendresse m’ont enveloppé comme une écharpe de soie, me gardant au

chaud dans les moments les plus froids. Et Selim, ton innocence est un baume apaisant, une source constante

de joie et de tendresse.

Je tiens à exprimer ma profonde gratitude envers mes grands-parents, Laila et Aroussi Tabassi, ainsi

que mes oncles Brahim Tabassi, Marwen Tabassi et ma tante Jnaina Tabassi. Votre amour inconditionnel,

votre soutien constant et votre présence bienveillante ont été des piliers dans ma vie. Vous avez été mes guides,

mes confidents et mes sources d’inspiration tout au long de ce parcours. Votre sagesse, votre générosité et

votre soutien ont été des trésors précieux qui ont nourri mon développement personnel. Je suis profondément

reconnaissante d’avoir été entourée d’une famille aussi aimante et solidaire. Merci du fond du cœur pour votre

amour et votre soutien indéfectibles.

Mes encadrants, Mourad Ben Mna et Jihene Tounsi, ont été les sculpteurs de ce rêve qui a pris

forme sous mes mains. Votre mentorat a été une danse de passion, de persévérance et de dévouement. Votre

confiance en moi a éveillé en moi un feu d’ambition qui brûle toujours.

Ma gratitude infinie est dirigée vers M. Faouzi Saidi, Directeur Commercial de SOTETEL, et son fils,

des figures inspirantes qui ont gravé une empreinte indélébile sur mon parcours. M. Saidi, votre leadership

et votre soutien ont été le vent qui a propulsé mon voilier vers des horizons inexplorés. Et à Faouzi, son

ii
fils, ton amitié et ta motivation ont été un réconfort et une source d’inspiration précieuse. Je vous remercie

profondément.

À mon équipe DroneVision, Chayma Zaouali et Oussama Cherni, je dédie ces mots avec une affection

profonde et un amour indéfectible. Nous avons navigué ensemble à travers des mers tumultueuses, traversé

des tempêtes sombres et célébré sous des cieux étoilés de gloire. Nous avons partagé des rires joyeux et

essuyé des larmes amères, bravé des nuits blanches et surmonté des défis de santé. Nos sacrifices ont tissé une

étoffe de persévérance et de dévouement. Chaque obstacle que nous avons rencontré a renforcé la soudure de

notre équipe, chaque défi a aiguisé notre détermination. Notre voyage ensemble a été une danse de passion

et d’amour, une symphonie de dévouement et d’ambition. Votre camaraderie a été une lueur d’espoir dans

les moments sombres, votre soutien, un baume apaisant dans les moments de doute. Ensemble, nous avons

créé quelque chose de beau, une œuvre d’art qui continuera à résonner dans mon cœur pour toujours. Merci

pour votre dévouement inébranlable, votre persévérance indomptable et votre amour inconditionnel. Je tiens

également à remercier Chaima Memi pour son amitié indéfectible et son soutien constant.

Je souhaite adresser un remerciement tout particulier à Oussama Cherni pour son soutien constant

lors des moments difficiles. Ta présence bienveillante et ton soutien indéfectible ont été une véritable bouée

de sauvetage pendant les épreuves auxquelles j’ai dû faire face. Tu as été un roc solide sur lequel je me

suis appuyé, m’encourageant à persévérer et à dépasser mes limites. Ta confiance en moi et ton soutien

inconditionnel ont été une source d’inspiration et de force inestimable. Je suis profondément reconnaissante

d’avoir eu la chance de t’avoir à mes côtés et je te remercie du fond du cœur pour ton soutien sans faille.

Je souhaite adresser un remerciement sincère et rempli d’amour à ma meilleure amie, Chayma Zaouali.

Tu as été bien plus qu’une amie dans ma vie, tu as été ma confidente, ma complice et ma source d’inspiration.

Ta présence lumineuse et ton soutien inconditionnel ont été un cadeau précieux qui a illuminé mon parcours.

Tu as été là pour moi dans les moments de joie et de tristesse, dans les hauts et les bas, toujours prête à

m’écouter, à me comprendre et à me soutenir. Tu as su partager mes rires et mes larmes, mes victoires et

mes défis. Je suis profondément reconnaissante d’avoir une amie aussi merveilleuse et aimante que toi. Merci

du fond du cœur pour ton amitié précieuse, ta présence réconfortante et ton amour inébranlable.

Je tiens à adresser un remerciement spécial à Chayma Zaouali, Oussama Cherni, Chaima Memi, Aicha

Zaouali, Samir Koched, Med Salah Meddeb, Amine Mhadhbi, Anas Arayedh et Malek Ziedi. Votre présence

dans ma vie a été une bénédiction inestimable, un soutien indéfectible et une source infinie d’inspiration.

Votre amitié précieuse, vos conseils avisés et votre encouragement constant ont été des facteurs déterminants

dans la réussite de ce projet. Vous avez été des piliers de force, des confidents fidèles et des compagnons de

iii
route inestimables.

Un amour inconditionnel et une gratitude infinie se dirigent vers la famille Zaouali. Votre soutien sans

faille, votre amour inébranlable et votre présence bienveillante ont été des piliers de force tout au long de ce

projet. Vos encouragements chaleureux et vos sourires réconfortants ont allumé en nous un feu d’inspiration

et de détermination. Vous avez été notre refuge lors des moments difficiles, notre rocher solide sur lequel nous

nous sommes appuyés. Nous sommes profondément reconnaissants de vous avoir à nos côtés, famille Zaouali,

et nous vous aimons de tout notre cœur.

Un océan d’amour et de gratitude s’élève vers la famille Cherni, la famille d’Oussama. Votre soutien

indéfectible et votre présence bienveillante ont été un phare dans notre voyage. Votre amour inconditionnel,

vos encouragements constants et votre confiance en nous ont été une source d’inspiration et de force. Vous

avez partagé nos triomphes avec joie et nos défis avec courage. Votre soutien sans faille a tissé des liens

indéfectibles au sein de notre équipe. Nous sommes honorés de faire partie de votre famille, famille Cherni,

et nous vous remercions du plus profond de notre cœur pour votre amour et votre soutien sans limites.

Je tiens également à exprimer ma gratitude la plus sincère à tous mes enseignants. Mme. Mouna

Bencheikh, Mme. Hela Guermassi, M. Adel Ben Salah, Mondher Antri - vous avez semé en moi les graines de

la connaissance, arrosées par votre passion et votre dévouement. Je vous suis profondément reconnaissante

pour le jardin florissant que vous avez aidé à cultiver en moi.

M. Adel Cherni, votre aide précieuse a été une lumière dans l’obscurité, un guide sûr dans le labyrinthe

de ce projet. Votre soutien a été un don du ciel, une bénédiction que j’apprécierai toujours.

Je souhaite également exprimer ma profonde gratitude envers le jury qui a évalué mon rapport.

Votre expertise, votre temps et votre attention ont été des éléments essentiels pour évaluer mon travail avec

objectivité et rigueur. Votre engagement envers l’excellence académique et votre précieuse contribution à mon

parcours sont sincèrement appréciés. Je vous remercie pour votre dévouement à l’évaluation de mon travail

et pour le temps que vous avez consacré à m’aider à progresser dans ma démarche. Un grand merci à l’IHEC

et à SOTETEL, des terres fertiles qui ont nourri mes compétences et m’ont permis de m’épanouir.

Et à moi-même, je dédie un miroir d’amour-propre et de reconnaissance. Ce voyage a été un ballet de

défis, de passion et d’amour. Chaque obstacle a été une étape vers une plus grande compréhension, chaque

défi une opportunité de croissance. Je suis fier de la personne que je suis devenue et de la passion qui brûle

en moi pour mon travail. J’ai appris, j’ai grandi, j’ai aimé, et pour cela, je suis profondément reconnaissant.

iv
Table des matières

1 Présentation et Contexte du Projet 3

1.1 Présentation de l’entité d’accueil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.1.1 Secteurs d’activité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.1.2 Détails des activités de SOTETEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.1.3 Position de SOTETEL sur le marché . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.1.4 Organisation de SOTETEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.2 Présentation du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.2.1 Problématique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.2.2 Statistiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.2.3 Étude de l’existant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.2.4 Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

1.3 De la vision à la concrétisation : Une approche optimale de la gestion de projet . . . . . . . . 11

1.3.1 Architecture globale du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

1.3.2 Pilotage du projet avec Scrum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2 Release 1 - Construction d’un drone et intégration de l’IOT 19

2.1 Sprint 1 : Sélection et acquisition des composants, suivi de l’assemblage et des tests de vol . 22

2.2 Sélection et caractérisation des matériaux et composants

électroniques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2.2.1 Critères de sélection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2.2.2 Sélection des matériaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

2.2.3 Considérations locales et contraintes de disponibilité . . . . . . . . . . . . . . . . . . . 29

2.2.4 Achat et caractérisation des composants choisie . . . . . . . . . . . . . . . . . . . . . . 30

2.3 Fabrication et Configuration Logicielle du Drone . . . . . . . . . . . . . . . . . . . . . . . . . 39

2.3.1 Impression 3D des composants du drone et précautions de sécurité . . . . . . . . . . . 39

2.3.2 Processus d’assemblage mécanique et intégration électronique . . . . . . . . . . . . . . 43

2.4 Configuration de la radiocommande Flysky FS-i6X et du Contrôleur de Vol KK2.1.5 . . . . . 53

2.4.1 Appariement du Récepteur et de la Radiocommande Flysky FS-i6X . . . . . . . . . . 54

2.4.2 Configuration de la Radiocommande Flysky FS-i6X . . . . . . . . . . . . . . . . . . . 54

v
2.4.3 Configuration du contrôleur de vol KK2.1.5 . . . . . . . . . . . . . . . . . . . . . . . . 57

2.5 Test de vol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

2.5.1 Période de Recharge : Un Défi Temporel . . . . . . . . . . . . . . . . . . . . . . . . . . 61

2.5.2 Le Recours à une Batterie de Voiture : Une Leçon Cruciale . . . . . . . . . . . . . . 62

2.5.3 L’Adoption d’une Alimentation Stabilisée : Une Solution Partielle . . . . . . . . . . . 62

2.5.4 Fusion d’une Alimentation Stabilisée et d’une Batterie : Une Solution Innovante . . . 63

2.5.5 Le Rôle du Poids sur la Performance de Vol . . . . . . . . . . . . . . . . . . . . . . . 63

2.5.6 Questions de Stabilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

2.5.7 Vol stable : Une Réalisation Mémorable . . . . . . . . . . . . . . . . . . . . . . . . . . 64

2.5.8 L’Explosion de la Batterie : Un Incident Douloureux et Instructif . . . . . . . . . . . . 66

2.6 II. Sprint 2 : Intégration de l’IoT pour l’inspection des pylônes par drone . . . . . . . . . . . 68

2.7 Fondements Théoriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

2.7.1 Introduction à l’Internet des Objets (IoT) . . . . . . . . . . . . . . . . . . . . . . . . . 69

2.7.2 L’ESP32 CAM : spécifications, capacités et applications courantes . . . . . . . . . . . 69

2.7.3 Les solutions de stockage en nuage avec un focus sur Google Drive . . . . . . . . . . . 71

2.8 Configuration et Programmation de l’ESP32 CAM . . . . . . . . . . . . . . . . . . . . . . . . 71

2.8.1 Choix du matériel : Présentation et justification de l’utilisation de l’ESP32 CAM . . . 71

2.8.2 Conception 3D de l’ESP32 CAM avec SolidWorks . . . . . . . . . . . . . . . . . . . . 72

2.8.3 Processus de programmation de l’ESP32 CAM pour la capture d’images : . . . . . . . 72

2.9 Conception et Déploiement du Google Apps Script : . . . . . . . . . . . . . . . . . . . . . . . 73

2.9.1 Développement d’un projet Google Apps Script : . . . . . . . . . . . . . . . . . . . . . 73

2.9.2 Implémentation des fonctions requises : . . . . . . . . . . . . . . . . . . . . . . . . . . 73

2.9.3 Déploiement du projet : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

2.9.4 Test de l’ESP32-CAM : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

2.10 Fusion de l’ESP32-CAM et de Google Drive pour une Surveillance Programmée . . . . . . . . 76

2.10.1 Préparation des Ressources Nécessaires . . . . . . . . . . . . . . . . . . . . . . . . . . 77

2.10.2 Sélection et Préparation des Bibliothèques Clés . . . . . . . . . . . . . . . . . . . . . 77

2.10.3 Configuration de l’Appareil Photo Intégré à l’ESP32-CAM . . . . . . . . . . . . . . . 78

2.10.4 Vérification de la Connectivité : Un Test Impératif . . . . . . . . . . . . . . . . . . . 79

2.10.5 Régime de Capture et de Transmission d’Images : Fonctionnement Systématique . . . 79

2.10.6 Paramétrage de l’Intervalle de Capture : Réglage Précis . . . . . . . . . . . . . . . . . 79

vi
2.10.7 Initialisation du Système : Mise en Marche . . . . . . . . . . . . . . . . . . . . . . . . 79

2.10.8 Boucle de Fonctionnement Principal : Cycle Ininterrompu de Capture et de Transmission 80

2.11 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

3 Release 2 - Détection d’objets et reconnaissance de texte 82

3.1 Sprint 3 : Exploration de la Détection d’Objets : Méthodes et Applications . . . . . . . . . . 85

3.1.1 Fonctionnement général de la détection d’objets . . . . . . . . . . . . . . . . . . . . . 85

3.1.2 Collecte des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

3.1.3 Annotation des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

3.1.4 Apprentissage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

3.1.5 Inférence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

3.1.6 Post-traitement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

3.2 La Détection d’Objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

3.2.1 Choix de YOLO : Une Comparaison Critique avec les Modèles Concurrents . . . . . . 87

3.2.2 L’architecture de YOLO : Un Aperçu . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

3.3 Réalisation : Application de la Détection d’Objets . . . . . . . . . . . . . . . . . . . . . . . . 103

3.3.1 Préparation des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

3.3.2 Labellisation des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

3.3.3 Sélection du modèle YOLOv5m pour une détection d’objets optimisée et efficace . . . 133

3.3.4 Entraînement du modèle YOLOv5m pour la détection d’objets . . . . . . . . . . . . . 133

3.3.5 Évaluation du modèle YOLOv5m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140

3.3.6 Applications de la détection d’objets . . . . . . . . . . . . . . . . . . . . . . . . . . . 142

3.4 Sprint 4 : Reconnaissance de texte avec Tesseract OCR . . . . . . . . . . . . . . . . . . . . . 143

3.4.1 La Reconnaissance de texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

3.4.2 Présentation de Tesseract OCR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

3.4.3 Techniques et algorithmes utilisés par Tesseract OCR . . . . . . . . . . . . . . . . . . 144

3.5 Application de la reconnaissance de texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146

3.5.1 Amélioration de la qualité de l’image pour faciliter la détection de texte . . . . . . . . 146

3.5.2 Résultat d’amélioration de la qualité de l’image . . . . . . . . . . . . . . . . . . . . . . 147

3.5.3 Utilisation de Tesseract OCR pour la reconnaissance de texte sur les images traitées . 148

4 Release 3 - Visualisation des résultats via le tableau de bord Django 152

vii
4.1 Sprint 5 : Conception de l’architecture avec Django - Backend . . . . . . . . . . . . . . . . . . 154

4.2 Architecture de Django . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

4.3 Conception de l’architecture avec Django . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155

4.4 Interconnexion entre Django et Google Drive . . . . . . . . . . . . . . . . . . . . . . . . . . . 157

4.4.1 L’intégration de l’API Google Drive . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157

4.4.2 Authentification OAuth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157

4.4.3 Stockage des images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158

4.4.4 Obtention des informations d’authentification pour l’API Google Drive à partir d’un

fichier JSON dans Django . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

4.4.5 Affichage des résultats de détection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162

4.5 Intégration du modèle Tesseract OCR avec Django . . . . . . . . . . . . . . . . . . . . . . . . 164

4.5.1 Création d’une application dans le serveur django . . . . . . . . . . . . . . . . . . . . 164

4.5.2 Enregistrement du texte dans une base de données SQLite . . . . . . . . . . . . . . . 165

4.5.3 Transition de la base de données de SQLite vers PostgreSQL . . . . . . . . . . . . . . 168

4.6 Sprint 6 : Réalisation du Dashboard avec Django - Frontend . . . . . . . . . . . . . . . . . . . 174

4.7 Description du site web et de ses fonctionnalités principales . . . . . . . . . . . . . . . . . . . 175

4.8 Présentation des langages utilisés : HTML, CSS, JavaScript, Python . . . . . . . . . . . . . . 176

4.9 Présentation de spline et sketchfab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177

4.10 Architecture du site web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177

4.10.1 Description de la structure globale du site . . . . . . . . . . . . . . . . . . . . . . . . . 177

4.10.2 Présentation de la manière dont Django gère les URL, les formulaires et les vues . . . 178

4.11 Pages du site web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180

4.11.1 Authentification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181

4.11.2 Page d’accueil (Landing page) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184

4.11.3 Formulaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187

4.11.4 Tableau de bord (Dashboard) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190

4.11.5 Page de résultat de la détection d’objets . . . . . . . . . . . . . . . . . . . . . . . . . . 192

Bibliographie 195

viii
Table des figures

1.1 Les composants d’un pylône de télécommunication . . . . . . . . . . . . . . . . . . . . . . . . 7

1.2 Méthodes d’inspection traditionnelles des pylônes de télécoms . . . . . . . . . . . . . . . . . . 8

1.3 Inspection des pylônes de télécommunications avec un drone . . . . . . . . . . . . . . . . . . 11

1.4 Synopsis du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

1.5 Méthodologie de travail Scrum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

1.6 Les différentes cérémonies de Scrum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.7 Le backlog produit sur Jira Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.1 Châssis F450 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

2.2 Moteur Brushless A2212 1000Kv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

2.3 Contrôleur de vol KK2.1.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

2.4 Contrôleur de vitesse : ESC 30A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

2.5 Batterie LiPo TCB WOERTH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

2.6 Hélices : Sens horaire et anti-horaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

2.7 Radiocommande Flysky FS-i6X et Récepteur Flysky . . . . . . . . . . . . . . . . . . . . . . . 37

2.8 Achat des composants pour la construction du drone . . . . . . . . . . . . . . . . . . . . . . 38

2.9 Cache de protection de la Carte de Vol KK2.1.5 : Conception avec SolidWorks . . . . . . . . 40

2.10 Impression 3D de la Carte de Vol KK2.1.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

2.11 Fabrication du Terrain d’Atterrissage en Acier Galvanisé . . . . . . . . . . . . . . . . . . . . . 42

2.12 Réalisation finale du Terrain d’Atterrissage en Acier Galvanisé . . . . . . . . . . . . . . . . . 42

2.13 Soudage des ESC sur la Carte de Distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

2.14 Préparation des fils électriques pour l’alimentation de la carte de distribution depuis la batterie 46

2.15 Soudure des fils sur le connecteur XT60 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

2.16 Assemblage de la structure du drone : fixation par vissage . . . . . . . . . . . . . . . . . . . . 48

2.17 Installation des moteurs dans la structure du drone : fixation par vissage . . . . . . . . . . . . 49

2.18 Connexion des Moteurs aux ESC : liaison électrique essentielle . . . . . . . . . . . . . . . . . 50

2.19 Connexion des ESC à la carte de vol : intégration électrique pour le contrôle du drone . . . . 51

2.20 Connexion du Récepteur à la Carte de Vol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

2.21 Test des moteurs pendant l’assemblage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

ix
Table des figures

2.22 Manipulation du joystick de la radiocommande (Aileron) . . . . . . . . . . . . . . . . . . . . . 55

2.23 Manipulation du joystick de la radiocommande (Elevator) . . . . . . . . . . . . . . . . . . . . 55

2.24 Manipulation du joystick de la radiocommande (Rudder) . . . . . . . . . . . . . . . . . . . . 56

2.25 batterie de voiture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

2.26 Vol stable du drone : équilibre et contrôle pour une expérience de vol fluide . . . . . . . . . . 65

2.27 Vol du drone après les améliorations apportées au système d’alimentation et à la stabilité . . 65

2.28 explosion tragique de la batterie lors du test -partie 1- . . . . . . . . . . . . . . . . . . . . . . 66

2.29 explosion tragique de la batterie lors du test -partie 2- . . . . . . . . . . . . . . . . . . . . . . 66

2.30 explosion tragique de la batterie lors du test -partie 3- . . . . . . . . . . . . . . . . . . . . . . 67

2.31 Fabrication d’une nouvelle drone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

2.32 Module caméra ESP32-CAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

2.33 Conception 3D de l’ESP 32 CAM avec SolidWorks . . . . . . . . . . . . . . . . . . . . . . . . 72

2.34 Création d’un projet Google Apps Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

2.35 Fonction de réception et enregistrement des photos de l’ESP 32-CAM dans Google Drive . . . 74

2.36 Déploiement du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

2.37 ID de déploiement et URL fournis pour le projet . . . . . . . . . . . . . . . . . . . . . . . . . 75

2.38 Code de téléversement pour tester l’ESP32-CAM sur la carte . . . . . . . . . . . . . . . . . . 76

2.39 Initialisation des bibliothèques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

2.40 Identification de connexion au réseau WiFi pour l’ESP32-CAM . . . . . . . . . . . . . . . . . 78

2.41 Définition des broches GPIO pour l’ESP32-CAM . . . . . . . . . . . . . . . . . . . . . . . . . 78

2.42 Identifiants requis pour l’envoi d’images de l’ESP 32-CAM vers un serveur Google Drive . . 79

2.43 stockage des images prise par ESP32-cam sur Google Drive . . . . . . . . . . . . . . . . . . . 80

3.1 Tableau de décision des modèles de détection d’objets . . . . . . . . . . . . . . . . . . . . . . 95

3.2 Différence entre les modèles YOLOv5 : YOLOv5s, YOLOv5m, YOLOv5l, YOLOv5x . . . . . 103

3.3 Exemple d’images de la base de données de SOTETEL . . . . . . . . . . . . . . . . . . . . . . 104

3.4 Classification organisée des images pour une détection précise des objets cibles . . . . . . . . 104

3.5 Organisation des images pour une détection des antennes . . . . . . . . . . . . . . . . . . . . 105

3.6 Script Python : Web scraping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

3.7 Résultats du Web scraping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

3.8 Labelisation manuelle avec LabelImg : Exemple d’étiquetage d’une image . . . . . . . . . . . 108

3.9 Annotation d’une image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

x
Table des figures

3.10 Nommage cohérent des images et de leurs annotations . . . . . . . . . . . . . . . . . . . . . . 109

3.11 Une structure en arborescence pour une gestion optimale des annotations et des images . . . 111

3.15 Configuration du fichier YAML pour le jeu de données : dataset.yaml . . . . . . . . . . . . . . 111

3.12 Séparation des images et des annotations pour la classe "Antenne" . . . . . . . . . . . . . . . 112

3.13 Images de la classe "Antenne" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

3.14 Annotations de la classe "Antenne" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113

3.16 Conversion d’annotations YOLO en fichier CSV avec un script Python . . . . . . . . . . . . . 116

3.17 Extraction réussie des annotations YOLO vers un fichier CSV . . . . . . . . . . . . . . . . . . 116

3.18 Script Python pour la génération d’ancres optimisées . . . . . . . . . . . . . . . . . . . . . . . 117

3.19 Résultats de la génération des ancres optimisées et valeur de l’IOU . . . . . . . . . . . . . . . 118

3.20 Intégration des ancres optimisées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

3.21 Schéma illustrant les notions de batch et d’époque . . . . . . . . . . . . . . . . . . . . . . . . 119

3.22 Début de l’entraînement du modèle : Suivi des métriques clés . . . . . . . . . . . . . . . . . . 121

3.23 Fin de l’entraînement du modèle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

3.24 Statistiques de performance lors de l’entraînement . . . . . . . . . . . . . . . . . . . . . . . . 123

3.25 Courbes d’apprentissage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

3.26 Courbes de précision et de rappel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126

3.27 Courbes de mAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126

3.28 Images de test avec étiquettes manuelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

3.29 Images de test avec prédictions du modèle et pourcentages de confiance . . . . . . . . . . . . 128

3.30 Modification de l’option "save_txt=True" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

3.31 Établissement d’un dossier de sortie pour les images et les annotations . . . . . . . . . . . . . 129

3.32 Conservation des annotations au format YOLO . . . . . . . . . . . . . . . . . . . . . . . . . . 129

3.33 Exécution du script detect.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130

3.34 Stockage ordonné des images dans le dossier de sortie . . . . . . . . . . . . . . . . . . . . . . . 130

3.35 Stockage ordonné des annotations au format YOLO dans le dossier . . . . . . . . . . . . . . . 131

3.36 Déplacement des images d’entrée dans le sous-dossier "labels" . . . . . . . . . . . . . . . . . . 131

3.37 Visualisation des images et de leurs boîtes englobantes avec LabelImg . . . . . . . . . . . . . 132

3.38 Tableau comparatif détaillé des configurations d’entraînement pour YOLOv5 . . . . . . . . . 134

3.39 Validation de la reconnaissance du GPU par PyTorch et de la correspondance de la version

CUDA avec le système . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136

xi
Table des figures

3.40 Confirmation de l’installation du CUDA Toolkit et de cuDNN . . . . . . . . . . . . . . . . . . 136

3.41 Apprentissage du modèle avec GPU : Vérification de l’usage optimal du GPU . . . . . . . . . 137

3.42 Usage de la mémoire pendant l’apprentissage avant l’activation du GPU . . . . . . . . . . . . 138

3.43 Usage du processeur pendant l’apprentissage avant l’activation du GPU . . . . . . . . . . . . 139

3.44 Usage des ressources matérielles pendant l’apprentissage après activation du GPU et des workers139

3.45 Entraînement du modèle avec GPU et workers . . . . . . . . . . . . . . . . . . . . . . . . . . 140

3.46 Image de test annotée : antenne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141

3.47 Image de test montrant les prédictions du modèle et les pourcentages de confiance : antenne . 141

3.48 Application de la détection d’objets avec le modèle yolov5m . . . . . . . . . . . . . . . . . . . 142

3.49 Amélioration d’image : Prétraitement avec ’preprocess_image’ . . . . . . . . . . . . . . . . . 146

3.50 Prétraitement d’image binaire pour meilleure reconnaissance des caractères . . . . . . . . . . 147

3.51 Image originale avant traitement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147

3.52 Amélioration de la qualité de l’image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148

3.53 Script Python pour la reconnaissance de texte . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

3.54 Résultat de la détection de texte à partir de l’image traitée . . . . . . . . . . . . . . . . . . . 151

4.1 Django : Site web d’Analyse Visuelle avec Détection, Stockage et Visualisation des résultats

de détection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155

4.2 Structure django . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156

4.3 les images prise par ESP32-cam stockés sur Google Drive . . . . . . . . . . . . . . . . . . . . 157

4.4 Inscription : autorisations pour le projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158

4.5 API et Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158

4.6 fonction get google credentials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

4.7 fichier statique de Django . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162

4.8 affichage des résultats de détection des antennes sur le site web . . . . . . . . . . . . . . . . . 163

4.9 Création une application ‘ocr-app’ dans le serveur Django . . . . . . . . . . . . . . . . . . . . 164

4.10 Implémentation des fonctions de traitement d’image, de filtrage et de reconnaissance de texte

dans views.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165

4.11 Affichage des résultats dans une page HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . 165

4.12 Création d’une application ‘ocra pp′ dansleserveurDjango . . . . . . . . . . . . . . . . . . . . 166

4.13 Création et application d’une migration dans SQLite . . . . . . . . . . . . . . . . . . . . . . . 166

4.14 Modification de la fonction ‘ocr-results‘ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167

xii
4.15 création de la fonction ‘ocr-results-list’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167

4.16 Ajout de l’URL dans le fichier ‘urls.py’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167

4.17 Création du fichier ‘ocr-results-list.html‘ pour l’affichage des données OCR . . . . . . . . . . . 168

4.18 Affichage de la liste des résultats OCR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168

4.19 Installation et configuration de PostgreSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

4.20 Connexion à PostgreSQL en tant qu’utilisateur "postgres" . . . . . . . . . . . . . . . . . . . 170

4.21 Création d’une base de données PostgreSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170

4.22 Création d’un utilisateur dans PostgreSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170

4.23 Attribution des privilèges à l’utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170

4.24 Configuration de la base de données PostgreSQL dans ‘settings.py‘ . . . . . . . . . . . . . . . 171

4.25 Application d’une migration dans PostgreSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . 171

4.26 Fonction extract-antenna-string() - Extraction de sous-chaîne avec expression régulière . . . . 172

4.27 Fonction ‘extract-antenna-info()‘ - Extraction d’informations avec expressions régulières et

dictionnaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173

4.28 affichage des résultats de détection du texte sur le site web . . . . . . . . . . . . . . . . . . . 174

4.29 Gestion utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181

4.30 Processus d’Authentification : Inscription des Utilisateurs . . . . . . . . . . . . . . . . . . . . 182

4.31 Processus d’Authentification : Connexion des Utilisateurs . . . . . . . . . . . . . . . . . . . . 183

4.32 page d’accueil : Animation des sections au défilement 1 . . . . . . . . . . . . . . . . . . . . . . 185

4.33 page d’accueil : Animation des sections au défilement 2 . . . . . . . . . . . . . . . . . . . . . . 185

4.34 Page d’Accueil : Visualisations 3D de l’Architecture du Système . . . . . . . . . . . . . . . . . 186

4.35 Page d’Accueil : Visualisations 3D du Tableau de Bord . . . . . . . . . . . . . . . . . . . . . 187

4.36 page de formulaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188

4.37 forms.py du formulaire django . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189

4.38 fonction qui gérer le formulaire dans views.py . . . . . . . . . . . . . . . . . . . . . . . . . . . 190

4.39 Inventaire des Antennes : Modèle 3D du Pylône et Affichage des Informations . . . . . . . . . 192

4.40 Présentation des résultats de la détection d’objets lors des Inspections de Pylônes . . . . . . . 193

xiii
Liste des tableaux

1.1 Tableau : Product Backlog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

1.2 Planification des sprints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2.1 Critères de sélection et détails des châssis de drone . . . . . . . . . . . . . . . . . . . . . . . . 23

2.2 Tableau comparatif des contrôleurs de vol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

2.3 Scores pondérés des options de châssis de drone . . . . . . . . . . . . . . . . . . . . . . . . . . 27

2.4 Scores Pondérés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

2.5 Caractéristiques de l’ESP32-CAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

xiv
Liste des abréviations

— AI = Intelligence Artificielle

— CPU = Unité Centrale de Traitement

— ESC = Contrôleur de Vitesse Électronique

— GPU = Unité de Traitement Graphique

— IoT = Internet des Objets

— JPEG = Groupe d’Experts Photographie Jointe

— OCR = Reconnaissance Optique de Caractères

— RAM = Mémoire Vive à Accès Aléatoire

— SCRUM = Système de Contrôle de Ressources et d’Utilisation du Matériel

— SOTETEL= Société Tunisienne des Télécommunications

— WiFi = Fidélité Sans Fil

— YOLOv5 = You Only Look Once version 5

1
Introduction générale

L’univers dans lequel nous sommes plongés repousse les limites de l’industrie des télécommunications,

un lieu où l’innovation et la sécurité se rencontrent, et où les dangers menaçant les travailleurs se transforment

en de lointains souvenirs. Bienvenue dans le monde fascinant de l’inspection par drone intelligent.

Envisageons une Tunisie en pleine effervescence, avec des antennes de télécommunications qui prolifèrent

sur l’ensemble du territoire, tissant un réseau de connectivité dense. Toutefois, derrière cette avancée technologique

se cachent des risques concrets pour les hommes et les femmes courageux chargés de l’entretien de ces

infrastructures essentielles. Des chutes de grande hauteur, le risque d’électrocution, et même une exposition

à des ondes électromagnétiques dangereuses planent comme des ombres sur ces héros des réseaux.

Il est permis de rêver d’un monde où ces dangers seraient inexistants. Un monde où les travailleurs

pourraient accomplir leurs tâches en toute sécurité, sans risquer leur vie. C’est ici qu’interviennent les drones

intelligents, élevant l’inspection des pylônes de télécommunications à un niveau inégalé de performance et de

protection.

Visualisons des drones aux capacités exceptionnelles, capables de se faufiler dans les endroits les

plus inaccessibles, bravant les hauteurs vertigineuses des gratte-ciel, des ponts majestueux et des pylônes

imposants. Équipés de caméras ultra-performantes et de capteurs de pointe, ces drones scrutent chaque détail

avec soin, collectant des données précieuses et minimisant ainsi le besoin d’inspections humaines périlleuses.

L’inspection par drone se transforme ainsi en une véritable révolution, repoussant les limites des

méthodes d’inspection traditionnelles. Les images capturées et les données recueillies fournissent une précision

inégalée, offrant des résultats d’une qualité sans précédent. Et le plus impressionnant dans tout cela ? Les

drones accomplissent leur mission en un temps record, réduisant les délais d’arrêt et les coûts associés. Il

s’agit là d’une véritable prouesse technologique au service de la productivité et de la sécurité.

Ce rapport invite à un voyage fascinant à travers quatre chapitres, chacun représentant une version

majeure du projet Scrum. Chaque version est composée de deux sprints, étapes clés dans le développement de

cette prouesse technologique. L’histoire de cette aventure est dévoilée, où passion et ingéniosité se conjuguent

pour offrir une solution révolutionnaire.

Le deuxième chapitre entraîne dans la première version, où la construction du drone et l’intégration

de l’ESP 32 Cam sont au cœur des préoccupations. L’histoire des choix judicieux des composants, de leur

acquisition soigneusement orchestrée, de l’assemblage méticuleux du drone et des tests de vol passionnants

se déroule. Pour couronner le tout, l’intégration de l’ESP 32 Cam permet de capturer des images à couper le

1
Liste des tableaux

souffle, stockées en toute sécurité dans les profondeurs de Google Drive.

Le troisième chapitre plonge au cœur de la deuxième version, où la détection d’objets et le traitement

d’image sont les héros de l’histoire. L’excitation des développements techniques, des algorithmes sophistiqués

et de la mise en œuvre de YOLOv5 pour la détection d’objets est palpable. Ensuite, la magie de Tesseract

OCR fait surgir les caractères cachés dans les images, offrant ainsi une reconnaissance optique d’une précision

inouïe.

Enfin, le quatrième chapitre emporte dans la troisième version, où le backend et le frontend s’entrelacent

pour créer une expérience fluide et intuitive. L’architecture ingénieuse de Django, cette toile complexe qui

relie tous les éléments du projet, est dévoilée. L’interconnexion entre Django et Google Drive est suivie,

et comment les modèles YOLOv5m et Tesseract OCR s’intègrent harmonieusement dans cette symphonie

technologique est démontré. Enfin, le tableau de bord, une véritable œuvre d’art visuelle, conçue avec amour

et maîtrise grâce à Django.

Bienvenue dans un univers où l’inspection par drone intelligent repousse les frontières de l’impossible,

où la sécurité des travailleurs et l’efficacité des opérations se rejoignent pour créer une nouvelle réalité. Il est

temps de s’émerveiller, d’être transporté et inspiré par cette aventure technologique sans précédent.

2
Chapitre 1

Présentation et Contexte du Projet

Plan
1 Présentation de l’entité d’accueil . . . . . . . . . . . . . . . . . . . . . . . 4

1.1.1 Secteurs d’activité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.1.2 Détails des activités de SOTETEL . . . . . . . . . . . . . . . . . . . . . . . 5

1.1.3 Position de SOTETEL sur le marché . . . . . . . . . . . . . . . . . . . . . . 5

1.1.4 Organisation de SOTETEL . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2 Présentation du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.2.1 Problématique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.2.2 Statistiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.2.3 Étude de l’existant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.2.4 Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

3 De la vision à la concrétisation : Une approche optimale de la gestion


de projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

1.3.1 Architecture globale du projet . . . . . . . . . . . . . . . . . . . . . . . . . 11

1.3.2 Pilotage du projet avec Scrum . . . . . . . . . . . . . . . . . . . . . . . . . 12

1.3.2.1 Choix de la méthodologie Scrum : . . . . . . . . . . . . . . . . . . 12

1.3.2.2 Les rôles : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

1.3.2.3 Product Backlog : . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

1.3.2.4 Choix outils de gestion de projet agile : . . . . . . . . . . . . . . . 17

1.3.2.5 Planification des sprints : . . . . . . . . . . . . . . . . . . . . . . . 17


Chapitre 1. Présentation et Contexte du Projet

Introduction

Le voyage commence dans un monde où l’industrie des télécommunications en Tunisie se métamorphose.

Ce premier chapitre invite à la découverte de l’entité d’accueil, à l’immersion dans les défis qu’elle doit

surmonter et à la perception de l’urgence de trouver une solution révolutionnaire. Le lecteur est sur le point

d’être captivé par un récit où l’innovation et la sécurité se rencontrent, prêtes à modeler un avenir meilleur.

1.1 Présentation de l’entité d’accueil

SOTETEL, est une entreprise qui se démarque par son expertise en matière de conception, mise

en œuvre et maintenance de réseaux de télécommunication, ainsi que par la prestation d’une gamme variée

de services de communication. Acclamée comme leader dans le domaine des télécommunications en Tunisie,

elle propose un large éventail de services aux entreprises et aux particuliers. Parmi ces services figurent la

téléphonie fixe et mobile, l’accès à Internet haut débit, les services de données et la diffusion de télévision.

SOTETEL tire sa force de son équipe de professionnels qualifiés, composée d’ingénieurs, de techniciens

et d’experts en télécommunication. Collaborant étroitement, ces derniers garantissent la qualité et la fiabilité

des services fournis. Grâce à son infrastructure de pointe, équipée des technologies de communication les plus

avancées, SOTETEL est en mesure de proposer des services novateurs, parfaitement adaptés aux besoins

spécifiques de ses clients.

SOTETEL fait également preuve d’un fort engagement envers le développement durable. Elle cherche

à minimiser l’impact environnemental de ses activités en utilisant des technologies respectueuses de l’environnement

et en mettant en place des pratiques de gestion durable visant à réduire la consommation d’énergie et la

production de déchets. De plus, SOTETEL est consciente de sa responsabilité sociale et contribue activement

au développement économique et social de la Tunisie en soutenant divers projets communautaires dans les

domaines de la santé, de l’éducation et de l’environnement à travers des partenariats.

1.1.1 Secteurs d’activité

SOTETEL opère dans une grande variété de services de télécommunication, fournissant une gamme

exhaustive de solutions à sa clientèle. L’entreprise excelle dans la création, la mise en œuvre et la maintenance

de réseaux de télécommunication, tout en fournissant également des services de communication aux entreprises

et aux particuliers.

En proposant des solutions de téléphonie fixe et mobile, d’accès à Internet à haut débit, de services de

4
Chapitre 1. Présentation et Contexte du Projet

données, de télévision et de réseaux de transmission, SOTETEL se positionne à l’avant-garde de la technologie.

Elle joue également un rôle clé dans le déploiement des réseaux 4G et 5G, garantissant à ses clients une

connectivité à la fois rapide et stable.

Pour les entreprises, SOTETEL propose une panoplie de solutions qui englobent la communication

unifiée, le cloud computing, la sécurité du réseau et la surveillance. En complément à ces services, l’entreprise

offre des consultations et un soutien technique pour aider ses clients à optimiser leurs infrastructures de

communication.

En somme, SOTETEL est un fournisseur diversifié de services de télécommunication qui répond

efficacement aux exigences des clients individuels et corporatifs. L’entreprise se spécialise dans la création, le

déploiement et l’entretien des réseaux de télécommunication et s’engage à fournir des services de communication

innovants qui répondent aux besoins spécifiques de ses clients.

1.1.2 Détails des activités de SOTETEL

Le spectre des activités de SOTETEL embrasse divers terrains du paysage des télécommunications.

Cette étendue couvre le réseau d’accès, le réseau Core et Backbone, le réseau sans fil et les services convergents.

Dans le domaine du réseau d’accès, SOTETEL se spécialise en ingénierie des réseaux de télécommunications,

en déploiement de réseau d’accès par FTTx et en gestion des réseaux d’accès par câbles en cuivre, parmi

d’autres expertises similaires.

Le réseau Core et Backbone fait appel à une multitude de compétences : l’aménagement des locaux

techniques, l’intégration des systèmes IP-MSAN, la maintenance des réseaux des opérateurs. En outre,

SOTETEL gère également les réseaux PSTN et PLMN, les réseaux Métro Fibre et Backbone, entre autres

domaines similaires.

Pour ce qui est du réseau sans fil, l’entreprise a une expertise en couverture Wireless Indoor, en

installation des sites 3G et en optimisation des réseaux radios, parmi d’autres domaines similaires.

En plus de ces spécialités, SOTETEL se distingue aussi dans la construction et l’équipement des

pylônes de télécommunication, assurant une infrastructure robuste et optimisée pour la maintenance des

réseaux de télécommunication. Cette gamme de services souligne la capacité de SOTETEL à répondre à des

exigences diversifiées et complexes dans le domaine des télécommunications.

1.1.3 Position de SOTETEL sur le marché

SOTETEL est un acteur essentiel sur le marché tunisien des télécommunications. Elle est reconnue

pour son expertise en ingénierie, aménagement des locaux techniques et maintenance des réseaux d’opérateurs.

5
Chapitre 1. Présentation et Contexte du Projet

Grâce à des ressources humaines et matérielles performantes, l’entreprise est en mesure de proposer des

solutions complètes et adaptées aux besoins de ses clients, tout en garantissant une qualité de service optimale.

En tant que filiale de Tunisie Télécom, SOTETEL jouit d’un positionnement privilégié sur le marché national,

renforçant sa position de leader en proposant des solutions innovantes en partenariat avec des équipementiers

internationaux renommés tels que Huawei, Alcatel-Lucent et Ericsson.

1.1.4 Organisation de SOTETEL

La structure organisationnelle de SOTETEL, en tant que leader dans son domaine, est bien

établie. Elle compte cinq départements principaux qui travaillent en synergie pour atteindre les objectifs de

l’entreprise.

La Direction Centrale Financière (D.C.F) est responsable de la gestion financière, de la comptabilité

et de l’administration de SOTETEL. Elle s’assure que les opérations de l’entreprise sont en conformité avec

les règles comptables et fiscales.

La Direction Centrale Commerciale (D.C.C) est en charge de la gestion des ventes, du chiffre

d’affaires et du marketing. Elle collabore étroitement avec les autres départements pour identifier les besoins

des clients et proposer des solutions adaptées.

La Direction Centrale Ressources Humaines (D.C.R.H) gère le recrutement, l’intégration et

la formation du personnel de SOTETEL. Elle est également responsable de la gestion administrative, de la

paie et de la communication interne.

La Direction Centrale Solution d’Entreprise (D.C.S.E) est chargée de l’étude, de l’installation

et de la maintenance des réseaux privés de l’entreprise. Elle propose des solutions personnalisées aux entreprises

souhaitant disposer de leur propre réseau de communication.

Enfin, la Direction Centrale des Réseaux (D.C.RX) est responsable de la mise en œuvre de

l’infrastructure des réseaux de transmissions et des réseaux d’accès (réseaux publics). Elle travaille en étroite

collaboration avec les autres départements pour garantir la qualité des services offerts aux clients.

1.2 Présentation du projet

Un pylône de télécommunication est une structure verticale indispensable pour une transmission

efficace des signaux de communication. Jouant un rôle crucial dans la diffusion des signaux, il soutient les

antennes et intègre les équipements de transmission. Les pylônes permettent une meilleure couverture, une

portée maximale et une connectivité fiable. Ils sont aussi essentiels à l’expansion du réseau. Les composants

6
Chapitre 1. Présentation et Contexte du Projet

clés d’un pylône comprennent les antennes, les équipements de transmission, les boîtiers d’équipement,

les câbles et les dispositifs de sécurité. La figure 1. présente les composants essentiels d’un pylône de

télécommunication.

Figure 1.1 : Les composants d’un pylône de télécommunication

Ces structures élévatrices, les pylônes, peuvent être confrontées à diverses anomalies. Elles peuvent

varier de la détérioration structurelle aux problèmes d’antenne, en passant par des défaillances d’équipement,

des complications de câblage et des problèmes d’alimentation. Pour maintenir un service de communication

de qualité et sans interruption, des inspections périodiques, assorties de mesures correctives, s’imposent. Cette

démarche assure la robustesse et la fiabilité de l’infrastructure de télécommunication.

1.2.1 Problématique

Dans un monde en constante mutation technologique, l’importance des pylônes de télécommunication

n’a jamais été aussi grande. Ces structures vertigineuses, à l’allure quasi surréaliste, sont les piliers invisibles

qui soutiennent le filet omniprésent des communications numériques et analogiques. Elles veillent à ce que

nous restions connectés, non seulement entre nous, mais aussi avec le reste du monde. Cependant, le maintien

de ces tours nécessite des efforts considérables. Les inspections régulières sont essentielles pour assurer

leur fonctionnement optimal, éviter les pannes et garantir la sécurité des personnes. Historiquement, ces

inspections sont réalisées manuellement, un processus qui peut être non seulement dangereux, mais aussi

7
Chapitre 1. Présentation et Contexte du Projet

coûteux et sujet à des erreurs humaines.

Imaginons une journée typique de notre équipe d’inspecteurs de pylônes : nous sommes équipés de

harnais de sécurité, d’outils variés et d’une myriade de dispositifs de protection. Nous devons grimper sur

ces structures hautes de plusieurs mètres, parfois dans des conditions météorologiques défavorables. Nous

sommes confrontés à des risques de blessures et même de décès, sans parler du stress mental associé à ces

conditions de travail. De plus, notre inspection manuelle de ces structures peut prendre beaucoup de temps,

ce qui augmente les coûts pour les entreprises de télécommunications. Ajoutons à cela le potentiel d’erreur

humaine qui peut entraîner des problèmes non détectés et ultimement des pannes coûteuses, et nous obtenons

une méthode d’inspection que nous considérons dépassée et inefficace.

Figure 1.2 : Méthodes d’inspection traditionnelles des pylônes de télécoms

1.2.2 Statistiques

Voici quelques statistiques alarmantes que nous avons trouvés en lien avec les accidents liés aux

inspections des pylônes De télécommunication :

• En 2013, l’OSHA (Occupational Safety and Health Administration) a enregistré un total de 13

décès liés aux tours de communication. En 2014, il y a eu 12 décès sur les sites de tours de communication.

En 2015, il y a eu un total de 3 décès. Il y a eu 6 décès en 2016. L’OSHA travaille avec les parties prenantes de

l’industrie pour identifier les causes de ces blessures et décès, et pour réduire les risques auxquels les employés

de l’industrie des tours de communication sont confrontés.

• Selon un article de 2023 sur Wirelessestimator, le premier décès dû à une chute cette année a été

8
Chapitre 1. Présentation et Contexte du Projet

celui d’un technicien de 33 ans au Kansas.

• Un technicien de 32 ans est décédé le 15 décembre 2022 à Weatherford, TX, lors d’un projet

d’installation pour Verizon. Une défaillance du câble de sécurité a peut-être causé le décès.

• Les Communications Workers of America (CWA) ont publié les résultats d’une enquête montrant

que la sécurité de leurs membres est compromise. Plus de 65 % des techniciens ont été sur un chantier où

quelqu’un a été blessé et 4 % où quelqu’un a été tué.

• Un technicien de 36 ans et père de cinq enfants travaillant pour l’Alabama Forestry Commission

(AFC) est mort lorsqu’une tour de communication qu’il aidait à retirer s’est effondrée.

• Un technicien de 24 ans de Las Vegas, Nevada, est décédé après une chute d’une tour de communication

à Arlington, WA [4].

• Le décès d’un technicien de 53 ans a été signalé à Garrison, TX le 17 novembre.

• Un technicien de 21 ans de l’Illinois est décédé après une chute d’une tour de téléphonie cellulaire

en Illinois alors qu’il travaillait sur une installation de Verizon.

Ces statistiques et incidents montrent l’ampleur du problème de sécurité dans l’industrie des tours

de télécommunication.

1.2.3 Étude de l’existant

Dans le paysage actuel de l’industrie des télécommunications, la maintenance et l’inspection des

pylônes représentent un défi majeur. Actuellement, ces tâches essentielles sont généralement effectuées manuellement

par des équipes d’ingénieurs sur le terrain. Malgré les progrès technologiques dans de nombreux domaines,

cette approche traditionnelle demeure largement utilisée. Cependant, elle présente des limitations et des défis

qui méritent une attention particulière.

Les inspections manuelles nécessitent souvent que des techniciens grimpent sur les pylônes eux-mêmes.

Non seulement cette méthode est-elle potentiellement dangereuse, mais elle peut également être inefficace

et coûteuse. Le temps nécessaire pour effectuer une inspection manuelle peut être long, et la nécessité de

déployer des équipes humaines peut entraîner des coûts importants. En outre, la qualité des inspections

manuelles peut varier en fonction de nombreux facteurs, tels que les compétences de l’inspecteur, les conditions

météorologiques, et bien d’autres.

De plus, certaines anomalies peuvent échapper à une inspection manuelle. Des problèmes structurels

mineurs, des défaillances d’équipement ou des problèmes de câblage peuvent être difficiles à détecter sans

l’utilisation d’équipements spécialisés. Dans certains cas, des problèmes non détectés peuvent se transformer

9
Chapitre 1. Présentation et Contexte du Projet

en défaillances majeures, avec des conséquences potentiellement graves pour le service de communication.

La maintenance des pylônes de télécommunication est également une tâche complexe. En plus de

l’inspection régulière, il faut effectuer des travaux de réparation et d’entretien, parfois dans des conditions

difficiles. Encore une fois, la sécurité est une préoccupation majeure. Les travaux de maintenance peuvent

impliquer des risques similaires à ceux des inspections, notamment les risques de chute, d’électrocution et

d’exposition aux ondes électromagnétiques.

Face à ces défis, l’industrie est à la recherche de solutions innovantes. L’inspection et la maintenance

automatisées des pylônes de télécommunication représentent une opportunité majeure d’améliorer la sécurité

et l’efficacité des opérations. C’est dans ce contexte que s’inscrit le présent projet, avec l’objectif de développer

un système d’inspection par drone intelligent qui pourrait révolutionner la façon dont ces tâches essentielles

sont effectuées.

1.2.4 Solution

Visualisons un avenir dans lequel les inspections de pylônes de télécommunication se déroulent

rapidement, en toute sécurité et avec une précision sans précédent. Cet avenir envisage des coûts opérationnels

en déclin et une productivité en augmentation. C’est cette vision du futur que ce projet aspire à concrétiser

grâce à une solution innovante, fusionnant la technologie des drones, l’intelligence artificielle et l’Internet des

objets.

Dans le scénario proposé, des drones, munis de caméras haute résolution, sont dirigés autour des

pylônes pour saisir des images détaillées. Ces images sont ensuite examinées par des algorithmes d’intelligence

artificielle à la recherche de signes d’anomalie ou de dégâts. Les données ainsi recueillies sont archivées et

analysées pour permettre une maintenance prédictive, limitant les temps d’arrêt et optimisant l’efficacité.

Cette solution présente une pléthore d’avantages, allant de la réduction des risques pour le personnel

d’inspection, à une détection plus rapide des problèmes, en passant par une diminution des coûts opérationnels

et une amélioration de l’efficacité globale. En outre, elle offre une opportunité de métamorphoser l’industrie

des télécommunications en une entité plus sûre, plus performante et plus résiliente.

Un avenir prometteur se dessine, dans lequel la technologie ne se contente pas de modifier nos

méthodes de travail, mais transforme également notre perception du monde. Embarquons ensemble dans

cette quête de transformation et d’innovation, dans le but d’engendrer des changements positifs dans le

secteur des télécommunications.

10
Chapitre 1. Présentation et Contexte du Projet

Figure 1.3 : Inspection des pylônes de télécommunications avec un drone

1.3 De la vision à la concrétisation : Une approche optimale de

la gestion de projet

1.3.1 Architecture globale du projet

1. Fabrication du drone :

Identification et acquisition des composants nécessaires, assemblage des équipements, configuration

de leurs paramètres, et assemblage puis tests de vol.

2. Intégration de l’IoT :

Intégration des fonctionnalités IoT au drone pour prendre des photos avec une caméra embarquée et

les transmettre à Google Drive pour un accès à distance en temps réel.

3. Application de l’IA :

Incorporation de l’intelligence artificielle pour une détection et une identification automatiques des

objets sur les pylônes.

4. Gestion des données par un serveur Django :

Les données recueillies sont ensuite traitées et organisées par un serveur Django. Ce système robuste

11
Chapitre 1. Présentation et Contexte du Projet

et flexible assure une gestion efficace des données, facilitant leur analyse et leur stockage.

5. Tableau de bord :

Développement d’un tableau de bord intuitif permettant d’évaluer l’état des pylônes de télécommunication.

Cela offre aux clients la possibilité de visualiser les résultats d’inspection et de prendre les décisions nécessaires

pour la maintenance des pylônes.

Figure 1.4 : Synopsis du projet

1.3.2 Pilotage du projet avec Scrum

Pour notre projet de fin d’études, nous avons choisi d’adopter la méthodologie Scrum, une approche

agile de la gestion des projets de développement de produits. Elle fournit une structure efficace pour gérer

les risques, les changements et les complexités liés au processus de développement.

1.3.2.1 Choix de la méthodologie Scrum :

Nous avons choisi la méthodologie Scrum en tant qu’équipe parce qu’elle correspond parfaitement à

nos besoins et à nos objectifs. L’un des principaux avantages de Scrum est qu’elle favorise un environnement

de travail collaboratif et encourage chaque membre de l’équipe à prendre des initiatives et à assumer des

responsabilités.

En répartissant nos tâches et en menant nos recherches ensemble, nous avons pu partager nos

connaissances et tirer parti des compétences individuelles de chaque membre de l’équipe. Cette approche

nous a permis d’exploiter des idées et des perspectives diverses, ce qui a conduit à des solutions plus créatives

12
Chapitre 1. Présentation et Contexte du Projet

et plus innovantes.

Une autre raison de choisir Scrum est sa capacité à fournir des résultats réels et utiles à intervalles

de temps réguliers. Grâce aux sprints, qui sont des périodes de temps définies pendant lesquelles nous nous

concentrons sur un ensemble spécifique de tâches, nous sommes en mesure de fournir des résultats dans les

délais prévus à la fin de chaque sprint. Cela nous permet d’obtenir rapidement un retour d’information de la

part du Product Owner et d’ajuster notre démarche en conséquence.

Figure 1.5 : Méthodologie de travail Scrum

La tenue régulière de réunions "Daily Scrum" nous a également été bénéfique. Ces brèves réunions

quotidiennes nous permettent de synchroniser notre travail, d’identifier les obstacles potentiels et de planifier

efficacement les tâches à venir. Elles facilitent la communication et la collaboration au sein de l’équipe, nous

aidant à rester alignés sur nos objectifs communs et à réagir rapidement aux changements.

En résumé, le choix de la méthodologie Scrum s’est confirmé être une décision bien avisée pour notre

équipe, car elle vise à promouvoir la production régulière de résultats de qualité et l’adaptation continue.

Grâce à Scrum, nous avons été en mesure d’optimiser la productivité, de maximiser l’engagement et d’obtenir

des résultats de haute qualité tout au long de notre projet final.

1.3.2.2 Les rôles :

Dans le cadre du rapport de notre projet, il est essentiel de mettre en lumière les principes clés de

la méthode Scrum que nous avons adoptée. En tant que start-up composée de trois personnes, nous nous

sommes engagés à respecter ces principes tout au long de réalisation de produits.

Product owner (Le propriétaire du produit) : Mr Faouzi Saidi, directeur commercial de Sotetel,

est responsable de la définition des objectifs du projet,de la gestion du backlog.

13
Chapitre 1. Présentation et Contexte du Projet

La Scrum Team (L’équipe Scrum) : Notre équipe DroneVision est composée de trois personnes,

Oussema Cherni, étudiant à l’université ISTIC, spécialisé en informatique, réseaux et télécommunications,

Chayma Zaouali, étudiante spécialisée en systèmes informatiques à l’ISI, et moi-même, Amira Karoui, étudiante

à l’IHEC, spécialisée en business intelligence.

Soutien externe : Nous avons bénéficié du soutien du Mr Adel Cherni, qui nous a aidés à utiliser

les logiciels SolidWorks et Repetier pour la conception 3D et la préparation de l’impression 3D, ainsi qu’à

assurer la sécurité du drone, et qui nous a aider pour avancer à ce projet.

Figure 1.6 : Les différentes cérémonies de Scrum

14
Chapitre 1. Présentation et Contexte du Projet

1.3.2.3 Product Backlog :

Tableau 1.1 : Tableau : Product Backlog

Thème User Story Priorité


En tant que constructeur de drones, je recherche les 1
meilleurs composants pour garantir des
Construction du drone
performances optimales. J’assemble ensuite ces
composants pour créer un drone fonctionnel et je
configure le système de contrôle et de
communication. Je teste ensuite le vol du drone
pour vérifier sa stabilité.
Iot En tant que constructeur, j’évalue également la 2
qualité de la caméra ESP32-cam et envoie les
images capturées vers Google Drive pour un
stockage ultérieur et une analyse.
En tant que data scientist, mon objectif est 3
Détection d’objets
d’améliorer la précision du modèle de détection
d’objets. Je collecte et labellise des images,
manuellement puis automatiquement, pour
entraîner le modèle. J’utilise un GPU pour accélérer
l’entraînement. Une fois entraîné, le modèle
YOLOv5 détecte les objets dans les images
capturées. Les résultats de la détection sont stockés
pour une analyse ultérieure.
Traitement de l’image et OCR En tant que data scientist, je veux utiliser 4
différentes méthodes pour améliorer la qualité de
l’image afin d’obtenir de meilleurs résultats de
reconnaissance, je veux utiliser Tesseract OCR pour
extraire des informations à partir des images
capturées
Continué sur la page suivante

15
Chapitre 1. Présentation et Contexte du Projet

Table 1.1 – Suite de la page précédente


Thème User Story Priorité
En tant que développeur Django, je crée une 5
Backend
application pour gérer le flux de travail du projet.
J’intègre le modèle de détection d’objets aux
images reçues de Google Drive et enregistre les
résultats dans une base de données SQLite et dans
le fichier static de django. Ensuite, je migre la base
de données vers PostgreSQL pour une meilleure
gestion des données. J’utilise également des
expressions régulières pour extraire les informations
spécifiques du texte détecté, afin de préparer les
données de manière efficace et précise pour
l’analyse ultérieure.
En tant que développeur Django, je veux 6
Frontend
implémenter l’authentification pour le tableau de
bord pour protéger les données et contrôler l’accès.
En tant que développeur Django, je veux visualiser
les données dans le tableau de bord pour analyser
les données.

La figure ci dessous montre le backlog produit réalisé sur Jira Software pour le suivi des sprints :

Figure 1.7 : Le backlog produit sur Jira Software

16
Chapitre 1. Présentation et Contexte du Projet

1.3.2.4 Choix outils de gestion de projet agile :

Pour la gestion de notre projet de fin d’études selon la méthodologie Scrum, nous avons choisi d’utiliser

l’outil JIRA. JIRA est un outil de gestion de projet agile largement utilisé dans l’industrie du développement

logiciel et adapté à la méthodologie Scrum.

Les raisons qui nous ont poussés à choisir JIRA sont les suivantes :

Gestion du backlog de produit : JIRA offre des fonctionnalités avancées pour la gestion du backlog

de produit. Nous pouvons créer des user stories, les prioriser, les estimer en points d’effort et les organiser

dans des sprints. Cela nous permet de garder une vue d’ensemble claire des fonctionnalités à développer et

de suivre leur progression.

Suivi des tâches et des problèmes : JIRA permet de créer des tâches, d’assigner des responsables,

de suivre leur avancement et de les lier aux user stories correspondantes. Nous pouvons également signaler

les problèmes rencontrés et les suivre jusqu’à leur résolution. Cela facilite la collaboration au sein de l’équipe

et assure une visibilité sur l’état des différentes tâches.

Intégration avec d’autres outils : JIRA peut être facilement intégré à d’autres outils utilisés dans

notre projet, tels que des systèmes de contrôle de version, des outils de tests ou de déploiement continu. Cela

assure une synchronisation efficace des différentes étapes du développement et une meilleure collaboration

entre les membres de l’équipe.

Flexibilité et personnalisation : JIRA est hautement configurable et permet d’adapter les flux

de travail, les champs, les statuts et les transitions selon nos besoins spécifiques. Cela nous permet de

personnaliser l’outil en fonction de notre méthodologie de travail et de l’adapter à notre projet.

1.3.2.5 Planification des sprints :

Nous avons défini sur 3 sprints pour notre projet comme le montre le tableau ci-dessous :

Tableau 1.2 : Planification des sprints

Release Sprint Propriétaire de la tâche Effort planifié (Par jours) Priorité

Construction du drone DroneVision 21 1


Release 1
iot DroneVision 21 2

Détection d’objets DroneVision 21 3


Release 2
Traitement de l’image et OCR DroneVision 21 4

Backend DroneVision 21 5
Release 3
Frontend DroneVision 21 6

17
Chapitre 1. Présentation et Contexte du Projet

Conclusion

En clôturant ce premier chapitre, l’univers fascinant de l’industrie des télécommunications en Tunisie

se révèle. La découverte de l’entité d’accueil, l’exploration de ses défis et la prise de conscience de l’urgence

d’une solution innovante ont marqué ces premiers pas. Que cette introduction serve de tremplin vers les

prochaines étapes, où chaque nouveau chapitre ouvrira des horizons inédits et plongera au cœur d’une aventure

technologique sans précédent.

18
Chapitre 2

Release 1 - Construction d’un


drone et intégration de l’IOT

Plan
1 Sprint 1 : Sélection et acquisition des composants, suivi de l’assemblage
et des tests de vol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2 Sélection et caractérisation des matériaux et composants


électroniques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2.2.1 Critères de sélection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2.2.1.1 Critères de sélection du châssis de drone . . . . . . . . . . . . . . 22

2.2.1.2 Critères de sélection de la carte de vol . . . . . . . . . . . . . . . 24

2.2.2 Sélection des matériaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

2.2.2.1 Méthode de notation pondérée . . . . . . . . . . . . . . . . . . . . 26

2.2.2.2 Application de la Méthode de Notation Pondérée pour la Sélection


du Châssis de Drone . . . . . . . . . . . . . . . . . . . . . . . . . . 26

2.2.2.3 Application de la Méthode de Notation Pondérée pour la Sélection


de la carte de vol . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

2.2.3 Considérations locales et contraintes de disponibilité . . . . . . . . . . . . . 29

2.2.3.1 Hélices , Moteurs et Esc . . . . . . . . . . . . . . . . . . . . . . . 29

2.2.3.2 Carte de vol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

2.2.3.3 Batterie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

2.2.4 Achat et caractérisation des composants choisie . . . . . . . . . . . . . . . . 30

2.2.4.1 Caractérisation du Châssis F450 . . . . . . . . . . . . . . . . . . . 31

2.2.4.2 Caractérisation du Moteur Brushless . . . . . . . . . . . . . . . . . 32

2.2.4.3 Caractérisation de la Carte de vol KK2.1.5 . . . . . . . . . . . . . 33

2.2.4.4 Caractérisation des ESC (Contrôleurs Électroniques de Vitesse) . 34

19
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

2.2.4.5 Caractérisation de la Batterie . . . . . . . . . . . . . . . . . . . . . 35

2.2.4.6 Caractérisation des Hélices . . . . . . . . . . . . . . . . . . . . . . 36

2.2.4.7 Caractérisation de la Radiocommande FS-6 et du Récepteur FS-iA6B 37

2.2.4.8 Résumé et Implications des Achats . . . . . . . . . . . . . . . . . . 37

3 Fabrication et Configuration Logicielle du Drone . . . . . . . . . . . . . 39

2.3.1 Impression 3D des composants du drone et précautions de sécurité . . . . . 39

2.3.1.1 Protection Essentielle de la Carte de Vol KK2.1.5 . . . . . . . . . 39

2.3.1.2 Solutions de Terrain d’Atterrissage : Deux Approches . . . . . . . 41

2.3.1.3 Conception support pour batterie Lipo . . . . . . . . . . . . . . . 42

2.3.1.4 Justification du Choix et Détails Techniques . . . . . . . . . . . . 43

2.3.2 Processus d’assemblage mécanique et intégration électronique . . . . . . . . 43

2.3.2.1 Préparation des composants . . . . . . . . . . . . . . . . . . . . . 43

2.3.2.2 Assemblage du Drone . . . . . . . . . . . . . . . . . . . . . . . . . 44

4 Configuration de la radiocommande Flysky FS-i6X et du Contrôleur


de Vol KK2.1.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

2.4.1 Appariement du Récepteur et de la Radiocommande Flysky FS-i6X . . . . 54

2.4.2 Configuration de la Radiocommande Flysky FS-i6X . . . . . . . . . . . . . 54

2.4.3 Configuration du contrôleur de vol KK2.1.5 . . . . . . . . . . . . . . . . . . 57

2.4.3.1 Étalonnage des Capteurs . . . . . . . . . . . . . . . . . . . . . . . 57

2.4.3.2 Test des Capteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

2.4.3.3 Configuration de la Disposition des Moteurs . . . . . . . . . . . . 58

2.4.3.4 Édition des Paramètres PI . . . . . . . . . . . . . . . . . . . . . . 58

2.4.3.5 Test du Récepteur . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

2.4.3.6 Étalonnage des ESC . . . . . . . . . . . . . . . . . . . . . . . . . . 59

2.4.3.7 Test des Moteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

5 Test de vol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

2.5.1 Période de Recharge : Un Défi Temporel . . . . . . . . . . . . . . . . . . . . 61

2.5.2 Le Recours à une Batterie de Voiture : Une Leçon Cruciale . . . . . . . . 62

2.5.3 L’Adoption d’une Alimentation Stabilisée : Une Solution Partielle . . . . . 62

2.5.4 Fusion d’une Alimentation Stabilisée et d’une Batterie : Une Solution Innovante 63

2.5.5 Le Rôle du Poids sur la Performance de Vol . . . . . . . . . . . . . . . . . 63

2.5.6 Questions de Stabilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

2.5.7 Vol stable : Une Réalisation Mémorable . . . . . . . . . . . . . . . . . . . . 64

20
2.5.8 L’Explosion de la Batterie : Un Incident Douloureux et Instructif . . . . . . 66

6 II. Sprint 2 : Intégration de l’IoT pour l’inspection des pylônes par drone 68

7 Fondements Théoriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

2.7.1 Introduction à l’Internet des Objets (IoT) . . . . . . . . . . . . . . . . . . . 69

2.7.2 L’ESP32 CAM : spécifications, capacités et applications courantes . . . . . 69

2.7.3 Les solutions de stockage en nuage avec un focus sur Google Drive . . . . . 71

8 Configuration et Programmation de l’ESP32 CAM . . . . . . . . . . . . 71

2.8.1 Choix du matériel : Présentation et justification de l’utilisation de l’ESP32


CAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

2.8.2 Conception 3D de l’ESP32 CAM avec SolidWorks . . . . . . . . . . . . . . 72

2.8.3 Processus de programmation de l’ESP32 CAM pour la capture d’images : . 72

9 Conception et Déploiement du Google Apps Script : . . . . . . . . . . . 73

2.9.1 Développement d’un projet Google Apps Script : . . . . . . . . . . . . . . . 73

2.9.2 Implémentation des fonctions requises : . . . . . . . . . . . . . . . . . . . . 73

2.9.3 Déploiement du projet : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

2.9.4 Test de l’ESP32-CAM : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

10 Fusion de l’ESP32-CAM et de Google Drive pour une Surveillance


Programmée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

2.10.1 Préparation des Ressources Nécessaires . . . . . . . . . . . . . . . . . . . . 77

2.10.2 Sélection et Préparation des Bibliothèques Clés . . . . . . . . . . . . . . . 77

2.10.3 Configuration de l’Appareil Photo Intégré à l’ESP32-CAM . . . . . . . . . 78

2.10.4 Vérification de la Connectivité : Un Test Impératif . . . . . . . . . . . . . 79

2.10.5 Régime de Capture et de Transmission d’Images : Fonctionnement Systématique 79

2.10.6 Paramétrage de l’Intervalle de Capture : Réglage Précis . . . . . . . . . . . 79

2.10.7 Initialisation du Système : Mise en Marche . . . . . . . . . . . . . . . . . . 79

2.10.8 Boucle de Fonctionnement Principal : Cycle Ininterrompu de Capture et de


Transmission . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

2.10.8.1 Analyse des résultats, discussion des améliorations possibles et


optimisations . . . . . . . . . . . . . . . . . . . . . 80

2.10.8.2 Synthèse des résultats de l’étude . . . . . . . . . . . . . . . . . . . 80

11 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

Introduction

L’excitation monte avec l’avancée dans le deuxième chapitre de cette aventure technologique. Au cœur

de cette Release 1 captivante, se trouve l’immersion dans l’art de la sélection minutieuse des composants,

de l’assemblage délicat et des essais de vol exaltants. Il s’agit d’une véritable quête de perfection, où chaque

élément du drone est sélectionné avec soin et assemblé avec précision pour viser des sommets toujours plus

hauts.

2.1 Sprint 1 : Sélection et acquisition des composants, suivi de

l’assemblage et des tests de vol

Le voyage débute par l’exploration des critères de sélection rigoureux, les recherches approfondies

et l’acquisition des composants méticuleusement choisis. L’intensité monte alors que l’assemblage soigneux

commence, chaque pièce s’ajustant pour créer un ensemble harmonieux. L’apogée de ce chapitre est atteint

avec les tests de vol enthousiasmants, où la magie de l’aéronautique prend véritablement son envol.

2.2 Sélection et caractérisation des matériaux et composants


électroniques

La sélection des matériaux et des composants électroniques est essentielle dans la conception d’un

drone. Le choix de ces éléments, comprenant le châssis, les hélices, les moteurs, la carte de vol, la batterie

et le système de transmission, influence les performances, l’efficacité, la durabilité et le coût du drone. La

sélection se fait en fonction de spécifications techniques, de compatibilité, de coût, de disponibilité et de

conformité aux normes. La prochaine section détaillera nos choix pour un drone d’inspection de pylônes de

télécommunication.

2.2.1 Critères de sélection

2.2.1.1 Critères de sélection du châssis de drone

Afin de choisir le châssis de drone le plus adapté à notre projet d’inspection de pylônes de télécommunications,

nous avons dû prendre en compte un certain nombre de critères cruciaux. Chacun de ces critères peut avoir

un impact significatif sur les performances, la fonctionnalité et l’efficacité globale du drone dans le contexte

spécifique de notre projet.

22
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

Le tableau suivant présente les quatre châssis de drones que nous avons examinés : le DJI F450,

le DJI F330, le S500 et le X525. Pour chaque châssis, nous avons répertorié des informations sur plusieurs

critères clés, y compris les dimensions, le poids (sans électronique), le matériau du châssis, la distance entre

les trous de montage du moteur, la compatibilité du moteur, de l’ESC, de l’hélice et de la batterie, la facilité

de montage et de réparation, la durabilité, la capacité d’emport, le prix, la disponibilité et l’espace pour

l’équipement supplémentaire.

Ces critères ont été soigneusement choisis pour leur pertinence dans le cadre de notre projet, et ils

sont susceptibles d’influencer la performance et la fiabilité du drone dans les opérations d’inspection des

pylônes de télécommunications.

Tableau 2.1 : Critères de sélection et détails des châssis de drone

Critères DJI F450 DJI F330 S500


Dimensions (mm) Empattement en Diagonal : 330 Largeur entre
diagonal : 450 centres de moteur :
480, Hauteur : 170

Poids (sans 282 156 454


électronique, en g)
Matériau du châssis fibre de verre Fibre de verre Fibre de verre et
et du nylon en renforcée nylon polyamide
polyamide.
Distance entre les 22 15 mm ou 22 12 22*12 mm 16 19 25
trous de montage mm
du moteur (mm)
Compatibilité 1000kv 920Kv 2212 à 2216 de 800
moteur à 920KV
Compatibilité Esc 30 A 18A 20 à 30 A
Compatibilité 1045 8 4,5 pouces 9 ou 10 pouces
hélice
Compatibilité 3S-4S Lipo LiPo 3S4S LiPo 3S-4S de 2200
batterie à 5000 mAh
Facilité de montage Modérée Modérée Modérée
et de réparation
Continué sur la page suivante

23
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

Table 2.1 – Suite de la page précédente


Critères DJI F450 DJI F330 S500
Durabilité Élevée (matériaux Modérée Élevée (matériaux
robustes) robustes)

Capacité d’emport 800g 1600g 600 g1 200 g 600g 1400g


(Poids maximum
que le drone peut
transporter, en g)
Prix 125 TND 110 TND 310 TND
Disponibilité Élevée Élevée Faible
Espace pour Élevé Faible Élevé
l’équipement
supplémentaire
(caméras, capteurs,
etc.)

2.2.1.2 Critères de sélection de la carte de vol

Dans cette section, nous allons examiner une série de critères clés pour le choix d’une carte de vol

pour notre drone. Il est important de prendre en compte une variété de facteurs pour choisir la carte de vol

qui conviendra le mieux à notre projet.

Ces critères fournissent une vue d’ensemble des caractéristiques à considérer lors du choix d’une carte

de vol. En évaluant chaque option par rapport à ces critères, nous pouvons faire un choix éclairé qui répond

le mieux à nos besoins.

Tableau 2.2 : Tableau comparatif des contrôleurs de vol

Critères LCD KK2.1.5 Carte Arduino CONTRÔLEUR


Contrôleur De UNO + Oled ARDUPILOT
Vol Blackboard + Gyroscope APM2.8
V5.5 MPU6050
Microcontrôleur Atmega644 PA Atmega168PA ATmega328P ATmega2560
Disponibilité Oui Oui Oui Non
GPS Non Non Non Oui

Suite page suivante

24
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

Table 2.2 – Suite du tableau


Critères LCD KK2.1.5 Carte Arduino CONTRÔLEUR
Contrôleur De UNO + Oled ARDUPILOT
Vol Blackboard + Gyroscope APM2.8
V5.5 MPU6050
Baromètre Non Non Non Oui
Accéléromètre Oui Oui Oui (3 axes) Oui
Gyroscope Oui (3 axes) Oui (3 axes) Oui (3 axes) Oui (3 axes)
Buzzer Oui Non Non Non
Prix 130,000 TND 89,000 TND 8,900 TND (prix 280 TND
de l’arduino uno
n’est pas inclus)
Nombre de ports 8 6 6 8
UART
Dimensions 50.5x50.5x12 mm 50x49x14.5 mm Arduino UNO : 75x50 mm
68.6x53.4
mm, Oled :
24.384x14.4
mm,
Gyroscope :
28.6x15x7.1 mm
Indicateur de cap Oui Oui Non Oui
Mode automatique Oui Non Non Oui
Signal du récepteur 1520us (5 channels) 1520us (4 channels) 1-2 ms 1000-2500 s
Signal ESC 1520us 1520us 1500 s 1000-2000 s
Poids 21 g 14.5 g Gyroscope : 2-3 25 g
g, Oled : 1-3 g,
Arduino UNO :
25 g
Afficheur LCD Non Oui (OLED) Non
Tension 4.8-6.0 V 3.3-5.5 V Oled : 3-5 V, 7-18 V
Gyroscope :
3.3 V, Arduino
UNO : 7-12 V

25
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

2.2.2 Sélection des matériaux

2.2.2.1 Méthode de notation pondérée

Cette méthode est une technique puissante et polyvalente de prise de décision qui offre une structure

claire pour comparer diverses options sur un ensemble de critères définis. Elle se distingue par sa capacité

à quantifier et à hiérarchiser les facteurs de décision, ce qui offre une vision claire de l’option qui offre le

meilleur équilibre entre les différents critères.

Dans cette méthode, chaque option est évaluée par rapport à chaque critère, généralement sur une

échelle numérique (par exemple, de 1 à 4 ou de 0 à 2). Chaque critère est également attribué un poids en

fonction de son importance relative dans la décision finale. Ces évaluations et ces poids sont ensuite combinés

pour produire un score total pour chaque option.

Ce qui rend cette méthode particulièrement efficace est sa flexibilité. Les critères et leurs poids peuvent

être facilement adaptés pour tenir compte de nouvelles informations ou pour ajuster l’importance relative des

différents critères. De plus, parce qu’elle offre une évaluation quantifiée, elle facilite grandement la justification

des décisions .

2.2.2.2 Application de la Méthode de Notation Pondérée pour la Sélection


du Châssis de Drone

Pour mettre en œuvre la méthode de notation pondérée dans notre processus de décision, nous avons

suivi les étapes suivantes :

1. Définition des critères : Nous avons commencé par identifier les critères importants pour notre

décision. Ces critères reflètent les caractéristiques et les performances clés que nous attendons de notre châssis

de drone, y compris des éléments tels que la compatibilité du moteur, du contrôleur de vitesse électronique

(ESC) et de la batterie, la durabilité, le poids, le prix, la disponibilité, et l’espace pour l’équipement

supplémentaire.

2. Attribution des poids aux critères : Nous avons attribué des poids à chaque critère en fonction

de son importance relative pour notre projet. Les critères tels que la compatibilité du moteur, de l’ESC et de

la batterie, ainsi que le prix et la disponibilité, ont été jugés particulièrement importants, et ont donc reçu

des poids plus élevés.

3. Évaluation des options selon chaque critère : Ensuite, nous avons évalué chaque option de

châssis de drone en fonction de chaque critère. Nous avons attribué une note à chaque option pour chaque

critère sur une échelle de 0 à 4, 0 signifiant une performance faible et 4 une performance élevée.

26
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

4. Calcul des scores pondérés : Nous avons ensuite multiplié la note de chaque option pour chaque

critère par le poids de ce critère pour obtenir un score pondéré. Ces scores pondérés reflètent l’importance

relative de chaque critère dans notre décision.

5. Somme des scores pondérés : Enfin, nous avons sommé tous les scores pondérés pour chaque

option pour obtenir un score total. Le score total fournit une évaluation globale de chaque option, facilitant

la comparaison entre elles.

Tableau 2.3 : Scores pondérés des options de châssis de drone

Critères DJI F450 DJI F330 S500 X525

Dimensions (mm) (2) 4 2 6 8

Poids (sans électronique, en g) (3) 9 12 3 6

Matériau du châssis (4) 12 8 12 16

Compatibilité moteur (5) 15 10 10 20

Compatibilité ESC (5) 20 15 20 20

Compatibilité hélice (5) 20 15 20 20

Compatibilité batterie (5) 20 20 20 20

Facilité de montage et de réparation (1) 2 2 2 2

Durabilité (3) 12 6 12 6

Capacité d’emport (3) 12 3 9 9

Prix (4) 16 16 4 12

Disponibilité (5) 20 20 0 0

Espace pour l’équipement supplémentaire (4) 16 0 16 16

Total 163 123 132 155

Après une analyse détaillée utilisant une méthode de notation pondérée, nous avons comparé quatre

châssis de drones : DJI F450, DJI F330, S500 et X525. Nos critères d’évaluation incluaient les dimensions, le

poids, la compatibilité technique, la facilité de montage et de réparation, la durabilité, la capacité d’emport,

le prix, la disponibilité et l’espace pour l’équipement supplémentaire .Nos calculs révèlent que le DJI F450

est le châssis le plus adapté à notre projet d’inspection de pylônes de télécommunications, avec un score total

de 163. Ensuite viennent le X525 (155), le S500 (132), et le DJI F330 (123). Le DJI F450 excelle en termes

de compatibilité technique, durabilité, capacité d’emport et espace pour l’équipement supplémentaire. Sa

27
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

disponibilité élevée et son prix raisonnable sont également avantageux. Bien que les autres châssis aient leurs

propres atouts, le DJI F450 se distingue selon nos critères et notre méthode de notation.

2.2.2.3 Application de la Méthode de Notation Pondérée pour la Sélection


de la carte de vol

Pour sélectionner la carte de vol la plus appropriée pour notre drone, nous allons utiliser la méthode

de notation pondérée. Cette approche nous aidera à quantifier les performances de chaque carte de vol par

rapport à une série de critères que nous avons identifiés comme étant importants pour notre projet.

Étape 1 : Définition des critères et attributions des poids

Nous avons identifié un ensemble de critères clés qui sont importants pour notre projet de drone.

Nous attribuons un poids à chaque critère sur une échelle de 1 à 5, où 5 signifie très important et 1 signifie

moins important. Voici une brève explication de chaque critère et son poids respectif.

Étape 2 : Évaluation des options selon chaque critère

Nous évaluerons chaque carte de vol par rapport à chaque critère, en attribuant une note de 0 à 5

pour chaque critère, où 0 signifie une performance faible et 5 une performance élevée.

Étape 3 : Calcul des scores pondérés et somme des scores

Nous calculons ensuite le score pondéré pour chaque carte de vol en multipliant le poids du critère

par la note obtenue. La somme de tous ces scores pondérés donnera le score total, permettant une évaluation

globale de chaque carte de vol et facilitant leur comparaison.

28
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

Tableau 2.4 : Scores Pondérés

Critères LCD KK2.1.5 Blackboard V5.5 Arduino UNO ARDUPILOT APM2.8

Microcontrôleur 20 15 15 25

Disponibilité 25 25 25 0

GPS 4 4 4 20

Baromètre 3 3 3 15

Accéléromètre et Gyroscope 25 25 25 25

Buzzer 10 2 2 2

Prix 12 16 20 4

Nombre de ports UART 16 12 12 16

Dimensions 9 9 6 12

Indicateur de cap 20 20 4 20

Mode automatique 20 4 4 20

Signal récepteur et ESC 20 20 15 25

Poids 12 15 12 12

Afficheur 10 2 10 2

Tension 16 16 12 16

Total 193 188 167 201

Lors de l’évaluation de quatre cartes de vol pour notre drone en utilisant une méthode de notation

pondérée, chaque carte a été évaluée sur divers critères importants pour notre projet. Bien que l’Ardupilot

APM2.8 ait obtenu le score le plus élevé, sa faible disponibilité l’a exclu comme option viable. En tenant

compte des scores pondérés et de la disponibilité, la LCD KK2.1.5 s’est révélée être l’option la plus appropriée

pour notre projet, malgré son score légèrement inférieur.

2.2.3 Considérations locales et contraintes de disponibilité

2.2.3.1 Hélices , Moteurs et Esc

En Tunisie, nous avons rencontré des difficultés significatives liées à la disponibilité et à la diversité

des composants de drones. Le manque de variété a influencé notre processus de sélection, limitant parfois

notre capacité à choisir les options optimales pour notre projet. En ce qui concerne les hélices, nous avons

été contraints de choisir parmi une gamme limitée, n’offrant qu’un seul type avec différentes tailles. Par

conséquent, nous avons dû opter pour des hélices de taille 1045, compatibles avec notre châssis F450. Notre

choix de moteurs a été similaire à celui des hélices, c’est-à-dire limité par le manque de diversité sur le marché.

Le seul choix disponible était basé sur la valeur KV du moteur. Par conséquent, nous avons opté pour un

29
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

moteur brushless de 1000 KV.

2.2.3.2 Carte de vol

La disponibilité des cartes de vol a également posé problème. Initialement, nous avions prévu d’utiliser

la carte de vol Ardupilot APM2.8 pour ses fonctionnalités avancées et sa performance supérieure. Cependant,

nous avons constaté qu’elle était introuvable sur le marché local. Même après avoir effectué un déplacement

à Sousse pour obtenir la seule unité APM2.8 disponible, nous avons découvert qu’elle était défectueuse. Nous

avons donc été obligés de choisir la carte de vol KK2.1.5, malgré ses limitations.

2.2.3.3 Batterie

Lors de la sélection d’une batterie pour notre drone, nous avons dû jongler entre performance et

disponibilité du marché tunisien. Nous avons finalement opté pour une batterie LiPo 3S 11,1V de 6000mAh.

Le choix de ce modèle repose sur plusieurs facteurs clés. Premièrement, sa légèreté et sa tension inférieure

permettent d’optimiser le temps de vol, une caractéristique primordiale pour notre projet. Deuxièmement,

les batteries LiPo 3S sont réputées pour leur stabilité de décharge, contribuant à une meilleure stabilité en

vol.

Bien que la capacité de 6000mAh soit en deçà de notre idéal, elle est suffisante pour un fonctionnement

de base. Les batteries LiPo sont en outre privilégiées dans l’industrie des drones pour leur haute densité

énergétique et leur capacité à délivrer un courant élevé, idéale pour des manœuvres rapides.

En dépit des limites du marché local, nous sommes confiants d’avoir choisi la batterie la plus adéquate

pour notre drone.

2.2.4 Achat et caractérisation des composants choisie

L’achat des composants d’un drone est une étape cruciale dans le processus de développement. Elle

implique de sélectionner les meilleurs fournisseurs et de s’assurer que les composants achetés répondent à

toutes les spécifications et exigences nécessaires pour le bon fonctionnement du drone.

Cette étape est particulièrement importante car la qualité des composants a un impact direct sur

les performances du drone. De plus, les coûts associés à l’achat de ces composants constituent une part

significative du budget total du projet. Il est donc essentiel de faire des choix judicieux pour garantir la

rentabilité du projet tout en assurant un niveau de performance satisfaisant.

30
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

2.2.4.1 Caractérisation du Châssis F450

D’une envergure de 450mm, le châssis F450 se démarque par sa conception en fibre de verre et en

nylon, qui combine légèreté et résistance. Son poids plume de 282g est particulièrement appréciable pour

optimiser le temps de vol de notre drone. L’un des points forts de ce châssis est sa carte de distribution

d’énergie intégrée, véritable facilitateur pour le câblage des moteurs et des ESC, contribuant ainsi à une gestion

efficace de l’espace. Le F450 offre également une grande flexibilité pour l’intégration des divers composants,

avec de multiples points de fixation et options d’emplacement. Sa plaque supérieure démontable facilite l’accès

aux composants internes pour l’entretien et les réparations. En somme, le châssis F450, par son agilité, sa

robustesse et sa flexibilité, se révèle être un choix idéal pour notre projet de drone.

Figure 2.1 : Châssis F450

31
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

2.2.4.2 Caractérisation du Moteur Brushless

Le moteur est l’une des composantes les plus critiques d’un drone, fournissant la force de propulsion

nécessaire pour le vol. Pour notre projet, nous avons choisi le moteur brushless A2212 1000Kv pour sa

puissance, sa compacité et son efficacité.

En termes de spécifications techniques, le moteur brushless A2212 1000Kv présente une efficacité

maximale , un courant d’efficacité maximale de 4-10A , et une capacité de courant de 12A pour 60 secondes.

En ce qui concerne les dimensions, ce moteur présente un diamètre de 27,5 mm et une longueur de 30 mm,

avec un poids total de 47 g, ce qui le rend assez compact pour notre utilisation.

En résumé, notre caractérisation du moteur brushless A2212 1000Kv confirme que c’est un choix

approprié pour notre drone en termes de puissance, d’efficacité, de durabilité et de compacité.

Figure 2.2 : Moteur Brushless A2212 1000Kv

32
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

2.2.4.3 Caractérisation de la Carte de vol KK2.1.5

La carte de vol KK2.1.5, spécialement conçue pour les aéronefs multi-rotors, a été choisie pour notre

drone grâce à ses performances et sa praticité. Elle utilise un IC Atmega644PA pour traiter les signaux du

système radio et les transmet aux ESC pour contrôler le vol. Équipée d’un système MPU 6050 ultra-sensible,

elle garantit une grande stabilité en vol en compensant les mouvements indésirables. Avec une tension d’entrée

de 4,8-6,0V, une interface AVR à 6 broches et une taille compacte de 51x51x12mm, la KK2.1.5 s’adapte

facilement à notre châssis F450 et offre une grande flexibilité de configuration de vol.

Figure 2.3 : Contrôleur de vol KK2.1.5

33
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

2.2.4.4 Caractérisation des ESC (Contrôleurs Électroniques de Vitesse)

Les contrôleurs électroniques de vitesse (ESC pour Electronic Speed Controllers) sont des dispositifs

qui contrôlent la vitesse du moteur du drone, en fonction des signaux reçus de la carte de vol. Pour notre

drone, nous avons choisi les ESC 30A, qui offrent des performances robustes et une gamme d’entrée de tension

flexible.

Le 30A est un ESC de 30A, capable de gérer un courant maximal de 40 A pendant plus de 10 secondes.

Il supporte une tension d’entrée allant de 5.6V à 16.8V, ce qui lui permet d’être alimenté par 2 à 4 cellules

LiPo. Cette flexibilité d’alimentation est essentielle, car elle permet d’utiliser une variété de sources d’énergie

pour notre drone, en fonction des exigences spécifiques de la mission.

Les ESC 30A sont conçus avec un démarrage à faible couple pour protéger le moteur et les autres

composants du drone contre les chocs de couple élevés lors du démarrage. De plus, ils sont équipés d’un

programme d’armement sécurisé qui garantit que le moteur ne démarrera pas accidentellement après l’allumage.

En termes de taille et de poids, les ESC sont compacts et légers, mesurant 5.0 cm x 2.5 cm x 1.0 cm

et pesant seulement 24 g. Ces dimensions compactes et ce poids léger aident à minimiser l’impact des ESC

sur la charge utile totale du drone.

En somme, les ESC 30A présentent une série de caractéristiques qui les rendent adaptés à notre drone,

notamment leur flexibilité d’alimentation, leur gamme de fonctionnalités programmables, leur sécurité, ainsi

que leur taille et leur poids compacts.

Figure 2.4 : Contrôleur de vitesse : ESC 30A

34
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

2.2.4.5 Caractérisation de la Batterie

La batterie est l’élément qui alimente notre quadricoptère, fournissant l’énergie nécessaire à tous ses

systèmes, y compris les moteurs, les ESC, la carte de vol, et le système de transmission. Le choix de la batterie

est donc essentiel pour assurer une durée de vol adéquate et une performance optimale.

La batterie que nous avons choisie est de la marque TCB WOERTH. Elle est de grade A, ce qui

signifie qu’elle a été fabriquée selon les normes de qualité les plus élevées.

Voici ses spécifications techniques :

— Capacité : 5200mAh

— Taux de décharge continu : 60C

— Voltage : 11.1V

— Nombre de cellules : 3S

— Dimensions : 140*43*28.5 mm

— Poids : 366g

Cette batterie a été choisie pour sa capacité élevée et son taux de décharge, qui permettent un vol

prolongé et un fonctionnement fiable du quadricoptère. Sa tension de 11.1V est compatible avec les exigences

électriques de nos autres composants, et son poids a été pris en compte dans la conception globale du

quadricoptère pour garantir un équilibre adéquat.

Figure 2.5 : Batterie LiPo TCB WOERTH

35
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

2.2.4.6 Caractérisation des Hélices

Les hélices sont des éléments clés de notre quadricoptère, jouant un rôle crucial dans la génération de

poussée et la manipulation de l’équilibre de l’appareil. Ces hélices ont été conçues spécifiquement pour des

cadres multirotors, offrant une excellente performance et une grande fiabilité. Fabriquées en plastique ABS

de haute qualité, elles sont résistantes tout en ayant une grande flexibilité, ce qui les rend à la fois durables

et capables de résister à des accidents importants.

Voici les spécifications techniques de ces hélices :

— Matériel : Plastique ABS

— Longueur : 10 pouces

— Pas de vis : 4,5 pouces

— Diamètre du trou central : 3mm

Ces caractéristiques, combinées à leur capacité à offrir un contrôle précis de l’équilibre, font de ces hélices un

choix parfait pour notre quadricoptère.

Figure 2.6 : Hélices : Sens horaire et anti-horaire

36
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

2.2.4.7 Caractérisation de la Radiocommande FS-6 et du Récepteur FS-iA6B

La radiocommande FS-6 est un dispositif de contrôle à 6 canaux avec une plage de fréquences RF de

2.4055 à 2.475 GHz. Elle possède un écran STN de type transflectif positif, avec une matrice de points de

128*64. Elle pèse 392g, alimentée par 4 piles AA de 1.5V produisant une puissance de 6V. De plus, elle offre

une sensibilité de 1024 et une alarme de basse tension en dessous de 4.2V. Il est également possible de mettre

à jour son logiciel en ligne.

Le récepteur FS-iA6B, d’autre part, opère également sur une plage de fréquences RF de 2.4055 à

2.475 GHz, et possède une sensibilité RX de -105dBm. Sa taille compacte de 42.626.115.1mm et son poids

léger de 16.4g le rendent parfait pour une utilisation sur notre quadricoptère. Il est alimenté par une source

d’énergie de 4.0-6.5V. De plus, le récepteur FS-iA6B dispose de ports i-Bus et de collecte de données pour

une flexibilité accrue. Ces spécifications techniques confirment que la radiocommande FS-6 et le récepteur

FS-iA6B sont parfaitement adaptés à nos besoins pour contrôler le quadricoptère, offrant à la fois une large

gamme de contrôles et une grande fiabilité.

Figure 2.7 : Radiocommande Flysky FS-i6X et Récepteur Flysky

2.2.4.8 Résumé et Implications des Achats

En conclusion, l’achat des composants pour notre drone a été une étape essentielle dans la réalisation

de notre projet. Cette phase a impliqué une recherche approfondie et une analyse détaillée pour sélectionner

37
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

les composants les plus appropriés en termes de fonctionnalité, de performance et de coût.

Nous avons choisi des composants de haute qualité pour garantir une performance optimale et une

longévité accrue du drone. Le choix du châssis F450, par exemple, offre une base solide et légère pour le

drone, tandis que le moteur brushless A2212 1000Kv assure une propulsion efficace et fiable. De même, la

carte de vol KK2.1.5 offre une multitude de fonctionnalités qui améliorent la stabilité et le contrôle du drone,

et les ESC 30 A assurent un contrôle précis du moteur.

L’achat de la batterie TCBWOETH de 6000mAh assure une durée de vol suffisante, ce qui est crucial

pour la réalisation des objectifs du projet. De plus, le choix du récepteur radio FS-iA6B et de l’émetteur

FS-T6 permet une communication efficace entre le pilote et le drone. En somme, l’achat des composants

a impliqué un compromis entre la performance, la durabilité, la fonctionnalité et le coût. En choisissant

judicieusement nos composants, nous avons été en mesure de maximiser la performance de notre drone tout

en respectant notre budget. Les implications de ces achats sont importantes. Non seulement ils ont un impact

direct sur la performance et la fonctionnalité de notre drone, mais ils déterminent également dans une large

mesure le coût total du projet. En effectuant des achats judicieux, nous avons pu optimiser la performance

de notre drone tout en respectant notre budget, ce qui est crucial pour la réussite de notre projet. En outre,

ces composants serviront de base pour les prochaines étapes du projet, notamment l’assemblage du drone et

les tests de vol.

Figure 2.8 : Achat des composants pour la construction du drone

38
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

2.3 Fabrication et Configuration Logicielle du Drone

Cette étape essentielle de notre projet implique la fabrication et la configuration logicielle de notre

drone. Au-delà de l’assemblage des pièces, la fabrication nécessite une précision et une connaissance approfondie

des composants. Parallèlement, la configuration logicielle, essentiellement la configuration de la carte de

vol KK2.1.5, est vitale pour contrôler la navigation, la stabilité et la réponse du drone aux commandes.

Cette étape intègre la fabrication et la configuration logicielle en un processus qui donne vie à notre drone,

fusionnant technologie, ingénierie et créativité. Préparons-nous donc à découvrir comment un ensemble de

pièces individuelles se transforme en un quadricoptère volant.

2.3.1 Impression 3D des composants du drone et précautions de sécurité

Dans notre quête d’excellence et de précision, l’impression 3D a joué un rôle prépondérant, permettant

la personnalisation et l’optimisation des composants de notre drone. Cette technologie novatrice, qui donne

forme à nos idées les plus audacieuses, a été utilisée pour créer divers éléments clés du drone, notamment le

cache de protection de la carte de vol et le support pour batterie LiPo.

En utilisant l’impression 3D, nous avons pu concevoir ces pièces sur mesure, garantissant ainsi une

adaptation parfaite à nos besoins spécifiques. Ce processus de personnalisation a permis d’optimiser les

performances de notre drone tout en augmentant sa durabilité et sa résistance.

La sécurité est une priorité dans tout ce que nous faisons. Pour cela, nous avons pris des précautions

supplémentaires en concevant des pièces de protection pour nos composants les plus délicats. Un cache de

protection pour notre carte de vol KK2.1.5, et un support spécialement conçu pour notre batterie LiPo ont

été soigneusement conçus pour minimiser le risque de dommages.

En bref, l’impression 3D s’est révélée être une alliée précieuse dans notre aventure. Elle a permis de

concrétiser nos visions, d’améliorer les performances de notre drone et de garantir sa sécurité. En constante

recherche d’innovation et de perfection, nous continuons d’explorer les vastes possibilités offertes par cette

technologie, afin de repousser les limites de ce que nous pouvons accomplir.

2.3.1.1 Protection Essentielle de la Carte de Vol KK2.1.5

Pour protéger notre carte de vol KK2.1.5, nous avons créé un cache de protection imprimé en 3D

sur mesure. Ce cache, conçu grâce à la modélisation 3D, offre une protection complète contre les conditions

extérieures et les impacts accidentels. Il est fabriqué avec un matériau durable et comprend des renforts

structurels pour plus de robustesse. Importamment, ce cache n’entrave pas les fonctionnalités de la carte

39
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

de vol et permet un accès facile aux connexions et ports nécessaires. Cette solution innovante préserve la

sécurité et la durabilité de la carte de vol, assurant ainsi le bon fonctionnement de notre drone dans diverses

situations.

Figure 2.9 : Cache de protection de la Carte de Vol KK2.1.5 : Conception avec SolidWorks

Figure 2.10 : Impression 3D de la Carte de Vol KK2.1.5

40
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

2.3.1.2 Solutions de Terrain d’Atterrissage : Deux Approches

Pour faire face à diverses contraintes physiques rencontrées lors de l’atterrissage, nous avons développé

deux solutions distinctes : l’une offrant une robustesse exceptionnelle, l’autre alliant légèreté et durabilité.

Robustesse Extrême : Terrain d’Atterrissage en Acier Galvanisé

Dans notre quête incessante de fournir une protection maximale à notre drone, nous avons développé

un terrain d’atterrissage spécial en acier galvanisé. Nous sommes conscients que l’utilisation d’un matériau

plus lourd peut potentiellement affecter les performances de vol. Cependant, nous avons pris en compte les

avantages significatifs qu’il offre en termes de résistance à l’usure et aux chocs.

L’acier galvanisé, grâce à son processus de galvanisation qui le recouvre d’une couche protectrice

de zinc, est un choix idéal pour un terrain d’atterrissage en raison de sa durabilité exceptionnelle et de sa

capacité à résister aux éléments extérieurs.

Grâce à cette construction robuste, notre terrain d’atterrissage en acier galvanisé peut résister à

des conditions difficiles et offrir une protection inégalée à la fois au drone et aux composants électroniques

sensibles. Il peut supporter les chocs et les impacts qui pourraient survenir lors des atterrissages, assurant

ainsi la sécurité de notre drone et prolongeant la durée de vie de ses composants.

Cependant, il est important de noter que le poids supplémentaire du terrain d’atterrissage en acier

galvanisé peut avoir un impact sur les performances de vol, notamment en termes de maniabilité et d’autonomie.

Malgré cela, après avoir évalué les avantages et les inconvénients, nous avons conclu que les bénéfices de la

résistance accrue et de la protection offerte par le terrain d’atterrissage en acier galvanisé compensent cette

légère contrainte.

41
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

Figure 2.11 : Fabrication du Terrain d’Atterrissage en Acier Galvanisé

Figure 2.12 : Réalisation finale du Terrain d’Atterrissage en Acier Galvanisé

2.3.1.3 Conception support pour batterie Lipo

De plus, parmi les pièces que nous avons créées sur mesure, nous avons conçu un support spécifique

pour protéger notre batterie LiPo des chocs et autres dangers potentiels.

La batterie LiPo est un composant essentiel de notre drone, mais elle est également sensible aux

dommages. Pour assurer sa sécurité et sa durabilité, nous avons utilisé l’impression 3D pour concevoir un

support de batterie sur mesure qui lui offre une protection supplémentaire.

Ce support de batterie est conçu de manière à maintenir fermement celle-ci en place tout en absorbant

les chocs éventuels lors de l’utilisation du drone. Grâce à des logiciels de modélisation 3D tels que Solidworks,

42
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

nous avons pu adapter précisément le support aux dimensions et à la forme spécifiques de la batterie LiPo.

En ajoutant ce support, nous réduisons les risques de mouvement ou de vibration de la batterie

pendant les vols, ce qui contribue à éviter les courts-circuits et les dommages potentiels. De plus, il offre une

protection supplémentaire contre d’autres dangers éventuels, tels que les impacts ou les objets étrangers qui

pourraient endommager la batterie.

Grâce à l’impression 3D, nous avons pu créer ce support sur mesure avec des caractéristiques spécifiques

répondant aux besoins de notre batterie LiPo. Cela démontre une fois de plus les avantages de cette technologie

dans la fabrication de pièces personnalisées qui améliorent la sécurité et les performances globales de notre

drone.

En conclusion, grâce à l’impression 3D, nous avons pu concevoir et fabriquer un support sur mesure

pour notre batterie LiPo, offrant une protection contre les chocs et les dangers potentiels. Cette solution

personnalisée renforce la sécurité et la durabilité de notre batterie, garantissant un fonctionnement optimal

de notre drone dans diverses situations.

2.3.1.4 Justification du Choix et Détails Techniques

Nous avons choisi le PLA pour le terrain d’atterrissage de notre drone en raison de sa légèreté, qui

améliore la maniabilité, la vitesse, la durée de vol et l’expérience de pilotage, comparé à l’acier galvanisé.

Malgré une moindre robustesse, le PLA offre une durabilité suffisante pour un atterrissage normal et des

risques de dommages peuvent être minimisés avec des précautions. Le PLA, utilisé en impression 3D, est

également un choix écologique, car il est fabriqué à partir de ressources renouvelables, biodégradable, a une

empreinte carbone réduite et ne nécessite pas de processus chimiques dangereux.

2.3.2 Processus d’assemblage mécanique et intégration électronique

2.3.2.1 Préparation des composants

Avant de commencer l’assemblage mécanique, une préparation méticuleuse des composants et des

outils nécessaires est cruciale. Cette étape implique un examen minutieux de chaque composant pour s’assurer

de son intégrité et de son bon fonctionnement. Il est primordial d’identifier toute défaillance ou anomalie à

ce stade pour éviter les complications ultérieures lors de l’assemblage ou de l’opération du drone.

En ce qui concerne les outils, nous avons réuni un ensemble d’instruments indispensables pour

l’assemblage de notre drone. Cela comprend :

. Tournevis : nécessaire pour le montage des diverses pièces mécaniques.

43
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

. Fer à souder et étain : utilisés pour les connexions électriques qui requièrent une soudure solide

et sécurisée.

. Clé à molette : utilisée pour le serrage et le desserrage des écrous et des vis.

. Pince coupante : indispensable pour couper les fils à la longueur adéquate.

. Pince à dénuder : utilisée pour enlever l’isolation des fils avant la soudure.

. Serre-câbles : pour organiser et sécuriser les câbles, évitant ainsi les enchevêtrements et les

dommages.

. Pied à coulisse : un outil de mesure précis pour garantir les bonnes dimensions de nos composants.

. Gaine thermorétractable :utilisée pour isoler et protéger les connexions électriques.

. Connecteurs XT60 et T-Plug : pour les connexions de la batterie et du système d’alimentation.

. Connecteurs Bullet mâles et femelles : pour les connexions entre les ESC et les moteurs.

.Colle à chaud : utilisée pour fixer certains composants ensemble ou pour sécuriser les connexions.

Fils électriques rouge et noir : utilisés pour le câblage des différents composants électriques du drone.

Ces outils et composants ont été soigneusement sélectionnés pour assurer un assemblage sans heurts et

une performance efficace du drone. La préparation préalable de ces éléments facilite grandement le processus

d’assemblage en évitant les retards et les erreurs potentielles.

2.3.2.2 Assemblage du Drone

Soudage des ESC sur la Carte de Distribution

Pour débuter notre processus d’assemblage, nous devons impérativement souder les contrôleurs de

vitesse électroniques (ESC) sur la carte de distribution. Cette étape nécessitera l’utilisation du fer à souder

et de l’étain afin d’assurer une connexion fiable et robuste.

La carte de distribution jouera un rôle central dans la distribution de l’énergie provenant de la batterie

à nos différents ESC. Chaque ESC sera responsable de contrôler un moteur spécifique. Par conséquent, la

connexion de ces ESC à la carte de distribution représente une étape cruciale dans la construction de notre

drone.

Durant cette phase, nous devrons accorder une attention particulière à la connexion correcte des

câbles des ESC. Habituellement, chaque ESC est muni de trois fils (positif, négatif et signal). Nous devrons

souder le fil positif (rouge) sur l’un des pads positifs de la carte de distribution, tandis que le fil négatif

(généralement noir) sera relié à l’un des pads négatifs. Quant au fil de signal, il ne sera pas relié à la carte de

distribution pour le moment, mais nous l’associerons à la carte de vol ultérieurement.

Nous recommandons d’apporter un soin particulier à nos soudures afin de garantir une bonne conduction

44
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

électrique et d’éviter tout risque de court-circuit. De plus, nous devons nous assurer que nos ESC sont

correctement alignés avec les bras du drone et que les fils sont suffisamment longs pour permettre les

connexions nécessaires sans aucune contrainte.

Figure 2.13 : Soudage des ESC sur la Carte de Distribution

Préparation des Fils Électriques

Une fois que les ESC sont soudés à la carte de distribution, l’étape suivante consiste à préparer les

fils électriques qui seront utilisés pour alimenter la carte de distribution à partir de la batterie. Ce processus

nécessite l’utilisation de pinces à dénuder et de tournevis pour couper les fils à la longueur appropriée et

dénuder les extrémités. Pour commencer, les fils électriques, généralement rouge pour le positif et noir pour

le négatif, doivent être coupés à une longueur adéquate. Cette longueur dépendra de la distance entre la

batterie et la carte de distribution. Il est généralement préférable de garder les fils aussi courts que possible

sans restreindre le placement de la batterie ou la manipulation du drone. Ensuite, les fils doivent être dénudés

à chaque extrémité à l’aide de la pince à dénuder. Cela expose une partie du conducteur en cuivre, permettant

une connexion électrique solide lors de la soudure. Il est important de ne dénuder que la quantité nécessaire

de fil pour éviter les courts-circuits potentiels. Enfin, ces fils sont soudés à la carte de distribution à l’endroit

approprié pour l’alimentation de la batterie. Encore une fois, il est crucial de faire attention à la polarité lors

45
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

de la soudure : le fil rouge doit être soudé au pad positif et le fil noir au pad négatif. Une soudure propre et

bien faite assure une conduction électrique efficace et minimisera les risques de déconnexion pendant le vol.

Figure 2.14 : Préparation des fils électriques pour l’alimentation de la carte de distribution
depuis la batterie

Connexion de l’Alimentation

Dans cette étape, nous nous concentrons sur la mise en place de la connexion entre notre drone et

la source d’énergie, à savoir la batterie. Notre première tâche consiste à dénuder les fils de l’autre extrémité

(côté non connecté à la carte de distribution) à l’aide d’une pince à dénuder.

Une fois les fils dénudés, nous préparons le connecteur XT60 en vue de la soudure. Le connecteur

XT60, largement utilisé dans les applications de drones, offre une connexion sécurisée entre la batterie et

le système d’alimentation du drone. Il est essentiel que nous veillions à souder les fils correctement sur le

connecteur XT60, en respectant la polarité : le fil rouge est soudé sur le terminal positif (+) et le fil noir sur

le terminal négatif (-).

Après avoir effectué la soudure des fils sur le connecteur XT60, nous recommandons l’utilisation d’une

gaine thermorétractable pour recouvrir les bornes de soudure. Cela contribue à prévenir les courts-circuits et

protège les soudures de l’usure. Une fois que tout est en place, nous disposons d’un système d’alimentation

46
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

prêt à être connecté à la batterie.

Désormais, avec le connecteur XT60 relié aux fils d’alimentation, nous avons la possibilité de connecter

et de déconnecter facilement la batterie du système d’alimentation du drone, facilitant ainsi les opérations

de charge et de remplacement de la batterie.

Figure 2.15 : Soudure des fils sur le connecteur XT60

Assemblage de la Structure du Drone

L’assemblage de la structure du drone est une étape essentielle où tous les éléments se regroupent

pour donner naissance à la forme finale du quadricoptère. Cette phase consiste à visser les différents éléments

du châssis ensemble, en utilisant le tournevis pour fixer fermement les vis.

La première étape consiste à monter les bras du drone sur la carte de distribution, qui sert également

de plaque inférieure du châssis. Les bras sont conçus pour être fixés à cette plaque avec des vis. Il est important

de s’assurer que chaque bras est correctement aligné et fermement attaché, car ils supportent les moteurs et

doivent résister aux forces générées pendant le vol.

47
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

Figure 2.16 : Assemblage de la structure du drone : fixation par vissage

Installation des Moteurs

L’installation des moteurs est une étape cruciale qui a une influence directe sur les performances de

vol du drone. Chaque moteur doit être soigneusement monté sur les bras du drone, en veillant à ce que tous

les moteurs soient correctement alignés.

Pour ce faire, chaque moteur est placé dans l’endroit désigné à l’extrémité de chaque bras. Les trous

pré-percés sur le bras du drone correspondent aux trous de fixation sur le moteur, permettant une installation

facile et solide. Il est recommandé de commencer par insérer une vis sans la serrer complètement, puis de

continuer avec les autres vis. Une fois que toutes les vis sont insérées, elles peuvent être serrées de manière

égale. Cette méthode assure que le moteur est correctement positionné et équilibré.

48
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

Figure 2.17 : Installation des moteurs dans la structure du drone : fixation par vissage

Connexion des Moteurs aux ESC et fixation des ESC sur les bras

La connexion des moteurs aux contrôleurs de vitesse électroniques (ESC) est une étape vitale pour

garantir que les moteurs répondent correctement aux commandes de la carte de vol. Les ESC servent

d’intermédiaire entre les moteurs et la carte de vol, contrôlant la vitesse de rotation de chaque moteur

en fonction des signaux qu’ils reçoivent de la carte.

Chaque moteur possède trois fils correspondant aux trois fils de l’ESC. Ces fils sont connectés ensemble

en utilisant des connecteurs bullet. Pour connecter le moteur à l’ESC, les connecteurs bullet doivent être

soudés aux fils du ESC.

Il est important de se rappeler que pour que les moteurs tournent dans le bon sens, les fils doivent

être connectés en suivant une séquence spécifique. Pour les moteurs qui tournent dans le sens des aiguilles

d’une montre, les fils rouge, noir et jaune de l’ESC sont connectés respectivement aux fils rouge, noir et jaune

du moteur. Pour les moteurs qui tournent dans le sens inverse des aiguilles d’une montre, les fils rouge et

noir de l’ESC sont inversés lorsqu’ils sont connectés aux fils du moteur.

Après avoir connecté les moteurs aux ESC, les connexions sont isolées à l’aide d’une gaine thermorétractable

pour éviter tout court-circuit.

49
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

Ensuite, les ESC sont fixés sur les bras du drone. Cette étape est importante pour garder les ESC en

place pendant le vol et pour assurer une bonne ventilation des ESC, qui peuvent chauffer lorsqu’ils sont en

fonctionnement. La fixation des ESC est réalisée à l’aide de serre-câbles, qui sont attachés autour du bras du

drone et de l’ESC, les maintenant fermement en place. Il est recommandé de placer les ESC sur le dessus des

bras pour assurer une bonne ventilation et pour faciliter les vérifications et les réparations éventuelles.

Figure 2.18 : Connexion des Moteurs aux ESC : liaison électrique essentielle

Installation de la Carte de Vol et Connexion des ESC à la Carte de Vol

Une fois que les ESC sont connectés aux moteurs et fixés en place, l’étape suivante consiste à installer

la carte de vol sur le châssis du drone et à la connecter aux ESC. La carte de vol est l’unité de contrôle

principale du drone, qui reçoit les commandes du récepteur radio et les traduit en commandes de vitesse pour

chaque moteur. La carte de vol est fixée sur la partie supérieure de la structure du drone, généralement au

centre, pour maintenir un équilibre optimal. Elle est fixée en place en utilisant des vis qui sont insérées à

travers les trous de montage pré-percés de la carte et vissées dans un cage imprimer avec l’imprimante 3d et

fixés avec le serre câble sur le drone . Il est important de veiller à ce que la carte de vol soit solidement fixée

pour éviter tout mouvement indésirable qui pourrait affecter la stabilité du drone en vol.

Une fois la carte de vol installée, les ESC sont ensuite connectés à elle. Chaque ESC possède un câble

à trois fils (rouge, noir et blanc) qui est connecté à l’un des connecteurs à 3 broches sur la carte de vol. Les

ESC doivent être connectés à la carte de vol en respectant un certain ordre pour que chaque moteur réagisse

correctement aux commandes de la carte de vol. En général, les ESC sont connectés à la carte de vol dans

l’ordre des moteurs, de 1 à 4, en suivant le sens des aiguilles d’une montre à partir du coin supérieur gauche

50
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

du drone. Une fois que tous les ESC sont connectés, le système de propulsion du drone est prêt à être testé

et calibré.

Figure 2.19 : Connexion des ESC à la carte de vol : intégration électrique pour le contrôle du
drone

Connexion du Récepteur à la Carte de Vol

La dernière étape cruciale de l’assemblage électronique du drone consiste à connecter le récepteur

radio à la carte de vol. Cette étape est importante car c’est ce qui permettra au pilote de contrôler le drone

à l’aide de la télécommande radio.

Le récepteur a un certain nombre de canaux, chacun correspondant à une fonction spécifique du

drone, comme le contrôle de l’aileron, de l’élévateur, du gouvernail, et des gaz. Chaque canal sur le récepteur

est connecté à un port correspondant sur la carte de vol.

La connexion est généralement réalisée à l’aide de câbles de connexion. Ces câbles ont une prise mâle

à une extrémité qui se branche dans le récepteur, et une prise femelle à l’autre extrémité qui se branche dans

la carte de vol.

51
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

Figure 2.20 : Connexion du Récepteur à la Carte de Vol

Il est important de s’assurer que chaque canal est correctement connecté à la bonne fonction sur la

carte de vol. Une fois que toutes les connexions sont faites, il est recommandé de vérifier soigneusement toutes

les connexions avant de procéder aux essais de vol.

Nous souhaitons également souligner l’importance de s’assurer que chaque canal est correctement

connecté à la bonne fonction sur la carte de vol. Avant de procéder aux essais de vol, il est crucial de vérifier

méticuleusement toutes les connexions.

Dans le processus d’assemblage d’un drone, chaque étape revêt une grande importance. Chaque

mouvement précis, chaque composant soigneusement intégré, contribue à créer une symphonie d’innovation

technologique. Nous avons fusionné l’électronique, l’informatique et l’aéronautique pour donner vie à un

appareil capable de conquérir les cieux. Notre transformation d’un ensemble de composants en une entité

volante, dotée d’une précision et d’une efficacité sans précédent, est le fruit de notre expertise technique, de

notre patience, de notre détermination et de notre créativité.

L’assemblage du drone est une étape majeure dans notre parcours. Cependant, il ne s’agit pas

de la finalité en soi. Une fois assemblé, notre drone nécessitera un entretien régulier, des ajustements et

éventuellement des réparations. C’est un engagement continu pour maintenir son fonctionnement optimal.

Nous sommes à l’aube de l’aventure. Le drone, assemblé et prêt à être déployé, ouvre la voie à

d’infinies possibilités. Ce processus d’assemblage est le point de départ d’une voie d’innovation, d’exploration

et de découverte. Il représente un pas audacieux vers l’avenir, un voyage qui ne fait que commencer. Alors

que nous nous préparons pour son premier vol, nous ressentons un profond sentiment d’accomplissement et

d’anticipation. Nous avons créé une passerelle vers le ciel et nous sommes prêts à l’emprunter.

52
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

Figure 2.21 : Test des moteurs pendant l’assemblage

2.4 Configuration de la radiocommande Flysky FS-i6X et du


Contrôleur de Vol KK2.1.5

Nous aborderons en détail l’étape essentielle de la configuration de la radiocommande Flysky FS-i6X

et du contrôleur de vol KK2.1.5 de notre drone quadricoptère. Cette étape est cruciale car elle définit comment

notre drone va interagir avec les commandes que nous lui donnons via la radiocommande, ainsi que comment

il va réagir en vol grâce à son contrôleur de vol.

La radiocommande Flysky FS-i6X nous servira d’interface entre le drone et nous, le pilote. Elle doit

être soigneusement configurée pour assurer une réactivité précise et fiable du drone à chaque commande.

Quant au contrôleur de vol KK2.1.5, il constitue le cerveau de notre drone. Il reçoit les informations

de la radiocommande et des différents capteurs du drone, et dirige les moteurs en conséquence pour assurer

la stabilité et le contrôle du drone en vol.

Nous commencerons par l’appariement du récepteur et de la radiocommande, une étape nécessaire

pour établir une communication stable entre les deux. Puis, nous passerons à la configuration détaillée de la

radiocommande en attribuant les fonctions spécifiques à chaque canal de contrôle.

Nous entrerons ensuite dans le vif du sujet avec la configuration du contrôleur de vol. Cela impliquera

53
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

l’étalonnage des capteurs, la configuration du schéma des moteurs, l’édition des paramètres PI pour le contrôle

du mouvement, et d’autres paramètres importants.

L’objectif final est de configurer et de préparer notre drone à des tests de vol efficaces et à des

opérations de vol ultérieures. Alors, plongeons dans le processus sans plus attendre.

2.4.1 Appariement du Récepteur et de la Radiocommande Flysky FS-i6X

L’une des étapes préliminaires essentielles dans la configuration de notre drone fut l’appariement du

récepteur et de la radiocommande Flysky FS-i6X. Cette procédure, aussi désignée sous le terme "binding", est

indispensable pour établir une communication exclusive entre notre récepteur spécifique et notre radiocommande.

La procédure d’appariement que nous avons suivie est assez directe. Tout d’abord, nous avons activé

notre radiocommande Flysky FS-i6X. Puis, nous avons placé le récepteur en mode d’appariement. Cette

opération s’est effectuée en appuyant sur un bouton dédié sur le récepteur, tout en le mettant sous tension.

Dans cet état, une LED spécifique du récepteur a commencé à clignoter, indiquant son passage en mode

d’appariement.

Ensuite, nous avons basculé notre radiocommande en mode d’appariement. Nous avons réalisé cette

opération en naviguant à travers le menu de la radiocommande jusqu’à l’option d’appariement. Une fois le

mode d’appariement activé sur la radiocommande, la LED sur le récepteur a cessé de clignoter et est restée

allumée de manière constante, confirmant ainsi le succès de l’appariement.

Il est important de noter que cette procédure d’appariement n’a besoin d’être réalisée qu’une seule

fois. Une fois que le récepteur est apparié avec la radiocommande, il enregistre ces informations et se connecte

automatiquement à cette radiocommande à chaque mise sous tension des deux appareils. Toutefois, si nous

rencontrions des problèmes de connexion, ou si nous souhaitions utiliser un autre récepteur avec la même

radiocommande, il serait nécessaire de répéter cette procédure d’appariement.

2.4.2 Configuration de la Radiocommande Flysky FS-i6X

Dans le cadre de notre projet, nous avons commencé par configurer notre radiocommande Flysky

FS-i6X. Voici les étapes que nous avons suivies pour sa configuration :

. Détermination du type d’appareil : En premier lieu, nous sommes allés dans "System Setup",

puis dans "Type" et avons sélectionné "Multirotor". Cela a permis de définir le type de drone que nous

utilisons.

. Choix du mode de contrôle : Nous avons ensuite défini le mode de contrôle en sélectionnant

"Mode 2" dans le menu "Control Mode". Le mode 2 est le plus couramment utilisé dans le pilotage des drones

54
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

et place le contrôle du lacet et des gaz sur le joystick de gauche, et le contrôle du tangage et du roulis sur le

joystick de droit. Les canaux de contrôle jouent un rôle vital dans la manière dont notre drone répond aux

commandes que nous donnons via la radiocommande. Voici un détail plus précis de chaque canal et de son

utilité :

1. Canal 1 - Aileron (Roulis) : Ce canal est attribué au contrôle du roulis, une action qui fait

basculer notre drone latéralement, comme une bascule. Les ailerons, situés sur les côtés du drone, sont les

composants qui permettent ce mouvement. En manipulant le joystick du canal 1, nous pouvions faire basculer

le drone d’un côté à l’autre, ce qui est crucial pour effectuer des virages ou pour stabiliser le drone contre les

vents latéraux.

Figure 2.22 : Manipulation du joystick de la radiocommande (Aileron)

2. Canal 2 - Élévateur (Tangage) : Le canal 2 est destiné à contrôler le tangage, qui fait monter ou

descendre l’avant du drone. Cela est rendu possible grâce à l’élévateur, qui se trouve généralement à l’arrière

du drone. Le contrôle du tangage est essentiel pour le décollage, l’atterrissage et le vol en avant ou en arrière.

Figure 2.23 : Manipulation du joystick de la radiocommande (Elevator)

3. Canal 3 - Gaz (Throttle) : Le canal 3 est notre levier d’accélération. Il contrôle la quantité

d’énergie que nous donnons aux moteurs de notre drone. En augmentant la valeur sur ce canal, nous faisons

augmenter la vitesse des moteurs, ce qui fait monter le drone. Inversement, en réduisant cette valeur, nous

faisons diminuer la vitesse des moteurs, ce qui fait descendre le drone.

55
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

4. Canal 4 - Direction (Lacet) : Le canal 4 est dédié à la commande de lacet, qui permet au drone

de pivoter ou de tourner sur son axe vertical. C’est un mouvement similaire à la rotation d’une toupie. Cette

commande est indispensable pour modifier l’orientation du drone sans déplacer son centre de gravité.

Figure 2.24 : Manipulation du joystick de la radiocommande (Rudder)

. Configuration des canaux auxiliaires : En accédant à "Function Setup", puis à "Aux. Channels",

nous avons assigné les différents boutons et interrupteurs de notre radiocommande à différentes fonctions

de notre drone. Par exemple, nous avons assigné l’armement/désarmement du drone à l’interrupteur SwA

(position 0 pour désarmé, position 1 pour armé) et le mode de vol à l’interrupteur SwC (position 0 pour le

mode stabilisé, position 1 pour le mode Horizon et position 2 pour le mode Acro).

. Inversion des voies si nécessaire : Lors de nos tests, si nous observions que certaines commandes

étaient inversées (par exemple, si le drone tournait à gauche alors que nous donnions l’ordre de tourner à

56
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

droite), nous avons corrigé cela en inversant les voies concernées. Pour ce faire, nous sommes allés dans

"Function Setup", puis dans "Reverse"

2.4.3 Configuration du contrôleur de vol KK2.1.5

2.4.3.1 Étalonnage des Capteurs

Au cours de l’étalonnage des capteurs, nous avons commencé par placer notre drone sur une surface

plane et immobile. Ceci est une précaution essentielle pour assurer l’exactitude de l’étalonnage. En effet, le

processus d’étalonnage a pour but d’offrir un point de référence neutre au contrôleur de vol pour comprendre

la position de repos du drone.

Nous avons navigué dans le menu du contrôleur de vol jusqu’à l’option "Sensor Calibration". Deux

types d’étalonnage ont été effectués ici : l’étalonnage de l’accéléromètre (option “Acc Calibration”) et celui

du gyroscope (option “Gyro Calibration”).

L’accéléromètre mesure l’accélération linéaire du drone dans les trois directions de l’espace (avant/arrière,

gauche/droite, haut/bas). L’étalonnage de cet instrument est crucial pour que le contrôleur de vol puisse

comprendre l’orientation du drone par rapport à la gravité terrestre et donc maintenir une trajectoire de vol

stable.

Le gyroscope, quant à lui, mesure la vitesse angulaire du drone, c’est-à-dire la rapidité avec laquelle

il change son orientation. L’étalonnage du gyroscope est donc essentiel pour que le contrôleur de vol puisse

comprendre et contrôler les mouvements de rotation du drone.

Ces étapes d’étalonnage, bien que simples à réaliser, ont une importance capitale pour le contrôle

précis et fiable de notre drone.

2.4.3.2 Test des Capteurs

Après avoir procédé à l’étalonnage des capteurs, nous avons réalisé un test des capteurs pour nous

assurer de leur bon fonctionnement et de la précision de l’étalonnage. Dans le menu du contrôleur de vol,

nous avons sélectionné l’option "Sensor Test". Cette option nous a permis de vérifier les valeurs renvoyées

par l’accéléromètre et le gyroscope.

Nous avons prêté une attention particulière aux valeurs renvoyées par les capteurs lorsque le drone

était immobile. Idéalement, l’accéléromètre devrait indiquer une accélération nulle dans les directions horizontales

(gauche/droite et avant/arrière). De même, le gyroscope devrait indiquer une vitesse angulaire nulle pour

tous les axes de rotation lorsque le drone est immobile.

57
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

Toutes les valeurs renvoyées par les capteurs lors du test étaient cohérentes avec ces attentes, ce

qui nous a permis de confirmer le succès de l’étalonnage et la fiabilité de nos capteurs. Cette étape de test

nous a également donné l’opportunité de nous familiariser avec l’interprétation des données renvoyées par les

capteurs, compétence qui s’avère essentielle pour le dépannage et l’optimisation du drone.

2.4.3.3 Configuration de la Disposition des Moteurs

Suite au test des capteurs, nous avons poursuivi avec la configuration de la disposition des moteurs.

Cette étape consiste à informer le contrôleur de vol de la disposition physique de nos moteurs sur le drone.

Pour cela, nous avons utilisé l’option "Load Motor Layout" du menu du contrôleur de vol KK2.1.5.

Puisque notre drone est un quadricoptère, nous avons sélectionné l’option "Quadcopter X Mode"

dans le sous-menu de la disposition des moteurs. Cela indique au contrôleur de vol que notre drone a quatre

moteurs et qu’ils sont disposés en forme de "X" lorsqu’on le regarde de dessus.

Il est essentiel de bien configurer la disposition des moteurs car cela permet au contrôleur de vol

de comprendre comment ajuster la vitesse de chaque moteur pour contrôler les mouvements du drone. Une

mauvaise configuration pourrait entraîner des mouvements imprévus ou une perte de contrôle du drone.

Une fois que nous avons sélectionné la disposition des moteurs appropriée, le contrôleur de vol a

affiché un diagramme pour confirmer notre sélection. Nous avons vérifié ce diagramme pour nous assurer

qu’il correspondait bien à la disposition physique réelle de nos moteurs. Une fois confirmé, nous avons quitté

le sous-menu et le contrôleur de vol a sauvegardé notre sélection.

2.4.3.4 Édition des Paramètres PI

L’étape suivante de notre processus de configuration du contrôleur de vol KK2.1.5 a impliqué l’édition

des paramètres Proportionnels-Intégraux-Dérivés (PID). Ces paramètres sont essentiels pour le contrôle du

drone car ils déterminent la réponse du contrôleur de vol aux différents mouvements du drone.

Nous avons accédé à ces paramètres via l’option "PI Editor" du menu du contrôleur de vol. Dans ce

sous-menu, nous avons pu modifier les paramètres PID pour les axes de roulis (Roll), de tangage (Pitch) et

de lacet (Yaw).

Après avoir défini les paramètres PID, nous avons sauvegardé nos réglages et sommes revenus au menu

principal du contrôleur de vol. À ce stade, notre contrôleur de vol a été configuré pour réagir de manière

appropriée aux mouvements du drone.

58
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

2.4.3.5 Test du Récepteur

Nous avons réalisé le test du récepteur, une étape clé pour garantir que les signaux envoyés par la

radiocommande sont correctement reçus et interprétés par le contrôleur de vol.

En sélectionnant "Receiver Test" dans le menu principal du contrôleur de vol KK2.1.5, nous avons

été en mesure de vérifier que le contrôleur de vol recevait correctement les commandes envoyées par la

radiocommande.

En manipulant les joysticks de la radiocommande, nous avons pu observer les variations des valeurs

affichées à l’écran pour les voies correspondantes. Par exemple, lorsque le joystick droit était poussé vers le

haut, la valeur de la voie PITCH augmentait. De même, en déplaçant le joystick gauche vers la droite, la

valeur de la voie YAW augmentait. Ces changements de valeurs indiquaient que le contrôleur de vol recevait

et interprétait correctement les signaux de la radiocommande.

Cependant, si lors de cette vérification, les valeurs se déplaçaient dans le mauvais sens, cela signifierait

que les voies de la radiocommande sont inversées. Dans ce cas, il serait nécessaire de naviguer vers le menu

"Function Setup", puis vers l’option "Reverse" pour inverser les voies concernées.

Enfin, après avoir validé que toutes les commandes étaient correctement reçues par le contrôleur de

vol, nous avons quitté le menu "Receiver Test" pour revenir au menu principal du contrôleur de vol.

2.4.3.6 Étalonnage des ESC

L’étalonnage des ESC, ou Contrôleurs Électroniques de Vitesse, est une étape essentielle pour garantir

un vol sûr et stable de notre drone. Les ESC sont responsables de la régulation de la vitesse de rotation des

moteurs en fonction des commandes que nous donnons via la radiocommande. Pour que le drone réagisse de

manière appropriée à nos commandes, chaque ESC doit comprendre les valeurs maximales et minimales du

signal qu’il recevra du contrôleur de vol. C’est précisément l’objectif de l’étalonnage des ESC.

Voici comment nous avons procédé pour l’étalonnage des ESC :

1. Dans le menu du contrôleur de vol KK2.1.5, nous avons sélectionné l’option "ESC Calibration".

2. Nous avons suivi les instructions à l’écran, qui demandaient d’abord de confirmer que les hélices

étaient retirées pour des raisons de sécurité. En effet, pendant l’étalonnage, les moteurs peuvent se mettre à

tourner à pleine vitesse, ce qui pourrait causer des blessures si les hélices étaient en place.

3. Une fois la confirmation donnée, l’écran suivant nous a demandé de placer le stick des gaz

(habituellement le stick gauche de la radiocommande) à la position maximale. Cela envoie le signal de gaz le

plus élevé possible aux ESC.

59
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

4. Après avoir confirmé que le stick des gaz était à la position maximale, le contrôleur de vol a émis

un signal sonore et a commencé le processus d’étalonnage. Pendant ce temps, chaque ESC a appris la valeur

maximale du signal de gaz.

5. Une fois le processus d’étalonnage terminé, nous avons réduit le stick des gaz à la position minimale.

De cette façon, chaque ESC a appris la valeur minimale du signal de gaz.

6. Après l’étalonnage, nous avons redémarré le contrôleur de vol pour enregistrer les nouvelles valeurs

d’étalonnage.

Ainsi, nous avons réussi à étalonner nos ESC pour qu’ils répondent de manière précise et fiable à nos

commandes pendant le vol.

2.4.3.7 Test des Moteurs

La dernière étape de notre configuration du contrôleur de vol KK2.1.5 a été le test des moteurs. Ce

test nous a permis de vérifier que chaque moteur répond correctement aux signaux envoyés par le contrôleur

de vol et qu’il tourne dans la bonne direction.

Voici comment nous avons procédé pour le test des moteurs :

1. Dans le menu du contrôleur de vol, nous avons sélectionné l’option "Motor Test". Comme pour

l’étalonnage des ESC, l’interface nous a d’abord demandé de confirmer que toutes les hélices étaient retirées

pour éviter tout risque de blessure.

2. Après avoir confirmé, nous avons activé le test des moteurs. À ce stade, chaque moteur a commencé

à tourner à basse vitesse.

3. En regardant la vue de dessus du drone, nous avons vérifié que chaque moteur tournait dans la

direction indiquée par le schéma de disposition des moteurs que nous avions précédemment chargé (Quadcopter

X Mode). Par exemple, pour un Quadcopter en mode X, le moteur 1 (avant droit) et le moteur 3 (arrière

gauche) devraient tourner dans le sens des aiguilles d’une montre, tandis que le moteur 2 (avant gauche) et

le moteur 4 (arrière droit) devraient tourner dans le sens inverse.

4. Si nous avions trouvé un moteur qui tournait dans la mauvaise direction, nous aurions dû échanger

deux des trois fils qui le connectent à l’ESC pour inverser sa direction de rotation.

5. Une fois que nous avons confirmé que tous les moteurs tournaient dans la bonne direction, nous

avons terminé le test des moteurs en désactivant la fonction "Motor Test" dans le menu du contrôleur de vol.

En suivant ces étapes, nous avons pu nous assurer que nos moteurs répondent correctement aux

commandes du contrôleur de vol et qu’ils sont prêts pour le vol.

la configuration de la radiocommande Flysky FS-i6X et du contrôleur de vol KK2.1.5. Ces deux

60
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

éléments représentent le système nerveux de notre drone, permettant le contrôle précis de son vol et le

réglage fin de ses performances. La radiocommande, qui est l’interface entre le pilote et le drone, nécessite

une configuration minutieuse pour garantir une réponse précise et fiable à chaque commande. Le contrôleur

de vol, de son côté, est l’élément qui gère les informations venant de la radiocommande et des divers capteurs

du drone, puis contrôle les moteurs pour réaliser le vol souhaité.

La configuration de ces deux composants requiert une attention particulière. Nous avons commencé

par l’appariement de la radiocommande et du récepteur, une étape essentielle pour établir une connexion

fiable entre les deux. Ensuite, nous avons procédé à la configuration de la radiocommande elle-même, en

attribuant les fonctions spécifiques à chaque canal de contrôle.

La configuration du contrôleur de vol a été un processus plus détaillé. Cela a commencé par l’étalonnage

des capteurs pour assurer la précision des données qu’ils fournissent au contrôleur de vol. Puis nous avons défini

la disposition des moteurs et ajusté les paramètres de contrôle PI pour obtenir un vol stable et contrôlable. Un

test du récepteur a été effectué pour confirmer que le contrôleur de vol recevait correctement les commandes

de la radiocommande.

Ensuite, L’étalonnage des ESC a permis de garantir une réponse précise des moteurs aux commandes

du contrôleur de vol. Enfin, nous avons effectué un test des moteurs pour confirmer qu’ils répondent correctement

aux signaux du contrôleur de vol.

Nous avons un drone prêt à voler, avec une radiocommande et un contrôleur de vol parfaitement

configurés pour notre besoin spécifique.

2.5 Test de vol

2.5.1 Période de Recharge : Un Défi Temporel

La période de recharge de nos batteries s’est imposée comme une contrainte conséquente. La durée

nécessaire pour une recharge complète a non seulement ralenti notre processus d’essai et d’optimisation, mais

a également érodé le temps précieux de vol disponible entre chaque cycle de recharge. Ce défi complexe a

souligné la nécessité d’investir dans la recherche de solutions visant à prolonger le temps de vol tout en

maintenant l’intégrité du système. Les stratégies déployées pour surmonter cette épreuve ont mis en lumière

l’importance de l’efficacité énergétique dans le développement de drones.

61
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

2.5.2 Le Recours à une Batterie de Voiture : Une Leçon Cruciale

Pour contrecarrer le dilemme du temps de recharge, nous avons envisagé l’utilisation d’une batterie

de voiture. Malgré nos espoirs, cette initiative s’est avérée infructueuse, menant à une surcharge accidentelle

qui a rendu la batterie hors service. Ce revers a souligné la prudence nécessaire lors de l’expérimentation de

nouvelles méthodes, en mettant en évidence les dangers potentiels de l’innovation sans une compréhension

approfondie des implications techniques.

Figure 2.25 : batterie de voiture

2.5.3 L’Adoption d’une Alimentation Stabilisée : Une Solution Partielle

Pour remplacer la batterie de la voiture endommagée, nous avons intégré une alimentation stabilisée

de 12V/40A. Malgré cette tentative, l’intensité s’est révélée insuffisante pour alimenter nos quatre moteurs

de 1000kv, chacun soutenu par des pilotes ESC 30A. Cet écart entre l’alimentation et la demande a présenté

62
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

un nouveau défi, nous rappelant l’importance de la correspondance entre l’offre énergétique et les exigences

techniques.

2.5.4 Fusion d’une Alimentation Stabilisée et d’une Batterie : Une Solution


Innovante

Face au déficit énergétique, nous avons trouvé une solution en couplant notre alimentation à une

ancienne batterie Lipo 3s de 3000mAh, capable d’une décharge maximale de 45C. Cette alliance a permis

de surmonter les défis posés par les pics de demande d’énergie, compensant le manque de puissance de

l’alimentation stabilisée. Bien que cette stratégie ait porté ses fruits, elle a également souligné l’importance

de surveiller étroitement la condition de la batterie pour prévenir les risques potentiels.

2.5.5 Le Rôle du Poids sur la Performance de Vol

Le poids de notre drone s’est révélé être un facteur déterminant dans les performances de vol. La tâche

consistant à trouver le juste équilibre entre la robustesse des composants et la légèreté nécessaire pour un vol

optimal s’est avérée être un défi de taille. Chaque décision concernant les composants avait des répercussions

sur la maniabilité, l’agilité et l’autonomie du drone. L’expérience a démontré que la recherche constante de

solutions innovantes est essentielle pour atteindre l’équilibre idéal entre le poids et la performance.

2.5.6 Questions de Stabilité

Parmi les défis inattendus, les problèmes de stabilité du drone ont été particulièrement marquants.

Après une analyse minutieuse, nous avons découvert que nos moteurs fonctionnaient dans le sens inverse de

celui prévu par le schéma de la carte KK2.1.5. Ce détail apparemment minime a provoqué un déséquilibre

considérable dans la stabilité de l’appareil. La correction de l’orientation des moteurs a été une étape

cruciale pour remédier à ce problème, mettant en évidence l’importance d’une connaissance approfondie

des spécifications techniques et des schémas de montage.

63
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

2.5.7 Vol stable : Une Réalisation Mémorable

Au lendemain de nos rigoureux tests de vol, après avoir subi les tracas de la configuration minutieuse

de la carte de vol, et ayant surmonté une kyrielle de problèmes techniques, nous avons atteint un jalon

significatif et gratifiant dans notre quête : la réalisation du vol stable. C’est un rêve qui s’est enfin matérialisé,

un rêve qui autrefois flottait dans le royaume de l’impossible, mais qui, à présent, grâce à la persévérance de

notre équipe, s’est ancré dans le domaine du possible.

Le moment où notre drone a maintenu son premier vol stable a été une révélation époustouflante.

C’était comme si le temps s’était arrêté, et l’atmosphère était saturée de tension et d’anticipation. Le drone

s’est élevé lentement, son bourdonnement devenant un chant de triomphe. Puis, il est resté là, dans les

airs, immobile comme une étoile dans la nuit. C’était une vision impressionnante, un spectacle qui a mis en

évidence l’union parfaite de la technologie et de l’innovation.

Dans ce moment de gloire, l’excitation a remplacé nos soucis. Nos visages tendus ont laissé place

à des sourires d’émerveillement, les cœurs battant à l’unisson avec le rythme hypnotique des rotors. Nous

avons tous senti une joie indescriptible, une sorte de jubilation réservée aux explorateurs qui ont gravi des

montagnes, plongé dans les profondeurs inexplorées ou atteint les étoiles.

C’était plus qu’une simple réalisation technique. C’était la concrétisation d’un rêve, la preuve tangible

que la persévérance, le dévouement et la passion peuvent transcender les limites de ce que nous pensions

possible. C’était l’apogée d’innombrables heures de travail, de dévouement, d’échecs et de triomphes. C’était

la démonstration ultime que notre équipe est capable d’atteindre les étoiles, d’affronter l’adversité et de

transformer les rêves en réalités.

Cette réussite marque un tournant dans notre voyage, mais ce n’est pas la fin. C’est un pas de géant

vers des horizons inexplorés, vers des vols plus stables, plus efficaces et plus sûrs. C’est la promesse que nous

continuerons à repousser les limites, à innover et à améliorer notre technologie pour que, dans un avenir

proche, nos drones puissent inspecter chaque pylône avec une précision et une fiabilité sans précédent.

En fin de compte, le vol stable n’est pas seulement un rêve qui a été réalisé. C’est une célébration

du génie humain, un témoignage de notre détermination à repousser les frontières de l’impossible. C’est un

hymne à l’innovation, un triomphe de la technologie sur les défis. C’est notre moment de gloire, et c’est avec

une immense fierté que nous le partageons avec le monde.

64
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

Figure 2.26 : Vol stable du drone : équilibre et contrôle pour une expérience de vol fluide

Figure 2.27 : Vol du drone après les améliorations apportées au système d’alimentation et à la
stabilité

65
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

2.5.8 L’Explosion de la Batterie : Un Incident Douloureux et Instructif

Le point culminant de nos tests s’est produit lors de l’explosion tragique de notre batterie. Cet

incident, provoqué par un écart de tension entre la batterie (11,1V) et l’alimentation stabilisée (12V), a

entraîné une surcharge dévastatrice. L’incendie qui a suivi a détruit le drone, mettant fin prématurément à

notre première phase de tests. Cet événement désastreux, aussi tragique soit-il, a renforcé notre détermination

à tirer des leçons de nos erreurs et à améliorer sans cesse nos protocoles de sécurité pour prévenir de tels

incidents à l’avenir.

Figure 2.28 : explosion tragique de la batterie lors du test -partie 1-

Figure 2.29 : explosion tragique de la batterie lors du test -partie 2-

66
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

Figure 2.30 : explosion tragique de la batterie lors du test -partie 3-

Notre phase de test de vol a été une expérience intense et enrichissante, avec ses réussites et ses défis.

Elle a également été marquée par un incident tragique qui a laissé une empreinte indélébile sur notre équipe.

Notre victoire initiale a été rapidement tempérée par un problème majeur : la batterie vétuste et

défaillante de notre drone. L’intégration d’une alimentation stabilisée en parallèle a permis de surmonter ce

défi, augmentant considérablement la durée de vol et offrant à notre drone une autonomie illimitée.

Cependant, la joie de cette réussite a été assombrie par un événement inattendu et catastrophique :

l’explosion de la batterie. Ce moment, qui restera gravé dans nos mémoires, a transformé notre atelier en un

champ de ruines fumant. La déflagration a résonné comme un coup de tonnerre, faisant trembler les murs et

remplissant l’air d’une fumée suffocante et toxique. Nos rêves, notre travail acharné, tout semblait être parti

en fumée en un instant. Cette tragédie a été un choc pour tous, l’équipe dévastée et traumatisée par cette

soudaine explosion.

Mais au-delà de la désolation et du choc, cet incident a aussi été un catalyseur de notre résilience. En

effet, ce qui aurait pu nous anéantir nous a en réalité rendus plus forts. Nous avons transformé notre échec en

une source de motivation, rappelant les paroles de Thomas A. Edison : "Notre plus grande faiblesse

réside dans l’abandon. La façon la plus sûre de réussir est toujours d’essayer encore une fois".

Cette épreuve a renforcé notre détermination à ne pas abandonner. Nous avons investi dans de

nouveaux composants et avons utilisé l’expertise que nous avions acquise pour reconstruire notre drone.

Malgré les défis, nous sommes restés déterminés et optimistes, prêts à faire face aux obstacles futurs avec une

67
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

confiance renouvelée.

Ainsi, malgré la douleur et le défi que cet incident a représenté, il a également renforcé notre résilience

et notre détermination à réussir. Cela a été une leçon précieuse et une épreuve qui, loin de nous dissuader,

nous a galvanisés pour la suite de notre aventure

Figure 2.31 : Fabrication d’une nouvelle drone

2.6 II. Sprint 2 : Intégration de l’IoT pour l’inspection des pylônes

par drone

Le voyage se poursuit avec l’exploration de la technologie qui permet la capture d’images extraordinaires

pendant les vols d’essai. Le mystère de l’ESP 32 Cam se dévoile peu à peu, révélant un monde de sophistication

et de capacités stupéfiantes, capable d’immortaliser chaque moment avec une netteté exceptionnelle. Pour

compléter cette exploration, le voyage fait escale dans l’abîme virtuel de Google Drive. Là, chaque image

capturée trouve un refuge sûr, prête à être analysée et mise à profit dans la quête d’améliorations et de

découvertes.

2.7 Fondements Théoriques

Dans cette partie , nous allons passer en revue les fondements théoriques et les technologies clés

nécessaires à la réalisation de notre projet. Nous commencerons par une introduction à l’Internet des Objets

(IoT), suivie d’une présentation détaillée de l’ESP32 CAM, un module polyvalent pour la capture d’images.

Enfin, nous examinerons les solutions de stockage en nuage, en mettant l’accent sur Google Drive.

68
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

2.7.1 Introduction à l’Internet des Objets (IoT)

L’Internet des Objets (IoT) est un concept qui fait référence à l’interconnexion des objets physiques

via Internet, leur permettant de collecter et d’échanger des données. L’IoT offre des possibilités infinies dans de

nombreux domaines, de la domotique à la santé, en passant par la logistique et l’industrie. Il permet aux objets

de communiquer entre eux et avec les utilisateurs, créant ainsi des systèmes intelligents et interconnectés.

Dans notre projet spécifique, nous utilisons une caméra IoT pour capturer des images des pylônes et

les héberger sur Google Drive via Internet. L’intégration de l’IoT offre de nombreux avantages, notamment :

. Collecte de données en temps réel : Les capteurs intégrés à la caméra IoT permettent de

recueillir des données en temps réel sur l’état des pylônes, offrant une visibilité immédiate sur les conditions

de chaque site inspecté.

. Automatisation des tâches d’inspection : Grâce à l’IoT, certaines tâches d’inspection peuvent

être automatisées, réduisant ainsi les erreurs humaines et accélérant le processus global d’inspection.

. Amélioration de l’efficacité globale : L’intégration de l’IoT permet une gestion plus efficace

des opérations d’inspection des pylônes, en optimisant l’utilisation des ressources et en réduisant les délais

de réponse aux problèmes potentiels.

2.7.2 L’ESP32 CAM : spécifications, capacités et applications courantes

L’ESP32 CAM est un module compact et abordable qui combine les fonctionnalités d’un microcontrôleur

ESP32 et d’une caméra. Équipé d’un capteur d’image OV2640 de 2 mégapixels, l’ESP32 CAM est capable

de capturer des images de haute qualité. Il prend en charge la communication sans fil via le Wi-Fi et peut

être programmé pour diverses applications IoT.

Figure 2.32 : Module caméra ESP32-CAM

69
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

Voici les spécifications de l’ESP32 CAM :

Tableau 2.5 : Caractéristiques de l’ESP32-CAM

Valeurs / Caractéristiques
Description

Processeur 2 CPU LX6 32 bits

Caméras supportées OV2640, OV7670

Flash intégré Oui

Port micro USB Oui

Téléchargement Oui
d’images via WiFi

Protocoles de réseau WiFi 802.11b/g/n/e/i, Bluetooth 4.2


pris en charge

Modes de STA (Station), AP (Point d’accès), STA+AP


fonctionnement WiFi (Station+Point d’accès)

RAM 520 Ko intégrés + 4 Mo PSRAM

Dimensions 27 * 40,5 * 4,5 mm (±0,2 mm)

Bluetooth Bluetooth 4.2 BR/EDR et BLE

WiFi 802.11b/g/n/e/i

Carte TF (microSD) Support jusqu’à 4 Go

Formats de sortie JPEG (OV2640 uniquement), BMP, niveau de


d’image gris

Plage de fréquences 2412 2484 MHz

Consommation Flash éteint : 180 mA-5 V


électrique

Sécurité WiFi WPA, WPA2, WPA2-Enterprise, WPS

Plage de tension 5V
d’alimentation

Poids 10 g

Prix 45 DT

70
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

2.7.3 Les solutions de stockage en nuage avec un focus sur Google Drive

Les solutions de stockage en nuage sont devenues courantes pour la sauvegarde et le partage des

données. Elles permettent aux utilisateurs d’accéder à leurs fichiers depuis n’importe quel appareil connecté

à Internet et offrent une solution de sauvegarde sécurisée en cas de perte ou de dommage du matériel.

Dans notre projet, nous envisageons d’utiliser Google Drive comme solution de stockage en nuage

pour nos images capturées par l’ESP32 CAM. Google Drive offre un espace de stockage gratuit et payant,

permettant de stocker et de partager différents types de fichiers, y compris des images. Il fournit également

des API qui facilitent l’interaction avec les fichiers stockés, permettant leur intégration avec d’autres systèmes

et applications.

L’utilisation de Google Drive présente plusieurs avantages, tels que sa facilité d’utilisation, sa disponibilité

multiplateforme, la sécurité des données et la possibilité de collaborer avec d’autres utilisateurs. Il nous

permettra de stocker nos images de manière sécurisée, tout en facilitant leur accès à partir de différents

appareils et la mise en place d’un flux de travail efficace pour notre projet.

2.8 Configuration et Programmation de l’ESP32 CAM

Dans cette section, nous aborderons la configuration et la programmation de l’ESP32 CAM pour la

capture d’images. Nous commencerons par présenter et justifier l’utilisation de l’ESP32 CAM en tant que

matériel pour notre projet. Ensuite, nous présenterons une conception 3D de l’ESP32 CAM réalisée avec

SolidWorks, ce qui nous permettra de mieux visualiser son aspect physique.

2.8.1 Choix du matériel : Présentation et justification de l’utilisation de


l’ESP32 CAM

L’ESP32 CAM a été choisi comme matériel pour notre projet de capture d’images en raison de ses

caractéristiques et de ses capacités adaptées à nos besoins. Voici les principales raisons de ce choix :

Intégration de la caméra :

L’ESP32 CAM est équipé d’un capteur d’image OV2640 de 2 mégapixels, ce qui nous permet de

capturer des images de qualité acceptable pour notre application.

Connectivité sans fil :

L’ESP32 CAM prend en charge le Wi-Fi, ce qui nous permet de transférer les images capturées vers

des serveurs distants ou des solutions de stockage en nuage.

Puissance de traitement suffisante :

71
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

Avec ses deux CPU LX6 32 bits, l’ESP32 CAM dispose de la puissance de calcul nécessaire pour

effectuer des opérations de traitement d’image et de communication sans fil.

Flexibilité de programmation :

L’ESP32 CAM est programmable avec l’environnement de développement Arduino IDE, ce qui facilite

le développement du code pour notre application de capture d’images.

2.8.2 Conception 3D de l’ESP32 CAM avec SolidWorks

Pour mieux visualiser l’aspect physique de l’ESP32 CAM, nous avons réalisé une conception 3D

détaillée de ce module à l’aide du logiciel SolidWorks. Cette modélisation 3D nous permet d’apprécier

l’agencement des différents composants et connexions de l’ESP32 CAM, ainsi que son format compact.

Figure 2.33 : Conception 3D de l’ESP 32 CAM avec SolidWorks

La conception 3D de l’ESP32 CAM nous aide à mieux comprendre son encombrement et sa structure.

Cela peut être particulièrement utile lors de l’intégration de l’ESP32 CAM dans des boîtiers ou des conceptions

matérielles spécifiques. La modélisation 3D permet également de planifier efficacement le placement de

l’ESP32 CAM dans notre projet, en tenant compte des dimensions et de l’orientation du module.

2.8.3 Processus de programmation de l’ESP32 CAM pour la capture


d’images :

Le processus de programmation de l’ESP32 CAM pour la capture d’images implique plusieurs étapes.

Tout d’abord, nous devons configurer l’environnement de développement Arduino IDE pour prendre en charge

l’ESP32 CAM. Ensuite, nous devons écrire le code nécessaire pour initialiser la caméra, capturer des images

et les traiter si nécessaire. Enfin, nous devons mettre en place la logique de transfert des images vers un

72
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

serveur ou une solution de stockage en nuage.

2.9 Conception et Déploiement du Google Apps Script :

Google Apps Script est un puissant outil qui nous permet de faire interagir de manière dynamique

notre ESP32-CAM avec Google Drive, en utilisant nos comptes Google.

2.9.1 Développement d’un projet Google Apps Script :

Le point de départ de notre travail consistait à visiter le site script.google.com pour concevoir un

projet entièrement nouveau. Cela nous a permis d’élaborer un code qui serait exécuté sur le serveur, ouvrant

ainsi la voie à une interaction efficace et personnalisée avec les divers services Google.

Figure 2.34 : Création d’un projet Google Apps Script

2.9.2 Implémentation des fonctions requises :

Nous avons inséré une fonction spécifique dans notre projet Google Apps Script afin de recevoir et

de traiter les images envoyées par l’ESP32-CAM. Ces images sont ensuite stockées dans Google Drive. Pour

cela, nous avons eu recours aux API de Google Drive, notamment l’API DriveApp. Cette dernière nous a

permis de générer de nouveaux fichiers directement dans Google Drive et d’y stocker les images transmises

par l’ESP32-CAM.

73
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

Figure 2.35 : Fonction de réception et enregistrement des photos de l’ESP 32-CAM dans
Google Drive

Cette fonction est un script Google Apps qui reçoit une requête HTTP POST contenant une image

codée en base64. L’image est alors décodée, puis un nouveau fichier contenant cette image est généré et stocké

dans un dossier spécifique sur Google Drive. Si le processus se déroule sans problème, une réponse est envoyée

pour confirmer le succès de l’opération. Le nom du dossier est spécifié par un paramètre inclus dans la requête

POST. En l’absence de ce paramètre, le nom ’ESP32-CAM’ est utilisé par défaut.

2.9.3 Déploiement du projet :

Après avoir développé et peaufiné nos fonctions, nous avons procédé à leur déploiement sous forme

de service web. Cette étape nous a permis de générer un ID de déploiement unique et une URL spécifique,

que nous avons utilisée pour établir une communication entre notre script et l’ESP32-CAM.

ID de déploiement : AKfycbxZB4rCcMQQ7ptPYlEU-1e3Y5o8Da2-ExLUikbfDKqXbWz-cyfTpEf

GxLlGIjfoWAr-9A

URL : https ://script.google.com/macros/s/AKfycbxZB4rCcMQQ7ptPYlEU-1e3Y5o8Da2-ExLUi

kbfDKqXbWz-cyfTpEfGxLlGIjfoWAr-9A/exec

74
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

Figure 2.36 : Déploiement du projet

Figure 2.37 : ID de déploiement et URL fournis pour le projet

2.9.4 Test de l’ESP32-CAM :

Nous avons réalisé un test de la caméra intégrée à l’ESP32-CAM. Pour cela, nous avons développé

un code spécifique. Ce code configure la caméra, établit une connexion WiFi, et lance un serveur web. Ce

serveur donne accès à l’ESP32-CAM via un navigateur web. Il transmet en continu le flux vidéo en direct et

permet de capturer des images à partir de la caméra. Une fois que le code est téléversé sur l’ESP32-CAM, le

module se connecte au réseau WiFi et démarre le serveur web. Ainsi, nous pouvons visualiser le flux vidéo

et capturer des images en accédant à l’adresse IP de l’ESP32-CAM via un navigateur web. Pendant ce test,

nos ordinateurs et l’ESP32-CAM doivent être connectés au même réseau WiFi.

75
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

Figure 2.38 : Code de téléversement pour tester l’ESP32-CAM sur la carte

2.10 Fusion de l’ESP32-CAM et de Google Drive pour une Surveillance

Programmée

Dans le cadre de ce projet, nous avons mis au point un système en utilisant l’ESP32-CAM, une

caméra hautement programmable capable d’établir une connexion WiFi et d’envoyer des images à un serveur

Google Drive à intervalles préprogrammés.

76
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

2.10.1 Préparation des Ressources Nécessaires

Le premier pas vers l’implémentation de ce système comprend l’initialisation de diverses bibliothèques

et configurations pertinentes.

2.10.2 Sélection et Préparation des Bibliothèques Clés

Les bibliothèques sélectionnées jouent un rôle crucial dans la gestion du WiFi, la sécurisation des

connexions clients, le traitement des images et l’intégration avec l’ESP32-CAM :

WiFi : Cette technologie de communication sans fil permet aux appareils de se connecter à Internet

ou à d’autres réseaux locaux sans recourir à des câbles physiques. Le module ESP32 contient une fonction

WiFi intégrée qui permet au microcontrôleur de se connecter à des réseaux WiFi et d’effectuer diverses

opérations de communication à travers le protocole TCP/IP.

WiFiClientSecure : Cette bibliothèque dédiée au microcontrôleur ESP32 permet d’établir une

connexion sécurisée (chiffrée) avec un serveur distant par le biais du protocole HTTPS. Elle permet d’effectuer

des requêtes sécurisées et de recevoir des réponses de serveurs sécurisés en utilisant des certificats SSL/TLS.

esp camera : C’est une bibliothèque spécifique pour les modules ESP32. Elle permet de prendre des

photos, de capturer des vidéos et de les traiter avec la caméra intégrée au module. Elle offre des fonctions

pour configurer la caméra, capturer des images et gérer les paramètres de l’image.

Base64 : Il s’agit d’un système de codage qui permet de représenter des données binaires (comme

des images, des fichiers, etc.) sous forme de texte ASCII. Dans les communications sur Internet, Base64 est

souvent utilisé pour transmettre des données binaires dans des formats textuels tels que les e-mails ou les

protocoles HTTP. La bibliothèque Base64 permet de convertir des données binaires en chaînes de caractères

Base64 et vice versa.

Figure 2.39 : Initialisation des bibliothèques

77
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

3. Établissement des Identifiants WiFi

Nous avons établi les identifiants de connexion pour le réseau WiFi que l’ESP32-CAM utilisera pour

établir une connexion

Figure 2.40 : Identification de connexion au réseau WiFi pour l’ESP32-CAM

2.10.3 Configuration de l’Appareil Photo Intégré à l’ESP32-CAM

Nous avons également configuré plusieurs broches GPIO pour permettre à l’ESP32-CAM d’interagir

efficacement avec le reste du matériel.

Figure 2.41 : Définition des broches GPIO pour l’ESP32-CAM

5. Configuration des Identifiants du Serveur Google Drive

Nous avons mis en place les identifiants nécessaires pour permettre à l’ESP32-CAM d’envoyer des

images à un serveur Google Drive spécifique.

78
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

Figure 2.42 : Identifiants requis pour l’envoi d’images de l’ESP 32-CAM vers un serveur Google
Drive

2.10.4 Vérification de la Connectivité : Un Test Impératif

Après la finalisation de la configuration, une procédure de vérification est mise en marche pour tester

la connectivité avec “script.google.com”. Cela garantit que toutes les images capturées seront téléchargeables

sans problème sur le serveur Google Drive. Ce processus de vérification de connectivité est une étape vitale,

car elle permet de détecter tout problème potentiel avant la mise en service du système.

2.10.5 Régime de Capture et de Transmission d’Images : Fonctionnement


Systématique

Une fois la connectivité confirmée, une routine est mise en place pour la capture systématique des

images. Cette routine comporte deux étapes principales : premièrement, la capture d’une image à partir

de l’ESP32-CAM, et deuxièmement, l’envoi de cette image vers le serveur Google Drive. Pour assurer la

robustesse de ce processus, nous avons inclus des mécanismes de contrôle d’erreur, qui interviennent si jamais

la capture de l’image échoue pour une raison quelconque.

2.10.6 Paramétrage de l’Intervalle de Capture : Réglage Précis

Dans ce système, la fréquence de capture et de transmission d’images est d’une importance cruciale.

Nous avons décidé de définir un intervalle de temps spécifique - toutes les 20 secondes - au cours duquel

l’ESP32-CAM doit effectuer ces deux opérations. Ce paramètre a été soigneusement calibré pour assurer un

flux régulier d’images sans surcharger le réseau ni consommer excessivement la batterie de l’appareil.

2.10.7 Initialisation du Système : Mise en Marche

Au démarrage du système, plusieurs actions se déroulent. Tout d’abord, la connexion WiFi est établie.

Ensuite, l’ESP32-CAM est configuré selon les paramètres définis précédemment. Enfin, la connectivité au

serveur Google Drive est vérifiée pour assurer le bon fonctionnement du système. Ces actions permettent de

préparer le système à fonctionner comme prévu.

79
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

2.10.8 Boucle de Fonctionnement Principal : Cycle Ininterrompu de Capture


et de Transmission

Une fois que toutes les étapes initiales ont été achevées et que le système a été lancé, il entre dans

une boucle de fonctionnement principale. Cette boucle est le cœur du système : à chaque intervalle de temps

défini - dans notre cas, toutes les 20 secondes - l’ESP32-CAM capture une image et l’envoie au serveur Google

Drive. Ce cycle continu de capture et de transmission d’images est le mécanisme qui permet à notre système

d’assurer une surveillance constante.

Figure 2.43 : stockage des images prise par ESP32-cam sur Google Drive

2.10.8.1 Analyse des résultats, discussion des améliorations possibles et


optimisations

Dans cette section finale, nous analyserons les résultats obtenus lors de l’implémentation du système

d’inspection automatisée des pylônes de télécommunication utilisant l’ESP32-CAM et Google Drive. Nous

discuterons des avantages et des limitations du système, en mettant en évidence les réussites et les éventuels

défis rencontrés. De plus, nous présenterons des pistes d’amélioration possibles et des optimisations qui

pourraient être apportées au système pour améliorer ses performances et son efficacité.

2.10.8.2 Synthèse des résultats de l’étude

Enfin, nous conclurons ce chapitre en faisant une synthèse des résultats de l’étude. Nous récapitulons

les principales conclusions tirées de l’analyse des résultats et discuterons de l’importance de notre système

d’inspection automatisée des pylônes de télécommunication dans le contexte de l’IoT et de l’efficacité opérationnelle.

80
Chapitre 2. Release 1 - Construction d’un drone et intégration de l’IOT

Nous soulignerons également les perspectives futures et les possibilités d’extension du système pour d’autres

applications dans le domaine de l’IoT et de l’inspection automatisée.

En suivant cette structure organisée, claire et compréhensible, le chapitre II fournira une revue

de l’art et des fondements théoriques solides pour notre projet d’inspection automatisée des pylônes de

télécommunication utilisant l’ESP32-CAM et Google Drive. Les informations fournies dans les sections

détaillées permettront aux lecteurs de comprendre les concepts essentiels, les choix technologiques et les

méthodologies de mise en œuvre nécessaires à la réalisation de ce système IoT.

2.11 Conclusion

Au terme de ce deuxième chapitre captivant, nous avons voyagé au cœur de la Release 1, où nous avons

vécu ensemble une expérience riche en découvertes. La sélection minutieuse des composants, l’assemblage

méticuleux, les tests de vol palpitants et l’intégration de l’ESP 32 Cam ont donné naissance à une symphonie

technologique fascinante. Nous avons été témoins des décisions cruciales, des défis relevés et des avancées

extraordinaires dans la construction de ce drone exceptionnel.

Nous vous invitons maintenant à vous préparer pour la suite de cette aventure passionnante, où la

détection d’objets et le traitement d’images occuperont une place centrale dans le prochain chapitre captivant.

Restez captivés par l’excitation et l’innovation qui animent chaque étape de ce projet visionnaire. Nous

sommes impatients de partager les prochaines étapes de ce périple technologique fascinant.

81
Chapitre 3

Release 2 - Détection d’objets et


reconnaissance de texte

Plan
1 Sprint 3 : Exploration de la Détection d’Objets : Méthodes et Applications 85

3.1.1 Fonctionnement général de la détection d’objets . . . . . . . . . . . . . . . 85

3.1.2 Collecte des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

3.1.3 Annotation des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

3.1.4 Apprentissage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

3.1.5 Inférence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

3.1.6 Post-traitement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

2 La Détection d’Objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

3.2.1 Choix de YOLO : Une Comparaison Critique avec les Modèles Concurrents 87

3.2.1.1 Modèle YOLO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

3.2.1.2 Modèle SSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

3.2.1.3 Modèle Faster R-CNN : Faster Region Convolutional Neural Network 91

3.2.1.4 Choix du modèle : Analyse pondérée des critères . . . . . . . . . . 93

3.2.2 L’architecture de YOLO : Un Aperçu . . . . . . . . . . . . . . . . . . . . . 96

3.2.2.1 YOLOv1 : L’Origine . . . . . . . . . . . . . . . . . . . . . . . . . . 96

3.2.2.2 Le Concept de Grille . . . . . . . . . . . . . . . . . . . . . . . . . 96

3.2.2.3 Prédiction des Bounding Boxes . . . . . . . . . . . . . . . . . . . . 96

3.2.2.4 Prédiction des Classes . . . . . . . . . . . . . . . . . . . . . . . . . 97

3.2.2.5 Fonction de Coût de YOLOv1 . . . . . . . . . . . . . . . . . . . . 97

3.2.2.6 YOLOv2 (YOLO9000) : L’évolution . . . . . . . . . . . . . . . . . 98

3.2.2.7 Anchor Boxes et Darknet-19 . . . . . . . . . . . . . . . . . . . . . 98

3.2.2.8 Entraînement Multi-Échelle . . . . . . . . . . . . . . . . . . . . . . 98

82
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

3.2.2.9 Détecter plus de 9000 Classes . . . . . . . . . . . . . . . . . . . . . 99

3.2.2.10 YOLOv3 : Un autre pas en avant . . . . . . . . . . . . . . . . . . 99

3.2.2.11 Les Couches Convolutionnelles et les Bounding Box Predictors . . 99

3.2.2.12 Prédiction Multi-échelle . . . . . . . . . . . . . . . . . . . . . . . . 99

3.2.2.13 Prédiction des Classes avec YOLOv3 . . . . . . . . . . . . . . . . 100

3.2.2.14 YOLOv4 : Plus rapide, plus fort . . . . . . . . . . . . . . . . . . . 100

3.2.2.15 CSPDarknet53 : l’architecture de Backbone . . . . . . . . . . . . . 100

3.2.2.16 PANet et SAM block : amélioration de la précision . . . . . . . . . 100

3.2.2.17 Mish Activation et CIOU Loss . . . . . . . . . . . . . . . . . . . . 101

3.2.2.18 YOLOv5 : L’état actuel . . . . . . . . . . . . . . . . . . . . . . . . 101

3.2.2.19 Simplification et personnalisation . . . . . . . . . . . . . . . . . . 101

3.2.2.20 Améliorations de l’architecture et de la performance . . . . . . . . 102

3.2.2.21 Modèles YOLOv5 : YOLOv5s, YOLOv5m, YOLOv5l, YOLOv5x . 102

3 Réalisation : Application de la Détection d’Objets . . . . . . . . . . . . 103

3.3.1 Préparation des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

3.3.1.1 La base de données de SOTETEL . . . . . . . . . . . . . . . . . . 104

3.3.1.2 Extraction d’images à partir d’un site web par Web Scraping . . . 105

3.3.1.3 Collecte d’images sur site . . . . . . . . . . . . . . . . . . . . . . . 106

3.3.2 Labellisation des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

3.3.2.1 Labellisation manuelle . . . . . . . . . . . . . . . . . . . . . . . . . 107

3.3.2.2 Labellisation automatique . . . . . . . . . . . . . . . . . . . . . . . 109

3.3.2.3 Réglage des hyperparamètres . . . . . . . . . . . . . . . . . . . . . 119

3.3.2.4 Lancement de l’entraînement du modèle . . . . . . . . . . . . . . 120

3.3.2.5 Surveillance des métriques d’entraînement . . . . . . . . . . . . . . 120

3.3.2.6 Suivi des performances pendant l’entraînement . . . . . . . . . . 123

3.3.2.7 Évaluation du modèle . . . . . . . . . . . . . . . . . . . . . . . . . 124

3.3.2.8 Interprétation des courbes obtenues lors de l’entraînement et de


l’évaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

3.3.2.9 Visualisation des résultats et interprétation des pourcentages


de confiance . . . . . . . . . . . . . . . . . . . . . 127

3.3.2.10 Modification de detect.py . . . . . . . . . . . . . . . . . . . . . . 129

3.3.2.11 Détection d’objets avec YOLO . . . . . . . . . . . . . . . . . . . 129

3.3.2.12 Consultation des images et annotations avec LabelImg . . . . . . 131

83
3.3.2.13 Correction manuelle des erreurs . . . . . . . . . . . . . . . . . . . 132

3.3.2.14 Enregistrement des modifications . . . . . . . . . . . . . . . . . . 132

3.3.2.15 Organisation des images labellisées automatiquement . . . . . . . 132

3.3.3 Sélection du modèle YOLOv5m pour une détection d’objets optimisée et


efficace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133

3.3.4 Entraînement du modèle YOLOv5m pour la détection d’objets . . . . . . . 133

3.3.4.1 Configuration du GPU et mise en place des dépendances : . . . . 135

3.3.4.2 Entraînement du modèle YOLOv5m : . . . . . . . . . . . . . . . . 137

3.3.5 Évaluation du modèle YOLOv5m . . . . . . . . . . . . . . . . . . . . . . . 140

3.3.6 Applications de la détection d’objets . . . . . . . . . . . . . . . . . . . . . 142

4 Sprint 4 : Reconnaissance de texte avec Tesseract OCR . . . . . . . . . 143

3.4.1 La Reconnaissance de texte . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

3.4.2 Présentation de Tesseract OCR . . . . . . . . . . . . . . . . . . . . . . . . . 143

3.4.2.1 Langues supportées . . . . . . . . . . . . . . . . . . . . . . . . . . 143

3.4.2.2 Fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

3.4.2.3 Utilisations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144

3.4.2.4 Intégration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144

3.4.3 Techniques et algorithmes utilisés par Tesseract OCR . . . . . . . . . . . . 144

3.4.3.1 LSTM (Long Short-Term Memory) . . . . . . . . . . . . . . . . . 144

3.4.3.2 N-gram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144

3.4.3.3 Modèles d’apparence . . . . . . . . . . . . . . . . . . . . . . . . . . 144

3.4.3.4 Prétraitement d’image . . . . . . . . . . . . . . . . . . . . . . . . . 145

3.4.3.5 Correction d’orthographe . . . . . . . . . . . . . . . . . . . . . . . 145

3.4.3.6 Apprentissage automatique . . . . . . . . . . . . . . . . . . . . . . 145

3.4.3.7 Découpage de texte . . . . . . . . . . . . . . . . . . . . . . . . . . 145

5 Application de la reconnaissance de texte . . . . . . . . . . . . . . . . . 146

3.5.1 Amélioration de la qualité de l’image pour faciliter la détection de texte . . 146

3.5.2 Résultat d’amélioration de la qualité de l’image . . . . . . . . . . . . . . . . 147

3.5.3 Utilisation de Tesseract OCR pour la reconnaissance de texte sur les images
traitées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148

3.5.3.1 Script Python pour la reconnaissance de texte avec Tesseract OCR :149
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

Introduction

Le chapitre suivant de ce voyage technologique s’ouvre sur des horizons encore plus vastes. Dans la

Release 2, deux itérations passionnantes attendent leur révélation, invitant à une exploration approfondie

du fascinant univers de la détection d’objets et de la reconnaissance de texte. Le Sprint 3 ouvre la voie à la

compréhension de la détection d’objets, tandis que le Sprint 4 offre une plongée dans les profondeurs de la

reconnaissance de texte avec Tesseract OCR. L’ensemble constitue un voyage où les avancées technologiques

éclairent les chemins, repoussant sans cesse les frontières de la précision et de la performance.

3.1 Sprint 3 : Exploration de la Détection d’Objets : Méthodes


et Applications

Ce sprint fascinant invite à un voyage à travers le processus complexe de la détection d’objets. Il

expose les différentes étapes, depuis la collecte des données jusqu’à l’inférence, en passant par l’annotation

et l’apprentissage. Il révèle également les choix cruciaux liés au modèle YOLO, mettant en lumière ses

performances en comparaison avec d’autres modèles concurrents. Les architectures de YOLOv1, YOLOv2,

YOLOv3, YOLOv4 et YOLOv5 se déploient, présentant les améliorations et les fonctionnalités uniques de

chaque version. Le processus de préparation des données, l’annotation manuelle et automatique, l’entraînement

du modèle YOLO et l’évaluation des résultats se dessinent avec précision. L’étonnement face aux capacités

de détection d’objets optimisées et efficaces offertes par YOLOv5m est inévitable.

3.1.1 Fonctionnement général de la détection d’objets

La détection d’objets par l’Intelligence Artificielle (IA) est une branche de la vision par ordinateur

qui utilise des techniques d’apprentissage profond pour identifier et localiser des objets dans les images ou

les séquences vidéo. Le processus complexe et multi-étapes de cette méthode est fascinant et englobe divers

aspects tels que la collecte des données, l’annotation des données, l’apprentissage du modèle, l’inférence et le

post-traitement.

3.1.2 Collecte des données

Le processus commence par la collecte de données. C’est une étape cruciale, car la qualité et la diversité

des données influencent directement la performance du modèle. Il est essentiel de recueillir un ensemble

d’images qui contiennent les objets d’intérêt dans une multitude de scénarios différents. Les objets doivent

85
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

être capturés sous divers angles, éclairages, environnements, tailles, et états afin de généraliser efficacement

pendant la phase d’apprentissage. Dans certains cas, la collecte des données peut impliquer l’utilisation de

techniques d’augmentation de données pour enrichir l’ensemble de données avec des variations synthétiques

des images existantes.

3.1.3 Annotation des données

Après la collecte des données, vient l’étape d’annotation des données. C’est une étape laborieuse qui

implique de marquer chaque objet d’intérêt dans les images. Typiquement, cette annotation prend la forme

de boîtes englobantes rectangulaires qui entourent chaque objet et incluent une étiquette de catégorie. De

nombreuses méthodes d’annotation existent, des techniques manuelles qui exigent une intervention humaine

aux techniques semi-automatiques qui utilisent l’IA pour prédire les annotations, lesquelles sont ensuite

vérifiées et corrigées par des humains. L’annotation précise des données est fondamentale pour la formation

efficace du modèle.

3.1.4 Apprentissage

Le cœur du processus de détection d’objets par l’IA est la phase d’apprentissage. C’est à ce moment

que le modèle d’apprentissage profond est formé sur l’ensemble des images annotées. Il apprend à comprendre

les caractéristiques essentielles qui définissent chaque catégorie d’objets et à prédire leur emplacement dans

l’image. L’apprentissage se fait en utilisant des techniques de rétro propagation et d’optimisation stochastique

pour ajuster les paramètres du modèle afin de minimiser l’erreur entre les prédictions du modèle et les

annotations réelles. Cette phase est généralement réalisée sur une machine équipée d’un processeur graphique

(GPU), qui peut traiter de grandes quantités de données en parallèle, accélérant ainsi le processus.

3.1.5 Inférence

Une fois le modèle formé, nous entrons dans la phase d’inférence, où le modèle est utilisé pour détecter

des objets dans de nouvelles images ou séquences vidéo, non vues lors de la formation. Le modèle examine

l’image et génère une série de boîtes englobantes prédites pour chaque objet qu’il identifie, associées à une

catégorie d’objet et un score de confiance qui indique la probabilité que l’objet identifié appartienne à la

catégorie spécifiée. C’est l’étape où tout le travail d’apprentissage est mis à l’épreuve et où l’on voit les

résultats concrets de la détection d’objets.

86
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

3.1.6 Post-traitement

La dernière étape du processus est le post-traitement des prédictions du modèle. Cela peut inclure

des techniques pour éliminer les doublons et les fausses détections, l’ajustement des scores de confiance, et

d’autres méthodes pour affiner les résultats. Cette étape est vitale pour filtrer le bruit et présenter une image

claire des objets détectés.

3.2 La Détection d’Objets

La détection d’objets est un domaine essentiel de l’apprentissage automatique, avec une multitude

d’applications pratiques dans des domaines tels que la surveillance vidéo, la conduite autonome, la réalité

augmentée, et bien d’autres. Au fil des années, plusieurs modèles de détection d’objets ont été développés,

chacun ayant ses propres caractéristiques, avantages et inconvénients. Dans cette sous-section, nous entreprenons

une comparaison critique de différents modèles de détection d’objets, tels que YOLO, SSD, Faster R-CNN,

ainsi que d’autres modèles pertinents, en évaluant leurs performances selon divers critères clés.

3.2.1 Choix de YOLO : Une Comparaison Critique avec les Modèles


Concurrents

L’objectif de cette comparaison est de déterminer le modèle le plus approprié pour notre projet

spécifique de détection d’objets. Nous évaluons ces modèles en tenant compte de facteurs tels que la vitesse

de détection, la précision des prédictions et la capacité à détecter de petits objets, tout en prenant en

considération les critères spécifiques à notre projet.

Parmi ces modèles, YOLO (You Only Look Once) se distingue comme l’un des plus populaires et

des plus largement utilisés pour la détection d’objets en temps réel. Cependant, pour prendre une décision

éclairée quant à son adoption pour notre projet, il est essentiel d’effectuer une comparaison critique avec

d’autres modèles. Nous examinons attentivement les caractéristiques et les performances de chaque modèle

afin de justifier notre choix final.

Au cours de cette sous-section, nous présentons en détail chaque modèle, en expliquant ses principes

de fonctionnement, ainsi que ses avantages et inconvénients respectifs. Nous évaluons ensuite ces modèles selon

les critères pertinents, en mettant en évidence leurs performances dans des scénarios de détection d’objets

spécifiques. Enfin, nous justifions notre choix de YOLO pour notre projet, en soulignant ses avantages et en

démontrant sa capacité à répondre aux exigences spécifiques de notre application de détection d’objets.

Cette comparaison critique des modèles de détection d’objets nous permettra de prendre une décision

87
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

éclairée quant au choix de YOLO pour notre projet, en nous appuyant sur des données objectives et des

analyses approfondies. Cela nous permettra d’optimiser les performances et les résultats de notre système de

détection d’objets, en garantissant une solution adaptée à nos besoins spécifiques.

3.2.1.1 Modèle YOLO

Dans cette sous-section, nous allons explorer en détail le modèle YOLO (You Only Look Once)

et examiner son importance dans le domaine de la détection d’objets. Nous commencerons par retracer son

historique, en mettant en lumière ses créateurs, la motivation derrière sa création et son impact significatif sur

le domaine. Ensuite, nous plongerons dans le fonctionnement du modèle YOLO, en décrivant ses principes clés,

son architecture et ses caractéristiques uniques. Enfin, nous analyserons de manière critique les performances

du modèle YOLO, en soulignant ses avantages et ses inconvénients grâce à des exemples concrets et des

preuves empiriques.

Fonctionnement du modèle YOLO

Le modèle YOLO repose sur des principes clés qui en font un modèle unique dans le domaine de

la détection d’objets. Tout d’abord, l’image d’entrée est divisée en une grille régulière de cellules. Chaque

cellule est responsable de prédire les boîtes englobantes des objets présents dans cette cellule et les probabilités

associées aux différentes classes d’objets. Ensuite, chaque cellule prédit un certain nombre de boîtes englobantes,

caractérisées par leurs coordonnées (coordonnées x et y du centre, largeur et hauteur) et un score de confiance

qui est une estimation de la présence d’un objet dans cette boîte. De plus, chaque cellule prédit également les

probabilités d’appartenance à différentes classes d’objets pour chaque boîte englobante. Enfin, les prédictions

de toutes les cellules sont regroupées et filtrées pour supprimer les duplications et les prédictions de faible

confiance, ce qui permet d’obtenir les boîtes englobantes et les classes des objets détectés.

Architecture du modèle YOLO

L’architecture de base du modèle YOLO comprend des couches de convolution, de pooling et des

couches entièrement connectées, qui sont suivies de couches de prédiction. Ces dernières génèrent les prédictions

pour les boîtes englobantes et les classes d’objets. Le modèle YOLO est généralement pré-entraîné sur de vastes

bases de données d’images annotées, ce qui lui permet d’apprendre des caractéristiques visuelles pertinentes

pour la détection d’objets.

Caractéristiques uniques du modèle YOLO

Le modèle YOLO présente plusieurs caractéristiques uniques qui le distinguent des autres modèles

de détection d’objets. Tout d’abord, sa vitesse de détection en temps réel est exceptionnelle, ce qui en fait

un choix privilégié pour des applications nécessitant une analyse en temps réel, telles que la surveillance

88
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

vidéo et la conduite autonome. De plus, YOLO est capable de détecter de petits objets grâce à son approche

multi-échelle, ce qui est essentiel dans de nombreux scénarios pratiques. Enfin, YOLO est conçu pour être

robuste aux variations d’échelle et de position des objets, ce qui lui permet de s’adapter à différentes scènes

et d’offrir une généralisation solide sur des ensembles de données variés.

Analyse critique des performances du modèle YOLO

Avantages de YOLO :

— Vitesse de détection en temps réel : YOLO se démarque par sa capacité à effectuer des détections

rapides en temps réel, grâce à son approche de traitement global de l’image.

— Gestion efficace de grands ensembles de données : YOLO est conçu pour traiter efficacement de grandes

quantités de données, ce qui le rend particulièrement adapté aux scénarios où des ensembles de données

volumineux sont nécessaires pour entraîner le modèle.

— Bon équilibre entre vitesse et précision : YOLO offre un bon compromis entre la vitesse de détection

et la précision des prédictions, ce qui le rend approprié pour une gamme variée d’applications.

Inconvénients de YOLO :

— Précision inférieure pour les petits objets : YOLO peut présenter des difficultés dans la détection

précise des petits objets, ce qui peut être un inconvénient dans certaines applications spécifiques qui

nécessitent une détection fine des petits détails.

— Sensibilité aux erreurs de localisation : YOLO peut parfois présenter des erreurs de localisation des

boîtes englobantes, ce qui peut avoir un impact sur la précision globale des prédictions.

— Limitations dans la détection d’objets enchevêtrés : En raison de sa grille de cellules, YOLO peut

rencontrer des difficultés à détecter avec précision des objets enchevêtrés ou étroitement espacés.

En conclusion, le modèle YOLO a apporté une contribution significative au domaine de la détection

d’objets grâce à son approche novatrice de détection en une seule passe. Malgré ses inconvénients potentiels,

tels que la précision réduite pour les petits objets, YOLO reste un choix populaire en raison de sa vitesse de

détection en temps réel, de sa gestion efficace de grands ensembles de données et de son bon équilibre entre

vitesse et précision.

3.2.1.2 Modèle SSD

Dans cette sous-section, nous nous pencherons sur le modèle SSD (Single Shot MultiBox Detector)

en effectuant une analyse détaillée de ses principes, de son fonctionnement et de ses performances en

matière de détection d’objets. Nous commencerons par présenter le modèle SSD, en mettant en évidence

89
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

ses caractéristiques et son importance dans le domaine de la détection d’objets. Ensuite, nous explorerons

son architecture, en décrivant les différentes étapes et les mécanismes clés qui permettent au modèle SSD

d’effectuer des détections précises. Enfin, nous procéderons à une analyse critique des performances du modèle

SSD, en soulignant ses avantages et ses inconvénients à l’aide d’exemples concrets et de preuves empiriques.

Architecture du modèle SSD

L’architecture du modèle SSD est basée sur un réseau de neurones convolutifs, généralement basé sur

des architectures pré-entrainées telles que VGG ou ResNet. Le modèle SSD se compose de plusieurs couches de

convolutions, de pooling, qui sont utilisées pour extraire des caractéristiques de différentes échelles spatiales

dans l’image. Ces caractéristiques sont ensuite utilisées pour prédire les boîtes englobantes et les classes

d’objets correspondantes.

Le modèle SSD utilise des "feature maps" de différentes résolutions spatiales pour détecter des objets

de tailles variées. Les prédictions de détection sont effectuées à différents niveaux de résolutions spatiales, ce

qui permet au modèle SSD de capturer des objets de différentes tailles. Des ancres (anchors) sont utilisées

pour générer des régions de détection potentielles à partir des "feature maps", et des filtres convolutifs sont

utilisés pour prédire les décalages et les confiances des boîtes englobantes pour chaque ancre.

Principes de fonctionnement du modèle SSD

Le modèle SSD fonctionne en effectuant des prédictions à plusieurs échelles sur les "feature maps"

générées par le réseau de neurones convolutifs. Pour chaque niveau de résolution spatiale, des filtres convolutifs

sont utilisés pour prédire les décalages et les confiances des boîtes englobantes. Ces prédictions sont ensuite

regroupées et filtrées pour supprimer les duplications et les prédictions de faible confiance.

Le modèle SSD utilise également des mécanismes de non-maximum suppression pour éliminer les

détections redondantes et conserver les détections les plus fiables. Ce processus permet de réduire le nombre

de détections finales et d’améliorer la précision globale du modèle.

Analyse critique des performances du modèle SSD

Avantages de SSD :

— Bonne précision de détection : Le modèle SSD offre une précision de détection élevée, en particulier

pour les objets de taille moyenne à grande. Il est capable de détecter avec précision différents types

d’objets dans une image.

— Adaptabilité à différentes échelles : Le modèle SSD est conçu pour détecter des objets à différentes

échelles grâce à l’utilisation de "feature maps" de différentes résolutions spatiales. Cela lui permet

d’obtenir de bonnes

90
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

performances de détection pour des objets de tailles variées.

— Vitesse de détection raisonnable :Il offre des performances de détection satisfaisantes, notamment grâce

à l’utilisation de "feature maps" de différentes résolutions qui réduisent le nombre de boîtes englobantes

à évaluer.

Inconvénients de SSD :

— Détection moins précise pour les petits objets : Le modèle SSD peut avoir des difficultés à détecter

avec précision les petits objets, en raison de la taille des "feature maps" utilisées pour les prédictions.

Cela peut être un inconvénient dans des scénarios où la détection fine des petits objets est essentielle.

— Sensibilité aux variations d’échelle extrêmes : SSD peut rencontrer des difficultés à détecter des objets

à des échelles extrêmes, telles que de très petits objets ou de très grands objets. Cela peut limiter son

utilité dans certaines applications spécifiques.

— Besoin d’un grand nombre d’exemples d’entraînement : Comme la plupart des modèles de détection

d’objets, SSD nécessite un grand ensemble de données d’entraînement annotées pour atteindre des

performances optimales. La création de ces ensembles de données peut être coûteuse et nécessite des

ressources importantes.

Le modèle SSD est un modèle de détection d’objets populaire et performant, offrant une bonne

précision de détection pour les objets de taille moyenne à grande. Il se distingue par son adaptabilité à

différentes échelles et sa capacité à détecter des objets de tailles variées. Cependant, il peut rencontrer des

difficultés dans la détection précise des petits objets et peut être sensible aux variations d’échelle extrêmes. La

sélection du modèle SSD dépendra des besoins spécifiques de l’application, en tenant compte de ces avantages

et inconvénients.

3.2.1.3 Modèle Faster R-CNN : Faster Region Convolutional Neural Network

Dans cette sous-section, nous allons nous concentrer sur le modèle Faster R-CNN (Faster Region

Convolutional Neural Network) en effectuant une analyse approfondie de ses principes, de son fonctionnement

et de ses performances en matière de détection d’objets. Nous commencerons par présenter le modèle Faster

R-CNN, en mettant en évidence son importance et ses contributions majeures dans le domaine de la détection

d’objets. Ensuite, nous explorerons son architecture, en détaillant les différentes composantes qui le rendent

efficace pour la détection précise des objets. Enfin, nous procéderons à une analyse critique des performances

du modèle Faster R-CNN, en soulignant ses avantages et ses inconvénients à l’aide d’exemples concrets et de

preuves empiriques.

91
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

Architecture du modèle Faster R-CNN

Le modèle Faster R-CNN se compose de deux parties principales : le réseau de convolutions régionales

(Region Proposal Network - RPN) et le réseau de convolutions pour la classification et la localisation des

objets. Le RPN génère des propositions de régions d’intérêt, tandis que le réseau de classification et de

localisation utilise ces propositions pour détecter et classifier les objets.

Le RPN est basé sur une architecture de réseau de neurones convolutifs, généralement partagée avec

le réseau de classification et de localisation. Il génère des propositions de régions d’intérêt en analysant des

régions potentielles dans l’image et en les classifiant comme contenant ou ne contenant pas d’objets. Les

régions proposées sont ensuite utilisées pour extraire des caractéristiques et prédire les classes et les positions

des objets.

Le réseau de classification et de localisation utilise les régions proposées par le RPN pour effectuer

une détection précise des objets dans chaque région. Il utilise des couches de convolutions et de pooling pour

extraire des caractéristiques des régions d’intérêt, puis applique des couches entièrement connectées pour

classifier les objets et prédire leurs positions.

Principes de fonctionnement du modèle Faster R-CNN

Le modèle Faster R-CNN fonctionne en effectuant des détections en deux étapes. Tout d’abord,

le RPN génère des propositions de régions d’intérêt en évaluant des régions potentielles dans l’image. Ces

propositions sont filtrées et classifiées comme contenant ou ne contenant pas d’objets. Ensuite, les régions

proposées sont utilisées par le réseau de classification et de localisation pour détecter et classifier les objets

dans chaque région.

Le modèle Faster R-CNN utilise des mécanismes de non-maximum suppression pour éliminer les

détections redondantes et conserver les détections les plus fiables. Cela permet de réduire le nombre de

détections finales et d’améliorer la précision globale du modèle.

Analyse critique des performances du modèle Faster R-CNN

Avantages de Faster R-CNN

— Haute précision de détection : Le modèle Faster R-CNN offre une haute précision de détection grâce

à son architecture sophistiquée et à l’utilisation de régions de proposition pour réduire le nombre de

régions à évaluer.

— Flexibilité pour détecter des objets de différentes tailles : Le modèle Faster R-CNN est capable de

détecter des objets de différentes tailles grâce à l’utilisation de régions de proposition et à l’extraction

de caractéristiques à plusieurs échelles.

92
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

— Bonne localisation des objets : Le modèle Faster R-CNN a une bonne capacité à localiser précisément

les objets dans l’image, ce qui est essentiel pour de nombreuses applications pratiques.

Inconvénients de Faster R-CNN

— Temps de traitement plus long : En raison de sa conception en deux étapes, le modèle Faster R-CNN

nécessite plus de temps de traitement par rapport à certains modèles plus rapides tels que YOLO.

— Dépendance aux régions de proposition : La performance du modèle Faster R-CNN dépend fortement

de la qualité des régions de proposition générées par le RPN. Si les propositions sont de mauvaise

qualité, cela peut entraîner des détections erronées ou manquées.

— Besoin de ressources de calcul élevées : En raison de sa complexité, le modèle Faster R-CNN nécessite

des ressources de calcul élevées, ce qui peut être un défi dans des environnements avec des contraintes

de puissance ou de mémoire.

3.2.1.4 Choix du modèle : Analyse pondérée des critères

Avant de choisir un modèle de détection d’objets pour notre projet, nous avons dû évaluer chaque

option en fonction de divers critères pertinents. Ces critères comprennent non seulement la précision et

la vitesse de détection, mais aussi la capacité de détecter des objets de différentes tailles, la flexibilité et

la capacité d’être adapté à des cas d’utilisation spécifiques. Pour cela, nous avons utilisé une méthode de

notation pondérée, qui nous a permis de quantifier les avantages et les inconvénients de chaque modèle.

Critères d’évaluation

1. Vitesse de détection : Étant donné que notre application nécessite une détection en temps réel,

la vitesse à laquelle le modèle peut identifier et classer les objets est cruciale.

2. Précision de détection : La précision est également un facteur déterminant, car elle affecte

directement la qualité des résultats.

3. Détection de petits objets : Certains objets peuvent être relativement petits dans les images

et les modèles de détection d’objets ont tendance à avoir du mal à les détecter. Nous avons donc également

inclus ce critère dans notre évaluation.

4. Adaptabilité : Notre projet implique la détection de divers types d’objets. Par conséquent, le

modèle choisi doit être capable d’être formé et adapté pour reconnaître divers objets.

5. Développement et support communautaire : Les modèles avec un développement actif et un

support communautaire important sont préférés, car ils ont tendance à recevoir des mises à jour régulières

qui améliorent leur performance et leur capacité.

93
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

Ces critères sont pondérés en fonction de leur importance pour notre projet. Par exemple, comme

notre application nécessite une détection en temps réel, la vitesse de détection a une pondération plus élevée

que les autres critères.

Évaluation des modèles

Nous avons évalué trois des principaux modèles de détection d’objets : YOLO (You Only Look Once),

SSD (Single Shot MultiBox Detector) et Faster R-CNN (Region Convolutional Neural Networks), selon les

critères mentionnés ci-dessus.

YOLO : YOLO excelle en termes de vitesse de détection, car il analyse les images en une seule passe, ce

qui est idéal pour notre application en temps réel. Cependant, sa précision est légèrement inférieure à celle des

deux autres modèles. En ce qui concerne la détection de petits objets, YOLO peut avoir des difficultés, mais

les versions récentes ont apporté des améliorations significatives à cet égard. En termes d’adaptabilité, YOLO

est assez flexible et peut être formé pour détecter divers objets. De plus, YOLO bénéficie d’un développement

actif et d’un fort support communautaire, ce qui est un avantage.

SSD : SSD

est un compromis entre YOLO et Faster R-CNN. Il offre une vitesse de détection plus rapide que

Faster R-CNN mais plus lente que YOLO. Sa précision est comparable à celle de Faster R-CNN et il est

meilleur que YOLO pour détecter de petits objets. Cependant, il est moins flexible que YOLO en termes

d’adaptabilité.

Faster R-CNN : Faster R-CNN offre la meilleure précision parmi les trois modèles, ce qui est son

principal avantage. Cependant, sa vitesse de détection est la plus lente. Il est également le meilleur pour

détecter de petits objets. En termes d’adaptabilité, Faster R-CNN est moins flexible que YOLO. Enfin, il

bénéficie d’un support communautaire solide, mais son développement est plus lent que celui de YOLO.

Critères de comparaison

Pour bien évaluer chaque modèle et choisir celui qui serait le mieux adapté à notre projet, nous avons

défini cinq critères principaux sur lesquels baser notre évaluation : la vitesse de détection, la précision de

détection, la capacité à détecter de petits objets, l’adaptabilité et le développement communautaire.

Vitesse de détection (40%) : Dans notre cas, la vitesse à laquelle un modèle peut identifier et classer

les objets dans une image est cruciale. Comme notre projet implique une détection d’objets en temps réel,

il est important que le modèle soit capable de traiter les images rapidement et efficacement. Pour ce critère,

nous avons accordé une pondération de 40%, soulignant son importance pour notre projet.

Précision de détection (30%) : Bien que la vitesse soit un facteur critique, elle ne doit pas compromettre

94
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

la précision de la détection. Nous avons besoin d’un modèle qui peut non seulement identifier les objets

rapidement, mais aussi avec une grande précision. Ce critère a donc été pondéré à 30%.

Détection de petits objets (10%) : La détection de petits objets peut être un défi pour certains modèles

en raison de la faible résolution et du manque de détails. Cependant, notre projet nécessite la capacité de

détecter avec précision des objets de toutes tailles. Par conséquent, ce critère a été attribué une pondération

de 10%.

Adaptabilité (10%) : Nous avons besoin d’un modèle qui peut être formé sur de grands ensembles de

données avec une variété d’objets. De plus, la flexibilité pour adapter le modèle à différents cas d’utilisation

est également un avantage majeur pour notre projet. Par conséquent, nous avons accordé une pondération

de 10% à ce critère.

Développement et support communautaire (10%) : Un développement actif du modèle et un solide

support communautaire sont importants pour assurer que le modèle reste à jour avec les dernières avancées

et améliorations. Par conséquent, nous avons attribué une pondération de 10% à ce critère.

Choix du modèle

Figure 3.1 : Tableau de décision des modèles de détection d’objets

YOLO a obtenu le score total le plus élevé, ce qui le rend le choix le plus approprié pour notre

projet. Ses forces résident dans sa vitesse de détection élevée, sa bonne adaptabilité et le soutien actif de la

communauté, ce qui est essentiel pour une application en temps réel comme la nôtre.

Néanmoins, il est important de souligner que le choix du modèle dépend grandement du contexte

d’application et des exigences spécifiques du projet. Bien que YOLO soit le plus approprié pour notre

cas d’utilisation, si la précision de détection était le facteur le plus important, alors Faster R-CNN serait

95
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

probablement le choix idéal. De plus, si la détection de petits objets était une priorité, SSD ou Faster R-CNN

pourraient être une meilleure option.

En conclusion, nous avons choisi d’utiliser YOLO comme modèle de détection d’objets pour notre

système en raison de sa vitesse de détection, de son adaptabilité et de son développement communautaire actif.

Cependant, cette décision est basée sur une analyse détaillée des critères qui sont spécifiquement importants

pour notre projet et peut ne pas s’appliquer à d’autres cas d’utilisation.

3.2.2 L’architecture de YOLO : Un Aperçu

3.2.2.1 YOLOv1 : L’Origine

YOLOv1, également connu sous le nom de YOLO (You Only Look Once), a été introduit par Joseph

Redmon, Santosh Divvala, Ross Girshick et Ali Farhadi dans un document de 2015. C’était la première

version du modèle YOLO, et elle a introduit de nombreuses innovations qui ont défini les versions ultérieures.

L’une des caractéristiques distinctives de YOLO est son approche unifiée de la détection d’objets.

Alors que d’autres modèles de détection d’objets effectuaient la localisation et la classification des objets en

deux étapes distinctes, YOLO les effectuait simultanément.

De plus, YOLO a introduit une nouvelle métrique, le taux de précision global, qui prend en compte

à la fois la précision de localisation et la précision de classification pour évaluer la performance du modèle.

Cette métrique a permis d’obtenir une mesure plus précise de la performance de la détection d’objets, qui

tient compte de tous les aspects de la tâche.

3.2.2.2 Le Concept de Grille

L’une des innovations clés de YOLO est l’introduction du concept de grille. Au lieu de rechercher

des objets dans toute l’image, YOLO divise l’image en une grille de taille SS. Chaque cellule de la grille est

responsable de la détection d’un objet si le centre de l’objet tombe dans la cellule.

Cette approche permet de réduire considérablement le nombre de prédictions à effectuer, car chaque

cellule ne prédit qu’un seul objet. De plus, en associant chaque objet à une cellule spécifique, YOLO peut

exploiter les informations spatiales de l’image pour améliorer la précision de la détection.

3.2.2.3 Prédiction des Bounding Boxes

Chaque cellule de la grille prédit également B bounding boxes pour l’objet qu’elle détecte. Chaque

bounding box est décrite par 5 valeurs : (x, y, w, h, confidence). Les coordonnées (x, y) représentent le centre

96
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

de la bounding box relative à la cellule, tandis que (w, h) représentent la largeur et la hauteur de la bounding

box relative à l’image entière. La valeur de confidence représente la probabilité que la bounding box contienne

un objet et à quel point la bounding box s’adapte bien à cet objet.

YOLO utilise également une approche multi-échelle pour la détection d’objets, en utilisant des

bounding boxes de différentes tailles pour détecter des objets de différentes tailles.

Dans la prochaine sous-section, nous discuterons de la prédiction des classes dans YOLOv1 et de la

fonction de coût utilisée pour former le modèle.

3.2.2.4 Prédiction des Classes

En plus de prédire les bounding boxes, chaque cellule de la grille YOLO prédit également les

probabilités de classe pour l’objet détecté. Pour cela, elle utilise un vecteur de probabilités de classe C-dimensionnel,

où C est le nombre total de classes. La probabilité de chaque classe est indépendante des autres, ce qui signifie

que chaque cellule peut prédire la présence de chaque classe indépendamment des autres.

Il est important de noter que dans YOLOv1, la probabilité de classe est prédite pour chaque cellule

plutôt que pour chaque bounding box. Cela signifie que toutes les bounding boxes prédites par une cellule

donnée partageront les mêmes probabilités de classe. Cette approche est plus simple et plus rapide que de

prédire les probabilités de classe pour chaque bounding box, mais elle peut être moins précise si plusieurs

objets de classes différentes tombent dans la même cellule.

3.2.2.5 Fonction de Coût de YOLOv1

La fonction de coût utilisée pour former YOLOv1 est une combinaison de plusieurs termes. Il

comprend des termes pour l’erreur de localisation (la différence entre la bounding box prédite et la véritable

bounding box), l’erreur de classification (la différence entre les probabilités de classe prédites et les véritables

probabilités de classe) et l’erreur de confiance (la différence entre la confiance prédite et la véritable confiance).

La fonction de coût donne plus de poids à l’erreur de localisation qu’à l’erreur de classification, ce qui

reflète l’importance de la localisation précise des objets dans la détection d’objets. De plus, elle donne plus de

poids à l’erreur de confiance pour les bounding boxes qui contiennent réellement un objet, pour encourager

le modèle à prédire des bounding boxes précises pour les objets.

Un autre aspect important de la fonction de coût de YOLOv1 est qu’elle utilise le carré des erreurs

plutôt que les erreurs absolues. Cela signifie qu’elle punit plus sévèrement les grandes erreurs que les petites

erreurs, ce qui encourage le modèle à faire des prédictions plus précises.

Dans la prochaine section, nous explorerons les améliorations apportées à YOLO dans sa deuxième

97
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

version, YOLOv2 (également connue sous le nom de YOLO9000).

3.2.2.6 YOLOv2 (YOLO9000) : L’évolution

YOLOv2, également connu sous le nom de YOLO9000, a apporté un certain nombre d’améliorations

significatives par rapport à la version originale. Ces améliorations comprennent l’introduction de anchor

boxes, l’entraînement multi-échelle, la possibilité de détecter plus de 9000 classes, et l’utilisation d’un réseau

de convolution plus profond et plus puissant, Darknet-19.

3.2.2.7 Anchor Boxes et Darknet-19

L’une des principales améliorations de YOLOv2 est l’introduction de anchor boxes. Dans YOLOv1,

chaque cellule de la grille ne pouvait prédire qu’un seul objet. Avec l’introduction des anchor boxes, chaque

cellule peut maintenant prédire plusieurs objets, ce qui permet à YOLOv2 de détecter plus d’objets dans une

image.

Chaque anchor box est associée à un ratio hauteur/largeur spécifique. Lors de la prédiction, la cellule

ajuste la taille et le ratio de ces anchor boxes pour mieux correspondre à l’objet détecté. Cela permet à

YOLOv2 de gérer une plus grande variété de formes d’objets et d’améliorer sa précision de détection.

YOLOv2 utilise également un réseau de convolution plus puissant, Darknet-19. Darknet-19 est un

réseau de 19 couches de convolution suivies par 5 couches entièrement connectées. Il a été spécifiquement

conçu pour être rapide et efficace, tout en offrant une bonne précision de classification. Grâce à Darknet-19,

YOLOv2 a pu obtenir de meilleures performances tout en conservant une vitesse de détection rapide.

3.2.2.8 Entraînement Multi-Échelle

Une autre amélioration clé de YOLOv2 est l’introduction de l’entraînement multi-échelle. Dans

YOLOv1, le modèle est formé et testé à une seule échelle. Cela signifie qu’il peut ne pas être capable de

détecter correctement les objets qui apparaissent à des échelles différentes dans l’image.

YOLOv2 résout ce problème en formant le modèle à différentes échelles. Pendant l’entraînement,

l’échelle de l’image est modifiée à chaque itération, ce qui permet au modèle d’apprendre à détecter les

objets à différentes échelles. Cela améliore la capacité du modèle à détecter les petits objets et les objets qui

apparaissent à des échelles différentes dans l’image.

98
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

3.2.2.9 Détecter plus de 9000 Classes

Enfin, YOLOv2 a introduit la capacité de détecter plus de 9000 classes. Pour ce faire, il utilise une

combinaison de données de classification d’images (provenant de la base de données ImageNet) et de données

de détection d’objets.

La formation sur ces deux types de données permet à YOLOv2 de généraliser à un plus grand nombre

de classes et de reconnaître une plus grande variété d’objets. C’est pourquoi YOLOv2 est également connu

sous le nom de YOLO9000.

Dans la prochaine section, nous allons explorer la troisième version de YOLO, YOLOv3, qui a apporté

encore plus d’améliorations au modèle.

3.2.2.10 YOLOv3 : Un autre pas en avant

YOLOv3, la troisième version du modèle YOLO, est une évolution de YOLOv2 qui apporte une série

d’améliorations et de nouvelles fonctionnalités. Il conserve l’essence de YOLO qui est une détection d’objets

rapide et précise, tout en introduisant de nouvelles fonctionnalités telles que la prédiction multi-échelle et

une méthode de prédiction de classes plus performante.

3.2.2.11 Les Couches Convolutionnelles et les Bounding Box Predictors

YOLOv3 continue d’utiliser le concept des anchor boxes, mais au lieu d’utiliser seulement 5 comme

dans YOLOv2, il utilise maintenant trois échelles différentes avec trois anchor boxes pour chaque échelle.

Cela donne un total de neuf anchor boxes.

Il utilise également un réseau de neurones convolutionnels plus profond basé sur Darknet-53, qui

comprend 53 couches de convolution. Darknet-53 combine les avantages de Darknet-19 et ceux d’un autre

réseau de convolution très performant, ResNet, pour créer un modèle de détection d’objets plus puissant et

plus précis.

3.2.2.12 Prédiction Multi-échelle

YOLOv3 a introduit une amélioration importante par rapport à ses prédécesseurs : la prédiction

multi-échelle. Alors que YOLOv1 et YOLOv2 effectuaient leurs prédictions uniquement à partir de la dernière

couche de leur réseau, YOLOv3 effectue des prédictions à trois échelles différentes.

Il fait cela en prenant des fonctionnalités de trois couches différentes dans le réseau et en effectuant

des prédictions à partir de chacune. Cela permet à YOLOv3 de détecter des objets de tailles variées avec plus

99
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

de précision, car il peut utiliser les caractéristiques les plus pertinentes à chaque échelle.

3.2.2.13 Prédiction des Classes avec YOLOv3

Une autre amélioration significative apportée par YOLOv3 est la manière dont il gère la prédiction

des classes. Au lieu d’utiliser une fonction softmax pour prédire la classe d’un objet comme dans YOLOv1

et YOLOv2, YOLOv3 utilise une fonction sigmoïde indépendante pour chaque classe.

Cela signifie que la prédiction de la classe d’un objet ne dépend plus des autres classes, ce qui permet

à YOLOv3 de prédire plusieurs classes pour un seul objet si nécessaire. Cela améliore la précision du modèle

lors de la détection d’objets qui peuvent être classés dans plusieurs catégories.

Dans la prochaine section, nous allons explorer la quatrième et dernière version de YOLO (jusqu’à

mon point de connaissance jusqu’en septembre 2021), YOLOv4, qui apporte encore plus d’améliorations en

termes de performance et de vitesse.

3.2.2.14 YOLOv4 : Plus rapide, plus fort

La quatrième version de YOLO, YOLOv4, est une amélioration majeure par rapport aux versions

précédentes en termes de vitesse et de précision. YOLOv4 a été conçu pour être extrêmement rapide tout

en conservant une excellente précision, ce qui en fait une excellente option pour les applications de détection

d’objets en temps réel.

3.2.2.15 CSPDarknet53 : l’architecture de Backbone

YOLOv4 utilise une nouvelle architecture backbone appelée CSPDarknet53. Cette architecture est

basée sur Darknet53, qui est utilisé dans YOLOv3, mais il introduit une nouvelle technique appelée Cross

Stage Partial Networks (CSPNet). Le CSPNet divise le réseau en plusieurs sous-réseaux qui peuvent apprendre

les caractéristiques des données indépendamment, ce qui améliore l’efficacité et la performance de l’apprentissage.

CSPDarknet53 est une combinaison de CSPNet et Darknet53, et il fournit à YOLOv4 une excellente

capacité à extraire les caractéristiques des images pour la détection d’objets.

3.2.2.16 PANet et SAM block : amélioration de la précision

Pour améliorer la précision de la détection, YOLOv4 introduit également deux nouvelles techniques :

PANet et SAM block.

Le Path Aggregation Network (PANet) est une technique qui permet de fusionner les caractéristiques

de différentes échelles de l’image. Cela permet à YOLOv4 de faire des prédictions précises sur des objets de

100
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

tailles différentes, car il peut utiliser les caractéristiques pertinentes à chaque échelle.

Le SAM block (Spatial Attention Module) est une autre technique introduite par YOLOv4 pour

améliorer la précision. Il s’agit d’un module d’attention spatiale qui aide le réseau à se concentrer sur les

zones importantes de l’image lors de l’extraction des caractéristiques. Cela permet au réseau d’extraire des

caractéristiques plus pertinentes, ce qui améliore la précision de la détection.

3.2.2.17 Mish Activation et CIOU Loss

YOLOv4 introduit également la fonction d’activation Mish et la fonction de perte CIOU pour

améliorer les performances de détection.

La fonction d’activation Mish est une nouvelle fonction d’activation qui a été trouvée pour améliorer

les performances du réseau de neurones par rapport aux fonctions d’activation traditionnelles comme ReLU.

Elle est définie comme mish(x) = x * tanh(softplus(x)), où softplus(x) est une version lissée de la fonction

ReLU.

La fonction de perte CIOU (Complete Intersection over Union) est une amélioration de la fonction de

perte IOU traditionnelle utilisée pour mesurer la différence entre les bounding boxes prédites et les véritables

bounding boxes. La fonction de perte CIOU prend en compte non seulement l’IOU, mais aussi la distance

entre les centres des bounding boxes et l’aspect ratio, ce qui donne une mesure de la perte plus complète et

précise.

Ces innovations ont permis à YOLOv4 d’atteindre une vitesse de détection d’objets extrêmement

rapide tout en conservant une excellente précision, ce qui en fait une excellente option pour la détection

d’objets en temps réel. Dans la prochaine section, nous examinerons plus en détail comment utiliser YOLO

pour la détection d’objets dans la pratique.

3.2.2.18 YOLOv5 : L’état actuel

3.2.2.19 Simplification et personnalisation

Comme mentionné précédemment, YOLOv5 est une version non officielle de la série YOLO. Son but

est de faciliter l’utilisation de YOLO pour la détection d’objets en simplifiant le code et en le rendant plus

personnalisable. Les chercheurs à l’origine de YOLOv5 ont pris les bases solides de YOLOv4 et ont cherché

à les améliorer, en mettant l’accent sur l’accessibilité et la facilité d’utilisation.

Pour y parvenir, ils ont simplifié le code et rendu le modèle plus facile à personnaliser. Cela signifie

que les utilisateurs peuvent plus facilement modifier le modèle en fonction de leurs besoins spécifiques. Cela

101
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

pourrait inclure l’ajustement de la taille de l’image d’entrée, le nombre de classes que le modèle doit détecter,

ou même le nombre de boîtes englobantes que le modèle prédit.

YOLOv5 comprend également une gamme de scripts utiles pour l’entraînement, les tests et le déploiement

du modèle. Par exemple, il y a des scripts pour entraîner le modèle sur des ensembles de données personnalisés,

pour évaluer les performances du modèle, et même pour exécuter le modèle sur des images, des vidéos ou

des flux de webcam en temps réel. Ces scripts facilitent grandement l’utilisation de YOLO pour la détection

d’objets et peuvent aider à accélérer le développement de nouvelles applications de détection d’objets.

3.2.2.20 Améliorations de l’architecture et de la performance

YOLOv5 introduit également plusieurs améliorations de l’architecture pour améliorer les performances

du modèle. Il utilise une nouvelle architecture de réseau de neurones appelée PANet pour la prédiction des

bounding boxes. PANet, qui signifie Path Aggregation Network, est une architecture qui vise à améliorer la

précision de la détection en améliorant le flux d’informations entre les couches du réseau. En pratique, cela

signifie que PANet aide le réseau à mieux comprendre les relations spatiales entre les objets, ce qui peut aider

à améliorer la précision de la détection.

YOLOv5 utilise également une version améliorée de la fonction de perte de YOLOv4. Cette fonction

de perte améliorée, appelée CIOU Loss, est conçue pour mieux gérer les problèmes courants en détection

d’objets, tels que les chevauchements de boîtes englobantes. En utilisant CIOU Loss, YOLOv5 peut entraîner

des modèles plus précis et plus performants.

3.2.2.21 Modèles YOLOv5 : YOLOv5s, YOLOv5m, YOLOv5l, YOLOv5x

YOLOv5 offre un choix de plusieurs modèles qui varient en taille et en précision. Ces différentes

versions sont conçues pour répondre à différents besoins, en fonction de l’équilibre souhaité entre vitesse et

précision.

YOLOv5s est le plus petit et le plus rapide des modèles, ce qui le rend idéal pour les applications

où la vitesse est plus importante que la précision. YOLOv5x est à l’autre extrémité du spectre. C’est le plus

grand et le plus précis des modèles, ce qui le rend adapté aux applications où la précision est la priorité.

YOLOv5m et YOLOv5l sont des options intermédiaires qui offrent un bon équilibre entre vitesse et précision.

Le temps de traitement se réfère au temps nécessaire pour que le modèle passe d’une image d’entrée

à une prédiction d’objet. Il est mesuré en millisecondes par image. Plus ce temps est bas, plus le modèle est

rapide pour faire des prédictions. Ce temps peut varier en fonction de nombreux facteurs, notamment la taille

de l’image d’entrée, la complexité de l’image, et la configuration du matériel sur lequel le modèle est exécuté.

102
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

Figure 3.2 : Différence entre les modèles YOLOv5 : YOLOv5s, YOLOv5m, YOLOv5l,
YOLOv5x

3.3 Réalisation : Application de la Détection d’Objets

L’inspection des infrastructures est une activité cruciale dans de nombreux domaines industriels,

notamment dans le secteur des télécommunications. Parmi ces infrastructures, les pylônes jouent un rôle

essentiel en soutenant les équipements de télécommunication et en assurant une connectivité ininterrompue.

Néanmoins, l’inspection de ces structures peut être une tâche ardue en raison de leur hauteur et de leur

accessibilité souvent limitée. C’est là qu’interviennent les drones, apportant une solution efficace et moins

dangereuse pour réaliser ces inspections. Cependant, l’analyse manuelle des images capturées par les drones

peut être une tâche fastidieuse et sujette à des erreurs humaines.

Dans ce contexte, nous avons développé un système basé sur l’intelligence artificielle (IA) pour

l’inspection des pylônes par drone. Ce système utilise un modèle d’apprentissage profond pour détecter

automatiquement les anomalies dans les images des pylônes capturées par les drones. De plus, le système est

capable de réaliser un inventaire des équipements présents sur les pylônes.

L’objectif principal de ce travail est de concevoir, d’entraîner et de déployer un modèle de détection

d’objets basé sur l’apprentissage profond, capable d’identifier automatiquement les anomalies des pylônes

ainsi que les équipements.

Dans cette partie, nous présentons notre approche pour collecter et préparer les données, labelliser

les images, entraîner le modèle de détection d’objets et évaluer ses performances. Nous discuterons également

de la manière dont nous avons déployé ce modèle pour l’inspection des pylônes par drone.

3.3.1 Préparation des données

La préparation des données est une étape cruciale dans tout projet d’apprentissage automatique.

Elle implique la collecte, le nettoyage, l’organisation et la transformation des données brutes en un format

approprié pour l’entraînement du modèle.

103
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

3.3.1.1 La base de données de SOTETEL

La base de données de SOTETEL a été la source primaire pour notre projet. Elle contient un vaste

ensemble d’images de pylônes et d’équipements associés, ce qui nous a permis d’avoir une quantité significative

de données pour entraîner notre modèle de détection d’objets.

Une fois les images récupérées, un processus de filtrage a été appliqué. Cette étape est cruciale

pour assurer la qualité des données d’entraînement. En effet, la performance de tout modèle d’apprentissage

automatique dépend largement de la qualité des données sur lesquelles il est entraîné. Nous avons éliminé

toutes les images qui étaient de mauvaise qualité, floues, mal éclairées, ou qui ne montraient pas clairement

les objets (pylônes ou équipements). De plus, nous avons également écarté les images non pertinentes qui ne

contenaient pas d’information utile pour notre tâche.

Les images restantes ont ensuite été organisées de manière systématique. Cette organisation est basée

sur des caractéristiques pertinentes telles que le type de pylône, le type d’équipement, etc. Cette étape a

permis de faciliter l’accès et la manipulation des images lors des phases ultérieures du projet, comme la

labellisation des images.

Figure 3.3 : Exemple d’images de la base de données de SOTETEL

Figure 3.4 : Classification organisée des images pour une détection précise des objets cibles

104
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

Figure 3.5 : Organisation des images pour une détection des antennes

3.3.1.2 Extraction d’images à partir d’un site web par Web Scraping

L’extraction d’images à partir de sites web, connue sous le nom de "web scraping", est une méthode

efficace pour collecter des données visuelles à utiliser dans des projets d’apprentissage automatique. Pour

notre projet, nous avons utilisé le langage de programmation Python et des bibliothèques spécifiques de

scraping comme BeautifulSoup et Selenium pour réaliser cette tâche.

Utilisation de BeautifulSoup et Selenium

La bibliothèque Python BeautifulSoup est utilisée pour extraire des données de fichiers HTML et

XML. Elle crée un arbre de parsement depuis la page web qui peut être utilisé pour extraire des données de

manière plus lisible et accessible.

De son côté, Selenium est un outil de test pour les applications web qui permet d’automatiser les

actions du navigateur, comme aller sur une page web ou cliquer sur un lien. Dans notre cas, Selenium a été

utilisé pour récupérer le code source HTML de la page de recherche d’images de Google.

Figure 3.6 : Script Python : Web scraping

105
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

Ce code permet d’extraire toutes les images d’une page web, de les sauvegarder localement avec un

nom de fichier unique, et d’assurer une gestion appropriée des erreurs HTTP lors du téléchargement des

images.

En combinant les forces de BeautifulSoup et Sélénium, nous avons été en mesure d’automatiser

efficacement le processus de collecte d’images pour notre projet d’apprentissage profond.

Figure 3.7 : Résultats du Web scraping

3.3.1.3 Collecte d’images sur site

Pour une précision optimale et pour obtenir des données plus conformes à la réalité, nous avons décidé

d’effectuer des visites sur site afin de collecter des images des pylônes et de leurs équipements. Cela s’est avéré

particulièrement nécessaire pour obtenir des images de haute qualité qui reflètent fidèlement les conditions

réelles dans lesquelles notre modèle de détection d’objets serait déployé.

Ces déplacements sur site n’ont pas été sans défis. Nous avons dû escalader des murs et des structures

pour atteindre les mâts sur les bâtiments, ce qui a comporté un certain niveau de risque. En outre, nous

avons dû composer avec des conditions météorologiques variables, notamment des vents forts qui rendaient

la prise de photos plus difficile.

Cependant, malgré ces défis, ces visites sur site ont été extrêmement bénéfiques pour notre projet.

Elles nous ont permis de capturer des images à partir de différents angles et altitudes, ce qui a ajouté une

précieuse diversité à notre ensemble de données. De plus, ces images prises de près ont aidé à enrichir notre

ensemble de données avec des détails plus fins des pylônes et de leurs équipements, ce qui est essentiel pour

une détection d’objets précise.

En somme, malgré les difficultés rencontrées, l’effort supplémentaire consacré à la collecte d’images

sur site a amélioré la qualité de nos données, et par conséquent, la performance de notre modèle de détection

106
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

d’objets. Nous avons pu recueillir un ensemble de données plus riche et plus diversifié, ce qui nous a mis

sur la voie d’un modèle plus précis et plus robuste Une fois les données collectées, nous avons procédé à un

processus de nettoyage et d’organisation. Cela a impliqué l’élimination de toute image de mauvaise qualité

ou non pertinente, ainsi que l’organisation des images restantes dans des dossiers appropriés en fonction de

leurs caractéristiques. Ce processus est essentiel pour garantir que notre modèle est formé sur des données de

qualité et pertinentes.

Après cette phase de préparation des données, nous avons procédé à la labellisation des images, une

étape essentielle pour l’entraînement de notre modèle de détection d’objets.

3.3.2 Labellisation des données

La labellisation des données est une étape critique dans tout projet de détection d’objets. Elle consiste

à attribuer des "étiquettes" ou des "labels" aux objets d’intérêt dans chaque image. Ces labels fournissent

les informations nécessaires à notre modèle d’apprentissage profond pour apprendre à détecter et à identifier

les différents types de pylônes et d’équipements.

Pour notre projet, la labellisation des données a été réalisée en deux étapes :

3.3.2.1 Labellisation manuelle

Le processus d’annotation nécessitait un logiciel d’annotation adapté. La sélection de cet outil s’est

fondée sur divers critères essentiels, tels que le coût, la compatibilité de la plateforme, la simplicité d’utilisation

et la présence de fonctionnalités supplémentaires. Après avoir considéré plusieurs alternatives, dont RectLabel,

VIA, Labelbox, OpenCV, Labelme et CVAT, l’outil LabelImg a été choisi pour cette tâche.

LabelImg

LabelImg est un outil graphique d’annotation d’images qui se distingue par son caractère open

source. Il est particulièrement accessible et propose un large éventail de fonctionnalités. Il fonctionne sur

divers systèmes d’exploitation, y compris Windows, MacOS et Linux, et prend en charge plusieurs formats

d’annotation, tels que PASCAL VOC, YOLO et COCO.

Pour l’installation de LabelImg, il était nécessaire de s’assurer que Python 3 était déjà présent sur le

système. Les dépendances requises ont ensuite été installées, puis le code source de LabelImg a été téléchargé

à partir de son dépôt GitHub.

L’utilisation de LabelImg s’est avérée intuitive. Il offre la possibilité de dessiner facilement des boîtes

englobantes autour des objets d’intérêt dans chaque image et d’attribuer une étiquette à chaque boîte. Il

propose des raccourcis clavier personnalisables pour accélérer le processus d’annotation, en plus de gérer

107
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

Figure 3.8 : Labelisation manuelle avec LabelImg : Exemple d’étiquetage d’une image

efficacement des images de grande taille. Il autorise le zoom et le défilement d’images pour une annotation

précise et fournit plusieurs outils d’annotation.

Après avoir terminé le processus de labellisation des données, nous avons pu passer à l’étape suivante :

l’entraînement de notre modèle de détection d’objets.

La simplicité et la flexibilité de LabelImg ont été déterminantes dans son choix. Il fournit toutes les

fonctionnalités requises pour ce projet, tout en étant simple d’utilisation et facile à configurer.

Génération du fichier d’annotation

Après l’annotation manuelle des images à l’aide de LabelImg, un fichier texte d’annotation a été

généré pour chaque image annotée. Chaque ligne de ce fichier représente une boîte englobante dans l’image

correspondante.

Chaque ligne du fichier texte contient les informations suivantes :

Le nombre de la classe de l’objet encapsulé par la boîte englobante. Cela peut être le type d’équipement

de pylône identifié. Les coordonnées de la boîte englobante. Ces coordonnées représentent les coordonnées du

centre, la largeur et la hauteur de la boîte englobante, qui définissent la position et la taille de l’objet dans

l’image.

Ces fichiers d’annotation sont essentiels pour l’entraînement des modèles de détection d’objets, car ils

fournissent l’emplacement exact des objets dans les images, ainsi que leurs classes respectives. Cela permet

aux modèles d’apprendre à identifier et à localiser les objets d’intérêt.

En somme, la phase de labellisation a permis de préparer de manière efficace et précise les données

108
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

nécessaires à l’entraînement des modèles de détection d’objets. La génération de fichiers d’annotation appropriés

a permis de garantir que les informations nécessaires étaient disponibles pour que le modèle d’apprentissage

en profondeur puisse apprendre de manière efficace.

Figure 3.9 : Annotation d’une image

Figure 3.10 : Nommage cohérent des images et de leurs annotations

3.3.2.2 Labellisation automatique

La labellisation automatique, également appelée annotation automatique, est un processus où les

machines sont utilisées pour identifier et marquer les objets dans une image ou un jeu de données. Par

rapport à la labellisation manuelle, cette méthode peut économiser beaucoup de temps et d’efforts, surtout

quand on travaille avec des jeux de données volumineux. De plus, elle peut aussi réduire les erreurs et les

biais introduits par l’intervention humaine.

Dans le cadre de la labellisation automatique pour ce projet, un modèle de deep learning, spécifiquement

YOLOv5s, a été entraîné sur les données annotées manuellement. Le choix de YOLOv5s se justifie par sa

rapidité et son efficacité pour la détection d’objets, caractéristiques qui le rendent particulièrement approprié

pour des applications nécessitant une labellisation d’images à grande échelle. L’entraînement de YOLOv5s sur

les données manuellement annotées vise à former le modèle pour reconnaître et annoter automatiquement les

109
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

objets d’intérêt dans les images. Ce processus de labellisation automatique peut considérablement accélérer le

processus d’annotation, surtout lorsqu’il est question de traiter de grands volumes de données. De plus, il peut

réduire les erreurs et les incohérences introduites par l’intervention humaine, améliorant ainsi la précision et

la cohérence des annotations.

Il est cependant important de souligner que malgré les avantages de la labellisation automatique,

cette méthode peut comporter ses propres erreurs. Par exemple, le modèle entraîné pourrait ne pas être en

mesure de reconnaître correctement les objets inconnus ou rarement vus dans les données d’entraînement. Par

conséquent, une certaine vérification et correction manuelle peuvent être nécessaires pour garantir l’exactitude

des annotations automatiques.

b.1 Organisation des données

La première étape du processus de labellisation automatique a consisté à organiser les images et leurs

annotations au format YOLO.

Cette structure est destinée à séparer les images et les annotations en deux ensembles distincts :

un ensemble d’entraînement (train) et un ensemble de validation (valid). Cette séparation est cruciale pour

l’entraînement du modèle, permettant de valider la performance du modèle sur des données non vues lors de

l’entraînement.

Pour le projet en question, l’ensemble des images a été réparti en suivant la règle courante de 80%

des images pour l’entraînement et 20% pour la validation. Pour la classe "rouille", cela s’est traduit par 357

images pour l’entraînement (soit 85%) et 65 images pour la validation (soit 15%).

Pour la classe "Antenne", sur un total de 840 images, la règle de 80/20 a été appliquée, ce qui a donné

672 images pour l’entraînement et 168 images pour la validation. Ce type de répartition assure une quantité

suffisante de données pour l’entraînement du modèle tout en réservant un ensemble de données suffisamment

large pour évaluer de manière fiable ses performances.

b.2 Configuration du fichier YAML pour le dataset

La configuration du dataset utilisé pour l’entraînement du modèle YOLOv5s se fait au moyen

d’un fichier YAML. Ce fichier, nommé dataset.yaml, sert de guide au modèle pour localiser les données

et comprendre la structure des classes.

Voici la structure générale du fichier dataset.yaml :

110
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

Figure 3.11 : Une structure en arborescence pour une gestion optimale des annotations et des
images

Figure 3.15 : Configuration du fichier YAML pour le jeu de données : dataset.yaml

Le fichier dataset.yaml comprend principalement les paramètres suivants :

— path : fait référence au chemin du répertoire contenant les données, qui comprend les sous-répertoires

’images’ et ’labels’.

— train : spécifie le chemin d’accès au répertoire contenant les données d’entraînement.

— val : indique le chemin d’accès au répertoire contenant les données de validation.

— nc : le nombre de classes uniques présentes dans le dataset. Cela doit correspondre au nombre réel de

classes que le modèle est censé identifier.

— names : une liste contenant les noms des classes. Ces noms doivent correspondre exactement aux

classes que le modèle est censé reconnaître.

111
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

Figure 3.12 : Séparation des images et des annotations pour la classe "Antenne"

Figure 3.13 : Images de la classe "Antenne"

Cette configuration YAML fournit au modèle YOLOv5s les informations nécessaires pour localiser et

comprendre correctement le dataset.

b.3 Sélection de la configuration du modèle

La prochaine étape consiste à choisir une configuration pour le modèle. YOLOv5 propose plusieurs

configurations de modèles pré-entraînés, chacune optimisée pour un équilibre spécifique entre vitesse d’inférence

et précision.

Ces configurations sont disponibles sous forme de fichiers YAML dans le répertoire models de YOLOv5.

Chaque fichier de configuration décrit la structure d’un modèle spécifique. Les configurations disponibles

à ce jour incluent yolov5s.yaml (petit), yolov5m.yaml (moyen), yolov5l.yaml (large) et yolov5x.yaml

(extra-large).

Pour ce projet, la configuration yolov5s.yaml a été choisie. Ce choix a été motivé par le fait que

yolov5s est le plus petit et le plus rapide des modèles disponibles, ce qui convient aux contraintes de

performance du projet.

La configuration du modèle peut être ajustée en modifiant le fichier YAML correspondant. Par

112
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

Figure 3.14 : Annotations de la classe "Antenne"

exemple, le nombre de classes du modèle (nc) peut être modifié pour correspondre au nombre de classes

du dataset.

b.4 Configuration du modèle YOLOv5

La configuration d’un modèle YOLOv5 se fait à l’aide d’un fichier YAML qui décrit les paramètres

et la structure du modèle. La configuration standard pour le modèle "small" de YOLOv5 (yolov5s) a été

utilisée comme point de départ pour ce projet.

Paramètres :

— nc : Ce paramètre définit le nombre de classes que le modèle est configuré pour prédire. Pour ce projet,

il est remplacé par le nombre de classes propres aux données.

— depth_multiple et width_multiple : Ces paramètres ajustent la profondeur et la largeur du modèle,

ce qui affecte la complexité globale du modèle.

— anchors : Ce paramètre représente les dimensions prédéfinies des boîtes englobantes prédites par le

modèle. Ces ancres sont définies à trois échelles différentes correspondant à trois niveaux différents du

réseau de neurones.

Backbone :

Le backbone d’un modèle fait référence à la partie initiale du réseau neuronal qui est responsable de

l’extraction des caractéristiques de base de l’image en entrée. Il s’agit généralement d’une série de couches

empilées qui effectuent des opérations de convolution et de mise en commun pour capturer les motifs et les

informations importantes de l’image.

Dans le contexte du modèle YOLOv5, le backbone est composé de plusieurs couches qui se succèdent

pour extraire progressivement des caractéristiques de plus en plus abstraites de l’image. Les paramètres du

backbone spécifient comment ces couches sont configurées et interconnectées.

113
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

Voici une explication détaillée des paramètres du backbone dans le contexte de YOLOv5 :

— Indice de la couche précédente

(from) : Ce paramètre indique à chaque couche du backbone quelle couche ou quel ensemble de couches

lui fournit ses entrées. Il est généralement exprimé sous la forme d’un numéro d’indice ou d’un nom

qui identifie une couche spécifique.

— Nombre de répétitions (number) : Ce paramètre spécifie le nombre de fois que la couche est répétée

dans le backbone. Par exemple, si le nombre est 3, cela signifie que la même couche est empilée trois

fois de suite.

— Type de couche (module) : Les types de couches, ou modules, utilisés dans le backbone d’un réseau

neuronal peuvent varier en fonction de l’architecture spécifique et de la tâche à accomplir.

— Arguments spécifiques (args) : Les arguments spécifiques (args) sont les paramètres propres à chaque

type de couche ou module utilisé dans le backbone d’un réseau neuronal. Ces arguments sont utilisés

pour configurer et contrôler le comportement de chaque couche. Les valeurs des arguments peuvent

varier en fonction du type de couche et des besoins spécifiques du modèle.

En ajustant ces paramètres du backbone, il est possible de personnaliser la structure du réseau de

neurones pour répondre aux besoins spécifiques de la tâche à accomplir, en tenant compte de la complexité

de l’image, de la quantité de données disponibles et d’autres considérations liées aux performances et à la

précision du modèle.

Head :

La tête du réseau, en tandem avec le backbone, est chargée de prédire les boîtes englobantes et les

classes. Elle utilise les caractéristiques extraites par le backbone pour produire les prédictions finales. Tout

comme dans le backbone, chaque couche de la tête est définie par des paramètres similaires.

La configuration du modèle doit être adaptée à la tâche spécifique d’apprentissage. Par conséquent,

certains de ces paramètres peuvent être modifiés pour optimiser les performances du modèle. Cependant, cette

opération nécessite une compréhension détaillée du fonctionnement interne de YOLOv5 et de la conception

des réseaux de neurones en général.

Anchors :

Dans le cadre de l’ajustement du modèle YOLOv5, un aspect crucial à considérer est le paramètre des

"anchors". Les "anchors" peuvent être définis comme des boîtes englobantes prédéterminées, utilisées comme

références initiales lors du processus de détection d’objets dans YOLO. Ces boîtes, avec leurs proportions et

tailles définies, servent à couvrir un éventail de formes et de dimensions typiques des objets à détecter. Le

114
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

modèle, durant son entraînement, est alors entraîné à ajuster ces boîtes "anchors" afin qu’elles se superposent

de manière optimale avec les objets réels dans les images.

Dans la configuration de yolov5s.yaml, trois groupes d’anchors sont définis, qui correspondent à

trois différentes échelles d’objets que le modèle est capable de détecter. Chaque groupe est utilisé pour un

niveau spécifique de l’architecture du modèle, permettant

la détection d’objets de tailles variées. Par exemple, le premier groupe d’anchors [10,13, 16,30, 33,23]

est utilisé pour la détection de petits objets, tandis que le dernier groupe [116,90, 156,198, 373,326] est réservé

pour la détection de grands objets.

Il est important de noter que ces valeurs d’anchors ne sont pas fixes et peuvent être modifiées pour

s’adapter aux spécificités du projet en cours. Ainsi, si les objets d’intérêt présentent des tailles et des formes

significativement différentes de celles représentées par les anchors par défaut, un réajustement de ces valeurs

peut être bénéfique pour améliorer la précision du modèle sur les données spécifiques.

Dans notre processus d’adaptation du modèle YOLOv5, l’ajustement des ancres - qui sont des boîtes

englobantes prédéfinies utilisées pour détecter les objets de différentes tailles - a été primordial. Ces ancres ont

été spécifiquement adaptées pour correspondre aux caractéristiques uniques des objets présents dans notre

jeu de données. Notre objectif était d’optimiser ces ancres afin de maximiser leur efficacité dans la détection

des objets au sein de notre jeu de données.

La procédure pour calculer les ancres optimisées était une démarche en plusieurs phases :

— Conversion des annotations YOLO en fichiers CSV : Grâce à un script Python développé sur mesure,

nous avons converti nos annotations YOLO en fichiers CSV. Le script extrait les coordonnées relatives

des boîtes englobantes à partir des annotations et les sauvegarde dans un fichier CSV distinct. Ces

coordonnées seront ensuite utilisées pour le calcul des ancres.

115
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

Figure 3.16 : Conversion d’annotations YOLO en fichier CSV avec un script Python

Figure 3.17 : Extraction réussie des annotations YOLO vers un fichier CSV

— Utilisation de l’algorithme de clustering K-means : Nous avons mis en œuvre l’algorithme de regroupement

K-means pour déterminer les ancres optimales. K-means est un algorithme qui regroupe les données

en k clusters en fonction de leur similarité. Dans notre cas, les points de données sont les dimensions

des boîtes englobantes.

116
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

Figure 3.18 : Script Python pour la génération d’ancres optimisées

— Préparation des données d’entrée : Nous avons chargé les dimensions des boîtes englobantes à partir

du fichier CSV en utilisant la bibliothèque NumPy. De plus, nous avons spécifié le nombre d’ancres par

niveau de la pyramide d’échelle et le nombre de clusters pour les ancres.

— Exécution de l’algorithme K-means : Nous avons utilisé la classe KMeans de la bibliothèque scikit-learn

pour exécuter l’algorithme K-means. Le modèle a été formé sur les dimensions des boîtes englobantes,

ce qui a permis d’obtenir les centroïdes des clusters correspondants.

— Évaluation de la qualité des ancres : Pour évaluer la qualité des ancres générées, nous avons calculé

l’IOU moyen (Intersection sur Union). L’IOU mesure le degré de chevauchement entre deux boîtes

englobantes et varie de 0 à 1. Un IOU élevé indique une meilleure correspondance entre les ancres et

les objets réels.

117
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

Figure 3.19 : Résultats de la génération des ancres optimisées et valeur de l’IOU

— Intégration des ancres dans le fichier de configuration : Les ancres optimisées, sous forme de tuples

(largeur, hauteur), ont été extraites des résultats de K-means et intégrées dans notre fichier de configuration

YOLOv5. Ces ancres seront utilisées par le modèle pour détecter et localiser les objets.

Figure 3.20 : Intégration des ancres optimisées

Après l’achèvement de ces étapes, nous avons sauvegardé notre fichier de configuration personnalisé,

qui est maintenant prêt à être utilisé pour entraîner notre modèle YOLOv5 selon nos spécifications uniques.

b.5 Entraînement du modèle YOLO

L’entraînement du modèle YOLOv5 représente une étape capitale de notre projet. Nous avons mis

en œuvre une stratégie d’entraînement rigoureuse, basée sur l’ajustement minutieux des hyperparamètres, le

suivi constant des métriques d’entraînement et l’application d’algorithmes d’optimisation. Voici un aperçu

détaillé des différentes étapes de ce processus :

118
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

3.3.2.3 Réglage des hyperparamètres

Le réglage des hyperparamètres est une étape cruciale qui influence directement l’efficacité et la

performance du modèle. Voici les principaux hyperparamètres que nous avons ajustés :

— Taux d’apprentissage : Il s’agit d’un paramètre essentiel qui détermine la rapidité avec laquelle notre

modèle apprend à partir des données. Un taux trop élevé peut entraîner un apprentissage superficiel,

tandis qu’un taux trop faible peut rendre l’apprentissage lent et inefficace. Nous avons choisi un taux

d’apprentissage qui assure une convergence optimale et équilibrée.

— Taille des mini-lots : Il s’agit du nombre d’exemples d’apprentissage utilisés dans une seule mise à jour

des paramètres du modèle. Une taille de lot adéquate permet de maximiser l’efficacité de l’apprentissage

et l’utilisation de la mémoire. Nous avons sélectionné une taille de lot qui tire le meilleur parti des

ressources disponibles.

— Nombre d’itérations (époques) : Le nombre d’itérations détermine le nombre de fois que l’ensemble

des données d’apprentissage est utilisé pour mettre à jour les paramètres du modèle. Un nombre

d’itérations adéquat assure que le modèle a suffisamment appris des données sans tomber dans le piège

du surapprentissage.

Figure 3.21 : Schéma illustrant les notions de batch et d’époque

119
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

3.3.2.4 Lancement de l’entraînement du modèle

Pour entraîner notre modèle YOLOv5, nous avons exécuté une commande spécifique qui a inclus

plusieurs arguments pour définir les paramètres de l’entraînement.

La commande exécutée était la suivante :

python train.py --img 640 --batch 8 --epochs 100 --data \\

C:\Users\Lenovo\Desktop\data_antenne\data_antenne\dataset.yaml \\

--cfg C:\Users\Lenovo\Desktop\data_antenne\data_antenne\custom_yolov5s.yaml \\

--weights yolov5s.pt --name antennedrone

Chaque argument a un rôle précis dans la commande d’entraînement :

— –img 640 : Définit la taille de l’image d’entrée pour l’entraînement, c’est-à-dire 640x640 pixels dans

notre cas.

— –batch 8 : Fixe la taille du lot pour l’entraînement. Un lot de 8 signifie que 8 images sont traitées

simultanément lors de chaque itération d’entraînement.

— –epochs 100 : Précise le nombre d’époques d’entraînement. Ici, le modèle a été entraîné pendant 100

époques, chaque époque signifiant que le modèle a parcouru l’ensemble du dataset une fois.

— –data dataset.yaml : Spécifie le fichier YAML qui contient les informations sur le dataset, comme

les chemins vers les images d’entraînement et de validation, et le nombre de classes.

— –cfg custom_yolov5s.yaml : Indique le fichier YAML qui contient la configuration du modèle YOLOv5

personnalisé.

— –weights yolov5s.pt : Utilise les poids du modèle YOLOv5m pré-entraîné comme point de départ

pour l’entraînement.

— –name antennedrone : Attribue un nom personnalisé au modèle entraîné, ce qui facilite l’identification

de l’entraînement et distingue différents modèles.

3.3.2.5 Surveillance des métriques d’entraînement

Pendant le processus d’entraînement, nous avons suivi de près plusieurs indicateurs clés pour évaluer

les performances du modèle. La perte (loss), qui mesure l’écart entre les prédictions du modèle et les véritables

valeurs, et la précision (accuracy), qui évalue la proportion des prédictions correctes, étaient nos principales

métriques de référence. Avec l’entraînement lancé, le modèle YOLOv5 commence à apprendre, affichant

120
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

régulièrement les métriques d’entraînement, comme la perte et la précision. Ces informations nous permettent

d’évaluer la progression de l’apprentissage et d’ajuster les hyperparamètres ou la stratégie d’entraînement si

nécessaire. Une fois l’entraînement terminé, le modèle est sauvegardé et prêt pour le déploiement et l’inférence

sur de nouvelles données.

Figure 3.22 : Début de l’entraînement du modèle : Suivi des métriques clés

Figure 3.23 : Fin de l’entraînement du modèle

Suite à l’exécution de la commande d’entraînement, le processus d’entraînement a commencé en

utilisant les paramètres spécifiés. Tout au long de l’entraînement, des informations sur la progression, telles

que la perte, la précision et d’autres mesures de performance, ont été constamment mises à jour.

Une fois l’entraînement terminé, le modèle entraîné a été enregistré dans le dossier runs/train sous le

121
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

nom spécifié par l’argument –name. Ce modèle entraîné peut ensuite être utilisé pour réaliser des inférences

et détecter des objets dans de nouvelles images.

b.6 Évaluation du modèle YOLO

Après l’entraînement du modèle YOLOv5s, il est essentiel d’évaluer ses performances en termes de

détection d’objets. Cette évaluation est effectuée en utilisant un ensemble de données de validation distinct

de celui utilisé pour l’entraînement, ce qui permet de tester le modèle sur des images qu’il n’a jamais vues

auparavant.

Trois indicateurs clés sont utilisés pour évaluer les performances du modèle : la précision, le rappel

et le score F1.

La précision mesure la proportion des prédictions positives qui se sont avérées correctes. Une précision

élevée indique que le modèle a réussi à identifier correctement la grande majorité des objets, même s’il peut

en avoir manqué certains.

Le rappel indique la proportion des vrais positifs qui ont été correctement identifiés. Un rappel élevé

indique que le modèle a réussi à identifier correctement la plupart des objets, même s’il a pu en identifier

certains de manière incorrecte.

Le score F1 est une métrique qui combine la précision et le rappel pour fournir un seul chiffre résumant

les performances du modèle. Il est calculé comme la moyenne harmonique de la précision et du rappel, ce qui

donne une mesure de l’équilibre entre ces deux critères.

Ces indicateurs sont évalués sur l’ensemble de validation, qui est distinct de l’ensemble d’entraînement.

Ils fournissent une estimation fiable des performances du modèle lorsqu’il est confronté à de nouvelles images.

122
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

3.3.2.6 Suivi des performances pendant l’entraînement

Pendant le processus d’entraînement, le modèle génère des statistiques à chaque époque, ce qui permet

de suivre l’évolution des performances au fil du temps :

Figure 3.24 : Statistiques de performance lors de l’entraînement

— Époque (epoch) : Indique le numéro de l’époque en cours.

— Perte pour la boîte englobante / détection d’objet / classification (train/box-loss, train/obj-loss,

train/cls-loss) : Ces valeurs représentent l’erreur du modèle pour la prédiction des boîtes englobantes,

la détection des objets et la classification sur l’ensemble d’entraînement.

— Précision et rappel (metrics/precision, metrics/recall) : Ces mesures permettent d’évaluer la

qualité des prédictions du modèle.

— Précision moyenne (metrics/mAP-0.5, metrics/mAP-0.5 :0.95) : Ces indicateurs offrent une

évaluation globale des performances du modèle en calculant la précision moyenne à différents seuils

d’intersection sur union (IoU).

— Perte pour la boîte englobante / détection d’objet / classification sur l’ensemble de

validation (val/box-loss, val/obj-loss, val/cls-loss) : Ces valeurs indiquent l’erreur du modèle

pour la prédiction des boîtes englobantes, la détection des objets et la classification sur l’ensemble de

validation.

— Taux d’apprentissage actuels (x/lr0, x/lr1, x/lr2) : Ces valeurs représentent les taux d’apprentissage

123
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

pour les différentes parties du réseau.

Ces métriques permettent de suivre l’évolution des performances du modèle au fil du temps. On

s’attend à ce que les erreurs d’entraînement et de validation diminuent au cours des époques, tandis que la

précision, le rappel et la mAP augmentent.

3.3.2.7 Évaluation du modèle

Après la fin de l’entraînement, les poids du modèle sont automatiquement sauvegardés dans le

répertoire yolov5/runs/train/. Pour évaluer les performances du modèle sur l’ensemble de validation, la

commande suivante a été utilisée :

python yolov5/val.py --data dataset.yaml --weights

runs/train/my_model/weights/best.pt --img 640

Cette commande évalue le modèle en utilisant les poids sauvegardés (best.pt) sur l’ensemble de validation

défini dans le fichier dataset.yaml. Les images de l’ensemble de validation sont traitées avec une taille de 640

pixels pour évaluer les performances du modèle.

3.3.2.8 Interprétation des courbes obtenues lors de l’entraînement et de


l’évaluation

Les courbes générées lors de l’entraînement et de l’évaluation du modèle YOLOv5s fournissent des

informations précieuses sur son apprentissage et ses performances. Voici comment interpréter ces courbes :

— Courbes d’apprentissage (Learning curves) : Ces courbes montrent l’évolution des pertes d’entraînement

et de validation au fil des époques. L’objectif est de voir ces pertes diminuer progressivement au

fil du temps, ce qui indique que le modèle apprend efficacement à partir des données. Si les pertes

d’entraînement diminuent tandis que les pertes de validation augmentent, cela peut indiquer un surapprentissage

(overfitting).

124
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

Figure 3.25 : Courbes d’apprentissage

— Courbes de précision et de rappel (Precision and Recall curves) : Ces courbes illustrent

l’évolution de la précision et du rappel du modèle au cours des époques. On s’attend à ce que ces

valeurs augmentent progressivement, témoignant de l’amélioration du modèle dans la détection des

objets. Une augmentation simultanée de la précision et du rappel indique une meilleure capacité du

modèle à identifier correctement les objets tout en minimisant les fausses détections.

125
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

Figure 3.26 : Courbes de précision et de rappel

— Courbes de mAP (mAP curves) : Les courbes de mAP (Mean Average Precision) montrent

l’évolution du mAP au fil des époques. Une augmentation du mAP indique une amélioration globale

des performances du modèle en termes de précision et de rappel à différents seuils d’intersection sur

union (IoU). Une augmentation constante du mAP est souhaitée pour obtenir un modèle de détection

d’objets plus performant.

Figure 3.27 : Courbes de mAP

126
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

3.3.2.9 Visualisation des résultats et interprétation des pourcentages


de confiance

Pour illustrer l’efficacité de notre modèle, nous avons inclus deux figures clés.

La première figure présente les images utilisées pour les tests, accompagnées des étiquettes réelles

que nous avons attribuées manuellement. Ces étiquettes indiquent l’emplacement des objets d’intérêt, en

l’occurrence les antennes, dans chaque image.

Figure 3.28 : Images de test avec étiquettes manuelles

La seconde figure présente les mêmes images, mais cette fois avec les prédictions de notre modèle.

Pour chaque objet détecté, le modèle attribue un pourcentage de confiance qui est également indiqué sur

la figure. Ce pourcentage de confiance représente une estimation de la probabilité que l’objet détecté soit

effectivement une antenne, selon les estimations du modèle.

127
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

Figure 3.29 : Images de test avec prédictions du modèle et pourcentages de confiance

En comparant ces deux figures, nous pouvons évaluer l’exactitude des prédictions du modèle. De plus,

en analysant les pourcentages de confiance, nous pouvons comprendre à quel point le modèle est certain de

ses prédictions.

La visualisation de ces résultats nous permet d’identifier d’éventuelles erreurs de détection et de

comprendre dans quelles situations ou pour quels types d’objets le modèle peut rencontrer des difficultés.

Cette analyse visuelle nous offre un outil précieux pour l’amélioration continue de notre modèle, en nous

permettant d’identifier les domaines qui nécessitent une attention particulière.

En utilisant ces figures, nous pouvons non seulement évaluer les performances quantitativement à

l’aide de mesures telles que la précision, le rappel et le score F1, mais aussi obtenir une compréhension

visuelle des résultats du modèle et de ses prédictions. Cela nous aide à prendre des décisions éclairées pour

affiner et améliorer notre modèle de détection d’objets.

b.7 Application du modèle : Automatisation de l’étiquetage d’images

Après avoir formé et validé notre modèle YOLOv5s, nous l’avons exploité pour automatiser l’étiquetage

d’images. Voici la méthodologie adoptée :

128
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

3.3.2.10 Modification de detect.py

Afin d’activer l’enregistrement automatique des étiquettes des images annotées, nous avons révisé le

script detect.py situé dans le répertoire YOLOv5. Ce changement a conduit à la génération automatique de

fichiers d’annotation pour chaque image analysée.

— Etape 1 : Lors de l’activation de cette option, en la mettant sur True, le modèle consigne les résultats

de détection dans des fichiers textuels.

Figure 3.30 : Modification de l’option "save_txt=True"

— Etape 2 :

Figure 3.31 : Établissement d’un dossier de sortie pour les images et les annotations

— Etape 3 :

Figure 3.32 : Conservation des annotations au format YOLO

3.3.2.11 Détection d’objets avec YOLO

Nous avons employé notre modèle formé pour repérer des objets d’intérêt (les antennes) dans de

nouvelles images en utilisant la commande :

python detect.py --source /path/to/your/images --save-txt

Pour chaque image, le modèle a créé des boîtes englobantes autour des objets détectés et attribué à

chaque boîte une étiquette correspondant à l’objet identifié.

129
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

Figure 3.33 : Exécution du script detect.py

Après l’exécution du script, les images et leurs annotations correspondantes au format YOLO se

trouvent dans le dossier de sortie. Les annotations sont stockées dans le sous-dossier ’labels’, et les images

dans le sous-dossier ’images’. Ces fichiers peuvent alors être utilisés avec labelImg ou tout autre outil de

gestion d’annotations au format YOLO.

Structure du dossier de sortie et gestion des annotations dans YOLOv5 :

Figure 3.34 : Stockage ordonné des images dans le dossier de sortie

130
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

Figure 3.35 : Stockage ordonné des annotations au format YOLO dans le dossier

Figure 3.36 : Déplacement des images d’entrée dans le sous-dossier "labels"

3.3.2.12 Consultation des images et annotations avec LabelImg

Une fois les annotations générées automatiquement, nous avons utilisé l’outil LabelImg pour visualiser

les images et leurs annotations correspondantes. LabelImg est une interface graphique qui offre la possibilité

de voir les images et leurs boîtes englobantes associées, superposant les boîtes sur les images.

131
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

Figure 3.37 : Visualisation des images et de leurs boîtes englobantes avec LabelImg

3.3.2.13 Correction manuelle des erreurs

Bien que l’étiquetage automatique ait grandement simplifié le processus d’annotation, il reste imparfait.

Nous avons donc inspecté manuellement chaque image et chaque annotation pour en vérifier l’exactitude. Les

erreurs détectées dans les boîtes englobantes ou les étiquettes ont été corrigées directement via l’interface de

LabelImg.

3.3.2.14 Enregistrement des modifications

Après avoir vérifié et corrigé les annotations pour chaque image, nous avons sauvegardé les modifications.

Cela a produit une version finale des fichiers d’annotation, prête à être exploitée pour une formation supplémentaire

du modèle ou pour une évaluation des performances.

Cette approche a permis d’accélérer sensiblement le processus d’annotation d’images, tout en assurant

une qualité acceptable grâce à la vérification manuelle. C’est une illustration parfaite de comment un modèle

d’apprentissage automatique peut être utilisé pour automatiser et simplifier une tâche complexe.

3.3.2.15 Organisation des images labellisées automatiquement

Pour assurer une organisation adéquate des images labellisées automatiquement par notre modèle,

nous avons suivi les étapes suivantes. Tout d’abord, nous avons intégré ces images dans notre dossier de

données existant. Ensuite, nous avons procédé à une division de l’ensemble de données en trois sous-ensembles

distincts : l’ensemble d’entraînement, l’ensemble de validation et l’ensemble de test. Cette approche standard

132
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

en apprentissage automatique nous permet de prévenir le surapprentissage, d’ajuster les paramètres du modèle

pendant l’entraînement et d’évaluer ses performances sur des données inédites.

3.3.3 Sélection du modèle YOLOv5m pour une détection d’objets optimisée


et efficace

Après une phase initiale d’entraînement avec le modèle YOLOv5s pour l’annotation automatique,

nous avons réussi à enrichir notre base de données avec des images et leurs annotations correspondantes. Cette

expansion significative de notre ensemble de données a modifié notre position de départ, nous permettant de

reconsidérer notre choix de modèle.

Dans cette seconde phase de notre projet, notre visée est de concevoir un modèle de détection d’objets

performant. Au vu de l’élargissement de notre ensemble de données, nous disposons maintenant de la capacité

d’entraîner des modèles plus grands et plus précis. C’est pourquoi nous avons opté pour le YOLOv5m pour

cette tâche.

Le YOLOv5m est un modèle plus volumineux et plus complexe que le YOLOv5s. Il est configuré pour

gérer des images de 640 pixels, tout comme le YOLOv5s, mais fournit une performance supérieure. En ce

qui concerne la vitesse de traitement, le YOLOv5m est légèrement plus lent que le YOLOv5s, mais demeure

suffisamment rapide pour nos exigences, avec un temps de prédiction de 224 ms sur CPU, et 8.2 ms et 21.2

ms sur un GPU NVIDIA V100 pour des lots de 1 et 32 images respectivement.

En matière de complexité, le YOLOv5m possède 21.2 millions de paramètres, ce qui est supérieur

au YOLOv5s, et requiert 49.0 milliards de FLOPs pour effectuer une prédiction sur une image de 640x640

pixels. Cependant, grâce à l’élargissement de notre ensemble de données, nous sommes désormais capables

de profiter de cette complexité augmentée pour renforcer la précision de notre modèle de détection d’objets.

En somme, la capacité du YOLOv5m à offrir une meilleure performance tout en demeurant relativement

efficient en termes de ressources en fait le choix optimal pour notre modèle de détection d’objets, compte

tenu de l’augmentation de la taille de notre ensemble de données.

3.3.4 Entraînement du modèle YOLOv5m pour la détection d’objets

Au cours de notre projet, nous avons été confrontés à une difficulté majeure lors de l’entraînement

du modèle YOLOv5s pour la labellisation automatique : l’usage d’un CPU prend énormément de temps,

entraînant significativement notre efficience d’entraînement. En tant qu’équipe, nous avons cherché une

solution pour accélérer le processus d’entraînement et améliorer nos résultats.

133
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

Une solution cruciale que nous avons adoptée pour pallier au problème de la durée excessive d’entraînement

a été l’utilisation d’un GPU. Les GPUs sont spécifiquement conçus pour les tâches de calcul intensives,

telles que la formation de modèles d’apprentissage profond. En exploitant un GPU, nous avons pu accélérer

sensiblement le processus d’entraînement et améliorer les performances globales du modèle YOLOv5.

Afin de mieux saisir les avantages et les différences entre les configurations d’entraînement pour

YOLOv5, nous avons élaboré un tableau de comparaison détaillée :

Figure 3.38 : Tableau comparatif détaillé des configurations d’entraînement pour YOLOv5

L’usage d’un GPU a été une décision clé pour accélérer le processus d’entraînement du modèle

YOLOv5. Les GPUs offrent une puissance de calcul parallèle qui permet de gérer efficacement les opérations

complexes du modèle, diminuant ainsi significativement le temps d’entraînement requis. Cette accélération se

traduit par une amélioration notable de la vitesse de détection du modèle, avec une augmentation remarquable

du nombre de frames par seconde (FPS).

Cependant, il convient de souligner que l’utilisation d’un GPU peut entraîner une augmentation de

la consommation de mémoire et des coûts associés. De plus, pour exploiter pleinement le potentiel du GPU,

il est souvent nécessaire de configurer et d’optimiser correctement l’infrastructure d’apprentissage profond

utilisée, en installant les pilotes adéquats et les dépendances requises. Enfin, l’usage de workers, en parallèle

avec le GPU, peut encore accélérer le processus d’entraînement, réduisant ainsi davantage le temps nécessaire

pour obtenir des résultats satisfaisants.

En associant l’usage d’un GPU à d’autres techniques d’optimisation, nous avons pu efficacement

résoudre le problème de durée excessive d’entraînement, tout en améliorant les performances de notre modèle

YOLOv5. Cette approche nous a permis d’obtenir des résultats plus rapides et plus précis, renforçant ainsi

134
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

la qualité et l’efficience de notre projet de détection d’objets.

3.3.4.1 Configuration du GPU et mise en place des dépendances :

L’intégration de dépendances essentielles comme le NVIDIA CUDA Toolkit et cuDNN a été vitale

pour optimiser les performances de nos GPU et booster l’entraînement de notre modèle YOLOv5. Voici un

aperçu détaillé des démarches que nous avons entreprises pour réaliser cette installation sous Windows :

Tout d’abord, il est crucial de confirmer la compatibilité de la carte graphique NVIDIA avec CUDA.

Cette vérification peut être effectuée en consultant la liste des GPU compatibles sur le site web de NVIDIA.

De plus, nous avons pris soin de garder nos pilotes de carte graphique à jour, en téléchargeant et installant

la dernière version depuis le site web de NVIDIA.

Après cette vérification, nous avons procédé au téléchargement du CUDA Toolkit directement depuis

la page de téléchargement du CUDA Toolkit sur le site web de NVIDIA. Nous avons sélectionné les options

correspondantes à notre système d’exploitation, à notre architecture matérielle, et à notre version de Windows.

Ensuite, nous avons lancé l’installateur téléchargé et suivi les instructions fournies à l’écran pour installer le

CUDA Toolkit.

Suite à l’installation du CUDA Toolkit, nous avons configuré les variables d’environnement de notre

système pour inclure les répertoires bin et libnvvp du toolkit CUDA.

Par la suite, nous avons téléchargé cuDNN depuis la page de téléchargement de cuDNN sur le site

web de NVIDIA. Nous avons opté pour la version de cuDNN qui correspond à la version du CUDA Toolkit

que nous avons installée. Après avoir extrait les fichiers du fichier ZIP téléchargé, nous les avons copiés dans

les répertoires correspondants du CUDA Toolkit.

Finalement, nous avons installé PyTorch avec la version CUDA adéquate en utilisant le gestionnaire

de paquets pip3. Pour confirmer que le CUDA Toolkit et cuDNN étaient correctement installés et configurés,

nous avons exécuté des commandes spécifiques dans le terminal.

135
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

Figure 3.39 : Validation de la reconnaissance du GPU par PyTorch et de la correspondance de


la version CUDA avec le système

Figure 3.40 : Confirmation de l’installation du CUDA Toolkit et de cuDNN

Ces démarches ont permis de garantir une installation adéquate des dépendances requises pour

l’entraînement de notre modèle YOLOv5 sur un GPU, assurant ainsi un processus d’entraînement plus rapide

et plus efficace.

136
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

3.3.4.2 Entraînement du modèle YOLOv5m :

Une fois nos données prêtes, nous avons entamé la phase critique de l’apprentissage du modèle

YOLOv5m pour la détection d’objets. À cette étape, nous avons adopté une stratégie différente de celle

utilisée pour notre premier modèle YOLOv5s, en tirant profit de la puissance du GPU pour accélérer le

processus d’apprentissage.

Sans reprendre les aspects techniques déjà discutés dans la partie consacrée à l’apprentissage du

modèle YOLOv5s, nous avons suivi un processus analogue, mais adapté aux particularités du modèle YOLOv5m

et à l’utilisation du GPU. Les hyperparamètres ont été ajustés de manière adéquate, et l’apprentissage a été

initié sur le jeu de données avec un suivi constant des métriques d’apprentissage.

L’efficience de l’apprentissage sur GPU s’est traduite par une accélération notable du processus et une

amélioration remarquable des performances de détection du modèle YOLOv5m. Ainsi, malgré les changements

dans l’architecture du modèle et le matériel utilisé, la philosophie générale de l’apprentissage est restée

constante : optimiser les performances du modèle tout en minimisant la perte lors de l’apprentissage. Pour

garantir que le GPU est correctement reconnu et utilisé, nous avons effectué une vérification pour confirmer

que la valeur de l’utilisation du GPU n’est pas nulle.

Figure 3.41 : Apprentissage du modèle avec GPU : Vérification de l’usage optimal du GPU

Dans le but d’optimiser l’apprentissage du modèle YOLOv5m, nous avons non seulement utilisé un

GPU mais avons aussi intégré des "workers" dans le processus. Ces "workers" sont des processus parallèles

qui s’occupent de la préparation des données avant leur transmission au GPU pour l’apprentissage. Cette

méthode de parallélisation est avantageuse car elle optimise l’utilisation des ressources disponibles et réduit

le temps nécessaire pour l’apprentissage. Il est essentiel de noter que malgré l’usage des "workers", il n’y a

pas d’option directe permettant d’utiliser simultanément le CPU et le GPU pour l’apprentissage du modèle.

137
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

En effet, le GPU est généralement plus performant pour exécuter les calculs nécessaires à l’apprentissage des

modèles de deep learning, il est donc préférable de l’employer pour ces calculs.

Néanmoins, nous avons optimisé l’usage du CPU parallèlement au GPU en ajustant l’argument

–workers. Cet ajustement a permis d’augmenter le nombre de threads de données utilisés pour le chargement

des données pendant l’apprentissage. Voici un exemple de la commande que nous avons utilisée :

python yolov5/train.py --img 640 --batch 8 --epochs 100

--data data_antenne\dataset.yaml --cfg data_antenne\custom_yolov5m.yaml

--weights yolov5m.pt --name modelantenne --workers 8.

Cet ajustement a contribué à augmenter le nombre de threads de données chargées, contribuant ainsi à

minimiser les goulots d’étranglement liés à l’E/S et à maximiser l’utilisation du GPU pendant l’apprentissage.

Bien que cela n’ait pas entraîné le modèle directement sur le CPU, cela a permis de maximiser l’utilisation

du GPU en chargeant les données plus rapidement.

Avant d’utiliser le GPU, il est important de noter que les ressources matérielles, comme la mémoire

et le processeur, sont intensément sollicitées, atteignant des niveaux proches de 100

Figure 3.42 : Usage de la mémoire pendant l’apprentissage avant l’activation du GPU

138
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

Figure 3.43 : Usage du processeur pendant l’apprentissage avant l’activation du GPU

L’utilisation simultanée du GPU et du CPU permet d’observer une optimisation et une amélioration

significative de l’usage des ressources matérielles.

Figure 3.44 : Usage des ressources matérielles pendant l’apprentissage après activation du GPU
et des workers

139
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

Figure 3.45 : Entraînement du modèle avec GPU et workers

3.3.5 Évaluation du modèle YOLOv5m

Après l’entraînement du modèle YOLOv5m, nous avons procédé à une étape cruciale : l’évaluation

et la vérification du modèle de détection d’objets. Pour ce faire, nous avons utilisé le jeu de données de test

préalablement réservé, distinct des données d’entraînement et de validation.

Cette phase a été réalisée de manière analogue à celle du modèle YOLOv5s, en bénéficiant toutefois de

l’efficacité de la puissance de calcul du GPU. Cette accélération matérielle a rendu le processus d’évaluation

plus rapide et plus efficace.

Durant l’étape de test, le modèle YOLOv5m a été appliqué à l’ensemble de test, et ses prédictions ont

été confrontées aux véritables annotations pour estimer l’exactitude du modèle. De plus, plusieurs indicateurs

de performance ont été analysés, tels que la précision (accuracy), le rappel (recall) et le score F1.

L’évaluation a confirmé que notre modèle YOLOv5m, grâce à l’entraînement sur GPU, a non seulement

permis une réduction notable du temps d’entraînement, mais a également amélioré la performance de détection

par rapport au modèle YOLOv5s entraîné sur CPU. Cette avancée notable a non seulement renforcé notre

confiance dans l’approche adoptée, mais a également souligné l’efficacité et l’importance de l’utilisation du

GPU pour l’entraînement de modèles de détection d’objets.

140
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

Figure 3.46 : Image de test annotée : antenne

Figure 3.47 : Image de test montrant les prédictions du modèle et les pourcentages de
confiance : antenne

141
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

3.3.6 Applications de la détection d’objets

Le modèle YOLOv5m que nous avons entraîné peut être utilisé dans un large éventail de scénarios

de détection d’objets. Il offre une grande flexibilité en ce qui concerne le type de données d’entrée qu’il peut

traiter. Ci-dessous, nous décrivons comment utiliser le modèle pour différentes formes d’input.

— Détection par webcam : Pour utiliser une webcam comme source d’entrée.

— Détection sur une image : Pour effectuer une détection d’objets sur une image spécifique.

— Détection sur une vidéo : De même, pour utiliser une vidéo comme source d’entrée.

— Détection dans un répertoire : Si nous souhaitons effectuer une détection d’objets sur toutes les

images ou vidéos dans un répertoire spécifique.

— Détection sur une vidéo YouTube : Pour effectuer une détection d’objets sur une vidéo YouTube.

— Détection sur un flux RTSP, RTMP ou HTTP : Enfin, pour effectuer une détection d’objets sur

un flux en direct RTSP, RTMP ou HTTP.

Ainsi, avec notre modèle YOLOv5m entraîné, nous sommes équipés pour effectuer une détection

d’objets précise sur un large éventail de sources de données, ouvrant la voie à de nombreuses applications

intéressantes.

Figure 3.48 : Application de la détection d’objets avec le modèle yolov5m

142
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

3.4 Sprint 4 : Reconnaissance de texte avec Tesseract OCR

Au cours de ce sprint palpitant, l’exploration des capacités puissantes de Tesseract OCR pour la

reconnaissance de texte se déroule. Les techniques et les algorithmes utilisés par Tesseract OCR, tels que

LSTM, N-gram, modèles d’apparence et prétraitement d’image, se dévoilent. L’amélioration de la qualité de

l’image pour faciliter la détection de texte se révèle, tandis que le processus de reconnaissance de texte

s’élabore avec l’aide d’un script Python personnalisé. L’émerveillement survient avec les résultats de la

reconnaissance de texte obtenus grâce à Tesseract OCR, et les possibilités d’intégration de cette technologie

dans des applications pratiques se déploient.

3.4.1 La Reconnaissance de texte

Dans le contexte de notre système d’inspection de pylônes, l’OCR (Optical Character Recognition)

joue un rôle essentiel en permettant l’extraction de texte à partir d’images. Plus précisément, nous utilisons

le logiciel de reconnaissance optique de caractères Tesseract pour identifier et extraire toute information

textuelle présente sur les antennes inspectées. Ce rapport présente en détail les caractéristiques de Tesseract

OCR, ainsi que les techniques et algorithmes qu’il utilise pour réaliser cette reconnaissance de texte.

3.4.2 Présentation de Tesseract OCR

Tesseract OCR est un logiciel de reconnaissance optique de caractères largement utilisé, actuellement

développé par Google. Il s’agit d’un logiciel open-source, écrit en langage de programmation C++, offrant

des fonctionnalités avancées pour la reconnaissance de texte à partir d’images ou de documents scannés.

3.4.2.1 Langues supportées

Tesseract OCR bénéficie d’une large prise en charge de plus de 100 langues, ce qui le rend adapté

à une variété de scénarios de reconnaissance de texte à l’échelle internationale. Il est capable de traiter des

alphabets complexes, des caractères spéciaux et des scripts non latins.

3.4.2.2 Fonctions

Outre la reconnaissance de texte, Tesseract OCR propose des fonctionnalités de prétraitement d’image

pour améliorer la qualité de l’image et la précision de la reconnaissance des caractères. Ces fonctions visent à

optimiser les résultats en appliquant des techniques telles que la binarisation, le recadrage, le redressement,

la suppression de bruit et la segmentation de l’image. Le prétraitement d’image est essentiel pour garantir

143
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

des performances optimales de reconnaissance de texte.

3.4.2.3 Utilisations

Tesseract OCR trouve son application dans divers domaines tels que la reconnaissance de texte dans

les documents, les livres, les images de caméras de surveillance, les images médicales, les images satellites, etc.

Grâce à sa polyvalence, il est utilisé pour automatiser des tâches de traitement de l’image et de reconnaissance

de texte dans de nombreux contextes professionnels.

3.4.2.4 Intégration

Tesseract OCR peut être intégré à des applications tierces grâce à des interfaces de programmation

(API), permettant ainsi la reconnaissance de texte en temps réel ou l’automatisation de tâches de traitement

de documents. Cette flexibilité facilite l’intégration de Tesseract dans des solutions existantes, améliorant

ainsi les capacités de reconnaissance de texte de ces applications.

3.4.3 Techniques et algorithmes utilisés par Tesseract OCR

3.4.3.1 LSTM (Long Short-Term Memory)

Tesseract OCR utilise des réseaux neuronaux récurrents LSTM, une forme de réseau de neurones

profonds, pour la reconnaissance de texte. Les réseaux LSTM sont capables de traiter des séquences de

données, telles que des séquences de caractères. L’algorithme LSTM présente l’avantage de pouvoir conserver

des informations à long terme, ce qui améliore la précision de la reconnaissance des caractères et permet de

gérer des contextes complexes.

3.4.3.2 N-gram

L’algorithme N-gram est une méthode statistique utilisée par Tesseract OCR pour prédire la prochaine

lettre ou le prochain mot dans une séquence de caractères. Il se base sur les modèles de probabilité construits

à partir de l’historique des caractères précédents. En utilisant cette approche, Tesseract OCR peut améliorer

la reconnaissance en prenant en compte le contexte et les probabilités d’apparition des caractères.

3.4.3.3 Modèles d’apparence

Les modèles d’apparence sont utilisés par Tesseract OCR pour reconnaître les caractères en se basant

sur des informations telles que leur forme, leur taille et leur position relative dans l’image. Ces modèles

sont créés à partir de données d’apprentissage qui contiennent des images de caractères annotées avec leurs

144
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

étiquettes correspondantes. En combinant les modèles d’apparence avec d’autres méthodes de reconnaissance

de caractères, la précision de la reconnaissance peut être considérablement améliorée.

3.4.3.4 Prétraitement d’image

Tesseract OCR utilise des techniques avancées de prétraitement d’image pour améliorer la qualité

de l’image et préparer celle-ci pour la reconnaissance de texte. Ces techniques comprennent la binarisation

pour convertir l’image en une image binaire, le recadrage pour isoler la région d’intérêt contenant le texte,

le redressement pour corriger l’inclinaison du texte, la suppression de bruit pour éliminer les artefacts

indésirables et la segmentation de l’image pour identifier les régions de texte distinctes. Le prétraitement

d’image est une étape critique pour obtenir de bons résultats de reconnaissance de texte.

3.4.3.5 Correction d’orthographe

Tesseract OCR intègre également des fonctionnalités de correction d’orthographe pour améliorer la

précision de la reconnaissance de texte. Il utilise des dictionnaires de mots pour comparer le texte reconnu avec

les mots valides et corriger les erreurs d’orthographe éventuelles. Cette fonctionnalité est particulièrement

utile dans les langues avec des orthographes complexes ou lors de la reconnaissance de textes présentant des

erreurs ou des caractères mal formés.

3.4.3.6 Apprentissage automatique

Certaines versions de Tesseract incluent des algorithmes d’apprentissage automatique pour améliorer

la précision de la reconnaissance de texte. Ces algorithmes peuvent apprendre à partir de données d’apprentissage

annotées pour affiner la reconnaissance des caractères et s’adapter à des cas spécifiques. L’apprentissage

automatique permet à Tesseract OCR de s’améliorer avec l’expérience et de fournir des résultats plus précis

au fil du temps.

3.4.3.7 Découpage de texte

Tesseract OCR propose une fonctionnalité de découpage de texte qui permet de diviser le texte

reconnu en blocs plus petits, tels que des mots ou des lignes. Ce découpage améliore la précision et la lisibilité

du texte reconnu en permettant une analyse et une manipulation plus précises des éléments textuels extraits.

En utilisant Tesseract OCR dans notre système d’inspection de pylônes, nous avons accès à une

technologie de reconnaissance de texte avancée et polyvalente. Les techniques et algorithmes utilisés, tels que

les réseaux neuronaux LSTM, les N-grams, les modèles d’apparence et les fonctionnalités de prétraitement

145
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

d’image, garantissent des performances fiables et précises. La correction d’orthographe intégrée et l’apprentissage

automatique contribuent à améliorer la précision de la reconnaissance de texte dans des scénarios variés. Grâce

à ces fonctionnalités, notre système d’inspection de pylônes bénéficie d’une capacité robuste pour extraire et

analyser efficacement le texte des images, facilitant ainsi les processus d’inspection et les analyses ultérieures.

3.5 Application de la reconnaissance de texte

3.5.1 Amélioration de la qualité de l’image pour faciliter la détection de


texte

Nous avons intégré un script Python qui inclut une fonction nommée "process_image" pour réaliser

le filtrage de l’image et améliorer sa qualité.

Figure 3.49 : Amélioration d’image : Prétraitement avec ’preprocess_image’

146
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

Figure 3.50 : Prétraitement d’image binaire pour meilleure reconnaissance des caractères

3.5.2 Résultat d’amélioration de la qualité de l’image

Figure 3.51 : Image originale avant traitement

Les conditions d’éclairage, le mouvement du drone et d’autres facteurs peuvent affecter la clarté et la

netteté de l’image. Dans ces cas, les détails subtils nécessaires pour une inspection précise peuvent se perdre.

Pour surmonter cet obstacle, nous entamons un processus rigoureux d’amélioration de l’image. Une

147
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

fois ce traitement effectué, nous obtenons notre deuxième image, une version nettement plus claire et détaillée

de l’originale. Les détails précédemment perdus ou obscurcis sont maintenant clairement visibles, permettant

une analyse plus approfondie.

Figure 3.52 : Amélioration de la qualité de l’image

Cette amélioration de la qualité est cruciale pour la prochaine étape de notre processus d’inspection :

l’application de notre technologie OCR. Avec une image plus claire et plus détaillée, la reconnaissance optique

de caractères (OCR) peut fonctionner avec une précision maximale, analysant minutieusement chaque élément

textuel présent sur le pylône.

En somme, la transformation de l’image originale en une version améliorée est une étape fondamentale

dans notre processus d’inspection. Elle ouvre la voie à une analyse OCR plus précise, maximisant l’efficacité

de notre inspection par drone intelligent.

3.5.3 Utilisation de Tesseract OCR pour la reconnaissance de texte sur


les images traitées

Dans le cadre de notre système d’inspection de pylônes, nous avons développé un script Python

utilisant Tesseract OCR pour effectuer la reconnaissance de texte sur les images traitées. Cette partie détaille

148
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

Figure 3.53 : Script Python pour la reconnaissance de texte

le fonctionnement de notre script, en mettant l’accent sur les étapes spécifiques impliquées dans le processus

de reconnaissance de texte.

3.5.3.1 Script Python pour la reconnaissance de texte avec Tesseract OCR :

Notre script Python utilise Tesseract OCR pour la reconnaissance de texte sur les images traitées.

Voici les deux étapes clés de son fonctionnement :

Configuration personnalisée :

Au début du script, nous définissons une configuration personnalisée pour Tesseract OCR. Cette

configuration nous permet de spécifier plusieurs paramètres importants

— Langue : Nous pouvons spécifier la langue à utiliser pour la reconnaissance de texte. Dans notre cas,

nous avons choisi le français.

— Mode du moteur OCR (OEM) :

— OEM 0 : Legacy Tesseract OCR engine. Il s’agit de la méthode OCR originale de Tesseract, mais

elle est moins précise et moins rapide que les méthodes plus récentes.

— OEM 1 : Neural nets LSTM engine. Cette méthode utilise un réseau neuronal pour améliorer la

précision de la reconnaissance de caractères.

— OEM 2 : Legacy plus LSTM. Cette méthode combine les deux méthodes précédentes en utilisant

l’OCR Legacy pour la reconnaissance de caractères en basse résolution, puis en utilisant LSTM

pour affiner les résultats.

— Mode de segmentation de la page (PSM) :

— PSM 3 : Default page segmentation mode. Cette option est la plus couramment utilisée et permet

à Tesseract de détecter automatiquement la mise en page de l’image.

— PSM 6 : Assume a single uniform block of vertically aligned text. Cette option est utile pour les

images contenant un seul bloc de texte vertical.

— PSM 11 : Sparse text. Cette option est adaptée aux images contenant de petits blocs de texte

dispersés sur la page.

149
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

En ajustant ces paramètres de configuration en fonction de nos besoins spécifiques, nous pouvons

optimiser la reconnaissance de texte pour des résultats précis et fiables.

Reconnaissance de texte :

Une fois l’image prétraitée, nous utilisons la méthode pytesseract.image_to_string() de la bibliothèque

pytesseract pour effectuer la reconnaissance de texte. Cette méthode prend en entrée l’image prétraitée

ainsi que la configuration personnalisée que nous avons définie précédemment. Elle retourne une chaîne de

caractères représentant le texte reconnu dans l’image. Il est important de noter que Tesseract OCR est

capable de reconnaître du texte dans plus de 100 langues, ce qui le rend très polyvalent et adapté à diverses

applications.

Notre script Python utilisant Tesseract OCR pour la reconnaissance de texte sur les images traitées

offre une solution puissante et précise pour extraire des informations textuelles importantes dans notre

système d’inspection de pylônes. Grâce à une configuration personnalisée, au prétraitement de l’image et

à la reconnaissance de texte, nous obtenons des résultats fiables et de haute qualité. Cette fonctionnalité

renforce l’efficacité et la précision de notre système d’inspection en automatisant le processus d’extraction

d’informations textuelles à partir des images, ce qui facilite les analyses ultérieures et les prises de décision.

Résultat du reconnaissance de texte :

150
Chapitre 3. Release 2 - Détection d’objets et reconnaissance de texte

Figure 3.54 : Résultat de la détection de texte à partir de l’image traitée

Conclusion

Au terme de ce deuxième chapitre captivant, nous avons voyagé au cœur de la Release 1, où nous avons

vécu ensemble une expérience riche en découvertes. La sélection minutieuse des composants, l’assemblage

méticuleux, les tests de vol palpitants et l’intégration de l’ESP 32 Cam ont donné naissance à une symphonie

technologique fascinante. Nous avons été témoins des décisions cruciales, des défis relevés et des avancées

extraordinaires dans la construction de ce drone exceptionnel.

Nous vous invitons maintenant à vous préparer pour la suite de cette aventure passionnante, où la

détection d’objets et le traitement d’images occuperont une place centrale dans le prochain chapitre captivant.

Restez captivés par l’excitation et l’innovation qui animent chaque étape de ce projet visionnaire. Nous

sommes impatients de partager avec vous les prochaines étapes de ce périple technologique fascinant.

151
Chapitre 4

Release 3 - Visualisation des


résultats via le tableau de bord
Django

Plan
1 Sprint 5 : Conception de l’architecture avec Django - Backend . . . . . 154

2 Architecture de Django . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

3 Conception de l’architecture avec Django . . . . . . . . . . . . . . . . . . 155

4 Interconnexion entre Django et Google Drive . . . . . . . . . . . . . . . 157

4.4.1 L’intégration de l’API Google Drive . . . . . . . . . . . . . . . . . . . . . . 157

4.4.2 Authentification OAuth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157

4.4.3 Stockage des images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158

4.4.4 Obtention des informations d’authentification pour l’API Google Drive à


partir d’un fichier JSON dans Django . . . . . . . . . . . . . . . . . . . . . 159

4.4.5 Affichage des résultats de détection . . . . . . . . . . . . . . . . . . . . . . . 162

5 Intégration du modèle Tesseract OCR avec Django . . . . . . . . . . . . 164

4.5.1 Création d’une application dans le serveur django . . . . . . . . . . . . . . 164

4.5.2 Enregistrement du texte dans une base de données SQLite . . . . . . . . . 165

4.5.3 Transition de la base de données de SQLite vers PostgreSQL . . . . . . . . 168

6 Sprint 6 : Réalisation du Dashboard avec Django - Frontend . . . . . . 174

7 Description du site web et de ses fonctionnalités principales . . . . . . 175

8 Présentation des langages utilisés : HTML, CSS, JavaScript, Python . 176

9 Présentation de spline et sketchfab . . . . . . . . . . . . . . . . . . . . . . 177

10 Architecture du site web . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177

152
4.10.1 Description de la structure globale du site . . . . . . . . . . . . . . . . . . . 177

4.10.2 Présentation de la manière dont Django gère les URL, les formulaires et les
vues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178

11 Pages du site web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180

4.11.1 Authentification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181

4.11.2 Page d’accueil (Landing page) . . . . . . . . . . . . . . . . . . . . . . . . . 184

4.11.3 Formulaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187

4.11.4 Tableau de bord (Dashboard) . . . . . . . . . . . . . . . . . . . . . . . . . 190

4.11.5 Page de résultat de la détection d’objets . . . . . . . . . . . . . . . . . . . . 192


Chapitre 4. Release 3 - Visualisation des résultats via le tableau de bord Django

Introduction

Le quatrième chapitre de cette aventure technologique évoque un frisson de fascination. Cette Release

3 palpitante propose deux sprints qui conduisent dans l’univers fascinant de l’architecture et du Dashboard

avec Django. Le Sprint 5 révèle la conception du backend, l’interconnexion avec Google Drive, l’intégration de

l’API, le stockage des images et l’intégration du modèle Tesseract OCR se manifestent en une réalité tangible.

Le Sprint 6 s’ensuit avec la réalisation du frontend, où le Dashboard se construit à l’aide des langages tels que

HTML, CSS, JavaScript et Python. Le lecteur est alors plongé dans l’art de l’architecture et de l’expérience

utilisateur captivante.

4.1 Sprint 5 : Conception de l’architecture avec Django - Backend

Dans le cadre de ce sprint passionnant, l’immersion se fait dans la conception de l’architecture avec

Django. Le voyage traverse l’interconnexion entre Django et Google Drive, avec l’intégration de l’API Google

Drive et la mise en œuvre de l’authentification OAuth. Le stockage des images capturées et l’obtention des

informations d’authentification pour l’API Google Drive dans Django se dévoilent. Le processus d’affichage

des résultats de détection et l’intégration du modèle Tesseract OCR avec Django se déploient. L’aventure

continue dans la création d’une application sur le serveur Django, l’enregistrement du texte extrait dans

une base de données SQLite et la transition vers PostgreSQL. Les fonctions extract-antenna-string() et

extract-antenna-info(), essentielles dans le processus de traitement des données, s’éclairent enfin.

4.2 Architecture de Django

Django, un outil de développement web Python, se distingue par sa flexibilité et sa puissance. C’est un

composant crucial qui orchestre efficacement l’interaction de divers éléments, tels que l’interface utilisateur,

l’API Google Drive, le modèle d’IA pour la détection d’anomalies et la gestion des données.

C’est cette centralité et cette efficacité de Django qui sont fondamentales pour la réussite de ce projet.

Sans Django, la coordination de tous ces éléments serait considérablement plus complexe. Django facilite ce

processus en offrant une couche d’abstraction qui cache la complexité technique, nous permettant de nous

concentrer sur le développement de la logique métier de l’application.

Dans ce chapitre, nous allons décortiquer l’utilisation de Django dans ce projet. Nous aborderons

d’abord la structure de l’application basée sur Django, avant de passer à son interaction avec Google Drive

pour le téléchargement d’images. Nous parlerons ensuite de l’incorporation du modèle d’IA YOLOv5m dans

154
Chapitre 4. Release 3 - Visualisation des résultats via le tableau de bord Django

Django et de la manière dont Django manipule les données détectées. Pour finir, nous donnerons un aperçu

de la conception du tableau de bord de Django, qui présente les résultats de la détection d’anomalies de

manière visuellement attrayante et facile à comprendre.

En explorant le rôle de Django dans ce projet complexe, nous allons approfondir notre compréhension

de sa capacité à gérer des défis sophistiqués et à participer activement à l’élaboration de solutions innovantes.

Notre objectif est non seulement de rendre le processus de ce projet plus transparent, mais aussi de souligner

l’importance et l’efficacité de Django comme un outil de développement web incontournable.

Figure 4.1 : Django : Site web d’Analyse Visuelle avec Détection, Stockage et Visualisation des
résultats de détection

L’ambition du projet d’inspection des pylônes par drone intelligent est d’améliorer la manière dont

ces inspections sont effectuées en tirant parti des drones dotés de technologies de pointe. Dans ce segment,

nous nous pencherons sur l’aspect crucial de ce projet : la création du tableau de bord web. C’est l’élément

qui se trouve au cœur de la manipulation et de la gestion des données collectées lors des inspections.

4.3 Conception de l’architecture avec Django

Django est un outil de développement web très solide et capable de s’adapter à diverses situations,

conçu autour du concept Modèle-Vue-Contrôleur (MVC). Ce principe favorise l’organisation des systèmes

informatiques en divisant les responsabilités de l’application en trois éléments clés.

Les Modèles : En ce qui concerne Django, les modèles sont une représentation théorique des

structures de données. Ils constituent le pont entre la base de données et les vues, régissant la forme des

données, leur vérification et le comportement spécifique à l’application des données. Dans notre projet, nous

155
Chapitre 4. Release 3 - Visualisation des résultats via le tableau de bord Django

avons créé plusieurs modèles pour contrôler différentes entités, notamment les images importées, les résultats

de détection d’anomalies et les données historiques d’inspection. Chacun de ces modèles est doté d’attributs

spécifiques pour saisir les particularités pertinentes de l’entité qu’il symbolise.

Les Vues : Les vues, dans le contexte de Django, gèrent la logique de contrôle. Elles réceptionnent

les demandes HTTP de l’utilisateur, interagissent avec un ou plusieurs modèles pour récupérer les données

nécessaires, puis transmettent ces données à un template pour produire une réponse. Dans notre projet, nous

avons employé les vues pour déterminer les opérations spécifiques, telles que le téléchargement d’images,

l’exécution du modèle YOLOv5m, l’enregistrement des résultats, et autres.

Les Templates : Les templates, ou modèles, sont responsables de la présentation des données. Ils

décrivent comment les données, fournies par les vues, doivent être présentées dans l’interface utilisateur. Dans

notre application, nous utilisons les templates pour élaborer l’interface utilisateur du tableau de bord, pour

afficher les images téléchargées et les résultats de la détection d’anomalies.

Les fichiers statiques : Ces fichiers jouent un rôle majeur dans notre application Django. Ils

contiennent les images importées et les résultats de la détection d’anomalies, et sont stockés à un emplacement

spécifiquement défini dans la structure de Django, assurant ainsi une gestion uniforme et fiable.

Figure 4.2 : Structure django

156
Chapitre 4. Release 3 - Visualisation des résultats via le tableau de bord Django

4.4 Interconnexion entre Django et Google Drive

La liaison entre Django et Google Drive joue un rôle fondamental dans le fonctionnement de notre

application. Elle nous permet de récupérer les images des pylônes de télécommunication qui sont stockées sur

Google Drive, ce qui est la première phase de notre procédure de repérage des anomalies.

4.4.1 L’intégration de l’API Google Drive

L’API Google Drive propose une panoplie de fonctions qui facilitent l’interaction avec les fichiers et

dossiers conservés sur Google Drive. Dans notre application, nous nous servons de cette API pour récupérer

les images à analyser. Django, grâce à ses fonctionnalités natives de gestion des API, rend ce processus aisé

et sans détour. Nous avons instauré un service dédié dans notre application Django qui se charge de la liaison

avec l’API Google Drive. Ce service exploite les fonctionnalités de l’API pour repérer le bon dossier sur

Google Drive, naviguer à travers les images qu’il contient et les télécharger une à une.

Figure 4.3 : les images prise par ESP32-cam stockés sur Google Drive

4.4.2 Authentification OAuth

La vérification de l’identité est une mesure cruciale pour sécuriser les données lors des interactions

avec Google Drive. C’est pourquoi nous avons recours à OAuth, un protocole d’authentification standardisé

qui garantit que seuls les utilisateurs habilités peuvent accéder aux fichiers sur Google Drive. Django s’occupe

157
Chapitre 4. Release 3 - Visualisation des résultats via le tableau de bord Django

de l’intégralité du processus OAuth, qui inclut l’obtention du jeton d’authentification, son stockage de manière

sécurisée, et son utilisation pour valider chaque demande adressée à l’API Google Drive. De surcroît, Django

prend en charge le renouvellement du jeton si besoin.

Figure 4.4 : Inscription : autorisations pour le projet

Figure 4.5 : API et Services

4.4.3 Stockage des images

Après le téléchargement, les images sont conservées dans un répertoire spécifique de fichiers statiques

au sein du système de fichiers de Django. Cette méthode assure que les images sont aisément disponibles

pour les phases ultérieures du processus, y compris l’analyse par le modèle de détection d’anomalies. Le

répertoire de fichiers statiques est structuré de manière à faciliter la recherche et la récupération des images.

En définitive, la connexion entre Django et Google Drive est un élément central de notre application, qui

assure le téléchargement sûr et efficace des images nécessaires à l’analyse.

158
Chapitre 4. Release 3 - Visualisation des résultats via le tableau de bord Django

4.4.4 Obtention des informations d’authentification pour l’API Google


Drive à partir d’un fichier JSON dans Django

Voici un exemple de code illustrant la façon dont nous récupérons les informations d’authentification

pour l’API Google Drive à partir d’un fichier JSON qui contient les détails du compte de service. Ces

informations sont employées par Django pour certifier l’application lorsqu’elle communique avec Google Drive

via l’API.

# Importing the client module from the oauth2client library

from oauth2client import client

Cette ligne de code permet d’importer le module "client" de la bibliothèque "oauth2client". Ce module

comprend plusieurs classes et fonctions qui simplifient l’authentification OAuth.

def get_google_credentials():

Voici la déclaration de la fonction "get-google-credentials". Cette fonction est chargée de générer et

de renvoyer les informations d’authentification nécessaires pour interagir avec l’API Google Drive.

SCOPES = [’https://www.googleapis.com/auth/drive’]

CLIENT_SECRET_FILE = ’client_secrets.json’

SERVICE_ACCOUNT_FILE=’SERVICE_ACCOUNT_FILE.json’

À ce niveau, nous déclarons trois variables :

SCOPES est une liste contenant les niveaux d’accès requis pour l’application. Ici, le niveau est défini

pour permettre l’accès à Google Drive.

CLIENT-SECRET FILE est le nom du fichier qui renferme les informations secrètes du client pour

l’authentification OAuth. Ce fichier est généralement fourni par le service d’authentification lors de la mise

en place de l’application.

SERVICE ACCOUNT FILE est le nom du fichier JSON qui contient les détails du compte de service.

Ce fichier est utilisé pour authentifier l’application.

credentials = service_account.Credentials.from_service_account_file(

SERVICE_ACCOUNT_FILE, scopes=SCOPES)

Cette ligne génère un objet "credentials" à partir du fichier du compte de service. Cet objet sera utilisé

pour authentifier l’application lors de la communication avec l’API Google Drive. La méthode "from-service-account-file"

est employée pour créer l’objet "credentials" à partir du fichier du compte de service.

159
Chapitre 4. Release 3 - Visualisation des résultats via le tableau de bord Django

return credentials

Enfin, la fonction "get-google-credentials" renvoie l’objet "credentials". Cet objet peut ensuite être employé

pour authentifier l’application lors de l’interaction avec l’API Google Drive.

Figure 4.6 : fonction get google credentials

En somme, ce bout de code constitue une fonction qui génère et restitue un objet d’authentification

pour l’API Google Drive, en s’appuyant sur les informations contenues dans un fichier associé à un compte

de service.

L’intégration du modèle YOLOv5m avec Django pour l’identification des objets constitue une phase

essentielle de notre application. Cette intégration se déploie de la manière suivante :

— Mise en place du modèle YOLOv5m

Le premier pas consiste à installer le modèle préformé YOLOv5m, capable de repérer des objets dans

des images. Ce modèle a déjà été entraîné sur un large corpus d’images. Pour le mettre en œuvre, nous

faisons appel au fichier best.pt, réputé pour contenir les poids du modèle ayant affiché les meilleures

performances pendant l’entraînement.

model_path = ’C:/Users/Lenovo/dronevision/inspection/best.pt’

model = YOLOv5(model_path)

— Installation des catégories d’objets

Après avoir chargé le modèle, nous mettons en place les catégories d’objets que le modèle est capable

de repérer. Ces catégories sont précisées dans un fichier yaml, et chacune d’elles correspond à un type

d’objet différent que le modèle est programmé pour identifier.

160
Chapitre 4. Release 3 - Visualisation des résultats via le tableau de bord Django

with open(’C:\\Users\\Lenovo\\dronevision\\inspection\\dataset.yaml’, ’r’) as f:

yaml_data = yaml.safe_load(f)

classes = yaml_data["names"]

— Téléchargement des images depuis Google Drive

Ensuite, nous téléchargeons les images à analyser depuis Google Drive grâce à l’API du même nom.

L’identifiant du dossier spécifique d’où nous récupérons les images est défini comme (your-folder-id).

Les images téléchargées sont sauvegardées dans un dossier local pour une utilisation ultérieure.

— Analyse des images et identification des objets

Une fois les images téléchargées et enregistrées localement, elles sont soumises une par une à l’analyse

du modèle YOLOv5m. Le modèle produit une liste des objets identifiés dans chaque image. Chaque

objet est associé à un cadre (indiquant son emplacement dans l’image) et une catégorie (spécifiant le

type d’objet repéré). Les images sont alors annotées avec ces informations.

— Archivage des résultats : Conservation des résultats de l’identification

Dans le cadre de notre projet d’inspection des pylônes de télécommunication par drone intelligent, la

gestion des données identifiées revêt une importance capitale. Lorsque le modèle YOLOv5m fournit les

informations d’identification, celles-ci doivent être conservées de façon efficace et organisée pour des

usages ultérieurs. Ces informations incluent la position des objets identifiés dans l’image, la catégorie

de l’objet (ce qui a été identifié) et le degré de confiance dans l’identification.

Django offre une solution efficace à ce niveau. Il propose un système de modèles permettant de définir

la structure des données de manière flexible et performante. Un modèle Django spécifique a été créé

pour conserver les informations d’identification fournies par le modèle YOLOv5m. Chaque fois qu’une

identification est réalisée, une nouvelle instance de ce modèle est créée et les informations d’identification

sont conservées dans ses champs.

— Gestion des fichiers statiques

Stockage des images

Outre la conservation des informations sur les objets détectés, la gestion des images téléchargées depuis

Google Drive et annotées avec des informations de détection d’objets est également une nécessité.

Ces images doivent être stockées de manière à pouvoir être facilement retrouvées pour des analyses

ultérieures et pour être affichées.

Django propose un système efficace de gestion de fichiers statiques pour cela. Les fichiers statiques

comprennent tous les fichiers qui ne sont pas générés dynamiquement, comme les images, les fichiers

161
Chapitre 4. Release 3 - Visualisation des résultats via le tableau de bord Django

CSS ou JavaScript. Pour ce projet, nous utilisons le système de fichiers statiques de Django pour stocker

les images téléchargées et les images annotées.

Accès aux images

Le système de gestion de fichiers statiques de Django ne permet pas seulement de stocker les images de

manière organisée, mais il facilite également leur accessibilité à l’utilisateur lorsque celui-ci les demande.

Le dossier statique local, où ces images sont stockées, est configuré de manière à être accessible depuis

l’interface utilisateur de l’application. Cela permet d’afficher les images à l’utilisateur.

En somme, grâce à ses fonctionnalités souples et puissantes, Django joue un rôle central dans notre

projet d’inspection des pylônes de télécommunication par drone intelligent. Il gère efficacement le flux

de données entre les éléments clés du système.

Figure 4.7 : fichier statique de Django

4.4.5 Affichage des résultats de détection

Le tableau de bord du système utilise une interface intuitive basée sur une galerie d’images pour

afficher les résultats de la détection d’anomalies. Les images sont présentées dans un format carrousel qui

utilise le HTML et CSS pour créer une galerie interactive. Chaque image de l’anomalie est affichée en grand

format, offrant aux utilisateurs la possibilité de zoomer pour une inspection plus détaillée.

Chaque anomalie est accompagnée d’une fiche détaillée générée dynamiquement qui comprend des

informations telles que la classe de l’objet détecté, sa position dans l’image, et le niveau de confiance de la

162
Chapitre 4. Release 3 - Visualisation des résultats via le tableau de bord Django

détection. Cette conception permet aux utilisateurs de comprendre chaque anomalie en détail et de prendre

des décisions éclairées sur les mesures à prendre.

Le carrousel d’images est rendu possible grâce au système de gestion des fichiers statiques de Django.

Les images téléchargées de Google Drive et les images annotées avec les détections d’objets sont stockées

en tant que fichiers statiques. Ces fichiers sont facilement accessibles et peuvent être servis à l’utilisateur

directement à partir du système de fichiers de l’application.

En utilisant la combinaison de Django pour la gestion des données et le code HTML/CSS pour

l’interface utilisateur, le système est capable de fournir une présentation visuelle efficace et intuitive des

anomalies détectées. Cela démontre la puissance et la flexibilité de Django en tant que framework pour le

développement de ce projet d’inspection des pylônes de télécommunication par drone intelligent.

Figure 4.8 : affichage des résultats de détection des antennes sur le site web

163
Chapitre 4. Release 3 - Visualisation des résultats via le tableau de bord Django

4.5 Intégration du modèle Tesseract OCR avec Django

4.5.1 Création d’une application dans le serveur django

Figure 4.9 : Création une application ‘ocr-app’ dans le serveur Django

Dans le fichier views.py de notre application, nous avons implémenté les fonctionnalités suivantes :

Notre système commence par accueillir un ensemble d’images en entrée. Nous avons conçu une fonction

spécifique qui permet de récupérer efficacement le chemin du dossier contenant ces images.

Dans le processus suivant, nous avons intégré des techniques de binarisation et l’application de divers

filtres sur chaque image. Ces méthodes ont été développées pour lire chaque image du dossier, les transformer

en une forme binaire, et appliquer ensuite des filtres pour affiner la qualité de l’image. Cette étape cruciale

permet d’améliorer la précision de la reconnaissance d’image.

Nous utilisons ensuite l’algorithme de Reconnaissance Optique de Caractères (OCR), en particulier

Tesseract OCR, pour extraire le texte à partir de ces images binarisées et filtrées. C’est ici que le texte est

identifié et extrait pour une utilisation ultérieure.

Enfin, nous avons mis en place une page HTML dédiée à l’affichage des résultats. Cette page web

présente le nom de chaque fichier image traité, ainsi que le texte détecté dans l’image correspondante. Cela

offre une visualisation claire et organisée des résultats pour l’utilisateur final.

En combinant ces étapes - de la récupération du dossier d’images, à l’application de filtres, en passant

par la reconnaissance OCR, et enfin à l’affichage des résultats - nous avons créé un système de reconnaissance

de texte à partir d’images efficace et facile à utiliser.

164
Chapitre 4. Release 3 - Visualisation des résultats via le tableau de bord Django

Figure 4.10 : Implémentation des fonctions de traitement d’image, de filtrage et de


reconnaissance de texte dans views.py

Figure 4.11 : Affichage des résultats dans une page HTML

4.5.2 Enregistrement du texte dans une base de données SQLite

Dans notre projet Django, nous avons choisi d’utiliser la base de données par défaut, SQLite. SQLite

stocke les données dans un fichier unique, nommé ‘db.sqlite3‘, qui se situe à la racine de notre projet.

Il s’agit d’une base de données légère qui conserve les données localement, sans avoir besoin d’un

serveur de base de données distinct. C’est particulièrement adapté pour les phases de développement et de

tests, car cela offre une facilité d’utilisation considérable et requiert une configuration minimale.

En utilisant SQLite, nous avons pu éviter la complexité d’une configuration de serveur de base de

données externe, tout en bénéficiant de la fonctionnalité complète d’une base de données relationnelle. Cela

nous a permis de nous concentrer sur le développement de notre application, tout en ayant la flexibilité de

passer à une base de données plus robuste si nécessaire.

165
Chapitre 4. Release 3 - Visualisation des résultats via le tableau de bord Django

Étape 1 : Initialement, nous avons développé le modèle OCRResult dans le fichier

models.py pour conserver les résultats issus de la reconnaissance optique de caractères (OCR).

De plus, nous avons également instauré une nouvelle application nommée ocr-app au sein du

serveur Django.

Figure 4.12 : Création d’une application ‘ocra pp′ dansleserveurDjango

Étape 2 : Suite à cela, nous avons créé une nouvelle migration pour intégrer ces modifications

à la base de données SQLite. Cela a été suivi par l’application de cette migration pour

concrétiser les modifications.

Figure 4.13 : Création et application d’une migration dans SQLite

Étape 3 : Par la suite, nous avons apporté des modifications à la vue ocr-results pour

qu’elle puisse enregistrer les résultats OCR directement dans la base de données. Cela a

impliqué des modifications à la fonction ocr-results.

166
Chapitre 4. Release 3 - Visualisation des résultats via le tableau de bord Django

Figure 4.14 : Modification de la fonction ‘ocr-results‘

Étape 4 : Dans le but de visualiser les résultats stockés dans la base de données,

nous avons développé une nouvelle vue dans views.py qui permet de récupérer les données

enregistrées. Pour ce faire, nous avons créé la fonction ocr-results-list.

Nous créons une nouvelle vue dans ‘views.py‘ afin de récupérer les données stockées dans la base de

données.

Figure 4.15 : création de la fonction ‘ocr-results-list’

Afin de rendre cette vue accessible, nous avons ajouté l’URL correspondante dans le fichier urls.py.

Figure 4.16 : Ajout de l’URL dans le fichier ‘urls.py’

En outre, nous avons créé un nouveau fichier ocr-results-list.html dans le dossier templates, qui est

conçu pour afficher les données OCR.

167
Chapitre 4. Release 3 - Visualisation des résultats via le tableau de bord Django

Figure 4.17 : Création du fichier ‘ocr-results-list.html‘ pour l’affichage des données OCR

Maintenant, en se dirigeant vers l’URL http ://127.0.0.1 :8000/ocr-results-list/, nous pouvons visualiser

la liste des résultats OCR conservés dans la base de données

Figure 4.18 : Affichage de la liste des résultats OCR

Toutefois, en envisageant un déploiement à échelle industrielle, nous avons apporté un changement

significatif en remplaçant SQLite par une base de données plus puissante et plus flexible : PostgreSQL. Nous

avons observé qu’elle fournit des performances optimisées et des fonctionnalités avancées pour gérer des

applications de grande envergure.

4.5.3 Transition de la base de données de SQLite vers PostgreSQL

Étape 1 : Installation de PostgreSQL sur Windows et configuration du mot de passe de

l’utilisateur "postgres"

Nous avons procédé au téléchargement du programme d’installation de PostgreSQL pour Windows

via le lien https ://www.postgresql.org/download/windows/. Par la suite, nous avons lancé ce programme

168
Chapitre 4. Release 3 - Visualisation des résultats via le tableau de bord Django

d’installation et respecté les directives affichées pour finaliser l’installation de PostgreSQL. Au cours de ce

processus, un mot de passe nous a été demandé pour le compte utilisateur "postgres".

Figure 4.19 : Installation et configuration de PostgreSQL

Étape 2 : Création d’une base de données et d’un utilisateur

Pour établir une connexion à PostgreSQL en utilisant le compte utilisateur "postgres", nous avons

lancé un terminal ou, dans le cas de Windows, l’invite de commandes. Lorsque le nom d’utilisateur nous a

été demandé, nous avons saisi "postgres". Par la suite, nous avons entré le mot de passe approprié lorsque

cette information nous a été requise.

169
Chapitre 4. Release 3 - Visualisation des résultats via le tableau de bord Django

Figure 4.20 : Connexion à PostgreSQL en tant qu’utilisateur "postgres"

Nous avons créé une nouvelle base de données PostgreSQL

Figure 4.21 : Création d’une base de données PostgreSQL

Nous avons créé un nouvel utilisateur dans PostgreSQL

Figure 4.22 : Création d’un utilisateur dans PostgreSQL

Étape 3 :Attribution des privilèges à l’utilisateur sur la base de données PostgreSQL

Figure 4.23 : Attribution des privilèges à l’utilisateur

Étape 4 : Configuration de Django pour utiliser la nouvelle base de données PostgreSQL

dans ‘settings.py‘ Nous avons procédé à l’ouverture du fichier settings.py et avons recherché la section

nommée DATABASES. Cette dernière a été modifiée de manière à intégrer les données de connexion relatives

à notre nouvelle base de données PostgreSQL.

170
Chapitre 4. Release 3 - Visualisation des résultats via le tableau de bord Django

Figure 4.24 : Configuration de la base de données PostgreSQL dans ‘settings.py‘

Étape 5 : Application de la migration

Figure 4.25 : Application d’une migration dans PostgreSQL

171
Chapitre 4. Release 3 - Visualisation des résultats via le tableau de bord Django

Étape 6 : Extraction d’informations à partir du texte détecté et les enregistrer dans

PostgreSQL

En vue d’extraire des informations précises issues du texte détecté, des modifications ont été apportées

au code se trouvant dans views.py. Ces ajustements ont inclus l’utilisation d’expressions régulières. Notre

but primordial était de cibler des champs spécifiques tels que la fréquence de gain et le type d’antenne.

Par conséquent, des fonctions ont été rajoutées dans le fichier views.py afin de permettre une extraction

efficace des informations pertinentes. Ces dernières sont par la suite enregistrées dans notre base de données

PostgreSQL.

La fonction ‘extract-antenna-string()‘ :

— recevoir une chaîne de caractères en tant qu’input.

— chercher un schéma précis à l’intérieur de cette chaîne en se servant d’une expression régulière.

— renvoyer une chaîne spécifique si le schéma est détecté, sinon elle renvoie None.

Figure 4.26 : Fonction extract-antenna-string() - Extraction de sous-chaîne avec expression


régulière

La fonction ‘extract-antenna-info()‘ :

— prend une chaîne de caractères en entrée.

— Elle extrait des informations spécifiques de la chaîne de caractères en utilisant des expressions régulières.

— stocke ces informations dans un dictionnaire qui est ensuite renvoyé.

172
Chapitre 4. Release 3 - Visualisation des résultats via le tableau de bord Django

Figure 4.27 : Fonction ‘extract-antenna-info()‘ - Extraction d’informations avec expressions


régulières et dictionnaire

d’informations dans un dictionnaire

Dans la continuité, nous avons sauvegardé ces informations dans notre base de données PostgreSQL.

Ceci nous donne l’opportunité de conserver ces données précises dans une structure de base de données

soigneusement agencée.

Après avoir sauvegardé les champs nécessaires dans la base de données PostgreSQL, nous envoyons

ces informations à notre site web. Celui-ci est alors chargé de présenter les résultats identifiés.

173
Chapitre 4. Release 3 - Visualisation des résultats via le tableau de bord Django

Figure 4.28 : affichage des résultats de détection du texte sur le site web

4.6 Sprint 6 : Réalisation du Dashboard avec Django - Frontend

Dans ce sprint passionnant, découvrons le pouvoir du frontend dans la réalisation du Dashboard.

Explorons les langages utilisés tels que HTML, CSS, JavaScript et Python, ainsi que les outils tels que Spline

et Sketchfab.Dans une immersion au coeur de l’architecture du site web, la structure globale se dessine et

détaille la manière dont elle gère les URL, les formulaires et les vues à l’aide de Django. . Explorons les

différentes pages du site web, de l’authentification à la page d’accueil, en passant par les formulaires et le

tableau de bord. Découvrons comment chaque page est conçue visuellement et fonctionnellement pour offrir

une expérience utilisateur optimale.

Cette partie constitue la partie finale d’un projet plus vaste portant sur l’inspection des pylônes

par drone intelligent grâce à l’Internet des objets (IoT) et l’intelligence artificielle (IA). La partie spécifique

abordée dans cette section concerne le développement d’un site web permettant d’afficher les résultats de la

détection d’objets et de la reconnaissance optique de caractères (OCR) obtenus lors des inspections. Ce site

web fournit une interface conviviale pour visualiser et gérer les informations relatives aux équipements des

pylônes, ainsi que les modèles 3D permettant de mieux comprendre les projets et les pylônes inspectés.

Cette partie se concentre sur les aspects techniques du développement web, en mettant en avant

l’utilisation du framework Django et des langages HTML, CSS, JavaScript et Python. De plus, la base de

données SQLite est utilisée pour stocker les informations relatives aux équipements des pylônes.

Dans les sections suivantes, nous détaillerons l’architecture du site web, en expliquant comment les

différentes fonctionnalités ont été mises en œuvre. Nous présenterons également les différentes pages du

174
Chapitre 4. Release 3 - Visualisation des résultats via le tableau de bord Django

site, telles que l’authentification, le formulaire d’entrée des informations sur les équipements des pylônes, le

tableau de bord pour afficher les informations, ainsi que les modèles 3D interactifs et la page de résultats de

la détection d’objets.

4.7 Description du site web et de ses fonctionnalités principales

Le site web développé dans le cadre de ce projet d’inspection des pylônes par drone intelligent présente

plusieurs fonctionnalités clés permettant la visualisation et la gestion des données d’inspection. Voici une

description des principales fonctionnalités de ce site web :

Authentification et inscription :

Le site web propose un système d’authentification sécurisé permettant aux utilisateurs autorisés de

se connecter à leurs comptes. De plus, il offre la possibilité de s’inscrire en tant que nouvel utilisateur, en

fournissant les informations requises.

Tableau de bord : Le tableau de bord constitue la page centrale du site web. Il offre une vue

d’ensemble des informations essentielles relatives aux pylônes inspectés. Les utilisateurs peuvent y accéder

après s’être authentifiés. Le tableau de bord présente des indicateurs clés, des modèles 3D de pylône permettant

d’analyser les données d’inspection de manière concise.

Formulaire d’entrée des informations sur les équipements des pylônes :

Le site web propose un formulaire interactif qui permet aux utilisateurs de saisir les informations

relatives aux équipements des pylônes inspectés. Ce formulaire est conçu de manière conviviale, avec des

champs appropriés pour chaque type d’information. Les utilisateurs peuvent enregistrer les données saisies

pour une utilisation ultérieure.

Modèles 3D interactifs :

Le site web intègre des modèles 3D interactifs pour une meilleure compréhension des projets et

des pylônes inspectés. Ces modèles 3D sont rendus disponibles grâce à des technologies telles que Spline

et Sketchfab. Les utilisateurs peuvent interagir avec les modèles, effectuer des zooms, des rotations et des

manipulations pour visualiser les détails des pylônes inspectés.

Affichage des résultats de la détection d’objets et de la reconnaissance optique de

caractères (OCR) :

Une fonctionnalité importante du site web est l’affichage des résultats de la détection d’objets et de

l’OCR obtenus lors des inspections des pylônes. Les utilisateurs peuvent visualiser les résultats de manière

claire et organisée, ce qui leur permet de repérer rapidement les anomalies détectées ou les informations

175
Chapitre 4. Release 3 - Visualisation des résultats via le tableau de bord Django

extraites par l’OCR.

Ces fonctionnalités principales du site web visent à offrir une expérience utilisateur fluide et à faciliter

la gestion des informations relatives aux équipements des pylônes inspectés. Elles permettent aux utilisateurs

autorisés d’accéder facilement aux données pertinentes, de prendre des décisions éclairées en matière de

maintenance et de contribuer à l’amélioration globale de l’efficacité des inspections des pylônes.

4.8 Présentation des langages utilisés : HTML, CSS, JavaScript,

Python

Dans le cadre du développement de ce site web avec Django, nous avons utilisé plusieurs langages

pour différentes parties de l’application. Voici une présentation des langages clés :

HTML (HyperText Markup Language) :

HTML est le langage de balisage standard utilisé pour structurer et présenter le contenu d’une page

web. Il définit la structure et l’organisation des éléments de la page, tels que les titres, les paragraphes, les

listes, les images, etc .Nous avons utilisé HTML pour créer la structure de nos pages web, en définissant les

balises et les attributs nécessaires.

CSS (Cascading Style Sheets) :

CSS est un langage de feuilles de style utilisé pour définir l’apparence et la mise en forme des éléments

HTML d’une page web. Il permet de contrôler les couleurs, les polices, les marges, les alignements, les

animations et bien d’autres aspects visuels. Nous avons utilisé CSS pour styliser et personnaliser l’apparence

de notre site web, en appliquant des règles de style à nos éléments HTML.

JavaScript :

JavaScript est un langage de programmation utilisé pour rendre les pages web interactives et dynamiques.

Il permet d’ajouter des fonctionnalités avancées, de manipuler le contenu de la page, de réagir aux actions

de l’utilisateur et de communiquer avec le serveur. Nous avons utilisé JavaScript pour gérer les interactions

utilisateur et implémenter des fonctionnalités spécifiques.

Python :

Python est un langage de programmation polyvalent et puissant, largement utilisé dans le développement

web. Dans le cadre de notre projet Django,nous avons utilisé Python pour la logique métier, le traitement

des données, la manipulation de la base de données et l’interaction avec le framework Django. Python

offre une syntaxe claire et lisible, ainsi qu’une vaste gamme de bibliothèques et de modules qui facilitent

le développement d’applications web robustes et évolutives.

176
Chapitre 4. Release 3 - Visualisation des résultats via le tableau de bord Django

En combinant ces langages, nous avons pu créer des pages web bien structurées (HTML), stylisées

(CSS), interactives (JavaScript) et fonctionnelles (Python) dans le cadre de notre application Django. Cette

combinaison de langages nous a permis de mettre en place une expérience utilisateur conviviale et d’offrir

des fonctionnalités avancées à nos utilisateurs.

4.9 Présentation de spline et sketchfab

Spline et Sketchfab sont deux technologies utilisées dans notre site web pour la visualisation des

modèles 3D interactifs des pylônes et des projets. Voici une présentation de ces deux outils :

Spline : Spline est une bibliothèque JavaScript qui permet de créer et de manipuler des modèles

3D interactifs. Elle offre des fonctionnalités avancées pour la visualisation, le rendu et l’interaction avec des

objets 3D. Spline facilite la création d’expériences immersives en permettant aux utilisateurs de zoomer,

de faire pivoter et de manipuler les modèles 3D avec fluidité. Cette technologie contribue à une meilleure

compréhension des pylônes en offrant une visualisation réaliste et détaillée.

Sketchfab :

Sketchfab est une plateforme en ligne qui permet de partager et de visualiser des modèles 3D de

manière interactive. Elle offre un large éventail de fonctionnalités pour l’importation, la visualisation et

le partage de modèles 3D. Dans notre site web, nous utilisons l’intégration de Sketchfab pour afficher les

modèles 3D des pylônes. Cette intégration permet aux utilisateurs de naviguer dans les modèles, d’explorer

les détails, d’effectuer des zooms, des rotations et d’autres interactions pour mieux appréhender la structure

et les caractéristiques des pylônes.

4.10 Architecture du site web

4.10.1 Description de la structure globale du site

La structure globale de notre application de site web pour l’inspection des pylônes par drone intelligent

repose sur une architecture solide et bien organisée. Notre site web suit le modèle d’architecture de Django, le

modèle-vue-template (MVT), ce qui permet une séparation claire des responsabilités et facilite la maintenance

et l’évolutivité de notre projet.

La structure de notre site web se compose des éléments suivants :

Modèles (Models) :

Les modèles définissent la structure et les relations des données de notre application. Dans le contexte

177
Chapitre 4. Release 3 - Visualisation des résultats via le tableau de bord Django

de notre projet, les modèles décrivent les équipements des pylônes, les résultats de la détection d’objets, les

informations des utilisateurs et d’autres entités pertinentes.

Vues (Views) :

Les vues gèrent la logique métier de notre application. Elles sont responsables de la récupération des

données des modèles, de leur traitement et de la préparation des données à afficher. Nos vues interagissent

avec les modèles pour récupérer les informations nécessaires et les transmettent aux templates pour l’affichage.

Templates :

Les templates sont responsables de la présentation des données aux utilisateurs. Nous utilisons une

combinaison de HTML, CSS et balises spéciales de Django pour afficher dynamiquement les données. Nos

templates reçoivent les données des vues et les intègrent dans la structure HTML appropriée, créant ainsi des

pages web dynamiques et conviviales.

URLs :

Les URLs de notre site web sont gérées par Django à l’aide d’un système de routage basé sur des

expressions régulières. Chaque URL est associée à une vue spécifique, ce qui nous permet de définir les chemins

d’accès et les comportements attendus lors de l’accès à certaines pages ou fonctionnalités.

Base de données (SQLite) :

Notre application utilise SQLite, une base de données relationnelle légère intégrée à Django par défaut.

SQLite stocke les données relatives aux équipements des pylônes, aux résultats de la détection d’objets et

aux informations des utilisateurs de manière sécurisée et efficace.

En combinant ces éléments clés, notre site web offre une structure bien définie et organisée. Les

modèles définissent la structure des données, les vues gèrent la logique métier, les templates prennent en

charge la présentation des données et les URLs assurent le routage des requêtes utilisateur. La base de

données SQLite permet de stocker et de récupérer les informations nécessaires de manière efficace.

Cette architecture solide et bien organisée offre une base robuste pour notre site web, permettant une

évolutivité future et une maintenance aisée.

4.10.2 Présentation de la manière dont Django gère les URL, les formulaires
et les vues

Django offre une gestion puissante et efficace des URL, des formulaires et des vues dans le développement

de sites web. Voici une présentation de la manière dont Django gère ces éléments clés :

Gestion des URLs :

178
Chapitre 4. Release 3 - Visualisation des résultats via le tableau de bord Django

Django propose un système de gestion des URLs basé sur des expressions régulières. Il utilise un

fichier de configuration appelé "urls.py" pour mapper les URLs entrantes aux vues correspondantes. Dans

ce fichier, nous définissons des expressions régulières et les associons aux fonctions de vue appropriées. Cela

permet de définir facilement les chemins d’accès aux différentes pages ou fonctionnalités de notre site web.

Gestion des formulaires :

Django fournit des fonctionnalités intégrées pour la gestion des formulaires. Il inclut un module de

formulaire qui facilite la création, la validation et le traitement des données saisies par les utilisateurs. Nous

pouvons définir les champs, les types de données attendus, les règles de validation et les messages d’erreur

personnalisés. Django gère également la sécurité des formulaires en protégeant contre les attaques de type

Cross-Site Request Forgery (CSRF).

Gestion des vues :

Les vues dans Django sont responsables de la logique métier de notre application. Elles sont associées

aux URLs correspondantes et définissent le comportement à exécuter lorsque ces URLs sont appelées. Les

vues peuvent récupérer les données des modèles, effectuer des opérations de traitement, préparer les données à

afficher et les transmettre aux templates pour le rendu final. Django offre une grande flexibilité en permettant

d’utiliser des vues basées sur des fonctions ou des classes.

Les vues dans Django peuvent également gérer les requêtes HTTP, les paramètres d’URL, les cookies,

les sessions et les autorisations utilisateur. Elles peuvent renvoyer différentes réponses HTTP, telles que des

pages HTML, des fichiers JSON, des redirections ou des erreurs 404.

Django facilite également la réutilisation du code en permettant de regrouper des vues similaires dans

des vues génériques. Ces vues génériques fournissent des fonctionnalités communes telles que la création, la

mise à jour, la suppression et la liste des objets. Elles réduisent la duplication du code et simplifient le

développement des fonctionnalités courantes.

En résumé, Django offre une gestion complète des URLs, des formulaires et des vues dans le développement

de sites web. Son système de gestion des URLs permet de mapper facilement les URLs aux vues correspondantes.

Le module de formulaire intégré facilite la création et la validation des formulaires. Les vues gèrent la logique

métier, le traitement des données et le rendu des pages. En combinant ces fonctionnalités, Django simplifie

le développement web et offre une structure cohérente pour la gestion des fonctionnalités clés de notre

application.

179
Chapitre 4. Release 3 - Visualisation des résultats via le tableau de bord Django

4.11 Pages du site web

Le site web développé pour l’inspection des pylônes par drone intelligent comprend plusieurs pages

clés qui offrent différentes fonctionnalités aux utilisateurs. Voici une description des pages principales :

Page d’authentification :

Cette page permet aux utilisateurs de s’authentifier en entrant leurs identifiants de connexion (nom

d’utilisateur et mot de passe). Elle assure la sécurité de l’accès aux fonctionnalités restreintes du site web.

Les utilisateurs doivent s’identifier avec succès avant de pouvoir accéder aux autres pages.

Page d’inscription :

La page d’inscription permet aux nouveaux utilisateurs de créer un compte sur le site web. Ils doivent

fournir des informations telles que leur nom, leur adresse e-mail et leur mot de passe. Une fois l’inscription

terminée, ils peuvent se connecter à l’aide de leurs identifiants nouvellement créés.

Tableau de bord :

Le tableau de bord est la page centrale du site web, où les utilisateurs authentifiés accèdent aux

informations essentielles concernant les pylônes inspectés. Il présente un aperçu clair et organisé des données,

telles que les informations sur les équipements des pylônes, les résultats de la détection d’objets. Les utilisateurs

peuvent naviguer dans les différentes sections du tableau de bord pour accéder aux détails spécifiques.

Page de formulaire :

La page de formulaire permet aux utilisateurs de saisir les informations relatives aux équipements

des pylônes. Les champs du formulaire sont conçus de manière conviviale et adaptés aux différentes données

à collecter. Les utilisateurs peuvent remplir les informations nécessaires, telles que le numéro du pylône, la

localisation, les caractéristiques. Une fois le formulaire soumis, les données sont enregistrées dans la base de

données.

Pages de modèles 3D interactifs :

Ces pages présentent des modèles 3D interactifs des pylônes et des projets. Les utilisateurs peuvent

manipuler les modèles, effectuer des zooms, des rotations et des déplacements pour visualiser les détails et

mieux comprendre la structure des pylônes inspectés. Les modèles 3D sont rendus disponibles grâce à des

technologies telles que Spline et Sketchfab.

Page de résultats de la détection d’objets :

Cette page affiche les résultats de la détection d’objets réalisée lors des inspections des pylônes. Les

utilisateurs peuvent visualiser les objets détectés, les zones problématiques identifiées et les informations

associées à ces objets. Ces résultats sont présentés de manière claire et organisée, facilitant ainsi l’analyse des

180
Chapitre 4. Release 3 - Visualisation des résultats via le tableau de bord Django

problèmes potentiels et la prise de décisions pour les actions de maintenance.

Chacune de ces pages offre des fonctionnalités spécifiques et permet aux utilisateurs d’interagir avec

les données et les fonctionnalités du site web. Elles contribuent à fournir une expérience utilisateur riche et

conviviale pour l’inspection des pylônes par drone intelligent.

4.11.1 Authentification

4.11.1.1 Explication du système d’authentification utilisé

Le système d’authentification utilisé dans notre site web repose sur le framework Django, qui offre

des fonctionnalités intégrées pour gérer l’authentification des utilisateurs de manière sécurisée. Voici une

explication du système d’authentification

Gestion des utilisateurs :

Django fournit une gestion complète des utilisateurs, y compris la création de comptes, la gestion des

profils utilisateurs et les opérations courantes telles que la récupération de mot de passe. Les informations

des utilisateurs, telles que leurs noms, adresses e-mail et mots de passe, sont stockées de manière sécurisée

dans la base de données.

Figure 4.29 : Gestion utilisateur

Sécurité des mots de passe :

Django utilise des techniques de hachage et de salage pour sécuriser les mots de passe des utilisateurs.

Les mots de passe ne sont jamais stockés en texte brut, mais sous forme de hachage, ce qui garantit la

confidentialité des informations des utilisateurs. Lorsque les utilisateurs se connectent, leurs mots de passe

sont comparés aux hachages stockés dans la base de données pour vérifier l’authenticité.

181
Chapitre 4. Release 3 - Visualisation des résultats via le tableau de bord Django

Gestion des sessions :

Django gère les sessions utilisateur de manière transparente. Lorsqu’un utilisateur se connecte, une

session est créée et un identifiant unique (jeton) lui est attribué. Cet identifiant est utilisé pour maintenir l’état

de la session et identifier l’utilisateur tout au long de sa navigation sur le site web. Les sessions permettent

de stocker des informations spécifiques à l’utilisateur, telles que ses préférences ou son statut de connexion.

Intégration avec les autres fonctionnalités de Django :

Le système d’authentification de Django s’intègre harmonieusement avec d’autres fonctionnalités du

framework, telles que la gestion des formulaires, les vues génériques et les modèles. Cela facilite la création

d’interfaces utilisateur pour l’inscription, la connexion et la gestion des profils utilisateurs.

Grâce au système d’authentification de Django, notre site web offre une sécurisation robuste des

comptes utilisateurs. Les utilisateurs peuvent créer des comptes et se connecter en toute sécurité .

4.11.1.2 Présentation des fonctionnalités liées à l’authentification

Les fonctionnalités liées à l’authentification dans notre site web offrent aux utilisateurs une expérience

sécurisée et personnalisée. Voici une présentation des principales fonctionnalités associées à l’authentification :

Inscription des utilisateurs :

Les utilisateurs ont la possibilité de créer un compte sur notre site web en remplissant un formulaire

d’inscription. Ce formulaire demande des informations telles que le nom d’utilisateur, l’adresse e-mail et le

mot de passe. Une fois l’inscription terminée, les informations sont vérifiées et le compte utilisateur est créé.

Figure 4.30 : Processus d’Authentification : Inscription des Utilisateurs

182
Chapitre 4. Release 3 - Visualisation des résultats via le tableau de bord Django

Connexion des utilisateurs :

Les utilisateurs enregistrés peuvent se connecter à leur compte en utilisant leurs identifiants de

connexion (nom d’utilisateur ou adresse e-mail et mot de passe). La connexion est vérifiée par rapport aux

informations enregistrées dans la base de données. Les utilisateurs authentifiés ont accès à des fonctionnalités

et à des pages spécifiques qui leur sont réservées.

Figure 4.31 : Processus d’Authentification : Connexion des Utilisateurs

Gestion des sessions utilisateur :

Le système d’authentification de Django gère automatiquement les sessions utilisateur. Lorsqu’un

utilisateur se connecte, une session est créée, et un identifiant de session unique est attribué à cet utilisateur.

Cette session permet de maintenir l’état de connexion tout au long de la navigation sur le site web. Les

utilisateurs restent connectés tant que leur session est active.

Récupération de mot de passe :

Si un utilisateur oublie son mot de passe, notre site web propose une fonctionnalité de récupération

de mot de passe. L’utilisateur peut fournir son adresse e-mail associée à son compte, et un e-mail de

réinitialisation de mot de passe lui est envoyé. Ce processus lui permet de créer un nouveau mot de passe et

de regagner l’accès à son compte.

Déconnexion sécurisée :

183
Chapitre 4. Release 3 - Visualisation des résultats via le tableau de bord Django

Les utilisateurs ont la possibilité de se déconnecter de leur compte de manière sécurisée. Cette

fonctionnalité met fin à leur session et les redirige vers une page appropriée, confirmant leur déconnexion.

En combinant ces fonctionnalités, notre site web assure une expérience d’authentification sécurisée

et conviviale. Les utilisateurs peuvent créer des comptes, se connecter, gérer leurs informations personnelles,

récupérer leur mot de passe en cas de besoin et accéder aux fonctionnalités appropriées en fonction de leurs

autorisations. Ces fonctionnalités contribuent à garantir la confidentialité des données utilisateur et à offrir

une expérience personnalisée.

4.11.2 Page d’accueil (Landing page)

4.11.2.1 Description du contenu et du but de la page d’accueil

La page d’accueil, également appelée "Landing page" joue un rôle essentiel pour capter l’attention

des visiteurs et les inciter à explorer davantage notre site. Voici une description du contenu et du but de la

page d’accueil :

Présentation du projet :

La page d’accueil met en avant une présentation claire et concise du projet d’inspection des pylônes

par drone intelligent. Nous fournissons un aperçu des objectifs du projet, de son importance et des avantages

qu’il apporte. Cette présentation permet aux visiteurs de comprendre rapidement le contexte et l’objectif de

notre initiative.

Modèles 3D interactifs :

Pour susciter l’intérêt des visiteurs, la page d’accueil intègre des modèles 3D interactifs des pylônes ou

des projets. Ces modèles, créés avec des technologies telles que Spline et Sketchfab, permettent aux visiteurs

d’explorer virtuellement les pylônes inspectés. Ils peuvent zoomer, faire pivoter et visualiser les détails des

modèles pour mieux comprendre la structure et les caractéristiques des pylônes.

Le but principal de la page d’accueil est d’attirer l’attention des visiteurs, de les informer sur notre

projet d’inspection des pylônes par drone intelligent et de les encourager à explorer davantage notre site web.

En utilisant des éléments visuels attrayants, des informations clés, nous cherchons à susciter l’intérêt et à

engager les visiteurs dans notre projet.

4.11.2.2 Présentation des éléments visuels et fonctionnels de la page

La page d’accueil de notre site web offre une expérience visuelle et fonctionnelle immersive pour

captiver les visiteurs dès leur arrivée. Voici une présentation des éléments visuels et fonctionnels de la page :

184
Chapitre 4. Release 3 - Visualisation des résultats via le tableau de bord Django

Animation des sections au défilement :

La page d’accueil utilise une animation des sections au défilement pour créer une expérience dynamique

et engageante. Lorsque les visiteurs font défiler la page vers le haut ou vers le bas, les différentes sections

s’animent, donnant une sensation fluide de transition entre les contenus. Cette animation est réalisée à l’aide

de la bibliothèque GSAP (GreenSock Animation Platform), qui permet des transitions fluides et des effets

visuels captivants.

Figure 4.32 : page d’accueil : Animation des sections au défilement 1

Figure 4.33 : page d’accueil : Animation des sections au défilement 2

Synopsis du projet en 3D illustrant le projet :

La page d’accueil intègre des modèles 3D interactifs qui illustrent de manière visuelle les aspects

185
Chapitre 4. Release 3 - Visualisation des résultats via le tableau de bord Django

clés de notre projet d’inspection des pylônes par drone intelligent.Cette description permet aux visiteurs de

comprendre rapidement l’essence du projet et son importance. Les visiteurs peuvent effectuer des zooms, des

rotations et des déplacements pour une meilleure compréhension et une immersion dans le projet.

Figure 4.34 : Page d’Accueil : Visualisations 3D de l’Architecture du Système

Pilotage du drone par l’utilisateur :

Une fonctionnalité interactive de pilotage du drone est intégrée à la page d’accueil. Cela permet aux

visiteurs de simuler virtuellement le pilotage d’un drone pour inspecter les pylônes. Ils peuvent contrôler les

mouvements du drone, l’orientation de la caméra et explorer l’environnement du projet de manière interactive.

Cette fonctionnalité offre une expérience immersive et engageante, en permettant aux visiteurs de se mettre

dans la peau d’un opérateur de drone.

Dashboard 3D attractif :

La page d’accueil peut également présenter un aperçu du dashboard en 3D, qui offre une visualisation

dynamique des données et des résultats du projet. Le dashboard 3D présente les informations clés sous forme

de graphiques, de tableaux ou de représentations visuelles interactives. Cette présentation visuelle attrayante

permet aux visiteurs de comprendre rapidement les performances, les tendances et les résultats du projet,

tout en les incitant à explorer davantage le site web.

186
Chapitre 4. Release 3 - Visualisation des résultats via le tableau de bord Django

Figure 4.35 : Page d’Accueil : Visualisations 3D du Tableau de Bord

En combinant ces éléments visuels et fonctionnels, la page d’accueil crée une expérience immersive et

interactive pour les visiteurs. Elle les attire visuellement, leur permet d’explorer les modèles 3D, de piloter

virtuellement un drone et de se plonger dans les données et les résultats du projet via le dashboard en 3D.

Ces éléments contribuent à créer un impact visuel fort et à engager les visiteurs dans notre site web et notre

projet.

4.11.3 Formulaire

4.11.3.1 Explication du formulaire et de son rôle dans le site web

Le formulaire joue un rôle essentiel dans notre site web, en permettant aux utilisateurs de saisir et de

soumettre des informations pertinentes liées aux équipements des pylônes. Voici une explication du formulaire

et de son rôle :

Collecte d’informations :

Le formulaire est conçu pour collecter des informations spécifiques sur les équipements des pylônes. Il

peut inclure des champs tels que le numéro du pylône, les caractéristiques techniques, les problèmes identifiés.

Les utilisateurs peuvent remplir ces champs en fonction des données pertinentes pour chaque pylône inspecté.

Stockage des données :

Une fois que les utilisateurs remplissent le formulaire et le soumettent, les données saisies sont

enregistrées dans la base de données. Cela permet de stocker de manière structurée et sécurisée les informations

187
Chapitre 4. Release 3 - Visualisation des résultats via le tableau de bord Django

relatives aux équipements des pylônes pour une utilisation ultérieure. La base de données, telle SQLite dans

notre cas, facilite la récupération et la manipulation de ces données.

Validation des données :

Le formulaire peut comporter des règles de validation pour s’assurer que les utilisateurs saisissent

des données correctes et cohérentes. Les champs peuvent être configurés avec des contraintes de format, des

vérifications de type numérique ou des conditions spécifiques pour garantir l’intégrité des données enregistrées.

La validation du formulaire garantit la qualité des informations collectées.

Interface utilisateur conviviale :

Le formulaire est conçu pour offrir une interface utilisateur conviviale et intuitive. Les champs peuvent

être organisés de manière logique, avec des descriptions claires pour guider les utilisateurs lors de la saisie

des informations.

Figure 4.36 : page de formulaire

Le formulaire joue un rôle central dans la collecte, le stockage et la gestion des informations relatives

aux équipements des pylônes. Il offre une interface conviviale permettant aux utilisateurs de fournir des

données pertinentes et précieuses pour la maintenance et la surveillance des pylônes. En permettant aux

utilisateurs de remplir le formulaire de manière efficace, notre site web facilite la gestion des informations et

contribue à une prise de décision éclairée pour les opérations d’inspection et de maintenance des pylônes.

188
Chapitre 4. Release 3 - Visualisation des résultats via le tableau de bord Django

4.11.3.2 Création et Gestion de Formulaires dans Django

Dans le cadre de notre projet, nous avons développé un système de formulaire pour collecter et gérer

les informations relatives aux équipements des pylônes. La création et la gestion de ce formulaire ont été

réalisées en utilisant les fonctionnalités intégrées de Django. Voici les étapes que nous avons suivies pour

créer et gérer le formulaire :

Définition du formulaire :

Nous avons créé un fichier forms.py où nous avons défini notre formulaire. Nous avons importé la

classe forms de Django et créé une sous-classe de forms.Form pour définir notre formulaire. Dans cette

sous-classe, nous avons défini les champs du formulaire à l’aide des différents types de champs disponibles,

tels que CharField, IntegerField, EmailField .

Figure 4.37 : forms.py du formulaire django

Validation des données :

Django offre une validation intégrée des données des formulaires. Nous avons spécifié des règles de

validation pour chaque champ du formulaire en utilisant les attributs tels que required, max-length, minlength,

validators. Ces règles de validation garantissent que les données saisies par les utilisateurs sont correctes et

cohérentes.

Affichage du formulaire dans une vue :

Dans notre vue correspondante, nous avons importé le formulaire que nous avons défini dans le fichier

forms.py. Nous avons ensuite instancié le formulaire et l’avons passé au contexte de rendu pour qu’il puisse

être affiché dans notre template. Nous avons également personnalisé l’apparence du formulaire en utilisant

des classes CSS et des styles personnalisés.

Traitement des données soumises :

Lorsque le formulaire est soumis par l’utilisateur, nous avons accédé aux données saisies via request.POST

189
Chapitre 4. Release 3 - Visualisation des résultats via le tableau de bord Django

dans notre vue. Nous avons alors validé les données en utilisant la méthode is-valid() du formulaire. Si les

données sont valides, nous les avons traitées et enregistrées dans notre base de données ou avons effectué

d’autres opérations nécessaires.

Figure 4.38 : fonction qui gérer le formulaire dans views.py

En utilisant les fonctionnalités intégrées de Django, nous avons pu créer et gérer efficacement notre

formulaire. Django facilite la création de formulaires, la validation des données et la personnalisation du

rendu, offrant ainsi une expérience utilisateur conviviale lors de la saisie et de la soumission des informations.

4.11.4 Tableau de bord (Dashboard)

Le tableau de bord (Dashboard) de notre site web est une fonctionnalité centrale qui offre aux

utilisateurs une vue d’ensemble des informations clés relatives aux pylônes inspectés. Voici une description

des fonctionnalités du tableau de bord :

Informations sur les pylônes :

Le tableau de bord affiche les informations essentielles sur les pylônes, telles que le gain de l’antenne

,largeur de faisceau, numéro de modèle et d’autres données pertinentes. Ces informations permettent aux

utilisateurs de visualiser rapidement les pylônes et de comprendre leur contexte.

Modèle 3D interactif du pylône :

Au centre du tableau de bord, nous affichons un modèle 3D interactif du pylône inspecté. Les

utilisateurs peuvent faire pivoter le modèle, effectuer des zooms et explorer les détails de la structure du

pylône. Cette fonctionnalité offre une visualisation réaliste et immersive, facilitant ainsi la compréhension de

la configuration physique du pylône.

190
Chapitre 4. Release 3 - Visualisation des résultats via le tableau de bord Django

Animation du drone autour du pylône :

Dans le tableau de bord, nous avons intégré une animation où un drone virtuel tourne autour du

pylône en mouvement. Cette animation ajoute une dimension visuelle dynamique et réaliste à l’expérience

utilisateur, simulant le processus d’inspection par drone et renforçant l’immersion dans le projet.

Barre de navigation latérale :

Le tableau de bord comporte une barre de navigation latérale (sidebar) qui permet aux utilisateurs

de naviguer vers d’autres pages et fonctionnalités du site web. Cette barre de navigation facilite l’accès aux

différentes sections du site, telles que les formulaires, les résultats de la détection d’objets. Les utilisateurs

peuvent cliquer sur les éléments de la barre de navigation pour passer rapidement d’une section à une autre.

Background en 3D :

Le tableau de bord présente un fond en 3D, qui ajoute une ambiance visuelle immersive à l’ensemble

de la page. Le fond en 3D peut représenter un environnement virtuel correspondant au contexte du projet

d’inspection des pylônes. Cette fonctionnalité vise à créer une atmosphère engageante et captivante pour les

utilisateurs.

Informations sur l’antenne :

Le tableau de bord affiche également des informations spécifiques à l’antenne du pylône, telles que le

gain de l’antenne, la largeur de faisceau, le numéro de modèle, le nombre d’antennes, la polarisation, le type

de connecteur et la fréquence. Ces données permettent aux utilisateurs d’obtenir des détails techniques sur

l’antenne utilisée, ce qui est crucial pour la maintenance et la surveillance des pylônes.

Le tableau de bord offre une interface visuelle riche et fonctionnelle, fournissant aux utilisateurs

une vue d’ensemble complète des pylônes inspectés. Les fonctionnalités telles que le modèle 3D interactif,

l’animation du drone, la barre de navigation latérale et les informations sur l’antenne contribuent à une

expérience utilisateur immersive et intuitive, permettant aux utilisateurs de prendre des décisions éclairées

et de naviguer facilement dans les différentes sections du site web.

191
Chapitre 4. Release 3 - Visualisation des résultats via le tableau de bord Django

Figure 4.39 : Inventaire des Antennes : Modèle 3D du Pylône et Affichage des Informations

4.11.5 Page de résultat de la détection d’objets

La page de résultat de la détection d’objets est une fonctionnalité clé de notre site web. Elle permet

d’afficher les images résultant du processus de détection d’objets. Voici une description de la fonctionnalité

de détection d’objets et de son affichage sur cette page :

Détection d’objets :

La détection d’objets est réalisée à l’aide de techniques d’intelligence artificielle et de vision par

ordinateur. Elle permet d’identifier et de localiser automatiquement des objets spécifiques dans une image.

Notre système utilise des modèles pour détecter des catégories d’objets d’intérêt, tels que les antennes .

Affichage des résultats :

Une fois que les images ont été traitées et les objets détectés, la page de résultat de la détection

d’objets affiche les images avec les objets mis en évidence. Chaque objet détecté est encadré pour attirer

l’attention de l’utilisateur. Cette mise en évidence permet de visualiser facilement les objets détectés dans

chaque image.

Interactions utilisateur :

La page de résultat de la détection d’objets peut permettre aux utilisateurs d’interagir avec les

résultats. Par exemple, ils peuvent cliquer sur un objet détecté pour voir clairement l’image .

192
Chapitre 4. Release 3 - Visualisation des résultats via le tableau de bord Django

Figure 4.40 : Présentation des résultats de la détection d’objets lors des Inspections de Pylônes

En offrant la fonctionnalité de détection d’objets et en affichant les résultats sur la page dédiée, notre

site web permet aux utilisateurs de télécharger des images, de détecter automatiquement les objets d’intérêt

et de visualiser les résultats de manière claire et conviviale. Cela facilite l’analyse des images, l’identification

des objets pertinents et la prise de décisions basées sur les résultats de la détection.

Conclusion

En refermant ce chapitre passionnant, nous avons été transportés dans la Release 3, où la conception

de l’architecture et la réalisation du Dashboard ont pris vie. Les sprints 5 et 6 ont dévoilé les coulisses du

backend et du frontend, révélant l’interconnexion avec Google Drive, l’intégration du modèle Tesseract OCR

et la création d’un Dashboard captivant. Nous avons découvert comment chaque aspect de l’architecture et de

l’expérience utilisateur est méticuleusement conçu pour offrir une performance optimale et une convivialité

inégalée. Nous sommes restés hypnotisés par l’excitation et l’innovation qui animent chaque étape de cette

extraordinaire aventure technologique. Nous nous préparons à poursuivre notre exploration avec le dernier

chapitre, où les résultats seront dévoilés et les perspectives d’avenir explorées.

193
Conclusion générale

En conclusion, ce rapport témoigne de l’engagement, de l’innovation et de l’esprit d’équipe qui ont

guidé chaque membre de DroneVision tout au long de ce projet. De la conception à la réalisation d’un drone

visionnaire, nous avons surmonté des défis complexes avec détermination. Chaque étape de ce voyage a été

marquée par notre passion inébranlable et notre volonté constante de repousser les limites.

Nous sommes fiers des résultats obtenus, qu’il s’agisse de l’intégration de technologies sophistiquées

ou du développement d’un site Web intuitif. Ces réalisations témoignent de notre dévouement et de notre

expertise dans le domaine des drones.

Cependant, nous considérons ce rapport comme une étape intermédiaire dans notre parcours. Nous

sommes enthousiasmés par les perspectives d’exploration de nouvelles frontières et d’adoption de solutions

innovantes telles que la réalité augmentée (AR) et la réalité virtuelle (VR). Nous sommes déterminés à

continuer d’évoluer et à apporter des transformations significatives à divers secteurs, tels que l’agriculture,

l’urbanisme, l’environnement et la sécurité.

Nous tenons à remercier tous les membres de l’équipe DroneVision pour leur travail acharné, leur

collaboration et leur esprit d’équipe. Chacun de nous a joué un rôle essentiel dans la concrétisation de notre

vision commune.

En regardant vers l’avenir, nous sommes animés par une passion renouvelée et une volonté d’embrasser

de nouveaux défis. Nous sommes convaincus que notre travail continuera à avoir un impact significatif et à

ouvrir de nouvelles possibilités dans notre interaction avec le monde.

Ce rapport marque une étape importante, mais ce n’est que le début d’une aventure continue

pour DroneVision. Nous sommes impatients de poursuivre notre voyage, d’écrire de nouveaux chapitres

passionnants et d’accomplir des réalisations encore plus remarquables.

194
Bibliographie

[1] « Sotetel, » Sotetel, Consulté le 02-2023. adresse : Accueil|Sotetel:SmartEnabler.

[2] « Sotetel, » Annuairepro, Consulté le 02-2023. adresse : https://www.annuairepro-tunisie.


com / societe - tunisienne - dentreprises - des - telecommunications - sotetel - ariana -
tunisie.html.

[3] OSHA Communication Towers, Consulté le 02-2023. adresse : https : / / www . osha . gov /
communication-towers.

[4] Tower Fatalities - Wireless Estimator, Consulté le 02-2023. adresse : https://wirelessestimator.


com/articles/tag/tower-fatalities/.

[5] Scrum : de quoi s’agit-il, comment cela fonctionne-t-il et en quoi est-ce génial ? Consulté le
02-2023. adresse : https://www.atlassian.com/fr/agile/scrum.

[6] Comprendre la méthode Agile Scrum en 10 min • Tuleap, Consulté le 02-2023. adresse : https:
//www.tuleap.org/fr/agile/comprendre-methode-agile-scrum-10-minutes.

[7] Jira | Issue & Project Tracking Software | Atlassian, Consulté le 02-2023. adresse : https:
//www.atlassian.com/software/jira.

[8] inventaires pylones, Consulté le 02-2023. adresse : https://youtu.be/-WyyrKbUruA.

[9] PLA, Consulté le 02-2023. adresse : https://www.twi-global.com/technical-knowledge/


faqs/what-is-pla.

[10] Ultimate Materials Guide - Tips for 3D Printing with PLA, Consulté le 02-2023. adresse :
https://www.simplify3d.com/resources/materials-guide/pla.

[11] Déformation du filament d’acide polylactique sur tissu en polyéthylène téréphtalate via impression
3D, Consulté le 02-2023. adresse : https://www.nature.com/articles/s41598-019-50832-
7.

[12] Le choix des moteurs et des hélices pour un drone, Consulté le 02-2023. adresse : https :
//www.dronelis.com/choix-des-moteurs-et-des-helices-pour-un-drone/.

[13] Comment fabriquer un drone, Consulté le 02-2023. adresse : https://community.robotshop.


com/blog/show/comment-fabriquer-drone-lecon-2-chassis.

195
Bibliographie

[14] Popular models | 3D CAD Model Collection | GrabCAD Community Library, Consulté le
03-2023. adresse : https://grabcad.com/library.

[15] KK2.1.5, Consulté le 03-2023. adresse : https://www.flyingtech.co.uk/sites/default/


files/product_files/KK2.1.5.pdf.

[16] Tuni Smart Innovation, Consulté le 03-2023. adresse : https://tuni- smart- innovation.
com/.

[17] Python Downloads, Consulté le 03-2023. adresse : https://www.python.org/downloads/.

[18] Comment fabriquer un drone/UAV, Consulté le 03-2023. adresse : https : / / community .


robotshop.com/blog/show/comment-fabriquer-un-droneuav-leon-3-propulsion.

[19] Comment fabriquer un drone, Consulté le 03-2023. adresse : https://community.robotshop.


com/blog/show/comment-fabriquer-un-droneuav-lecon-4-controleur-de-vol.

[20] Google Apps Script, Consulté le 03-2023. adresse : https://developers.google.com/apps-


script.

[21] S500 Glass Fiber Quadcopter Frame, Consulté le 04-2023. adresse : https://hobbyking.com/
en_us/s500-glass-fiber-quadcopter-frame-480mm-integrated-pcb-version.html?__
_store=en_us.

[22] S500 Glass Fiber Quadcopter Frame, Consulté le 04-2023. adresse : https://hobbyking.com/
en_us/s500-glass-fiber-quadcopter-frame-480mm-integrated-pcb-version.html?__
_store=en_us.

[23] Wikipedia. « Drone. » (Consulté le 2023-06-25), adresse : https : / / fr . wikipedia . org /


wiki/Drone.

[24] DroneZ. « Histoire du drone. » (Consulté le 2023-06-25), adresse : https : / / dronez . fr /


histoire-du-drone/.

[25] U. Nouvelle. « Le drone a 100 ans. » (Consulté le 2023-06-25), adresse : https : / / www .
usinenouvelle.com/article/le-drone-a-100-ans.N1848717.

[26] D. by Lukas. « Différents domaines d’applications possibles du drone civil. » (Consulté le


2023-06-25), adresse : https://dronebylukas.fr/differents-domaines-dapplications-
possibles-drone-civil/.

196
Bibliographie

[27] Wikipedia. « Aérodynamique. » (Consulté le 2023-06-25), adresse : https://fr.wikipedia.


org/wiki/A%C3%A9rodynamique.

[28] T. D. TLM. « Fonctionnement du drone en vol. » (Consulté le 2023-06-25), adresse : http:


//tpe-drone-tlm.eklablog.com/fonctionnement-du-drone-en-vol-a114458486.

[29] Wikipedia. « Principe de régulation PID. » (Consulté le 2023-06-25), adresse : https : / /


upload.wikimedia.org/wikipedia/commons/thumb/4/43/PID_en.svg/500px-PID_en.svg.
png.

[30] E. A. 974. « Moteur brushless ou moteur synchrone triphasé. » (Consulté le 2023-06-25),


adresse : http : / / ericaeromodelisme974 . unblog . fr / 2011 / 11 / 20 / le - brushless - ou -
moteur-synchrone-triphase/.

[31] FutureLab3D. « How does a Brushless Motor and ESC Work ? » (Consulté le 2023-06-25),
adresse : https://futurelab3d.com/how-brushless-motor-and-esc-work/.

[32] GrabCAD. « FLYSKY FS-R6B | 3D CAD Model Library. » (Consulté le 2023-06-25), adresse :
https://grabcad.com/library/flysky-fs-r6b-1.

[33] GrabCAD. « KK 2.0 Flight Controller | 3D CAD Model Library. » (Consulté le 2023-06-25),
adresse : https://grabcad.com/library/kk-2-0-flight-controller-1.

[34] GrabCAD. « Turnigy Nanotech - Battery 1800mAh 2S | 3D CAD Model Library. » (Consulté
le 2023-06-25), adresse : https : / / grabcad . com / library / turnigy - nanotech - battery -
1800mah-2s-1.

[35] GrabCAD. « Exceed RC Proton 30A ESC | 3D CAD Model Library. » (Consulté le 2023-06-25),
adresse : https://grabcad.com/library/exceed-rc-proton-30a-esc-1.

[36] GrabCAD. « Quadcopter | 3D CAD Model Library. » (Consulté le 2023-06-25), adresse :


https://grabcad.com/library/quadcopter-1.

[37] GrabCAD. « DJI Innovations Flame Wheel F-450 Quadrotor Frame. » (Consulté le 2023-06-25),
adresse : https : / / grabcad . com / library / dji - innovations - flame - wheel - f - 450 -
quadrotor-frame-1.

[38] S. Électronique. « Châssis Drone F450. » (Consulté le 2023-06-25), adresse : https : / /


souilah-electronique.tn/kit-robotique/458-chassis-drone-f450.htm.

197
Bibliographie

[39] GrabCAD. « Brushless Motor BLDC 2212-6T 2200KV. » (Consulté le 2023-06-25), adresse :
https://grabcad.com/library/brushless-motor-bldc_2212-6t-2200kv-1.

[40] Amazon.in. « REES52 Motor Multi-Rotor RC029. » (Consulté le 2023-06-25), adresse : https:
//www.amazon.in/REES52-Motor-Multi-Rotor-RC029/dp/B01MZ8DBEL.

[41] B. Trading. « Controlleur Moteur Brushless ESC 30A. » (Consulté le 2023-06-25), adresse :
https://2betrading.com/accueil/4244-controlleur-moteur-brushless-esc-30a.html.

[42] GrabCAD. « KK Board 2.1.5. » (Consulté le 2023-06-25), adresse : https://grabcad.com/


library/kk-board-2-1-5-1.

[43] Didactico. « Contrôleur de vol KK 2.1.5 avec LCD. » (Consulté le 2023-06-25), adresse :
https://www.didactico.tn/produit/controleur-de-vol-kk-2-1-5-avec-lcd/.

[44] Thingiverse. « 3D Printable Drone Frame. » (Consulté le 2023-06-25), adresse : https :


//www.thingiverse.com/thing:4544740/files.

[45] Amazon.com. « Flysky FS-i6X Transmitter and Receiver. » (Consulté le 2023-06-25), adresse :
https://www.amazon.com/Transmitter-Controller-Receiver-Helicopter-Quadcopter/
dp/B07Z9YNP7S.

[46] B. B. Tunisie. « Contrôleur moteur brushless ESC 30A. » (Consulté le 2023-06-25), adresse :
https://bestbuytunisie.tn/produit/controleur-moteur-brushless-esc-30a/.

[47] B. Trading. « Moteur brushless A2212/930KV. » (Consulté le 2023-06-25), adresse : https:


//2betrading.com/moteur-servo-pompe/1404-moteur-brushless-a2212-930kv.html.

[48] DJI. « Flame Wheel ARF. » (Consulté le 2023-06-25), adresse : https://www.dji.com/flame-


wheel-arf/spec.

[49] AliExpress. « Moteur brushless RC 2200KV. » (Consulté le 2023-06-25), adresse : https:


//fr.aliexpress.com/item/4001011380479.htm.

[50] AliExpress. « Controlleur de vol APM 2.8. » (Consulté le 2023-06-25), adresse : https :
//fr.aliexpress.com/item/32774442452.html.

[51] PyImageSearch. « YOLO : Real-Time Object Detection. » (Consulté le 2023-06-25), adresse :


https://pyimagesearch.com/wp-content/uploads/2018/11/yolo_design.jpg.

198
Bibliographie

[52] T. D. Science. « Understanding SSD Multibox : Real-Time Object Detection in Deep Learning. »
(Consulté le 2023-06-25), adresse : https://towardsdatascience.com/understanding-ssd-
multibox-real-time-object-detection-in-deep-learning-495ef744fab.

[53] Microsoft. « Object Detection using Fast R-CNN. » (Consulté le 2023-06-25), adresse :
https://learn.microsoft.com/en- us/cognitive- toolkit/object- detection- using-
fast-r-cnn.

[54] T. D. Science. « R-CNN, Fast R-CNN, Faster R-CNN, YOLO : Object Detection Algorithms. »
(Consulté le 2023-06-25), adresse : https://towardsdatascience.com/r-cnn-fast-r-cnn-
faster-r-cnn-yolo-object-detection-algorithms-36d53571365e.

[55] T. D. Science. « Using Transformers for Computer Vision. » (Consulté le 2023-06-25), adresse :
https://towardsdatascience.com/using-transformers-for-computer-vision-6f764c5a078b.

[56] T. D. Science. « YOLO : You Only Look Once - Real-Time Object Detection Explained. »
(Consulté le 2023-06-25), adresse : https : / / towardsdatascience . com / yolo - you - only -
look-once-real-time-object-detection-explained-492dc9230006.

[57] DataCamp. « YOLO Object Detection Explained. » (Consulté le 2023-06-25), adresse : https:
//www.datacamp.com/blog/yolo-object-detection-explained.

[58] P. Reddie. « YOLO : Real-Time Object Detection. » (Consulté le 2023-06-25), adresse :


https://pjreddie.com/darknet/yolo/.

[59] Django. « Django Web Framework. » (Consulté le 2023-06-25), adresse : https : / / www .
djangoproject.com/.

[60] OpenClassrooms. « Débutez avec le framework Django. » (Consulté le 2023-06-25), adresse :


https : / / openclassrooms . com / fr / courses / 7172076 - debutez - avec - le - framework -
django.

[61] YouTube. « Python Django Web Framework - Full Course. » (Consulté le 2023-06-25),
adresse : https://www.youtube.com/watch?\\v=XUFLq6dKQok&list=PLO_fdPEVlfKoanjvTJbIbd9V5d9Pzp8

[62] Mozilla. « MDN Web Docs - HTML. » (Consulté le 2023-06-25), adresse : https://developer.
mozilla.org/fr/docs/Web/HTML.

[63] Python.org. « Python. » (Consulté le 2023-06-25), adresse : https://www.python.org/.

199
Bibliographie

[64] Mozilla. « MDN Web Docs - JavaScript Language Overview. » (Consulté le 2023-06-25),
adresse : https : / / developer . mozilla . org / en - US / docs / Web / JavaScript / Language _
overview.

[65] W3C. « CSS - Cascading Style Sheets. » (Consulté le 2023-06-25), adresse : https://www.
w3.org/standards/#:~:text=What\%20is\%20CSS\%3F,any\%20XML\%2Dbased\%20markup\
%20language..

200
PÌl›
™Otm˜ žrtž³ ¤ ¨ˆAnW}¯ ºA•@˜ dts Ty•Ð CAyV  ¤d ­r¶AW˜ Ty¶Ahn˜ Tnsl˜ A¾Aˆ¤rK› r§rqt˜ £@¡ dq
Tw˜ “ybW Y˜ Ah˜AFC¤ ¨qyq˜ ’w˜ ¨ AžAyb˜ ‰m ­r¶AW˜ wq .¯AO ¯  r Lytft˜ ºAyJ±A
.C rq˜ ‰n}  Cd’¤ TžAyO˜ “§r T›®F Ez`§ Am› , r± Ylˆ ¶ wK˜ ¨ˆAnW}¯ ºA•@˜ Ktk§ .A›wl`m˜
. r± TžAy} ­ºAf• Ÿs§¤ ,y˜Akt˜ ™lq§¤ ,Lytft˜ Tylmˆ Ly t Š¤rKm˜ @¡ wq§
™Otm˜ žrtž³ ,¨ˆAnW}¯ ºA•@˜ ,ºArhk˜  r ,Lytft˜ ,¯AO ¯ ,Ty•Ð CAyV  ¤d ­r¶AV : y Af› Aml•
. b§rkF AA , wy ,ºAyJ±A

Résumé
Ce rapport présente un SFE pour un drone intelligent utilisant l’IA et l’IoT pour inspecter les
pylônes de télécommunication. Le drone collecte et transmet en temps réel des données à une
application de tableau de bord. L’IA détecte les anomalies sur les pylônes, améliorant ainsi la
sécurité et la prise de décisions de l’équipe de maintenance. Ce projet automatise l’inspection,
réduit les coûts et améliore l’efficacité de la maintenance des pylônes.
Mots clés : Drone intelligent, Télécommunications, Inspection, Pylônes, IA, IoT, Python, JavaScript.

Abstract
This report presents a final year project (SFE) for an intelligent drone utilizing AI and IoT
to inspect telecommunication towers. The drone collects and transmits real-time data to a
dashboard application. The AI detects anomalies on the towers, thereby enhancing the safety
and decision-making capabilities of the maintenance team. This project automates the inspection
process, reduces costs, and improves the efficiency of tower maintenance.
Keywords : Intelligent drone, telecommunications, inspection, pylons, AI, IoT, Python, JavaScript.

contact@sotetel.tn : ¨ž¤rtk˜¯ d§rb˜ 71 940 584 : H•Af˜ 71 135 100 :  Ah˜ YžA˜ Ty’rK˜ «Ð šAmˆ± šAC ŠCAJ
Rue des entrepreneurs, Z.I Charguia II Tél : 71 135 100 Fax : 71 940 584 Email : contact@sotetel.tn
chaabenm ed@voila.f r : ¨ž¤rtk˜¯ d§rb˜ 71 749 100 : H•Af˜ 71 748 910 :  Ah˜ AVr’2080AVrq ©r± ‰’wm˜ 2
Avenue de la République BP 77-1054 Amilcar Tél : 71 748 910 Fax : 71 749 100 Email :chaabenm ed@voila.f r

You might also like