Académique Documents
Professionnel Documents
Culture Documents
Organisme d’accueil :
Province de Berkane
Réalisé par :
Manal Hachhach
2 ème année cycle d’ingénieur en génie informatique
Encadré par :
Mme. Nassima Tabloul
Chef de la Divion de la Gouvernance Numérique Intégrée
Province Berkane
Période de stage :
Du 3 Aout au 3 Septembre 2021
1
Remerciements
2
Finalement, nous remercions le directeur et les
enseignants de l’Ecole Nationale des Sciences
appliquées aussi bien d’El Hoceima que d’Oujda
pour la qualité d’enseignement et leurs efforts
fournis pour notre formation.
Introduction ………………………………………………………………………..…4
Chapitre 1 : Présentation de l’organisme d’accueil : …………………………….....5
1. Présentation de la province de Berkane……………………………………..…..5
3. Présentation de la DGNI……………………………………………………….....8
3. Problématique ……………………………………………………………………11
4. Outils …………..……………………………………………………………….…12
3
1. Fichiers ……………………………………………………………………………15
4.Test/résultats ……………………………………………………………………..19
Introduction
4
S'adapter à la vie de l’organisme : horaire, encadrement et
discipline.
Découvrir un secteur d'activité et un métier.
Avoir une première expérience concrète en passant de la
théorie à la pratique.
Le travail d'équipe permet de Valider les savoirs et les acquis
académiques.
Les origines :
La province de Berkane tire son nom de la ville de Berkane, elle est flongée au début
du 20siecle sur les anciennes ruines d'un village historiques, baptisée du nom de Sidi
Ahmed ABERKANE.
Situation Geographique :
La province de Berkane est située a ('extrême nord-est du Maroc. Elle est créée le 24
janvier 1994 et fait partie des provinces de la region de l'Oriental. Elle s'étend sur une
superficie de 1985 km2, soft 2.4% de Ia superficie de Ia region de l'Oriental. Elle est
limitée au Nord par la Méditerranée, l'Est par Ia frontière Maroc algérienne et Ia
Préfecture d'Oujda-Angad, a l'Ouest par la province de Nador at au Sud par Ia province
de Taourirt et Ia Préfecture d'Oujda-Angad..
La province de Berkane comprend une administration provinciale siégeant a Berkane et
des unités territoriales constituées de circonscriptions urbaines (pachaliks et
arrondissement) et rurales (cercles et caïdats).
D’un point de vue communal (découpage communal) cette Province est constituée de
16 Communes Territoriales :
5
✓ Commune Territoriale de Sidi Slimane
✓ Commune Territoriale d'Aklim
✓ Commune Territoriale de Saidia
✓ Commune Territoriale d'Ain Reggada
✓ Commune Territoriale d'Aghbal
✓ Commune Territoriale de Fezouane
✓ Commune Territoriale de Laatamna
✓ Commune Territoriale de Madagh
✓ Commune Territoriale de Chaouihia
✓ Commune Territoriale de Boughriba
✓ Commune Territoriale de Zegzel
✓ Commune Territoriale de Tafoughalt
✓ Commune Territoriale de Sidi Bouhria
✓ Commune Territoriale de Rislane
D’un point de vue administrative, la province de Berkane est organisée comme suit :
6
La province de Berkane plus précisément son secrétariat général comprend huit
divisions :
PHOOCOPIE
7
2. Présentation de la DGNI :
8
D’une autre manière, la division peut être représentée comme suit :
DGNI
S. de la Gouvernance
S. du suivi et S. de système de Numerique, des Systèmes
d'Evaluation de la Production et d'information, de
performance d'Exploitation communication et des
Archives
en place d'un si décisionnel pour les métiers clés de la province Gestion de la solution
d'archivage électronique Contribuer å la coordination et å l'unité de l'action public
territoriale
9
établissements…cet outil représente le cockpit de la province, et son moyen de prise de
décision par excellence
1.Description de travail
1. 1. Introduction générale
10
La reconnaissance faciale est un moyen d'identifier ou de confirmer l'identité d'un
individu à l'aide de son visage (authentifier).
C'est une technologie biométrique qui permet d’analyser, grâce à des algorithmes, les
traits de visages des personnes filmées ou photographiées et de les comparer à des
images stockées dans une base de données.
L’évolution dans trois domaines techniques ont joué un rôle majeur dans le
développement des techniques de détection /reconnaissance : les mégadonnées (big
data), les réseaux de neurones convolutifs (CNN) et les puissantes unités de traitement
graphique ou GPU.
Au cours de la dernière décennie en particulier, des systèmes de reconnaissance
faciale ont été déployés partout, et les données qu'ils recueillent ont aidé les entreprises
à perfectionner leur technologie.
Comment ça marche ?
2.Contexte du projet
Notre stage s’inscrit dans le contexte d’un chantier de grande envergure qu’est le ‘’e-
Berkane’’.
Un projet qui vise la modernisation et la digitalisation des processus administratifs
notamment les processus concernant l’usager et en particulier le citoyen.
A ce propos, le DGNI a conçu des solutions clés pour les services front office de la
province relevant de la ’’Division de l’accueil, des Réclamations, de l’orientation et des
affaires de citoyens ‘’.
11
Ces applications numériques permettent de gérer et d’identifier et d’historier tous les
citoyens qui fréquentent la province via leur CIN et ce en procédant à une recherche
par leur code CNIE ou pat lecture NFC.
Pour une meilleure fluidité de l’accueil, la DGNI a proposé une authentification par
reconnaissance faciale notamment pour les selfs services sur les pupitres mis à la
disposition des usagers au niveau de l’accueil.
3.Problématique
La reconnaissance faciale présente un problème difficile dans le
Domaine de l'analyse d'images et de la vision par ordinateur. La sécurité de
l’information devient très importante et difficile.
Les caméras sont actuellement courantes dans les aéroports, les bureaux, les
universités, ATM, banque et dans tous les endroits avec un système de sécurité.
Le système de reconnaissance faciale devrait pouvoir détecter un visage dans une
image. Il s'agit d'extraire ses caractéristiques et puis le reconnaître, Indépendamment
de l'éclairage, de l'expression, de l'illumination, vieillissement, transformations
(translater, faire pivoter et redimensionner l'image) ainsi que le positionnement du
visage, ce qui est une tâche difficile.
Définition du problème :
Le problème de reconnaissance faciale peut être formulé comme Suit :
Étant donné une image de visage d'entrée et une base de données des images faciales
d'individus connus, comment vérifier où déterminer l'identité de la personne dans
l'image d'entrée ?
4.Outils
4.1 Langages : Python
Le choix d’usage de python pour l’implémentation de notre modèle vient du fait qu’il est
l’un des langages de programmation les plus accessibles disponibles car il a une
syntaxe simplifiée et non compliquée, ce qui met davantage l’accent sur le langage
naturel. En raison de sa facilité d’apprentissage et d’utilisation, les codes python
12
peuvent être facilement écrits et exécutés beaucoup plus rapidement que les autres
langages de programmation
i. Introduction documentaire
OpenCV est la bibliothèque la plus populaire pour la vision par ordinateur (computer vision).
Écrit à l'origine en C/C++, il fournit désormais des liaisons pour Python.
OpenCV utilise des algorithmes d'apprentissage automatique (machine Learning) pour
rechercher des visages dans une image. Parce que les visages sont si compliqués comme c’est
déjà mentionné dans la problématique, il n'y a pas un test simple qui vous dira s'il a trouvé un
visage ou non. Au lieu de cela, il existe des milliers de petits modèles et caractéristiques qui
doivent être mis en correspondance. Les algorithmes divisent la tâche d'identification du visage
en milliers de tâches plus petites, chacune étant facile à résoudre. Ces tâches sont également
appelées classificateurs (classifiers).
L’apprentissage par arbre de décision désigne une méthode basée sur l'utilisation d'un arbre de
décision comme modèle prédictif. On l'utilise notamment en fouille de données et
en apprentissage automatique.
Dans ces structures d'arbre, les feuilles représentent les valeurs de la variable-cible et les
embranchements correspondent à des combinaisons de variables d'entrée qui mènent à ces
valeurs. En analyse de décision, un arbre de décision peut être utilisé pour représenter de
manière explicite les décisions réalisées et les processus qui les amènent. En apprentissage et
en fouille de données, un arbre de décision décrit les données mais pas les décisions elles-
mêmes, l'arbre serait utilisé comme point de départ au processus de décision.
C'est une technique d'apprentissage supervisé : on utilise un ensemble de données pour
lesquelles on connaît la valeur de la variable-cible afin de construire l'arbre (données dites
étiquetées), puis on extrapole les résultats à l'ensemble des données de test. Les arbres de
décision font partie des algorithmes les plus populaires en apprentissage automatique.
13
L' algorithme Face Landmark Detection proposé par Dlib est une implémentation de l' Ensemble
of Regression Trees (ERT) présenté en 2014 par Kazemi et Sullivan . Cette technique utilise
une fonctionnalité simple et rapide ( différences d'intensités de pixels ) pour estimer directement
les positions des points de repère. Ces positions estimées sont ensuite affinées avec un
processus itératif effectué par une cascade de régresseurs. Les régresseurs produisent une
nouvelle estimation à partir de la précédente, en essayant de réduire l'erreur d'alignement des
points estimés à chaque itération. L'algorithme est extrêmement rapide, en fait, il faut environ 1
à 3 ms (sur une plate-forme de bureau) pour détecter (aligner) un ensemble de 68 points de
repère sur un visage donné.
4.3 Packages
Numpy
NumPy signifie « Numerical Python». C'est un package pour l'analyse de données et le calcul
scientifique avec Python. NumPy utilise un objet tableau multidimensionnel et dispose de
fonctions et d'outils pour travailler avec ces tableaux. Le puissant tableau à n dimensions de
NumPy accélère le traitement des données. On l’utilisera par la suite pour transformer des
images en un tableaux (Array)
Pillow
La bibliothèque d'imagerie Python ajoute des capacités de traitement d'images à votre
interpréteur Python.
Cette bibliothèque fournit une prise en charge étendue des formats de fichiers, une
représentation interne efficace et des capacités de traitement d'image assez puissantes.
La bibliothèque d'images de base est conçue pour un accès rapide aux données stockées dans
quelques formats de pixels de base. Il devrait fournir une base solide pour un outil général de
traitement d'images.
Le module Pillow fournit les fonctions open() et show() pour lire et afficher l'image
respectivement. Pillow convertit d'abord l'image au format . png (sur le système d'exploitation
Windows) et le stocke dans un tampon temporaire, puis l'affiche.
14
Dlib
Dlib est une bibliothèque d'apprentissage automatique assez célèbre et impressionnante écrite
en C++, avec des API Python pratiques. Il implémente une large gamme d'algorithmes
d'apprentissage automatique qui peuvent être utilisés sur des plates-formes de bureau et
mobiles.
Pathlib
Ce module offre des classes représentant le système de fichiers avec la sémantique appropriée
pour différents systèmes d'exploitation. Les classes de chemins sont divisées en chemins purs,
qui fournissent uniquement des opérations de manipulation sans entrées-sorties, et chemins
concrets, qui héritent des chemins purs et fournissent également les opérations d'entrées-
sorties.
Json
La bibliothèque json peut analyser JSON à partir de chaînes ou de fichiers. La bibliothèque
analyse JSON dans un dictionnaire ou une liste Python. Il peut également convertir des
dictionnaires ou des listes Python en chaînes JSON.
Pymongo
PyMongo est une distribution Python contenant des outils pour travailler avec MongoDB et est
la méthode recommandée pour travailler avec MongoDB à partir de Python.
Chapitre 3 : Implémentation
15
1. Fichiers
Nous avons commencé tout d’abord par créer un nouveau dossier que nous avons nommé
Face-recognition qui va contenir par la suite les dossiers et les fichiers suivants :
Le dossier « known_faces » contient des images, que chacun d’eux est nommé
par le CIN des personnes qu’on veut reconnaitre.
Attendance2.csv est un fichier excel qui contient les informations des citoyens
dont on a utilisé pour l’affichage des résultats de la reconnaissance suivi d’une date et
d’une heure marquant le passage du citoyen.
2. Installations et importations :
16
3. Explication
méthodique du code :
Encoder le visage :
Pour encoder les images, nous avons utilisé la fonction encode_face qui va détecter le
visage par face_detector de dlib, par conséquent ça va nous retourner une lise des
coordonnées des visages sur l’image, donc nous allons envoyer l’image et la
localisation des visages dans le predictor shape 5, par suite avec la fonction
compute_face_descriptor qui va calculer un vecteur de 128 de dimension qui va décrire
le visage.
Avec shape_to_np nous récupérons les 5 points qui permettent de décrire le visage
sous forme de coordonnées pour pouvoir les afficher.
17
Reconnaissance du visage :
Nous avons aussi une tolérance de 0.6 , si la soustraction est inférieure à 0.6 , nous
considérons que c’est le même visage , plus que c’est proche de 0, plus les visages
sont similaires , puis nous récupérons l’index du nom.
18
Si le visage détecté est trouvé, nous chercherons dans la base de données qui est
MongoDB les informations du citoyen en utilisant le CIN comme étant une clé de
recherche pour les affichées, sinon (si le visage détecté n’est pas connu) nous
demandons au citoyen d’insérer ses données.
La fonction renvoie une liste de rectangles dans lesquels elle pense avoir trouvé un
visage. Ensuite, nous bouclerons sur l'endroit où elle pense avoir trouvé quelque chose,
nous ajouterons dans une place réservée sous le rectangle l’identifiant du citoyen qui
est le CIN.
19
4.Tests /résultats:
Lors de la réalisation de notre projet, nous avons répartis le travail en 3 cas possibles
afin de satisfaire les besoins exprimés.
Citoyen connue :
Par rapport à cette recherche nous avons nommé la photo du citoyen par son CIN afin
de trouver un CIN identique à celui qui existe déjà dans la base.
20
Citoyen inconnue :
Veut dire que les informations et la photo n’existent pas, au moment où le visage
détecté par la camera est inconnue, s’affichera dans le terminal des information à
compléter pour les insérer dans la base de données, ainsi que la camera capture son
visage et l’enregistre dans le dossier known_faces selon son CIN.
Cas particulier :
Si les informations du citoyen existe déjà dans la base de données mais sa photo
n’existe pas, donc ça va capturer son visage automatiquement sans insérer ses
informations .
21
Défis rencontrés/ Solution apportées
1. Problèmes techniques
Nous avons rencontré quelques problèmes lorsque nous avons essayé d'importer des
modules ou des bibliothèques, car même si nous les avons installés, l'éditeur n'a pas pu
les reconnaître, et tant de problèmes similaires, mais nous avons fini par les résoudre
avec l'aide offerte de notre encadrante, qu’elle nous a appris que nous devons
comprendre la racine de ce genre de problèmes, donc nous fournirions une solution
radicale, et non des Solutions prothétiques et provisoires car ils se révéleront à
nouveau plus tard.
2. Faible précision
Lors des premiers essais nous avons obtenu d'excellents résultats pour notre modèle
pendant le processus d'apprentissage, mais lors de l'utilisation de l'ensemble de test
nous avons obtenu une précision bien faible, et parfois même erronée : tout se passe
mal. Et le plus grand défi, c'était que nous ne savions pas où ça s'était mal passé. Ce
qui nous a fait penser à tous les facteurs qui affectent la précision du modèle, revérifier
chacun d’eux, modifier les mesures, et revérifier à chaque fois si cela améliore la
précision ou non, nous avons commencé par effectuer quelques traitements sur les
images, comme les redimensionner, nous avons également vérifié les données que
nous utilisions pour entraîner le modèle, était-ce assez de données ? les images
étaient-elles claires ? etc. jusqu'à ce que la précision commence à s'améliorer.
22
Conclusion
En conclusion, ce stage a été très utile pour nous. C’était une expérience
excellente et enrichissante.
Nous pouvons dire en toute sécurité que notre compréhension de
l'environnement de travail s'est considérablement améliorée et notre esprit
d’équipe s’est bien concrétisé au sein de la DGNI. Cependant, nous
pensons qu'il y a certains aspects du travail que nous aurions pu mieux
faire et sur lesquels nous devons travailler. Nous avons appris d'acquérir
plus de confiance pour essayer de nouvelles idées et appliquer de
nouveaux principes, les mettre à jour ou les modifier pour les adapter aux
besoins professionnels, même s'ils semblent différents et parfois difficiles,
nous avons appris à nous laisser échouer et à réessayer librement parce
que c'est ainsi que la connaissance est acquise, et que rien n’est possible.
D’autre part, nous avons réalisé que nous aurions pu terminer le travail
plus tôt que nous ne l'avons fait. De plus, les parties techniques du travail
étaient un peu imparfaites et nous m'avons demandé à plusieurs reprises
de les corriger.
23
Documentation
https://www.w3schools.com/python/default.asp
https://www.geeksforgeeks.org/
https://stackoverflow.com/
Fin du rapport .
24