Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Supervisé par :
Realisé par : M. ALAOUI FDILI Othmane
SALIMI Wissal
CHAMSI Ikram Tuteur :
NMILI Abdelali LEBDAOUI Meryam
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
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
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.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
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.
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. . .
— 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.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.
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.
— 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.
— 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
C- Reinforcement 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
"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.
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
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
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
— 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
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
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 :
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.
— le comptage de foule :
— La détection de visage :
3.1 Python
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
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.
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.
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 :
— 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).
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.
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.
— 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.
Résultat
nous pouvons voir les résultats en cliquant sur le bouton "comparer" et il l’affichera en des-
sous de l’image.
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.
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.
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 .
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é.
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 :
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.
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.
2. Etape 2 :
On clone le darknet git sur la machine virtuelle Colab.
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 crée nos fichiers obj.data et obj.names et les télécharger sur notre Drive .
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.
5. Etape 5 :
On apporte des modifications dans le makefile pour activer OPENCV et GPU.
6. Etape 6 :
On copie les fichiers de notre drive dans le répertoire darknet :
On exécute le script python process.py pour créer les fichiers train.txt et test.txt dans
le dossier de data.
7. Etape 7 :
On télécharge yolov4-tiny pre-trained yolov4-tiny weights.
8. Etape 8 :
On entraine les données.
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).
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.
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 .
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
— Quand le test du image est fini , un bouton « Télécharger » s’affichera pour télécharger
l’image de test .
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 :
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.
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