Vous êtes sur la page 1sur 67

U NIVERSITÉ C ADI AYAD

E COLE SUPERIEURE DE TECHNOLOGIE -S AFI


DUT GÉNIE INFORMATIQUE

R APPORT :"P ROJET DE FIN D ’ ÉTUDES "

Détection du Cancer de Sein


TensorFlow-YOLOv4

Supervisé par :
Realisé par : M. ALAOUI FDILI Othmane
SALIMI Wissal
CHAMSI Ikram Tuteur :
NMILI Abdelali LEBDAOUI Meryam

A NNÉE U NIVERSITAIRE 2020-2021


1

Remerciements

Cette année est une année particulière, le département Génie Informatique a decidé
de donner une chance aux étudiants de la licence professionnelle pour être des chefs d’équipes
en ce qui concerne les PFE, chaque groupe va disposer d’un tuteur, qui est un étudiant de la
LP. Pour cela, notre tuteur était LEBDAOUI Meryam.
En travaillant sur ce projet, nous voulons remercier M. Alaoui pour son aide et ses conseils
depuis le premier jour, il était comme notre ami plutôt qu’un superviseur, il n’a jamais cessé
de nous encourager et de nous motiver à aller de l’avant et nous l’avons toujours apprécié,
Lorsque nous avons écrit cette appréciation, nous ne pouvions pas trouver les mots pour
exprimer notre gratitude. Nous aimerions vraiment que notre travail soit comme il l’aimait.
Oui, et comme tout le monde, on a trouvé des problèmes lors de la réalisation de ce projet,
mais notre tuteur et notre encadrant étaient toujours à nos côtés pour nous encourager et
nous guider. Si nous réfléchissons 100 fois pour trouver les bonnes expressions pour les re-
mercier, nous n’y arriverons pas.
Si nous ne parvenons pas à essayer de comprendre et à exprimer leurs attentes, nous vou-
lons dire Merci pour chaque moment et chaque effort qu’ils ont mis dans ce travail pour
nous amener au niveau où ils nous ont amenés, ce fut un honneur de travailler avec eux,
peu importe combien nous les remercions, ce ne sera pas suffisant par rapport à ce qu’ils
ont fait pour nous.
Du fond du coeur, on remercie M. Alaoui encore mille et mille fois pour l’effort qu’il nous a
amené durant les réunions malgré le grand nombre dans cette promotion.
MERCI BEAUCOUP.
Table des matières

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1 Gestion du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2 Principes de base des Planches . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.1 Planches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.2 Listes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2.3 Cartes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2.4 Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.2.5 Réalisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.3 Plan du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.3.1 Plan du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.3.2 Diagramme de Gant . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2 Intelligence Artificielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.1.1 Exemple : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2 Objectifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3 Machine Learning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.3.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.3.2 Types de Machine Learning . . . . . . . . . . . . . . . . . . . . . . 17
2.4 Deep Learning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.4.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.4.2 Différence entre Machine Learning et Deep Learning . . . . . . 21
2.5 Résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.5.1 Réseaux de neurones Artificiels . . . . . . . . . . . . . . . . . . . 23
2.6 Détection des objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.6.1 Vision par ordinateur . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.6.2 Applications de la détection des objets . . . . . . . . . . . . . . . 30

2
3

3 Outils et langages de développement . . . . . . . . . . . . . . . . . . . . . . . . . 32


3.1 Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.1.1 NumPy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.1.2 Matplotlib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.1.3 Pandas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.1.4 TensorFlow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.1.5 Keras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.1.6 YOLO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.1.7 Tkinter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.2 Pycharm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4 Étude de projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.1 Introduction : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.1.1 Cancer de sein . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.2 Problématique : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.3 Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.4 Partie 1 : La première application . . . . . . . . . . . . . . . . . . . . . . . 41
4.4.1 Architecture générale du système . . . . . . . . . . . . . . . . . . 41
4.4.2 la base de données . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.4.3 Découpage train/test . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.4.4 Modèle de prédiction . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.4.5 Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.5 Partie 2 : La deuxième application . . . . . . . . . . . . . . . . . . . . . . . 48
4.5.1 YOLO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.5.2 Architecture générale du système . . . . . . . . . . . . . . . . . . 52
4.5.3 Découpage train/test . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.5.4 Organisations du data . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.5.5 L’entrainement des données . . . . . . . . . . . . . . . . . . . . . 53
4.5.6 Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Webographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Table des figures

1 Tableau de trello 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2 Tableau de trello 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3 Tableau de trello 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4 Le plan du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
5 Diagramme de Gant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
6 La machine d’IBM Deep Blue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
7 Classification et regression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
8 Différence entre Machine Learning et Deep learning . . . . . . . . . . . . . . . . 21
9 Résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
10 Modèle artificiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
11 Les réseaux neurones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
12 Fonctionnement du deep learning . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
13 La différence entre RNA et Deep RNA . . . . . . . . . . . . . . . . . . . . . . . . . 26
14 Réseaux Feed-forward . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
15 Réseaux de neurones récurrents . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
16 Perceptron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
17 CNN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
18 Librairies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
19 Description atomique du sein . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
20 Composition radiologique du sein . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
21 Types des cancers de sein . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
22 Organigramme de l’application 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
23 Les classes du dataset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
24 Training . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
25 Interface graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
26 Chargement de l’image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
27 Choix de l’image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

4
5

28 Le résultat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
29 Intersection Over Union . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
30 les états de l’intersection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
31 L’architecture du YOLOv4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
32 Organigramme de l’application 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
33 Google Colab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
34 Notebook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
35 Cloner le darknet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
36 Fichiers obj.names et obj.data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
37 Le google drive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
38 Modification du makefile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
39 Création du darknet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
40 Copie des fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
41 Création des fichiers train.txt et test.txt . . . . . . . . . . . . . . . . . . . . . . . . 58
42 Téléchargement yolov4-tiny . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
43 Entrainement des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
44 Weights obtenus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
45 Page d’accueil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
46 L’importation d’une image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
47 Résultat de l’importation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
48 Exemple de type Benigne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
49 Changement du seuil de confiance . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
50 Exemple de type Maligne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
51 Téléchargement du résultat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
52 Statistiques du test pour TensorFlow . . . . . . . . . . . . . . . . . . . . . . . . . . 64
53 Statistiques du test pour YOLO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6

Introduction

Aujourd’hui, grâce au développement des ordinateurs et leur capacité d’exécuter des


tâches de hauts calculs, plusieurs techniques et algorithmes d’apprentissage ont été implé-
mentés afin d’automatiser des tâches ou d’aider l’être humain à prendre des décisions. L’ap-
plication de ces techniques est utilisée dans plusieurs domaines. Le domaine de la santé est
l’un des domaines qui s’est bien développé grâce à l’automatisation des tâches par les ma-
chines. Plusieurs systèmes ont été créés pour diagnostiquer des maladies comme le cancer
du sein en analysant les images des tests de dépistage pour aider les cliniciens et les mé-
decins à prendre des décisions. La majorité de ces systèmes utilisent l’apprentissage auto-
matique "Machine Learning" pour extraire des informations cliniques à partir des images et
proposer un diagnostic. On s’intéresse dans ce projet a la réalisation d’un système intelligent
de diagnostique médical du cancer du sein.

Pour présenter ce travail, on a disivé notre rapport à quatres majeurs parties :


— Gestion de projet : consiste à réaliser le tableau de trello pour bien organiser notre
travail.
— La partie théorique : englobe l’Intelligence Artificielle, Machine Learning, Deep Lear-
ning, les réseaux de neurones et la détéction des objets.
— Les outils et les langages de développement utilisés : plus précisemment Python.
— Étude de projet : qui se compose d’une introduction concernant le cancer de sein,
l’objectif de notre système, son architecture et la réalisation de l’application.
7

1 Gestion du projet

1.1 Définition

Trello est un outil d’organisation collaboratif simple et gratuit. Trello est un outil col-
laboratif qui organise tous vos projets dans une série de listes partagées. D’un seul coup
d’œil, Trello vous informe sur tous vos projets, leur statut et qui travaille sur quoi dans votre
équipe. Vous n’avez pas besoin d’un long manuel pour démarrer avec cet outil d’organisa-
tion collaborative. Ici, tout est simple et intuitif. Votre tableau de bord est composé d’une
série de listes correspondant à vos projets. Chaque liste est constituée de fiches que vous
pouvez déplacer d’une colonne à l’autre du bout de la souris. Par défaut, un tableau est
composé de trois colonnes : "to do", "doing" et "done". Une méthode d’organisation uni-
verselle.

1.2 Principes de base des Planches


Un tableau Trello ne comporte que quatre éléments clés, mais offre des possibilités
illimitées :

1.2.1 Planches

Un tableau représente un projet ou un endroit pour garder une trace des informations.
Que vous lanciez un nouveau site web ou que vous planifiiez des vacances, un tableau Trello
8

est l’endroit idéal pour organiser vos tâches et collaborer avec vos collègues, votre famille ou
vos amis.

1.2.2 Listes

Les listes permettent d’organiser les cartes (C) dans leurs différents stades d’avance-
ment. Elles peuvent être utilisées pour créer un flux de travail dans lequel les cartes sont
déplacées d’une liste à l’autre du début à la fin, ou simplement pour garder une trace des
idées et des informations. Il n’y a pas de limite au nombre de listes que vous pouvez ajouter
à un tableau, et elles peuvent être organisées comme vous le souhaitez.

Une configuration de liste basique (mais efficace) pour un tableau pourrait être sim-
plement To Do, Doing, et Done, où les cartes commencent dans la liste To Do et se dirigent
vers la liste Done. Mais n’oubliez pas : Trello est vraiment personnalisable en fonction de
vos besoins uniques, vous pouvez donc nommer vos listes comme bon vous semble ! Qu’il
s’agisse d’un Kanban de base, d’un pipeline de vente, d’un calendrier de marketing ou de la
gestion d’un projet, le plus important est d’établir un flux de travail adapté à la façon dont
votre équipe travaille.
9

1.2.3 Cartes

L’unité fondamentale d’un tableau est une carte. Les cartes sont utilisées pour représen-
ter des tâches et des idées. Une carte peut représenter quelque chose à faire, comme un
article de blog à rédiger, ou quelque chose à retenir, comme les politiques de vacances de
l’entreprise. ou quelque chose dont il faut se souvenir, comme les politiques de vacances
de l’entreprise. Il suffit de cliquer sur "Ajouter une carte... ." au bas de n’importe quelle liste
pour créer une nouvelle carte et lui donner un nom comme "Passer au pressing" ou "Écrire
un article de blog". ou "Rédiger un article de blog". Les cartes peuvent être personnalisées
pour contenir une grande variété d’informations utiles en cliquant dessus. Faites glisser et
déposez les cartes dans les listes pour afficher la progression. Il n’y a pas de limite au nombre
de cartes que vous pouvez ajouter à un tableau. que vous pouvez ajouter à un tableau.
10

1.2.4 Menu

Sur le côté droit de votre tableau Trello se trouve le menu, le centre de contrôle de votre
tableau. tableau. Le menu est l’endroit où vous gérez les membres, contrôlez les paramètres,
filtrez les cartes et activez les Power-Ups. Vous pouvez également voir toute l’activité qui s’est
déroulée sur un tableau dans le flux d’activité du menu. flux d’activité du menu. Prenez le
temps de découvrir tout ce que le menu a à offrir.
11

1.2.5 Réalisation

F IGURE 1: Tableau de trello 1


12

F IGURE 2: Tableau de trello 2

F IGURE 3: Tableau de trello 3


13

1.3 Plan du projet


1.3.1 Plan du projet

F IGURE 4: Le plan du projet


14

1.3.2 Diagramme de Gant

F IGURE 5: Diagramme de Gant


15

2 Intelligence Artificielle

2.1 Définition
L’intelligence artificielle (IA) consiste à utiliser des ordinateurs pour faire des choses
qui, traditionnellement, n´ecessitent une intelligence humaine. Il s’agit de créer des algo-
rithmes pour classer, analyser et faire des prédictions à partir de données. Cela implique
également d’agir sur les données, d’apprendre à partir de nouvelles données et de s’amélio-
rer au fil du temps. Tout comme un petit enfant humain qui grandit pour devenir un adulte
humain (parfois) plus intelligent.

2.1.1 Exemple :

La machine d’IBM Deep Blue qui à utiliser l’intelligence artificielle pour être capable
de jouer les jeux d’échec la chose qui l’aider pour gagner le plus petit champion d’échecs du
monde en 1985 Garry Kasparov.

F IGURE 6: La machine d’IBM Deep Blue


16

2.2 Objectifs
L’intelligence artificielle permet :

— D’analyser des textes : qu’ils soient oraux ou écrits, l’intelligence artificielle arrive de
mieux en mieux à comprendre et utiliser le langage pour répondre automatiquement
à des requêtes variées. Aujourd’hui, elle est utilisée, par exemple, pour gérer les rela-
tions clients, sur Internet ou par téléphone. Les agents conversationnels ou chatbot
en anglais sont des systèmes intelligents qui arrivent à entretenir une conversation
en langage naturel. Ils se basent sur différentes briques technologiques : reconnais-
sance de texte, de la parole, d’expressions du visage. . .

— De modéliser des connaissances pour aider à la prise de décisions : l’intelligence ar-


tificielle permet de coder un ensemble de connaissances, de reproduire un raisonne-
ment type et d’utiliser ces informations pour prendre des décisions. Par exemple, il
est aujourd’hui possible, à partir de données multiples et complexes, d’aider les mé-
decins à proposer des traitements personnalisés du cancer du sein.

— De produire des connaissances grâce au Machine Learning ou apprentissage auto-


matique : grâce à l’intelligence artificielle, la machine devient capable de repérer des
tendances ou des corrélations dans un très grand volume de données, en adaptant
ses analyses et ses comportements et ainsi de créer ses propres connaissances en
fonction de l’expérience accumulée. Cela permet de proposer des prédictions très
fines sur la consommation d’énergie, l’évolution du comportement d’une machine
ou d’un bâtiment. Les règles prédictives qui en sont tirées ne sont que le résultat de
ce qui a déjà eu lieu ; ce ne sont pas des lois générales.

— D’analyser des images ou des scènes en temps réel : reconnaître des défauts de fa-
brication ou détecter des visages. Par exemple, certaines usines ont des robots qui
détectent en temps réel les problèmes techniques, défauts et corrigent ou arrêtent la
production. Pour parvenir à analyser une très grande quantité de données visuelles
en simultané, les chercheurs développent des logiciels à base de réseaux de neurones
profonds, qui permettent aux ordinateurs d’acquérir des capacités d’apprentissage
(deep learning).
17

— De réaliser des actions : par exemple, l’intelligence artificielle permet d’imiter et re-
produire à la perfection certains gestes humains comme celui d’administrer un vac-
cin via une main robotisée.

NB : Pour nous l’intelligence artificielle permet de nous aider pour réaliser notre projet
sur Détection du cancer du sein et avoir en fin du compte une application.

2.3 Machine Learning

2.3.1 Définition

Machine Learning est une technologie d’intelligence artificielle permettant aux ordi-
nateurs d’apprendre sans avoir été programmés explicitement à cet effet. Pour apprendre et
se développer, les ordinateurs ont toutefois besoin de données à analyser et sur lesquelles
s’entraîner.

2.3.2 Types de Machine Learning

A- Supervised Learning

— "Supervised Learning" est une technologie élémentaire mais stricte. Les opérateurs
présentent à l’ordinateur des exemples d’entrées et les sorties souhaitées, et l’ordina-
teur recherche des solutions pour obtenir ces sorties en fonction de ces entrées. Le
but recherché est que l’ordinateur apprenne la règle générale qui mappe les entrées
et les sorties.
18

— "Supervised Learning" peut être utilisé pour faire des prédictions sur des données
indisponibles ou futures (on parle de « modélisation prédictive »). L’algorithme essaie
de développer une fonction qui prédit avec précision la sortie à partir des variables
d’entrée.

— "Supervised Learning" peut se subdiviser en deux types :

— Classification :
La classification utilise un algorithme pour attribuer avec précision les données
de test dans des catégories spécifiques. Elle reconnaît des entités spécifiques au
sein de l’ensemble de données et tente de tirer des conclusions sur la manière
dont ces entités devraient être étiquetées ou définies.

— Régression :
La régression est utilisée pour comprendre la relation entre les variables dépen-
dantes et indépendantes. Elle est couramment utilisée pour faire des projections,
par exemple pour le chiffre d’affaires d’une entreprise donnée.

F IGURE 7: Classification et regression


19

— Les principaux algorithmes de Supervised Learning sont les suivants : forêts aléa-
toires, arbres décisionnels, méthode du k plus proche voisin (k-NN), régression li-
néaire, classification naïve bayésienne, machine à vecteurs de support (SVM), régres-
sion logistique et boosting des gradients.

B- Unsupervised Learning

— Dans "Unsupervised Learning", l’algorithme est laissé à lui-même pour déterminer


la structure de l’entrée (aucun label n’est communiqué à l’algorithme). Cette ap-
proche peut être un but en soi (qui permet de découvrir des structures enfouies dans
les données) ou un moyen d’atteindre un certain but. Cette approche est également
appelée « apprentissage des caractéristiques » (feature learning).

— Il existe deux types de "Unsupervised Learning" :

— Clustering : Le clustering est un concept important en Unsupervised Learning.


Il s’agit principalement de trouver une structure ou un modèle dans une collec-
tion de données non catégorisées. Les algorithmes de clustering traiteront vos
données et trouveront des clusters naturels (groupes) s’ils existent dans les don-
nées. Vous pouvez également modifier le nombre de clusters que vos algorithmes
doivent identifier. Il vous permet d’ajuster la granularité de ces groupes.

— Association : Les règles d’association vous permettent d’établir des associations


entre des objets de données dans de grandes bases de données. Cette technique
non supervisée consiste à découvrir des relations intéressantes entre les variables
dans de grandes bases de données. Par exemple, un sous-groupe de patients can-
céreux regroupés en fonction de leurs mesures d’expression génique.

— Les principaux algorithmes de "Unsupervised Learning" sont les suivants : K-Means,


clustering/regroupement hiérarchique et réduction de la dimensionnalité.
20

C- Reinforcement Learning

— "Reinforcement Learning" consiste, pour un agent autonome (robot, etc.), à apprendre


les actions à prendre, à partir d’expériences, de façon à optimiser une récompense
quantitative au cours du temps. L’agent est plongé au sein d’un environnement, et
prend ses décisions en fonction de son état courant. En retour, l’environnement pro-
cure à l’agent une récompense, qui peut être positive ou négative. L’agent cherche,
au travers d’expériences itérées, un comportement décisionnel (appelé stratégie ou
politique, et qui est une fonction associant à l’état courant l’action à exécuter) opti-
mal, en ce sens qu’il maximise la somme des récompenses au cours du temps.

— Les principaux algorithmes du "Reinforcement Learning" sont les suivants : Q-learning,


Deep Q Network (DQN) et SARSA (State-Action-Reward-State-Action).

2.4 Deep Learning

2.4.1 Définition

Deep Learning est un sous-domaine de Machine Learning, qui repose sur le traite-
ment par les ordinateurs de grandes quantités de données à l’aide de réseaux de neurones
artificiels dont la structure imite celle du cerveau humain. Chaque fois que de nouvelles in-
formations sont intégrées, les connexions existantes entre les neurones sont susceptibles
d’être modifiées et étendues, ce qui a pour effet de permettre au système d’apprendre les
choses sans intervention humaine, de manière autonome, tout en améliorant la qualité de
ses prises de décision et de ses prévisions.
21

2.4.2 Différence entre Machine Learning et Deep Learning

"Deep Learning" est un sous-ensemble de "Machine Learning" qui prend des données
en entrée et prend des décisions intuitives et intelligentes en utilisant un réseau neuronal ar-
tificiel empilé en couches. D’un autre côté, "Machine Learning", qui est un super-ensemble
de "Deep Learning", prend des données en entrée, les analyse et tente de leur donner un
sens (décisions) sur la base de ce qu’il a appris pendant son apprentissage.

F IGURE 8: Différence entre Machine Learning et Deep learning


22

2.5 Résumé
L’intelligence artificielle est un élement des systèmes d’imitation de pensée et des ac-
tions humaines, elle se compose de la machine learning et le deep learning. Cela est pré-
senté comme suit dans la figure ci-dessous.

F IGURE 9: Résumé
23

2.5.1 Réseaux de neurones Artificiels

Les réseaux de neurones sont les outils les plus répandus et utilisés en apprentissage
automatique. Ils sont l’une des techniques les plus performantes dans la classification ce
qui justifie leur présence presque dans toutes les applications et les domaines qui utilisent
l’apprentissage automatique. Leurs structures sont inspirées des neurones biologiques et
des circuits du système nerveux du cerveau. Dans un modèle simplifié du cerveau, les ré-
seaux de neurones consistent d’un large nombre de nœuds de calcul basiques (neurones)
qui sont connectés les uns aux autres d’une manière complexe. A travers ces connections, le
cerveau est capable de manipuler des calculs de hautes complexités. Un réseau de neurones
artificiels peut être d´écrit comme un graphe orienté tels que chaque nœud représente un
neurone et chaque arête représente un lien entre les nœuds. Chaque neurone recoit entrée
une somme pondérée ‘a partir des sorties de neurones qui le précède.
24

— Modèle artificiel

F IGURE 10: Modèle artificiel

Neurone Artificiel : Perceptron Le perceptron est un neurone artificiel qui est une
simplification aberrante du neurone biologique. Chaque neurone artificiel est un
processeur élémentaire. Il prend en entrée un nombre de variables(X = x1, x2, ...,
xn) appelée couche d’entrée, chaque entrée de neurone artificiel est associée ‘a un
poids w (weight en anglais) représentant la valeur de la connexion. Une fonction
d’activation f transforme la somme pondérée des variables d’entrées et leurs poids
Pn i=1(wi×xi) ‘a une valeur qui sera ensuite transmise à la couche de sortie pour être
comparée à une valeur ‘a seuil, puis fournir une réponse binaire en sortie (0 ou 1)
[25].
Perceptrons multicouches : Le perceptron multicouche est un réseau de neurones
artificiel constitué de plusieurs couches de neurones : une couche d’entrée, une couche
cachée et une couche de sortie (figure 3.10). Ce modèle est une amélioration du per-
ceptron monocouche pour remédier aux problèmes non linéaires. L’une des difficul-
tés de ce type de réseaux de neurones et le choix de nombre de neurones dans la
couche cachée.
25

F IGURE 11: Les réseaux neurones

— Fonction d’activation
Le neurone artificiel calcule la somme pondérée des entrées et leurs poids. Cette
somme pondérée peut prendre n’importe quelle valeur entre −∞ et + ∞, afin que
le neurone puisse savoir la valeur seuil pour son activation, une fonction d’activation
est utilisée. La fonction d’activation (ou fonction de transfert) sert a introduire une
non linéarité dans le fonctionnement du neurone contrairement aux neurones bio-
logiques qui ont un état binaire. Les fonctions d’activation de neurone artificiel ont
des valeurs continues ce qui permet d’avoir une infinité des valeurs possibles com-
prissent dans un intervalle de [-1,1] ou [0,1] [25].
— Fonctionnement du RNA :
Les réseaux de neurones fonctionnent en répartissant les valeurs des variables dans
des neurones. Ces unités sont chargées de combiner entre elles leurs informations
pour déterminer la valeur du paramètre de discrimination. C’est de la connexion de
ces unités entre elles qu’émerge la capacité de discrimination du RNA. Chaque neu-
rone reçoit des informations numériques en provenance de neurones voisins à cha-
cune de ces valeurs est associée un poids représentatif de la force de la connexion.
Chaque neurone effectue localement un calcul dont le résultat est transmis ensuite
aux neurones avals.
26

F IGURE 12: Fonctionnement du deep learning

— La différence entre simple RNA et Deep RNA :

F IGURE 13: La différence entre RNA et Deep RNA

— Les types de réseaux neurones :

Réseaux feed-forward :
Les réseaux de type "feed-forward" ou à couches permettent de dépasser les limites
des perceptrons. En effet, ceux-ci ne sont plus limités aux problèmes linéairement sé-
parables. Ils sont composés d’une ou plusieurs couches cachées de neurones, reliées
aux entrées ou aux couches précédentes, et une couche de sortie, reliée aux neurones
cachés. On les appelle feed-forward car l’information ne peut aller que des entrées
aux sorties, sans revenir en arrière.
On obtient le réseau suivant si l’on a 5 entrées et 3 sorties, avec 2 neurones cachés :
27

F IGURE 14: Réseaux Feed-forward

Réseaux de neurones récurrents :


Dans un réseau de neurones récurrent, il existe non seulement des liens d’une couche
vers les suivantes, mais aussi vers les couches précédentes. De cette façon, les infor-
mations traitées à une étape peuvent être utilisées pour le traitement des entrées
suivantes. Cela permet d’avoir des suites de valeurs en sortie qui sont dépendantes,
à la manière d’une série d’instructions pour un robot, ou un effet de mémorisation
des pas de temps précédents.

F IGURE 15: Réseaux de neurones récurrents


28

Perceptron :
Le perceptron est le plus simple des réseaux de neurones. Un perceptron est un ré-
seau contenant p neurones. Chacun est relié aux n entrées. Ce réseau permet d’avoir
p sorties. Généralement, chacune représente une décision ou une classe, et c’est la
sortie ayant la plus forte valeur qui est prise en compte.
Avec 3 neurones et 5 entrées, on a donc 3 sorties. Voici la structure obtenue dans ce
cas :

F IGURE 16: Perceptron

Réseau de neurones convolutif (ou CNN) :


Les réseaux convolutifs sont une forme particulière de réseau neuronal multicouches.
Les réseaux convolutifs sont une puissante application de l’intelligence artificielle
(IA) au traitement des images, qui s’appuie sur l’apprentissage profond pour effec-
tuer des tâches descriptives et génératives. Ils exploitent souvent la vision artificielle,
notamment la reconnaissance de la vidéo et des images, les systèmes de recomman-
dation et le traitement automatique du langage naturel.
Un CNN utilise un système comparable au perceptron multicouche, mais conçu pour
réduire le nombre de calculs. La structure d’un CNN consiste en une succession de
couches : une couche d’entrée, une couche de sortie et une couche cachée compo-
sée de nombreuses couches convolutives, couches de regroupement, couches entiè-
rement connectées et couches de normalisation.
29

F IGURE 17: CNN


30

2.6 Détection des objets


La détection des objets est une technique de vision par ordinateur qui nous permet
d’identifier et de localiser des objets dans une image ou une vidéo. Grâce à ce type d’iden-
tification et de localisation, la détection d’objets peut être utilisée pour compter les objets
dans une scène et déterminer et suivre leur emplacement précis, tout en les étiquetant avec
exactitude.

2.6.1 Vision par ordinateur

Vision par ordinateur est une technologie d’intelligence artificielle permettant aux or-
dinateurs de ”voir” de la même façon que les êtres humains. Découvrez tout ce que vous
devez savoir à ce sujet.

2.6.2 Applications de la détection des objets

— le comptage de foule :

Le comptage de foule est un ensemble de techniques destinées à compter ou estimer


le nombre de personnes formant une foule.
31

— La détection de visage :

La détection de visage est un domaine de la vision par ordinateur consistant a détec-


ter un visage humain dans une image numérique. C’est un cas spécifique de détec-
tion d’objet, où l’on cherche ‘a détecter la présence et la localisation précise d’un ou
plusieurs visages dans une image.
— Un véhicule autonome :

Un véhicule autonome, véhicule automatisé ou véhicule entièrement automatisé est


un véhicule automobile capable de rouler, sur route ouverte, sans intervention d’un
conducteur. Le concept désigne un véhicule pouvant circuler sur la voie publique
dans le trafic sans intervention humaine (en toutes situations)
32

3 Outils et langages de développement


L’implémentation de notre projet nécessite un langage de développement et un édi-
teur de texte destiné à la programmation. Ce choix a été fait sur le langage Python et l’IDE
Pycharm très adaptés à notre problématique.

3.1 Python

Python est un langage de programmation interprète multiparadigme qui prend en charge


la programmation orienté objet, impérative structurelle et fonctionnelle. Il est considéré
comme un langage de haut niveau grâce a ses fonctionnalités avancées tels que la gestion
automatique de la mémoire (garbage collecting).
En plus de sa simplicité et facilité d’utilisation, le langage Python fonctionne sur la plu-
part des plates-formes informatiques, des smartphones aux ordinateurs centraux, de Win-
dows à Unix avec notamment GNU/Linux en passant par MacOs, ou encore Android, iOS.
Son avantage majeur est sa modularité, la définition de langage est très compacte autour
de son noyau, il existe des nombreuses librairies et modules qui ont été développées et qui
optimisent la productivité des programmeurs et facilitent la tâche de programmation. Afin
de créer un modèle d’apprentissage, plusieurs librairies peuvent être utilisé, on note les li-
brairies suivantes :
33

F IGURE 18: Librairies

3.1.1 NumPy

NumPy (diminutif de Numerical Python) est une librairie destinée aux langage Python
qui permet de stocker et effectuer des opérations sur les données. D’une certaine manière,
les tableaux Numpy sont comme les listes en Python, mais Numpy permet de rendre les opé-
rations beaucoup plus efficaces, surtout sur les tableaux de large taille. Les tableaux Numpy
sont au cœur de presque tout l’écosystème de data science en Python.
34

3.1.2 Matplotlib

Matplotlib est une bibliothèque du langage de programmation Python destinée à tra-


cer et visualiser des données sous formes de graphiques. Elle permet l’exportation des gra-
phiques sous plusieurs formes (PNG, JPEG, PDF...) et elle est doté d’une "User Graphical
Interface" qui permet de zoomer et explorer les graphiques facilement.

3.1.3 Pandas

Pandas est une bibliothèque écrite pour le langage de programmation Python permet-
tant la manipulation et l’analyse des données. Elle propose en particulier des structures de
données et des opérations de manipulation de tableaux numériques et de séries tempo-
relles. Les principales structures de données sont les s´séries (pour stocker des données se-
lon une dimension - grandeur en fonction d’un index), les DataFrames (pour stocker des
données selon 2 dimensions - lignes et colonnes), les Panels (pour représenter des données
selon 3 dimensions, les Panels4D ou les DataFrames avec des index hiérarchiques aussi
nommés MultiIndex (pour représenter des données selon plus de 3 dimensions - hyper-
cube).
35

3.1.4 TensorFlow

TensorFlow est une plate-forme Open Source révolutionnaire de bout en bout dédiée au
machine Learning. Elle propose un écosystème complet et flexible d’outils, de bibliothèques
et de ressources communautaires permettant aux chercheurs d’avancer dans le domaine du
machine Learning, et aux développeurs de créer et de d´éployer facilement des applications
qui exploitent cette technologie. Elle possède une multitude d’API permettant la construc-
tion et l’entrainement des modèles de machine Learning, l’une des plus utilisée est L’API
Keras.

3.1.5 Keras

Keras est une bibliothèque Open Source écrite en Python et s’exécute sur TensorFlow.
Elle permet d’expérimenter rapidement et facilement les modèles de réseaux de neurones
artificiels. L’avantage de Keras est sa syntaxe assez simple et la richesse de ses fonctions
notamment celles dédiées aux modèles de réseaux de neurones.
36

3.1.6 YOLO

YOLO ("You Only Look Once") est un algorithme efficace de reconnaissance d’objets en
temps réel, décrit pour la première fois dans l’article fondateur de 2015 de Joseph Redmon
et al. Dans cet article, nous présentons le concept de détection d’objets, l’algorithme YOLO
lui-même et l’une des implémentations open source de l’algorithme : Darknet.

3.1.7 Tkinter

Tkinter (Tool kit interface) est la bibliothèque graphique libre d’origine pour le langage
Python, permettant la création d’interfaces graphiques. Elle vient d’une adaptation de la
bibliothèque graphique Tk écrite pour Tcl.

3.2 Pycharm
PyCharm est un environnement de d´développement intègre (IDE) développe par Jet-
Brains , utilisé pour programmer en Python. Il permet l’analyse de code et contient un débo-
gueur graphique. Il permet également la gestion des tests unitaires et l’intégration de logiciel
de gestion de versions.
37

4 Étude de projet

4.1 Introduction :
Le cancer du sein est l’une des causes les plus fréquentes de décès chez les femmes dans
le monde. Une détection précoce permet de réduire le nombre de décès précoces. Les don-
nées passent en revue les images médicales du cancer du sein à l’aide de l’échographie.
Le jeu de données d’échographie mammaire est classé en trois classes : images normales,
bénignes et malignes. Les images d’échographie mammaire peuvent produire d’excellents
résultats dans la classification, la détection et la segmentation du cancer du sein lorsqu’elles
sont combinées à l’apprentissage automatique.

4.1.1 Cancer de sein

Sein :
Sein (du latin sinus, « courbure, sinuosité, pli ») : Organe pair très développé situe a la partie
antérieure du thorax chez la femme, et qui contient la glande mammaire. Les glandes mam-
maires sont les glandes des mamelles des femmes, elles ont la particularité de secréter le lait
servant à l’allaitement.

Description anatomique du sein :

F IGURE 19: Description atomique du sein


38

Composition radiologique du sein :


De point de vue Radiologique, le sein contient deux composantes :
— Une composante adipeuse radio-transparente.
— Une composante fibroglandulaire radio-opaque.

F IGURE 20: Composition radiologique du sein

Ces différentes composantes ont des coefficients d’atténuation aux rayons X presque iden-
tiques et donc un contraste peu élevé.
Dans une image radiographique d’un sein, la fibre et la glande apparaissent en blanc
alors que la graisse apparait en noir. Donc selon la répartition de ces différentes compo-
santes, les images radiographiques des seins seront différentes l’une de l’autre. On dit qu’un
39

sein est dense lorsque le tissu fibro-grandulaire est plus important que le tissu graisseux. La
densité mammaire est mesurée par la proportion des tissus fibro-grandulaire par rapport
aux tissus graisseux.
cancer de sein :
La notion de ”Cancer du sein” relève d’une nomenclature générique qui fait référence a un
ensemble de proliférations néoplasiques de la glande mammaire qui diffèrent tant du point
de vue histologique qu’en ce qui concerne leur comportement évolutif.
Le terme de “cancer du sein” ne désigne que les tumeurs malignes, potentiellement
agressives, du sein tandis que le terme de ”tumeur du sein” désigne à la fois les tumeurs
malignes et bénignes. Le terme “carcinome” ou « épithélioma » est parfois utilisé, comme
synonyme de “cancer”. En réalité carcinome est un terme spécifique de morphologie micro-
scopique (histologique) qui désigne les plus fréquents des cancers du sein d’origine épithé-
liale c’est-‘a-dire dérivant des unités s´excrétoires (lobules) ou des canaux lactifères.
Types des cancers du sein :

F IGURE 21: Types des cancers de sein


40

— Carcinome canalaire in situ (CCIS) Renvoie aux cellules anormales repérées dans les
canaux galactophores. Ces cellules sont considérées comme non envahissantes puis-
qu’elles ne se sont pas propagées aux tissus mammaires voisins. Il s’agit d’une forme
précoce de cancer qui peut parfois devenir infiltrant et toucher d’autres tissus.
— Carcinome canalaire infiltrant (CCI) Un cancer qui est apparu dans les canaux lacti-
féres et qui s’est propagé aux tissus mammaires environnants.
— Carcinome lobulaire infiltrant (CLI) Un cancer qui a surgi dans les lobules (les groupes
de glandes mammaires) et qui a envahi les tissus mammaires voisins.
— La tumeur phyllode maligne Est une tumeur rare du sein, qui prend naissance dans
le tissu conjonctif. Il s’agit d’une tumeur mixte, dite fibro-épithéliale, caractérisée par
la prolifié- ration de cellules épithéliales et de cellules du tissu conjonctif, alors que
la majorité des cancers du sein affecte les cellules glandulaires.

4.2 Problématique :
Le cancer du sein est très fréquent, c’est le premier cancer féminin responsable d’une
mortalité élevée à travers le monde. Au Maroc c’est le 2ème cancer de la femme après ce-
lui du sein. Il représente 12,8% de l’ensemble des cancers de la femme et 14,4 nouveaux
cas pour 100 000 femmes (RCGC 2005-2007). Il est généralement diagnostiqué à un stade
avancé avec une extension régionale ou à distance dans plus de 46%. Nous avons remarqué
que la majorité des cancers de sein détectés sont au stade avancé ou final. Cela entraîne gé-
néralement des complications importantes voire fatales pour les patientes atteintes de cette
maladie. Cette détection tardive est liée à plusieurs facteurset risques :
— Le manque d’informations chez les femmes notamment dans les régions moins fa-
vorisées.
— l’âge compris entre 45 et 75 ans. Comme pour la plupart des maladies chroniques, le
risque d’avoir un cancer du sein augmente avec l’âge
— les facteurs familiaux ou génétiques : la présence de cas de cancer du sein dans la
famille particulièrement du côté maternel (grand-mère, mère, tante ou sœur).
— la consommation exagérée d’alcool, la consommation de tabac etc.
41

4.3 Objectif
L’objectif de cette étude est de concevoir et implémenter une solution alternative de dé-
pistage précoce du cancer de sein chez les femmes. Notre solution est basée sur les tech-
niques de l’intelligence artificielle. Il s’agit d’un système de dépistage intelligent qui permet
de préciser si le sein est cancéreux ou non, et de classer le type de cancer (bénigne ou ma-
ligne).

4.4 Partie 1 : La première application


4.4.1 Architecture générale du système

F IGURE 22: Organigramme de l’application 1


42

4.4.2 la base de données

Les données examinent les images médicales du cancer du sein à l’aide de l’échographie.
Le jeu de données d’échographie mammaire est classé en trois classes : images normales,
bénignes et malignes. Les images d’échographie mammaire peuvent produire d’excellents
résultats dans la classification, la détection et la segmentation du cancer du sein lorsqu’elles
sont combinées à l’apprentissage automatique.

F IGURE 23: Les classes du dataset

Les données recueillies au départ comprennent des images d’échographie mammaire


chez les femmes âgées de 25 à 75 ans. Ces données ont été collectées en 2018. Le nombre de
patientes est de 600 patientes. Le jeu de données est composé de 780 images avec une taille
d’image moyenne de 500*500 pixels. Les images sont au format PNG. Les images de vérité
terrain sont présentées avec les images originales. Les images sont classées en trois classes,
qui sont normales, bénignes et malignes.
description de la base de données
Notre data-set contient de trois classe, chaque classe contient plus de la 100 image,
chaque image à son Mask, ce dernier est une image de même size de la première sa arrière-
plan en noir et la partie cancéreuse en blanche.
43

4.4.3 Découpage train/test

L’étape suivante consiste à découper l’ensemble des exemples de la base de données


en deux parties, une grande partie des exemples de données est destiné à la phase d’entrai-
nement du modèle (données d’entrainement= «406 images Bénigne», «180 images Maligne»
et «103 images Normale»). La deuxième partie des données (données de test=«30 images Bé-
nigne»,«30 images Maligne» et «30 images Normale») est utilisé pour calculer la performance
et la précision du modèle d’apprentissage afin d’observer et tester les résultats obtenus lors
de l’entrainement.
La phase training :
Nous commençons par créer une liste de noms de fichiers (les chemins d’accès à nos
données) et une file d’attente de noms de fichiers TensorFlow, puis nous lisons et décodons
chaque image, nous les redimensionnons à une taille fixe (nécessaire pour le traitement par
lots) et nous produisons un lot de ces images.

F IGURE 24: Training


44

La phase test
Après l’entrainement, dans la phase test on observe que notre modèle fonctionne a 100%
pour les masks et pour les images radiographiques on trouve une probabilité d’erreur dans
les résultats.

4.4.4 Modèle de prédiction

— Le modèle de prédiction choisi pour notre projet, est le modèle séquentiel approprié
pour une pile de couches simple où chaque couche a exactement un tenseur d’entrée
et un tenseur de sortie.
— Les réseaux de neurones artificiels :
— Conv2D : Cette couche crée un noyau de convolution qui est convolué avec l’en-
trée de la couche pour produire un tenseur de sorties.
— MaxPooling2D : Réduit l’échantillonnage de l’entrée selon ses dimensions spa-
tiales (hauteur et largeur) en prenant la valeur maximale sur une fenêtre d’entrée
(de taille définie par pool-size) pour chaque canal de l’entrée.
— Dense : Dense implémente l’opération : output = activation(dot(input, kernel) +
bias) où activation est la fonction d’activation par éléments passée comme argu-
ment d’activation, kernel est une matrice de poids créée par la couche, et bias est
un vecteur de biais créé par la couche. Ce sont tous des attributs de Dense.
— Flatten : Une couche Flatten dans Keras remodèle le tenseur pour qu’il ait une
forme égale au nombre d’éléments contenus dans le tenseur.
45

4.4.5 Application

L’interface Graphique
Nous avons créé une application web qui facilite la détection, nous n’avons plus besoin
d’exécuter la détection en utilisant des commandes, il suffit d’ouvrir l’application web.

F IGURE 25: Interface graphique

Chargement d’une image


Pour charger une image, c’est très simple et nous avons deux étapes de le faire :
— La première étape est le chargement du fichier :
Nous pouvons télécharger un fichier en cliquant sur "browse", une fenêtre s’ouvre et
nous donne la possibilité de choisir n’importe quel fichier de notre répertoire, puis il
apparaîtra dans notre interface.
46

F IGURE 26: Chargement de l’image

— La deuxième étape est le choix d’image :


Une fois que vous avez cliqué sur l’image, elle sera affichée dans l’interface.

F IGURE 27: Choix de l’image


47

Résultat
nous pouvons voir les résultats en cliquant sur le bouton "comparer" et il l’affichera en des-
sous de l’image.

F IGURE 28: Le résultat


48

4.5 Partie 2 : La deuxième application


4.5.1 YOLO

Définition :

You Only Look Once (YOLO) est une architecture efficace de reconnaissance d’objets ca-
pable d’identifier la présence d’objets dans les images. Elle divise l’image en régions et pré-
dit les boîtes et les probabilités pour chaque une. Algorithme de détection d’objets connu
pour sa grande Précision et sa rapidité.Cependant, il est le résultat de longues années de
recherches comme le montre la frise chronologique des algorithmes de détection d’objets.
Pour utiliser YOLO au maximum de ses capacités, il faut comprendre deux choses en paral-
lèle : comment se fait la détection et comment les ancres sont utilisées pour améliorer les
détections.Un mauvais choix des ancres peut faire échouer l’algorithme à détecter l’objet
visé.
Ancre :
En réalisant une analyse préalable sur les délimitations des objets que l’on essaie de
trouver, il s’avère que la plupart de ces boîtes de délimitation ont certains rapports entre leur
hauteur et leur largeur. Donc, au lieu de prédire directement une boîte englobante (boun-
ding box), YOLO prédisent des ensembles de boîtes avec des rapports hauteur-largeur par-
ticuliers – ces ensembles de boîtes prédéterminés sont les boîtes d’ancrage .
Trouver les ancres :
Il y a plusieurs façons de définir ces ancres, la plus naïve est de les définir à la main. A
la place de les choisir à la main, il est préférable d’appliquer un algorithme de clustering
k-means pour les trouver automatiquement.

L’algorithme Yolo :

Une fois que vous avez inséré une image dans un algorithme YOLO, il divise les images en
un SxS grille qu’il utilise pour prédire si la "Bounding Box" spécifique contient l’objet (ou des
parties), puis utilise ces informations pour prédire une classe pour l’objet. Avant de pouvoir
entrer dans les détails et expliquer comment fonctionne l’algorithme, nous devons com-
prendre comment l’algorithme construit et spécifie chaque « Bounding Box». L’algorithme
YOLO utilise quatre composants et une valeur supplémentaire pour prédire une sortie.
— Le centre du Bounding Box (bx by),
— Width (bw),
— Height (bh),
— La classe d’objet (c).
49

La valeur finale prédite est la confiance (pc). Il représente la probabilité de l’existence d’un
objet dans la « boîte englobante ».
Intersection over Union : l’IoU
L’IoU – ou Intersection over Union – est une façon de mesurer la qualité de la détection
d’un objet en comparant, dans un dataset d’entraînement, la position connue de l’objet
dans l’image avec la prédiction faite par l’algorithme. L’IoU est le rapport entre la surface de
l’intersection des bounding box considérées et la surface de l’union des ensembles.

F IGURE 29: Intersection Over Union

L’IoU peut valoir entre 0 (pour une détection totalement ratée) et 1 (pour une détection
parfaite). De façon générale l’objet est considéré comme étant détecté à partir d’un IoU su-
périeur à 0.5.

F IGURE 30: les états de l’intersection


50

Seuil de confiance « Threshold »

Par défaut, YOLO n’affiche que les objets détectés avec une confiance de 0,25 ou plus.
Vous pouvez changer cela en passant l’indicateur « -thresh <val> » à la commande YOLO.
Par exemple, pour afficher toutes les détections, vous pouvez définir le seuil sur 0 .

Non-Maximal Suppression « NMS »

YOLO utilise la suppression non maximale (NMS) pour ne conserver que la meilleure «
Bounding Box ». La première étape dans NMS consiste à supprimer toutes les « Bounding
Boxes » prédites qui ont une probabilité de détection inférieure à la seuil NMS donné.

La comparaison entre les versions de YOLO :

YOLOv1 :

La première version de YOLO a été introduite en 2015, elle utilisait un framework Dark-
net qui a été formé sur le dataset ImageNet-1000. Cet ensemble de données a de nombreuses
limitations de YOLO V1. YOLO version 1 prédit directement les coordonnées des bounding
box en utilisant une couche dense. A la place de prédire directement ces boîtes.

YOLOv2 :

YOLO V2 est sorti en 2016 sous le nom de YOLO9000. YOLO V2 a utilisé darknet-19, un
réseau de 19 couches avec 11 autres couches chargées de la détection d’objets. YOLO V2
est conçu pour affronter le Faster R-CNN et le Single Shot multi-box Detector (SSD) qui ont
montré de meilleurs scores de détection d’objets. Les mises à jour de YOLO V2 par rapport
à YOLO V1 sont :
— Amélioration de la précision moyenne (mAP),
— Meilleure détection des objets plus petits,
— Détection améliorée dans les images de différentes tailles.

YOLOv3 :

YOLOv3 est un réseau de neurones dit totalement convolutionnel et utilise une autre
variante de Darknet. Cette architecture YOLO V3 se compose de 53 couches formées sur
Imagenet et de 53 autres chargées de la détection d’objets, ce qui représente 106 couches.
Bien que cela ait considérablement amélioré la précision du réseau, cela a également réduit
la vitesse de 45 fps à 30 fps. Les mises à jour de YOLO V2 par rapport à YOLO V1 sont :
— Prédiction améliorée du bounding box,
— Prédictions de classe plus précises.
51

YOLOv4 :

YOLOv4 était un modèle de détection d’objets en temps réel publié en avril 2020 qui
a atteint des performances de pointe sur l’ensemble de données COCO. Il fonctionne en
divisant la tâche de détection d’objets en deux parties, la régression pour identifier le posi-
tionnement de l’objet via des « boîtes de délimitation » et la classification pour déterminer
la classe de l’objet. Cette implémentation de YoloV4 utilise le framework Darknet.ce dernier
est un cadre de réseau neuronal open source écrit en C et CUDA.
Architecture du YOLOv4 :

F IGURE 31: L’architecture du YOLOv4

— La "backbone" est le “corps” du réseau, ce qui va permettre l’ensemble des décisions


prises par celui-ci.
— le “neck” a pour rôle d’extraire les features pertinentes de l’ensemble des couches de
la backbone, et de les combiner en features utiles à notre tâche de détection.
52

4.5.2 Architecture générale du système

F IGURE 32: Organigramme de l’application 2


53

4.5.3 Découpage train/test

L’étape suivante consiste à découper l’ensemble des exemples de la base de données en


plusieurs parties, une grande partie des exemples de données est destiné à la phase d’en-
trainement du modèle (données d’entrainement = « 100 images Bénigne » et « 100 images
Maligne »). La deuxième partie des données (données de test « 30 images Bénigne » , « 30
images Maligne » et « 30 images Normal » ) est utilisé pour calculer la performance et la
précision du modèle d’apprentissage afin d’observer et tester les résultats obtenus lors de
l’entrainement. Dans la phase de validation, une troisième partie des données peut être uti-
lisée pour valider les résultats du test.

4.5.4 Organisations du data

— LabelImg : LabelImg est un outil d’annotation d’image graphique et un objet d’éti-


quette du Bounding Boxes dans les images.
— Roboflow : Roboflow fournit tous les outils dont vous avez besoin pour convertir des
images brutes en un modèle de vision par ordinateur personnalisé et le déployer pour
une utilisation dans vos applications. Aujourd’hui, Roboflow prend en charge les mo-
dèles de détection et de classification d’objets.

4.5.5 L’entrainement des données

Google Colab :
Colab permet à n’importe qui d’écrire et d’exécuter le code Python de son choix par le biais
du navigateur. C’est un environnement particulièrement adapté au machine learning, à
l’analyse de données et à l’éducation. Training data personnalisées pour la détection d’ob-
jets nécessite de nombreux défis, mais avec le colaboratoire de Google, nous pouvons tirer
parti de la puissance du GPU gratuit pour former notre ensemble de données assez facile-
ment.

F IGURE 33: Google Colab


54

1. Etape 1 :
On clique sur Runtime dans la barre de menu, puis sur Modifier le type d’exécution.
On sélectionne GPU et on clique sur Enregistrer.

F IGURE 34: Notebook

2. Etape 2 :
On clone le darknet git sur la machine virtuelle Colab.

F IGURE 35: Cloner le darknet


55

3. Etape 3 :
On crée des dossiers « yolov4-tiny » et «training » dans le dossier yolov4-tiny. C’est ici

que nous enregistrerons nos « weights » entraînés (Ce chemin est mentionné dans le
fichier obj.data que nous téléchargerons plus tard) dans votre Drive .

On Crée et télécharge ces fichiers : (que nous avons besoin pour training yolo)
— Labeled Custom Dataset
— Custom .cfg file
— obj.data et obj.names files
— process.py file (pour créer train.txt et test.txt fichiers pour le training)

Pour diviser tous les fichiers image en 2 parties. 90% pour le train et 10% pour le test.

On télécharge notre Labeled custom dataset data.zip dans le dossier yolov4-tiny.

On télécharge le fichier yolov4-tiny-custom.cfg à partir du répertoire darknet/cfg,


apportez-y des modifications et chargez-le dans le dossier yolov4-tiny de votre Drive.
— batch=64 // subdivisions=16 // max_batches=6000 // steps=4800,5400
— classes=2 // filters=21 ( classes+5)*3

On crée nos fichiers obj.data et obj.names et les télécharger sur notre Drive .

F IGURE 36: Fichiers obj.names et obj.data


56

4. Etape 4 :
On doit monter notre google Drive afin que les données que nous avons téléchargé
sur le lecteur soient accessibles ici dans l’environnement de collaboration google.

F IGURE 37: Le google drive

5. Etape 5 :
On apporte des modifications dans le makefile pour activer OPENCV et GPU.

F IGURE 38: Modification du makefile


57

On exécute la commande make pour créer darknet.

F IGURE 39: Création du darknet

6. Etape 6 :
On copie les fichiers de notre drive dans le répertoire darknet :

F IGURE 40: Copie des fichiers


58

On exécute le script python process.py pour créer les fichiers train.txt et test.txt dans
le dossier de data.

F IGURE 41: Création des fichiers train.txt et test.txt

7. Etape 7 :
On télécharge yolov4-tiny pre-trained yolov4-tiny weights.

F IGURE 42: Téléchargement yolov4-tiny

8. Etape 8 :
On entraine les données.

F IGURE 43: Entrainement des données


59

Les Weights sont enregistrés sous le nom yolov4-tiny-custom_last.weights dans le


dossier yolov4-tiny/training sur notre Drive . (Le chemin que nous avons donné comme
sauvegarde dans le fichier "obj.data").

F IGURE 44: Weights obtenus


60

4.5.6 Application

Page d’accueil :
La page de démarrage est celle qui s’affiche lorsque vous lancez l’application, il contient une
petit description de notre application, le logo, et un bouton pour commencer les tests dans
un autre frame (page).

F IGURE 45: Page d’accueil

Page du Test :
Importer une image :
On peut importer une image en cliquant sur bouton "Importer" puis une fenêtre s’ouvre
et nous donne la possibilité de télécharger n’importe quelle image que nous voulons.

F IGURE 46: L’importation d’une image


61

Apres l’importation, l’image apparait dans le cadre Source, et aussi on peut modifier le
seuil de confiance puis on clique sur le bouton Tester pour faire le test .

F IGURE 47: Résultat de l’importation

Seuil de confiance :
On peut modifier le seuil de confiance en choisissant la valeur que l’on veut « entre 0 et
100 » afin d’avoir un haute précision de détection ou faible .
— On prend un exemple d’une image de type Benigne avec Treshold = 10

F IGURE 48: Exemple de type Benigne


62

— Même image mais avec Treshold = 90.

F IGURE 49: Changement du seuil de confiance

— On prend un exemple d’une image de type Maligne avec Treshold = 90

F IGURE 50: Exemple de type Maligne


63

— Quand le test du image est fini , un bouton « Télécharger » s’affichera pour télécharger
l’image de test .

F IGURE 51: Téléchargement du résultat


64

4.6 Conclusion
Dans ce projet, nous avons réalisé deux systèmes différents, le premier système est basé
sur la plateforme open source TensorFlow, nous utilisons une data-set contenant trois classes
des images radiographiques et leurs masques (bénigne, maligne et normale), le modèle de
ce système s’entraine sur l’image et sur le masque d’image. Dans le second système, nous
nous appuyons sur l’architecture YOLO pour reconnaître les objets, nous utilisons la même
data-set sauf que le modèle de ce système ne s’entraîne que sur les images radiographiques.
Pour remarquer la différence de performance du deux systèmes, nous avons pris une
partie de cette data qui contient 30 images de chaque classe et on a testé sur les deux sys-
tèmes, nous avons obtenu les statistiques suivantes :
— TensorFlow :

F IGURE 52: Statistiques du test pour TensorFlow

Pour la vitesse de performance, ne dépasse pas 3s pour chaque image.


— YOLO :

F IGURE 53: Statistiques du test pour YOLO

Pour la vitesse de performance, ne dépasse pas 5s pour chaque image.


65

Conclusion
À propos de notre projet :
Ce mémoire s’inscrit dans l’objectif d’aide au diagnostic du cancer du sein par les tech-
niques de l’intelligence artificiel. On s’est concentré dans notre travail sur la précision du
cancer dans le sein et puis classer le type du cancer, par un modèle d’une bibliothèque Open
Source "Keras" écrite en Python et s’exécute sur TensorFlow et les réseaux de neurones ar-
tificiels multicouches (Conv2D,MaxPooling2D,Dense et Flatten). Nous avons d’abord par la
gestion du projet. Ensuite, nous avons fourni un aperçu sur les propriétés fondamentales de
l’intelligence artificiel, l’apprentissage automatique et de réseau de neurones artificiels que
nous avons utilisé pour réaliser notre travail puis nous avons présenter la maladie de cancer
du sein et ensuite tracé une architecture générale du système tout en détaille ses principaux
composants. Nous nous sommes focalisés dans notre travail sur l’entrainement de notre
système sur une data-set, cette dernière examinent les images médicales du cancer du sein
à l’aide d’une échographie. L’ensemble de données d’échographie mammaire est classé en
trois classes : images normales, bénignes et malignes. Les images échographiques du sein
peuvent produire d’excellents résultats dans la classification, la détection et la segmentation
du cancer du sein lorsqu’elles sont combinées à l’apprentissage automatique. Cette solution
pourrait présenter un outil rapide et performant d’aide à la décision finale. La solution pro-
posée démontre de bonnes performances, néanmoins, des améliorations sur les données
et les algorithmes peuvent être apportés pour plus d’efficacité et notamment décisionnelle.
Enfin, ce travail ouvre les champs sur plusieurs travaux de futurs tels que l’amélioration du
modèle, la réduction des dimensions des entrées et l’amélioration de la performance.

Les contributions personnelles :

Grâce à ce projet, nous avons développé beaucoup de nouvelles connaissances et de savoir-


faire dans le domaine de l’intelligence artificielle, de l’apprentissage automatique, de l’ap-
prentissage profond, etc. En plus de cela, nous avons développé de nombreuses compé-
tences pour résoudre les problèmes auxquels nous sommes confrontés, quels qu’ils soient,
en n’abandonnant jamais et en cherchant des solutions partout. En outre, ce projet nous
a appris à travailler dur jour et nuit pour atteindre notre objectif au bon moment et à ne
jamais donner à la paresse une chance de s’immiscer dans notre esprit. Donc, pour résu-
mer, ce travail nous a fait nous sentir et agir non pas comme des étudiants, mais comme des
scientifiques, et nous a donné une vision de ce que nous voulons être dans le futur.
66

Webographie

— https ://github.com/mrdvince/breast-cancer-detection
— https ://medium.com/mytake/artificial-intelligence-explained-in-simple-english-part-
1-2-1b28c1f762cf
— https ://www.ionos.fr/digitalguide/web-marketing/search-engine-marketing/deep-
learning-vs-machine-learning/
— https ://www.fritz.ai/object-detection/ : :text=Object%20detection%20is%20a%20computer,
all%20while%20accurately%20labeling%20them.
— https ://medium.com/ml-research-lab/machine-learning-algorithm-overview-5816a2e6303
— https ://medium.com/@ODSC/overview-of-the-yolo-object-detection-algorithm-7b52a745d3e0
— https ://www.kaggle.com/aryashah2k/breast-ultrasound-images-dataset
— https ://medium.com/datadriveninvestor/deep-learning-in-a-nutshell-a600a27ab371
— https ://www.kaggle.com/tanvirrahmanornob/breast-cancer-detection
— https ://www.kaggle.com/ikramchamsi/segmentation-model-for-breast-cancer/edit
— https ://pysimplegui.readthedocs.io/en/latest/
— http ://cedric.cnam.fr/vertigo/cours/ml2/tpDeepLearning3.html
— https ://www.tensorflow.org/api-docs/python/tf/keras/layers/Conv2D
— https ://www.pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-
detection/
— https ://lucid.app/lucidchart/6a102a1f-7789-4dfd-aced-ff67166f3f51/edit ?page=0-0

Vous aimerez peut-être aussi