Rapport final de notre projet - Exploitation d`un réseau de caméras

Transcription

Rapport final de notre projet - Exploitation d`un réseau de caméras
Université de Cergy-Pontoise
Master 1 SI
Projet :
Exploitation d'un réseau de caméras
intelligentes
Etudiants :
Christelle DESCHAMPS
Landry VANNIER
Encadrants :
Pierre ANDRY
Ghilès MOSTAFAOUI
SOMMAIRE
I. ENVIRONNEMENT DE TRAVAIL / LE RESEAU PHYSIQUE
1.Les caméras
2.Les réseau
3.Les caméras en réseau
4.Configuration de notre réseau
II. TRAITEMENT DE L'IMAGE
1.Général
2.Notre système de détection
III. L'AUTO ORGANISATION DU RESEAU
1.Choix du réseau
2.Apprentissage implémenté
3.Interprétation des résultats
4.Suivis
IV. PRINCIPE DE FONCTIONNEMENT
1.Initialisation du Réseau
2.Apprentissage
3.Interprétation des résultats de l'apprentissage
4.Suivi
V. EXPERIMENTATION
1.Simulation
2.Amélioration à apporter
VI. ORGANISATION
ANNEXES
•User Guide of system
•Guide installation du routeur
•Guide du site
•Principe de fonctionnement caméra
•Carte cognitive
•Bibliographies
INTRODUCTION
Le projet qu’il nous a été demandé de réaliser consiste en l’exploitation d’un réseau de caméras
intelligentes. Notre réseau devra permettre à l’utilisateur (entreprise ou organisme ayant disposé
les caméras dans leur locaux) de détecter puis suivre un homme circulant dans les lieux couverts
par les caméras.
L’idée donc de ce projet consiste en la mise en place d’un système intelligent puisque le réseau
devra, de lui même, identifier les différentes caméras le composant et leur proximité afin de savoir
qu’elles sont les caméras pouvant voir la personne à un moment donné, et aux suivants.
Pour cela nous avons donc dû étudier ce qu’était l’auto-organisation et tous les systèmes préexistants qui y sont liés et, en particulier, les cartes auto-organisatrices de Kohonen suggérées dans
le sujet. Nous avons également fait des résumés des bibliographies sur les réseaux de caméras et
sur les cartes cognitives.
Dans un premier temps nous vous présenterons l'environnement de travail du projet (matériel et
mise en place du réseau). Dans une deuxième partie l'étude et le choix de son auto-organisation
puis notre système de détection d'image. Dans une quatrième partie nous verrons l'aboutissement
de toutes ces études : le fonctionnement de notre système fini puis quelques expérimentations
faites révélant les problèmes rencontrées. Dans une dernière courte partie, vous trouverez un
diagramme de Gantt présentant le découpage des tâches et la durée de chacune.
I. ENVIRONNEMENT DE TRAVAIL / LE RESEAU PHYSIQUE
1. Les caméras
a) Général
Caractéristiques d’une caméra : le nombre d'images capturées par seconde, la résolution
et les types de résolutions, le type de connexion, la distance focale, type d'image (couleur
ou noir et blanc), le poids, la taille et le type de capteur.
Pour chaque situation, il faut identifier le type de caméras dont on a besoin. Nous allons
donc étudier les caractéristiques des caméras qui existent puis motiver notre choix.
Pour notre projet, les caméras servent uniquement à la détection de mouvement.
La distance focale et l'angle de vue vont entrer en compte. En effet, si la caméra a un
angle de vu petit, elle ne détectera qu’un mouvement que dans une petite zone de l'espace.
En d'autres termes, il ne faut pas mettre une caméra avec un petit angle de vue dans une
grande pièce. Mais, on peut mettre plusieurs caméras et ainsi avoir plus de prises de vues.
C'est un choix aussi bien économique que stratégique à faire.
D'autres caractéristiques doivent entrer en compte, la résolution et la netteté de l'image.
Une image avec beaucoup de bruit ne sera pas facile à exploiter. Tandis qu'une image
avec une grande netteté et sans bruit sera plus facile à traiter.
Un autre problème peut alors survenir, une image très grande, c'est-à-dire avec une
résolution très importante, pour entraîner des temps de traitement beaucoup trop long. En
effet, il sera plus rapide de travailler avec une image de basse résolution que l'inverse.
Une image couleur demande plus de temps de traitement, car elle contient plus
d'informations. En effet, elle contient des informations pour coder l'intensité dans 3
couleurs tandis que les images en niveaux de gris ne contiennent qu'un codage pour une
seule intensité.
Le bruit est un problème récurrent dans les caméras. L’étude des sources de bruit peut
permettre de comprendre pourquoi ils apparaissent. Comme ce sont des capteurs
photoélectriques, il y a donc une conversion qui est faite en intensité lumineuse et la
tension de sortie. Il apparaît alors qu’un problème peut apparaître dans cette conversion.
Un autre problème peut venir par des signaux d’amplitude trop élevée. Ce qui conduit à
un phénomène d’éblouissement. En d’autres termes, cela se traduit par un
emmagasinement trop élevé des condensateurs qui vont écouler la charge dans les cellules
voisines. C’est ce qui est appelé l’effet halo ou traînée.
D’autres types de bruits existent, comme le bruit photonique qui est dû à l’arrivée
aléatoire des photons. Le bruit de remise à zéro est créé par le transistor Mos qui établit la
tension de référence aux bornes du condensateur de conversion des charges collectées. En
ce qui concerne l’amplificateur de sortie, il existe deux sources de bruit : le bruit blanc et
le bruit en 1/f.
Utilisant des caméras numériques dans notre projet vous en trouverez le principe de
fonctionnement en annexe 4.Principe de fonctionnement d'une caméra numérique
b) Notre matériel
Nous disposons de WebCam Logitech, QuickCam Pro 4000, Dont les caractéristiques
sont les suivantes : port USB2.0, taille des images maximum : 640*480 et débit d'images
:30 images/sec.
C’est une caméra qui correspond bien à notre projet, car la résolution permet de
travailler avec de bonnes images, le débit des images est très bon et le rendu de l’image
est tout à fait convenable. Elle possède toutes les caractéristiques pour mener à bien notre
projet.
2. Les réseaux
a) Général
Les réseaux sont constitués de plusieurs machines reliées entre elles, cela permet une
communication entre ces machines. Il convient d’étudier la façon dont elles sont reliées
entre elles et comment elles communiquent.
Le support physique est le moyen de communication utilisé pour que deux machines
puissent dialoguer. Il en existe de deux natures : les liaisons avec et sans fil. Les liaisons
avec fil sont nombreuses et très répandues dans les réseaux. Il s’agit de relier les
machines par des câbles : paire de fils torsadés, câble coaxial et fibre optique. Dans
chaque cas, il y a un connecteur sur toutes les machines qui permet de les relier entre elles
par un fil. Les réseaux sans fil sont totalement différents. La communication entre les
machines se fait grâce à des ondes hertziennes. Le type de liaison sans fils le plus connu
et le plus utilisé est le Wifi, mais il existe d’autre type de liaison sans fil comme les
liaisons infra-rouge et le Bluetooth. C’est une technologie qui n’est pas très répandue
encore, mais qui est de plus en plus utilisée. Le principal avantage du Wifi est qu’il n’y a
plus de fils. Ce qui veut dire qu’il y a plus de problèmes liés aux câblages du réseau.
Ainsi, la liaison entre les machines est plus simple et moins encombrante. Mais ce type de
connexion apporte un inconvénient majeur, il est plus simple d’écouter les messages
envoyés. C’est-à-dire, que n’importe qui peut intercepter les communications tant qu’il se
trouve dans la zone de portée de l’émetteur. Donc, ça pose un problème de sécurité. C’est
pour cela que les réseaux Wifi ne sont pas encore généralisés.
Les techniques de transfert sont : la commutation de circuits, le transfert de paquets, le
transfert de trame et de cellules et les techniques de transfert hybrides. Ces différentes
techniques permettent de communiquer entre les machines.
Le principe de base de tous les réseaux est : une machine est reliée à une autre. Cette
machine veut dialoguer avec cette dernière. Soit, elle la connaît, c’est-à-dire qu’elle
connaît son adresse, soit, elle ne la connaît pas et là elle envoie alors son message dans
tout le réseau en attendant une réponse de la machine réceptrice. Il faut donc coder le
message suivant le protocole utilisé, propre au réseau. En général, le nom de l’expéditeur
et le nom du destinataire sont codés dans le message avec le contenu du message. Ce qui
permet au destinatair de pouvoir répondre à l’expéditeur.
Dans notre projet, nous avons à considérer un réseau de type Wifi (Wireless Fidelity).
Nous allons donc voir quelques caractéristiques des réseaux Wifi. La portée des ondes
varie suivant les caractéristiques du lieu. C’est-à-dire, que l’on peut aller jusqu’à 50m
dans un environnement de bureau. Une limite de 500m peut être atteinte avec la condition
qu’il n’y ait aucun obstacle entre le récepteur et l’émetteur. Toutefois, cette limite peut
être franchie si l’on utilise une antenne directive et là on peut atteindre jusqu’à quelques
kilomètres. Mais dans la pratique, les stations ont une portée d’environ 20m voir moins si
les ondes doivent franchir un mur porteur.
Le protocole utilisé par le Wifi est le protocole 802.11, composé essentiellement de
deux sous-couches : LLC (Logical Link Control) et MAC. Le rôle de la couche MAC est
de faire en sorte que les terminaux écoutent la porteuse avant d’émettre. Si la porteuse est
libre, le terminal émet, sinon il se met en attente.
La méthode d’accès est appelée DCF (Distributed Coordination Function). Le DCF a été
conçu pour prendre en charge le transport de données asynchrones, transport dans lequel
tous les utilisateurs qui veulent transmettre des données ont une chance égale d’accéder
au support.
Pour palier aux problèmes de sécurité exposés plus haut, le groupe de travail IEEE
802.11 a mis en place le protocole WEP (Wired Equivalent Privacy), dont les
mécanismes s’appuient sur le chiffrement des données et l’authentification des stations.
Le problème, c’est que ce protocole n’est pas toujours implémenté et donc tous les
réseaux Wifi n’offrent pas la même qualité de sécurité. Le système de cryptage provient
de l’algorithme de RSA, un système de chiffrement très utilisé car il garantit un très bon
niveau de sécurité. Les systèmes d’authentification utilisés sont Open System
Authentication et Shred Key Authentication. Seul le second offre une véritable sécurité
car il utilise un mécanisme de clé secrète partagée.
Il existe 3 normes à 802.11 : a, b et g. Ce qui est différent, ce sont les débits.
- Le 802.11a : norme pour les réseaux locaux utilisant comme fréquence le 5 Ghz pour
des transferts jusqu´à 54 Mbps.
- 802.11b : autre norme pour les réseaux locaux, utilisant le 2,4 Ghz avec une bande
passante maximale de 11 Mbps.
- 802.11g : norme la plus aboutie pour les réseaux étendus, exploite le 2,4 Ghz avec des
débits maximums de 54 Mbps. Elle est amenée à remplacer les deux normes précédentes.
Pour faire un réseau Wifi, il faut des cartes Wifi qui permettent de relier deux machines
l’une à l’autre. Pour faire un réseau plus complexe, il faut ajouter un routeur Wifi. Les
stations vont communiquer entre elles via le routeur. C’est lui qui va faire la liaison entre
les machines. Comme la distance entre les machines ne doit pas dépasser 20m pour qu’il
y ait une bonne connexion entre toutes les machines, il faut rajouter des routeurs de telle
sorte qu’il n’y ait jamais d’interruption entre les connections.
b) Matériel et mise en place
Pour notre projet, nous serons amenés à utiliser des routeurs Wifi. Ce routeur est WL500g deluxe de ASUS, dont voici la description faite par ASUS :
Complet et facile d'utilisation il offre des taux de transferts de 54 Mbps et toutes les
fonctions attendues dans un routeur WLAN, dont le serveur DHCP, le partage d'IP, le
Firewall, le VPN pass through, etc. Pour garantir la meilleure sécurité WLAN, il intègre
aussi un puissant WPA et un Firewall WLAN unique pour protéger les données du
WLAN. Cette solution futée intègre également des fonctions de "plug-and-share"
(brancher et partager) via le port USB 1.1.
En accord avec le lancement officiel du standard 802.11g, le WL-500g supporte cette
technologie offrant une connectivité sans fil des plus rapides tout en assurant une
compatibilité avec les périphériques sans fil 802.11b. Mais si votre environnement
WLAN est exclusivement 802.11g, vous pouvez passer en mode "802.11g only "pour des
performances de sortie encore meilleures.
Mais le WL-500g ne se contente pas d'être un simple routeur destiné au partage de
connexion Internet, il est aussi doté d'un port USB1.1 supportant par exemple un disque
dur externe USB... branchez-le sur le routeur et vous pourrez créer facilement un petit
serveur FTP destiné au partage de données sur votre réseau. Il peut aussi être configuré
en serveur d'impression via le port USB ou le port imprimante intégrée. Autre utilisation
possible, l'ASUS WL-500g peut supporter une webcam USB pour devenir un centre de
vidéo-surveillance.
Ce routeur offre tous les avantages dont nous avons besoin pour notre projet. Son taux
de transfert offre de bonnes perceptives. Son aspect de routeur permet donc une bonne
communication, c’est-à-dire qu’il va être capable de transmettre des informations des
autres caméras à des caméras plus distantes. Ce qui va permettre de surveiller une zone
supérieure aux 20m de portée optimale du Wifi. Ainsi, de vastes zones pourront être
mises en surveillance. Dès lors que l'on place des relais tous les 15/20m. Le routeur a été
prévu pour faire de la vidéo surveillance par ASUS. Ce qui a pour conséquence une
facilité à installer une webcam USB sur le routeur.
3. Les caméras en réseau
Une définition des réseaux de caméras est : caméra numérique avec serveur Web intégré,
possédant sa propre adresse IP. De plus, cette caméra est équipée d’une connexion réseau
direct, lui permettant de fonctionner de manière totalement autonome, c’est-à-dire sans
ordinateur. Cela a pour but de capturer des images vidéo et de les diffuser en temps réel sur
un réseau IP, comme Internet. En plus de la diffusion par Internet, la caméra réseau est
souvent destinée à des applications de contrôle d’accès et de surveillance distante et cela
aussi bien en milieu intérieur qu’en milieu extérieur.
Plusieurs systèmes sont commercialisés pour permettre à des entreprises ou des particuliers
de faire de la surveillance vidéo. La surveillance est au coeur des réseaux de caméras, que se
soit pour une chaîne de production ou une éventuelle effraction ou autre.
Mais pourquoi mettre les caméras en réseau ? La réponse est simple, une seule caméra ne
possède qu’un angle de vue très réduit. Alors pour surveiller une chaîne de production, il est
souvent nécessaire d’avoir plus d’une caméra. En effet, ce qui peut être apporté par plusieurs
caméras, c’est la vision en 3D. Si pour certains cas, une seule caméra peut résoudre le
problème, en général, plusieurs caméras sont nécessaires pour surveiller de grands espaces
ou pour obtenir une vision en stéréo.
Donc, le but des réseaux de caméras peut être de surveiller de grandes zones. C’est à dire,
que l’on va relier plusieurs caméras ensemble pour que l’on puisse surveiller d’un seul poste
de contrôle les différents lieux. Dans cette perspective, les réseaux de caméras ont été
implantés dans divers endroits. Pour la surveillance du trafic automobile, les caméras servent
à compter les voitures qui passent. La surveillance des personnes, c’est-à-dire, de mettre des
caméras à des points stratégiques dans une ville pour surveiller les personnes qui passent.
Des caméras en réseaux utilisées pour l'imagerie 3D sont les caméras servant pour la «
motion capture ». En effet, dans cette perspective, les caméras sont reliées entre elles afin
que l’on puisse construire une image 3D. Une personne est alors habillée avec des
marqueurs et les caméras filment toutes la même chose, sous divers angles permettant ainsi
une reconstruction d’images en 3D. Le principe est que les caméras sont tout d’abord
calibrées. C’est à dire que chaque caméra filme une région bien définie de l’espace. A l’aide
d’un gabarit, on peut régler les caméras pour que chacune d’entre elles filment le gabarit en
entier. Ensuite, grâce au point situé sur la personne qui est filmée, on peut recouper les
images par triangulation.
Des exemples de réseaux de caméras sont nombreux dans le monde. Il faut savoir qu’il y a
environ 25 millions de caméras de surveillance vidéo réparties dans le monde entier. La
Grande-Bretagne compte à elle seule 2,5 millions soit un dixième des caméras dans le
monde. A tel point que l’on estime à 300 fois par jour le nombre de fois qu’une personne se
fait photographier en se baladant à Londres. De plus, la Grande-Bretagne va lance une
surveillance des déplacements des véhicules. Ce réseau qu’elle est sur le point de lancer ou
qui a été lancé depuis peu de temps, va faire de la Grande-Bretagne le premier pays au
monde à enregistrer les déplacements de tous les véhicules sur les routes. En fait, c’est au
moins 35 millions de plaques d’immatriculations qui vont être enregistrées par tout le réseau
de caméras. Ces caméras étant reliées à un système GPS, il est alors facile de dire où se
trouvait une voiture et de la suivre durant tous ses déplacements. C’est d’ailleurs le but de ce
réseau, permettre à la police de retrouver les déplacements d’une voiture conduits par un
individu recherché.
D’autres types de réseaux ont été mis en place par des municipalités comme Lyon. La ville
a mis en place un réseau de caméras permettant de faire des photos d’identité à 300 mètres.
Les caméras ont une mobilité sur 360° et permettent donc d’identifier des individus
commettant des crimes ou délits.
Plusieurs projets sont en cours de développement. Ericsson, groupe suédois de téléphonie,
cherche à associer la vidéo à la géolocalisation. C’est-à-dire, qu’il veut permettre aux
utilisateurs de téléphone portable de se connecter aux réseaux de caméras routières afin d’en
vérifier le trafic.
Deux remarques apparaissent alors, la première est que les réseaux de caméras sont en
plein essor. Le marché est en pleine expansion. Cela est dû aux divers événements liés aux
divers actes terroristes dans le monde et cela afin de protéger la population.
Mais, et cela constitue la seconde remarque, toutes ces caméras ne nuisent-elles pas à la vie
privée à laquelle chacun le droit ? Cette dernière remarque constitue de large débat dans la
scène politique.
4. Configuration de notre réseau
Pour notre projet, nous utiliserons donc des webcams reliées chacune, via le port USB 2,
à un routeur Wifi. Ce sont des équipements simples et faciles à mettre ensemble. C'est-àdire, que le routeur va directement reconnaître la caméra sans qu'il soit nécessaire d'installer
un autre pilote dans le routeur.
Bien entendu, dans une autre perspective, nous pourrions fusionner ces deux équipements
pour créer un ensemble unique. Mais cela serait plutôt une perspective de produit fini et
commercialisable.
photographie d'un routeur et d'une webcam.
Pour débuter, nous avons fait un réseau avec un routeur branché au pc via ethernet. Ce
routeur est dit « central », car il communique avec tous les autres routeurs en Wifi et avec le
pc via ethernet. C'est ce routeur qui sera destiné à recevoir le serveur du système dans une
optique embarquée. Le serveur est un programme qui va écouter les autres routeurs et
ensuite traiter ces informations, c'est-à-dire, qu’il va faire l'apprentissage du réseau puis il
servira pour le suivi. Une fois embarqué, les résultats seront accessibles via une page web du
routeur.
schéma de la configuration de notre réseau.
Le routeur « central » connaît les adresses MAC de tous les autres, et tous les autres
connaissent son adresse afin de pouvoir lui transmettre les messages. Pour notre projet, nous
avons configuré le réseau sans fils avec l'option WDS. dans le cas où l'on utilise une clé sans
fil ou une carte wifi, il conviendrait de modifier l’option WDS en hybrid.
Si l'on devait placer des relais (dans un couloir de plus 20m) il faudrait également voir à
configurer les routeurs qui servent de relais : leur donner les adresses de toutes les caméras
qui sont à moins de 20m (ou par exemple de toutes les caméras situées à gauche et à moins
de 20m et que les caméras concernées connaissent l'adresse du routeur relais. Un routeur
pourrait couvrir 40m quasiment de part et d'autre, attention à la distance entre relais : elle ne
doit pas dépasser 20m puisque, comme dit précédemment, c'est la distance optimale !
Les routeurs avec leurs caméras servent à faire la détection de mouvement. Les caméras
qui détectent un mouvement le transmettent au serveur via le routeur. Le serveur va recevoir
les différentes informations envoyées par les routeurs. Nous sommes donc dans une
configuration centralisée. Tout est centralisé par le serveur. Le serveur est soit sur le PC,
c’est ce que nous avons fait. Il peut aussi être embarqué dans un routeur. Ensuite, les
différentes informations telles que la détection de mouvements, les caméras hors-service ou
en service sont visibles depuis une page web. Pour le PC, nous avons utilisé des pages en
PHP. Dans le cas du routeur, il faut convertir les pages PHP en ASP. En effet, le routeur
possède un serveur ASP seulement.
Une autre architecture peut être utilisée, une architecture décentralisée. C’est à dire, qu’au
lieu que tous les routeurs communiquent avec un seul serveur, nous mettons en place
plusieurs serveurs qui auraient pour tâche de centraliser l’information de plusieurs routeurs.
Ensuite, ces routeurs communiquent au routeur qui fait l’apprentissage et le suivi. C’est une
solution très intéressante dans le cas où l’on travaille avec beaucoup de routeurs. Ces
routeurs relais reçoivent des informations venant d’un certain nombre de routeurs. Il les
envoient alors soit à un autre routeur relais soit au serveur directement. Ainsi, nous pouvons
utiliser une grande quantité de routeurs sans saturer les capacités d’écoute du serveur.
Comme toute configuration décentralisée, si un routeur relais tombe en panne, tous les
routeurs qu’il avait en charge ne sont alors plus considérés.
II. TRAITEMENT DE L'IMAGE
1.Général
Suivant l’utilité des caméras, il convient d’en appliquer un traitement spécifique. Une
caméra qui sert à prendre des photos à intervalles réguliers et une caméra qui doit détecter la
présence d’un objet bien précis donnent lieu à des traitement d’images différents et très
spécifiques. De plus, pour des caméras de surveillance qui sont observées par un gardien, on
n’a pas forcément besoin de traitement d’image: il n’est pas nécessaire de mettre en place
des automatismes. Toutefois on peut seconder un homme et améliorer la surveillance grâce à
des traitements et/ou des mises en place de système de traitement d’images.
Tout d’abord, une caméra envoie un flux vidéo, c’est-à-dire plusieurs images par seconde.
Le but va donc être de traiter ces images une par une ou plusieurs à la fois et cela de façon
cyclique. C'est ici que l'on parle de caméras intelligentes : il convient alors de parler des
traitements qui peuvent être apportés. En effet, dans la surveillance, qui est le domaine de
prédilection des réseaux de caméra, il faut un homme qui regarde sans relâche des écrans
vidéo dans l’espoir de trouver ce qu'il est censé surveiller. L’apport du traitement d’images
permet une meilleure surveillance. En effet, un homme qui regarde un écran sans relâche se
fatigue très vite. En revanche, lorsqu’il est aidé par un système de traitement d’images, il
n’est plus nécessaire de regarder l’écran sans arrêt. Un signal sonore, par exemple, peut
permettre de prévenir la personne.
Donc, tout le problème va être de mettre en place un système qui va aider un vigile dans la
surveillance des mouvements. Le vigile n'aura donc plus à regarder un moniteur en
permanence mais il sera prévenu dès qu'il y aura un mouvement.
Ce qui nous intéresse pour notre projet, c’est la détection de mouvements, il y a plusieurs
algorithmes. Nous en avons testé quelques uns :
a) Différence d'images consécutives
sommation de n images => I(t-1)
sommation de n images suivantes => I(t)
puis différence d'images : Idiff = I(t-1) – I(t)
ensuite on applique un traitement sur cette image : binarisation avec un seuil.
on peut alors compter la quantité de mouvements.
on dit alors qu'il y a un mouvement seulement si cette quantité est supérieur à un seuil.
l Point positif :
La détection est simple à mettre en place. la complexité en terme de temps est
assez bonne : une boucle for pour la sommation des n images et une autre boucle
for pour additionner les pixels des n images. on répète ça deux fois pour la première
itération puis une seul fois pour les autres itérations. puis il y a une autre boucle for
pour la binarisation. et enfin une condition pour dire s'il y a eu un mouvement. au
final, on parcourt 2n+1 fois la taille de l'image pour la première itération puis n+1
fois la taille de l'image.
La détection donne de bon résultat dans le sens où lorsqu’une personne passe
devant la caméra, le programme donne la bonne réponse.
● Point négatif :
En visualisant l'image binaire, on s'aperçoit qu'il y a juste des “contours” et pas la
personne en entière. ce qui pose comme problème : pour détecter un mouvement, il
faut un petit seuil de quantité de mouvement pour être détecté.
b) Image de référence
On enregistre une image de référence : cette image doit être le fond vide du couloir ou
de la pièce à surveiller. Cette image est prise au départ et n'est jamais modifiée. => Iref
Sommation de n images => I(t)
Puis différence d'images : Idiff = I(t) – Iref
Ensuite on applique un traitement sur cette image : binarisation avec un seuil.
On peut alors compter la quantité de mouvements. On dit alors qu'il y a un mouvement
seulement si cette quantité est supérieur à un seuil.
●
●
point positif :
On n'a plus le problème précédent. on a une image binaire avec une grande
quantité de mouvement, on voit la personne entière. On a la même complexité en
terme de temps tout le temps : (n+1)*taille de l'image.
point négatif :
Il est impossible de déplacer la caméra sinon le programme va détecter un
mouvement tout le temps après le déplacement. Cela pose problème aussi pour
tout ce qui est changement de lumière, déplacement d'objet, ou plus généralement,
dès qu'on modifie l'espace vu par la caméra.
c) Image de référence avec remise à jour
On enregistre une image de référence : cette image est prise au départ. =>Iref(t)
Sommation de n images => I(t)
Ensuite on applique un traitement sur cette image : binarisation avec un seuil.
On met à jour l'image de référence avec I(t) : Iref(t+1) = (alpha)*I(t) + (1-alpha)*Iref(t)
alpha flottant compris entre 0 et 1.
On peut alors compter la quantité de mouvements.
On dit alors qu'il y a un mouvement seulement si cette quantité est supérieur à un seuil.
●
●
Point positif :
Supprime les problèmes liés aux détections précédentes et cela sans pour autant
augmenter de façon significative la complexité de l'algorithme. si une personne
reste un peu trop longtemps sur place, elle ne sera plus détectée, on ne détecte que
le mouvement.
Point négatif :
Quand une personne reste sur place, l'image de référence va apprendre la
personne qui est devant elle. Ce qui pose un problème car : quand elle va sortir du
champ de vision, la détection va mettre un temps pour apprendre l'image sans la
personne devant. et pendant ce temps là, le programme va continuer de dire qu'il y
a un mouvement. ce qui entraîne qu'il est pratiquement impossible de donner la
position de la personne dans le champ de vison de la caméra.
d) Image de référence avec remise à jour (2)
On enregistre une image de référence : cette image est prise au départ. =>Iref(t)
Sommation de n images => I(t)
Ensuite on applique un traitement sur cette image : binarisation avec un seuil.
On met à jour l'image de référence avec I(t) :
i c'est un pixel en mouvement :Iref(t+1) = (alpha)*I(t) + (1-alpha)*Iref(t).
sinon : Iref(t+1) = I(t).
alpha flottant compris entre 0 et 1.
On peut alors compter la quantité de mouvements.
On dit alors qu'il y a un mouvement seulement si cette quantité est supérieure à un seuil.
●
●
point positif :
Même point positif qu'avant. Seulement ici, le phénomène de mouvement
persistant après la sortie de la personne va être un peu plus faible.
point négatif :
Même problème que précédemment mais moins prononcé.
e) Image de référence avec remise à jour (3)
on enregistre une image de référence : cette image est prise au départ. =>Iref(t)
sommation de n images => I(t)
ensuite on applique un traitement sur cette image : binarisation avec un seuil.
on met à jour l'image de référence :
si on a fait m itérations : Iref(t+1) = I(t).
sinon : Iref(t+1) = Iref(t)
on peut alors compter la quantité de mouvements.
on dit alors qu'il y a un mouvement seulement si cette quantité est supérieure à un seuil.
●
point positif & négatif :
Si m est faible, on est dans la situation de “différence d'image” et si m est grand,
on est dans la situation de “image de référence”. et entre les deux, on est dans la
situation de “image de référence avec mise à jour” mais la dissipation se fait d'un
coup et pas progressivement.
Il y a donc toute une stratégie à mettre en place pour la détection de mouvement. Cette
stratégie va
consister à paramétrer chaque caméra. Le paramétrage individuel de chaque caméra serait
peut être la meilleure façon de procéder. Car, on peut alors modifier la détection suivant les
contraintes du lieu. Mais il y aurait un problème, ce problème est que les caméras pouvant
être déplacées, il faudrait donc modifier chaque fois les paramètres de chaque caméra. Ce qui
peut correspondre à une manipulation assez complexe pour des utilisateurs non expérimenté.
Une autre solution pourrait être de mettre un paramétrage par défaut et créer une interface
pour modifier les paramètres de détection.
Après plusieurs tests, nous avons pu déterminer que “image de référence avec remise à
jour (2)” semble être un bon compromis entre les différents points positifs et négatifs.
En plus de la détection de mouvements, nous pourrions mettre un place un calibrage. Un
calibrage consiste à repérer des points dans l'espace réel (x,y,z) et ces même points dans
l'espace image (i,j). le but va donc de retrouver les points de l'espace réel dans l'espace de
l'image. Le but du calibrage est de connaître la position de la personne en mouvement dans
l'image. Et ainsi, on peut renvoyer non pas l'information 0 ou 1 pour présence ou absence de
mouvement, mais la position de l'individu. c'est une solution assez complexe à mettre en
place, car il faut soit calibrer la caméra avec un motif dont on connaît déjà la position dans le
plan (x,y,z) et trouver la position dans (i,j), soit il faut mesurer des points dans la pièce et les
repérer dans l’image. Ainsi, nous pouvons connaître la position de la personne. Cette
solution est donc assez contraignante à mettre en place, au niveau technique. De plus il faut
recommencer cette opération à chaque fois que l’on modifie la position de la caméra. Une
autre contrainte est la ressource nécessaire. En effet, nous sommes dans le cas d’un routeur et
donc, nous n’avons pas de grande ressource et de grande puissance de calcul. Donc, nous
avons décidé de ne pas utiliser cette technique car nous sommes amenés à faire beaucoup de
test et donc à changer de place assez souvent les caméras.
Cependant, d’autre choix sont possibles. Nous pouvons renvoyer la quantité de
mouvement détecté normalisé. C’est-à-dire la quantité de mouvement divisés par la taille de
l’image. Nous obtenons alors une information sur la taille de l’individu dans l’image et donc
sa distance par rapport à la caméra.
Nous pouvons aussi obtenir sa position par rapport aux axes de l’image. Sans utiliser le
calibrage :
On fait la somme des pixels à 1 de l’image binaire colonne par colonne. On obtient un
petit alors une distribution des pixels sur l’axe des X. On peut alors rechercher le barycentre
du résultat ou pour simplifier, on peut chercher le maximum et dire que c’est ce point qui est
le centre de la personne. On peut faire la même chose en Y et ainsi obtenir une position de la
personne dans l’image. Avec ces trois composantes, on obtient une position moins précise
que le calibrage mais avec un résultat beaucoup plus simple en terme de mise en place et en
terme de calcule.
Comme on a pu le voir, il y a plusieurs paramètres qui rentrent en compte. dans notre
programme, nous avons implémenté tous les algorithmes de détection décrits plus haut. Un
fichier de configuration nous permet de les tester et de les comparer. de plus, dans ce fichier
de configuration, il y a aussi d'autres paramètres qui peuvent être modifiés comme la taille
de l'image, le pourcentage de la taille de l'image qui faut considérer pour dire qu'il y a un
mouvement et le nombre d'images sommées.
2. Notre système de détection
Notre système de détection est embarqué dans les routeurs Wifi. Le programme de
détection de mouvement est lancé dès que le routeur est branché. Il attend que le serveur
soit mis en place pour commencer son travail de détection de mouvement. Une fois qu’il a
reçu un signal du routeur, il commence la détection de mouvement.
Notre système de détection est configurable. C’est à dire, que nous pouvons modifier des
paramètres comme la taille de l’image, le nombre d’images sommé, le seuil pour la
binarisation ou encore la quantité minimale de mouvement qu’il faut avoir pour dire qu’il y
a un mouvement et même le type de détection. Ce dernier paramètre nous a été utile pour
comparer les performances des différents algorithmes.
Celui que nous utilisons est celui avec l’image de référence que l’on remet à jour. Notre
système fait une boucle infinie sur cette algorithme. Une fois qu’un mouvement est détecté,
on envoie un message sur le réseau puis, il va enregistrer une image sur le routeur pour
qu’elle soit lue par l’utilisateur.
Notre système arrive à détecter des mouvement quand une personne passe devant.
Néanmoins, un problème se produit quand on positionne l’objectif face à une vitre avec un
vue sur l’extérieur. Notre système va détecter le déplacement des personnes dans la rue ou
en cas de vent le mouvement des arbres et même des nuages. Comme il est impossible de
dire aux passants de ne pas bouger ou de faire cesser le vent, on ne peut donc pas supprimer
la cause. Mais, il est possible d’arrêter la conséquence. Pour cela, il faut modifier les
paramètres du fichier de configuration. Nous pouvons augmenter le seuil pour la
binarisation et/ou augmenter le seuil pour la quantité de mouvement. Nous arriverons
toujours à trouver un seuil qui va permettre de rendre cela possible. Le problème possible,
c’est que le système ne détecte plus rien. Et dans ce cas, la caméra est inutilisable. Dans ce
cas, il faut modifier l’orientation de la caméra.
Le problème de changement de luminosité, allumer et éteindre l’éclairage de la pièce,
entraîne une détection de mouvement. Il n’est pas concevable d’annuler ce problème. En
effet, l’annuler reviendrait à augmenter les seuils pour la binarisation et pour la quantité de
mouvement. En d’autres terme, on reviendrait à annuler les effets de la détection devant une
fenêtre. Notre système fonctionne bien avec des changement de lumière de faible amplitude.
C’est-à-dire, qu’il peut s'adapter au changement de lumière créé par le soleil, de plus, on en
revient dans ce cas là aux problèmes liés à la détection de mouvement devant les vitres avec
une animation extérieure que l’on ne peut pas contrôler. Mais, pour en revenir au problème
d’éclairage, s’il y a une lumière qui s’allume ou s’éteint, c’est qu’il y a une personne qui l’a
allumée donc il est très intéressant de le laisser détecter ça. Surtout dans le cas d’une
surveillance de nuit où tout est dans le noir ou la pénombre.
Dans une optique de travail avec un apprentissage de type Kohonen, il n’est pas
préférable de n'envoyer qu’une information binaire de détection de mouvement. En d’autre
terme, une telle information est bonne en première instance car elle donne de bon résultat
avec Kohonen mais, une information sur la position de l’individu dans l’image serait
meilleure. C’est pourquoi, nous voulions tester la solution de projeter l’image binarisée sur
les axes x et y.
Nous venons de voir notre système de détection de mouvement. Maintenant, nous allons
voir comment fonctionne notre système d’apprentissage.
III. L'AUTO ORGANISATION DU RESEAU
Le système que nous avons mis en place doit apprendre par lui même sa disposition, on se situe
donc dans un contexte d'auto apprentissage pour un réseau de neurone.
1.Choix du réseau
Notre but étant de diviser l'espace couvert par les caméras en zone on estimera pour notre
réseau :
les ensembles {routeur,caméra} en tant que neurone i de la couche d'entrée
les zones seront les neurones j de la couche de sortie
schéma de fonctionnement de notre apprentissage,
L'utilisateur devra donc décider de NBCAMERAS {routeur,caméra} = nombre de routeurs
reliés à une caméra du réseau, et NBZONE zones désirées.
On estime une matrice Weight de poids, de taille [NBCAMERAS][NBZONE].
Chaque neurone d'entrée i est relié à chaque neurone j de sortie avec un poids Wij, indiqué
dans la matrice Weight, initialisée par des valeurs aléatoires.
Après cette première réflexion, se pose le problème de choisir l'algorithme d'apprentissage.
Pour cela nous avons étudié les existants : en effet l'apprentissage se fait par modifications
des poids. Mais il existe plusieurs algorithmes possibles pour cela chacun ayant sa « règle
d'apprentissage ».
Un des premiers apprentissages est la loi de Hebb qui repose sur le principe que deux
neurones actifs simultanément sont fortement reliés entre eux.
On distingue deux modes d'auto-apprentissage : un premier dit supervisé et un autre dit
non supervisé.
Le premier mode nécessite de connaître la sortie voulue du réseau pour avoir une image
de comparaison : ce sont le perceptron, les couches auto-associatives, les réseaux de
hopfield. Pour plus de détails sur ces réseaux vous pouvez consulter notre bibliographie et le
résumé fait sur l'auto-organisation.
Le second se fait dans le cas où l'on ne connaît pas la configuration de sortie : le système
doit apprendre de lui même sa disposition sans aucun apport extérieur. On peut citer comme
algorithme existant dans ce mode celui de Kohonen.
Dans notre cas nous ne connaissons pas la configuration du réseau : on veut pouvoir
découper l'espace en zones mais on ne sait pas, puisque l'on pourrait changer les caméras,
laquelle est située à côté de laquelle et comment découper et regrouper les champs de
recouvrement pour avoir un certain nombre de portions (dites zones) de l'espace. On ne va
donc pas présenter au système la sortie désirée lors de l'apprentissage, puisqu'on ne la connaît
pas. C'est donc en mode non-supervisé que le réseau apprend !
Nous avons donc opté pour l'algorithme de Kohonen qui marche très bien dans les
localisations spatiales puisque qu'il part du principe de rapprocher les neurones de sortie des
entrées données : on va ainsi rapprocher une zone de certaines valeurs d'entrée. Pour nous
l'entrée à chaque fois est en fait un vecteur représentant l'état des caméras : elles détectent ou
non le mouvement donc on a un vecteur val[NBCAMERAS]. Ainsi avec Kohonen on va
rapprocher les neurones de zones de certains vecteurs entrée : ensuite pour chaque vecteur
possible on n’activera qu'un neurone de sortie qui correspondra à une zone de l'espace.
2. Apprentissage implémenté
L'algorithme est le suivant durant l'apprentissage :
− On présente plusieurs entrées possibles
− On va alors, pour l'entrée présentée calculer le neurone de sortie gagnant : celui qui est
le plus proche en terme de distance. Le calcul de la distance peut se faire de différentes
façons : le programmeur peut prendre une distance euclidienne, comme une distance de
Manhatan ou de Mahalanobis ou encore de Pearson. Pour notre part nous sommes restés
sur la distance euclidienne : la distance de Manhatan (somme des valeurs absolues) est
sûrement plus rapide mais moins précise.
− Pour chaque neurone d'entrée on va alors modifier les poids correspondants les reliant
au neurone gagnant grâce à la formule :
wij = wij + α (val[i] – w[i][j])
où
j est le neurone (zone) gagnant
wij est le poids reliant la caméra i au neurone j
val[i] la valeur (1 ou 0) indiquant la vue ou non d'une personne
par la caméra i
α un coefficient d'apprentissage qui diminue au cours de
l'apprentissage
Dans notre cas l'apprentissage est arrêté dès que le système se stabilise c'est-à-dire dès que
la matrice de poids n'évolue plus. Aujourd'hui on a donc décidé que si deux fois de suite la
matrice restait la même on arrêtait, en supposant que la personne se déplace bien
aléatoirement dans le couloir et ait le temps de couvrir tout l'espace : sinon il est fort
possible que l'apprentissage, n'ayant pas testé toutes les possibilités s'arrête.
On pourrait voir à donner un nombre minimal d'entrées ou encore un temps minimal pour
décider de l'arrêt de l'apprentissage, en plus du non changement de la matrice de poids qui
reste primordial !On pourrait également voir à tester simplement(introduction d'une variable
calculant les changements) que la matrice ne se modifie pas 2 fois de suite et non
uniquement une fois, pour se donner une assurance de plus.
La difficulté d'une telle implémentation réside dans le choix des coefficients
d'apprentissage, la qualité des données et leur pertinences.
Pour notre système et un tel algorithme il est important que la personne circule partout
dans le couloir et ne reste pas dans un même coin surtout les premiers temps où les
constantes d'apprentissage sont plus importantes et modifient donc de façon plus importante
les poids que par la suite, leur valeur étant diminuée à chaque nouvelle entrée. Pour assurer
un maximum de déplacement de la personne nous avons mis une variable, paramétrable par
l'utilisateur dans le fichier de configuration du serveur : « tpsApp » qui permet de définir le
temps de prise en compte entre deux mouvements : ainsi tous les « tpsApp » mais le
système va prendre en compte le mouvement courant, laissant donc à la personne un temps
égal à un peu plus de la moitié de tpsApp pour se déplacer.
Pour nous les coefficients permettant de définir le coefficient d'apprentissage sont
initialisés à 1 (on suppose ainsi que l'on est en plein apprentissage) et on les diminue à
chaque itération en les divisant par 1,2 à chaque fois.
Les poids sont initialisés par des valeurs aléatoires entre 0 et 0,5 pour éviter une trop
grande différence au début et permettre des sélections différentes de neurones gagnants.
3.Interprétation des résultats
Lorsque la matrice de poids n'évolue plus d'une fois à l'autre on a terminé l'apprentissage.
Chaque caméra est donc plus ou moins fortement reliée à une zone : vient donc l'étape que
nous appellerons «d'interprétation des résultats » . Cette étape, va nous permettre de réaliser
le suivi en se servant des résultats du Kohonen.
Pour cela on pourrait voir les choses de différentes façons : on regarde pour chaque caméra
qu'elles sont la ou les zones pour lesquelles les poids les liant sont les plus forts et on peut
estimer ainsi que la caméra appartient plus ou moins à une zone. On pourrait calculer
carrément, un pourcentage d'appartenance à chaque zone en reprenant les principes de
logique flou.
De notre côté, nous avons préféré faire tester un maximum d'entrées différentes : le test
consiste donc à faire circuler une personne qui va essayer de rentrer dans tous les champs
possibles des caméras et essayé également de voir les différentes configurations qu'on peut
avoir : les endroits où la personne ne serait vue que par le caméra i et la j puis celle où elle
est vue par i, j et m puis j et m ... Le but est de tester le maximum d'entrées possibles ! C'est
à cette fin que le fichier de configuration du serveur comporte une variable nommée «
nbPoint » qui permet de définir le nombre de points que l'utilisateur veut tester pendant son
interprétation, il peut mettre un nombre de points très grand pour être sûr de parcourir au
maximum le couloir. De plus il a également la possibilité de régler le « temps
d'interprétation » : variable tpsInter qui permet de définir le temps en ms de prise en compte
entre deux mouvement de la part du système. C'est-à-dire que si l'on règle ce temps sur 2
000, le système ne va réellement écouter les détections de mouvement que toutes les 2
secondes. Si le nombre de tests (nbPoint) est très grand on peut diminuer ce temps et tester
quasiment tous les points du couloir : faire un pas par un pas.
Pour chaque entrée du système, on va calculer la neurone gagnant, soit la zone
correspondante. On estime alors que toutes les caméras à 1 à ce moment peuvent appartenir
à la zone et on remplit alors la matrice d'appartenance : pour toutes les caméras j tel que sa
valeur dans le vecteur donné en paramètre au Kohonen est à 1 on met à 1 tous
Appartenance[i][j] avec i la zone gagnante.
Autrement dit :
Pour toute caméras j tel que Val[j]=1
Appartenance[winner][j] = 1
// winner étant la zone gagnante (neurone gagnant).
Fin Pour
Cette étape se termine donc dès le nombre de points testés. Avant de redonner la main au
serveur on déduit de la matrice d'appartenance (des caméras à une zone i), celle d'adjacence
entre deux zone i,j : on regarde alors pour chaque caméra, si elle appartient à deux zones
alors c'est que ces zones peuvent être considérées comme adjacentes.
Autrement dit
Pour toute caméra j
Pour tous i
Si Appartenance[i][j]=1
Pour tout k > i
Si Appartenance[k][j]=1
Alors Adjacence[i][k]=Adjacence[k][i]=1
Fin Si
Fin pour
Fin Si
Fin Pour
Fin Pour
4. Suivi
La phase d'interprétation terminée on va pouvoir réaliser le suivi correctement. Comme
on l'a décidé le suivi doit afficher, pour un mouvement donné les caméras de la zone dans
laquelle à lieu le mouvement et le numéro éventuelle des zones adjacentes.
Donc à partir du moment ou le système à détecté un mouvement, le serveur n'a plus qu'à
envoyer le vecteur correspondant au Kohonen, celui-ci calcule le neurone gagnant (la
zone correspondante) puis grâce aux matrices d'appartenance et d'adjacence il peut
inscrire dans un fichier le numéro de la zone, les caméras qui peuvent y être incluses et les
numéros des zones adjacentes. Ces deux dernières informations sont séparées par un x
afin de pouvoir les identifier.
Ces informations seront ensuite lues par un programme php qui permet d'afficher les
images désirées, d'où l'importance de la séparation entre numéro de caméra et numéro de
zone.
En fait le serveur ne déclenche le Kohonen que si le vecteur est différent du précédent.
De son côté, le Kohonen déclenché en suivi ne va récrire le fichier que si le neurone
gagnant n'est pas le même que précédemment. Ainsi, dès qu'un mouvement est détecter le
serveur écrit automatiquement le fichier (Etat.txt) présentant l’état d’alerte afin que le
programme php l’indique, mais on ne fait aucun calcul ou réécriture de fichier inutile : on
évite de récrire le fichier de la zone concernée alors qu'il ne va pas changer.
Le programme php lit en fait régulièrement les deux fichiers écrits par le serveur et le
Kohonen pour régénérer la page php qui permet de visualiser les caméras détectant un
mouvement.
IV.PRINCIPE DE FONCTIONNEMENT
L'utilisateur doit lancer le serveur et brancher les différents routeurs après avoir vérifié le fichier
de configuration du serveur (éventuellement des caméras). Notre système va alors fonctionner en
4 phases distinctes :
−l'initialisation du réseau
−l'apprentissage
−l'interprétation
−le suivi
Nous allons donc décrire ci-dessous chacune de ses phases ainsi que les paramètres les
concernant dans le fichier de configuration du serveur.
Si vous ouvrez le fichier « serveur.conf » vous pouvez distinguer 7 variables :
−NBCAMERAS est un entier désignant le nombre de caméras dans votre réseau, à vous
donc d'y insérer votre valeur.
−NBZONE est un entier désignant le nombre de zones qui vont être identifiées au cours de
l'apprentissage, c'est-à-dire le nombre de portions découpant votre espace.
−NBPOINT est le nombre de points considérés pendant l'interprétation : un plus grand
nombre vous assure plus de précision ! Mais toujours plus de temps pour faire
l'interprétation
−tpsApp est le temps en millisecondes pour l'apprentissage : c'est-à-dire le temps considérés
entre chaque capture de mouvement, pendant tpsApp ms le système ne regardera pas les
mouvements. Plus ce temps sera long plus les points sélectionnés pourront être éloignés.
−tpsInter est également un temps en milliseconde, c'est le même principe que précédemment
mais pour l'étape d'interprétation
−tpsSuivi même chose mais pour l'étape du suivi.
−tpsRas temps que met le routeur entre chaque signalement d'absence de mouvement (Rien
A Signaler) vers le serveur.
1.Initialisation du Réseau
Les routeurs et le serveurs peuvent être branchés et lancés dans n'importe quel ordre (à
partir du moment où l'on prend soin de configurer le serveur : essentiellement les variables
NBCAMERAS et NBZONE), sans conséquence néfaste pour le système.
Nous allons donc voir comment fonctionne un routeur puis la façon dont le réseau va être
initialisé par le serveur, qui gère au final tout le déroulement du système.
schéma de l'initialisation des routeur par le serveur.
a) Démarrage d'un routeur
Un routeur (mis à part le routeur servant au serveur) est automatiquement relié à une
caméra l'ensemble {routeur,caméra} représentant un neurone du réseau.
Pour image on peut distinguer deux modes pour le routeur :
− mode identification
C'est le mode au démarrage du routeur : après que l'utilisateur l'ait branché il
va tenter d'envoyer un « n » au serveur et ce jusqu'à ce qu'il y arrive. En effet le
système marche de telle façon que si le n n'est pas envoyé c'est que le routeur
ne trouve pas le serveur.
Une fois le n bien envoyé et donc reçu par le serveur, ce dernier, détectant
alors un nouveau {routeur, caméra} va renvoyer un numéro d'identification au
routeur (compris entre 1 et NBCAMERAS, nombre de caméras du réseau
déterminé par l'utilisateur).
− mode détection de mouvement
C'est le mode de fonctionnement classique : une fois son n envoyé
correctement et son numéro d'identification connu le routeur lance le
programme de détection du mouvement.
Il envoie alors un message au serveur à chaque détection de mouvement de
la part de la caméra qui lui ait reliée.
Pour résumer
Au démarrage du routeur connecté à une caméra, tous les programmes
d'interprétation de l'image sont effacés par le programme « post boot », créé par
nos soins, afin de pouvoir correctement interpréter nos programmes par la suite.
Le routeur va alors envoyer des n en permanence au serveur via wifi jusqu'à ce
que celui-ci le reçoive et lui envoie, en retour, un numéro d'identification.
Le routeur communique ensuite en permanence avec la caméra qui lui est reliée
via usb.
A chaque détection de mouvement il envoie alors un message au serveur qui
reste à l'écoute de chaque routeur en permanence.
b) Au niveau du serveur
A chaque détection d'un nouveau routeur (n reçu), le serveur va y attribuer un
numéro identifiant la caméra correspondante.
En même temps le serveur tient compte de la nouvelle caméra connectée en en
comptant le nombre au fur et à mesure. Une fois que le nombre de caméras détectées
par le serveur (soit le nombre de n reçus) égal à NBCAMERAS (soit le nombre de
caméras données par l'utilisateur dans le fichier de configuration et correspondant au
nombre de caméras du réseau) le serveur considère l'initialisation du réseau faite.
Cette initialisation faite, chaque {routeur, caméras} est donc caractérisé par un
entier compris entre 1 et NBCAMERAS.. Les informations sont alors stockées dans
un fichier sous forme de table : adresse IP => numéro de caméra
Le système passe alors à la phase d'apprentissage. Si un arrêt y survenait on ne
serait pas obligé de reprendre la phase d'initialisation puisque le système réutilisera
le fichier qu'il a créé avec la table.
Si l'utilisateur veut modifier son réseau : ajouter ou retirer une caméra il devra
effacer le fichier créé et contenant la table citée précédemment puis modifier le
fichier serveur.conf en conséquence.
2. Apprentissage
Cette phase va permettre au système de découper l'espace en « zone » grâce au Kohonen.
Dans le fichier serveur.conf c'est la variable « tpsApp » qui est à définir (ou à laisser tel
que) pour l'apprentissage. Dans un système fini on pourrait ne pas laisser à l'utilisateur la
décision de cette variable, aujourd'hui elle sert principalement en terme de test. Elle permet
de définir les temps d'écoute des détections de mouvements par le serveur : une détection ne
peut être prise en compte que si elle intervient tpsApp ms après la précédente. Ainsi on
laisse le temps à la personne circulant dans les couloirs de se déplacer d'avantage pour ne
pas prendre en compte des points trop proches (cf partie III.2 de ce rapport).
Une fois l'initialisation du réseau faite, les NBCAMERAS {routeur, caméras}identifiés,
le serveur reste encore à l'écoute de chaque routeur en rentrant dans la phase
d'apprentissage.
On considère alors la variable « continu », initialisée à 1, indiquant l'apprentissage en
cours.
schéma de l'apprentissage.
Le serveur ne prend alors en compte que les messages reçus tous les intervalles de temps
égaux à tpsApp. Dès qu'il reçoit, à ce moment un message dénotant une détection de
mouvement de la part d'un routeur/caméra, il va traduire le mouvement détecté par un
vecteur de taille NBCAMERAS : en continuant d’écouter tous les routeurs, il met un 1 dans
le vecteur pour ceux qui ont aussi détecté le mouvement, et un 0 pour les autres.
Ce vecteur est alors envoyé en paramètre à la fonction « learning » du kohonen dont la
valeur de retour est stockée dans la variable « continu ».
La fonction « learning » va en fait modifier les poids de la matrice du kohonen afin de
diviser l'espace en zone.
Elle renvoie un entier=0 si l'apprentissage est terminé (la matrice des poids n'a pas
évolué), 1 sinon.
Ainsi le serveur récupère cet entier lui indiquant que l'on se trouve encore ou non dans la
phase d'apprentissage. Ainsi si il reçoit 0, il passe dans la troisième phase : l'interprétation
des résultats.
On connaît alors la matrice des poids qui n'évoluera plus dans notre système. Le kohonen,
avant de renvoyer 0 au serveur, va stocker cette matrice dans un fichier kohonen.conf afin
que si l'on arrêtait le système pour le reprendre dans le même état on n’ait pas à refaire cette
phase d'apprentissage.
L'utilisateur devra donc faire attention à effacer ce ficher s’il veut réorganiser son réseau
(ajouter, supprimer, déplacer une ou des caméra(s) ou encore changer le nombre de zones).
3.Interprétation des résultats de l'apprentissage
Une fois l'apprentissage terminé, on a une matrice des poids qui permet au système
d'attribuer une zone à un certain vecteur d'entrée (donc à un mouvement donné à un certain
emplacement du couloir). Pour réaliser notre suivi on voudrait interpréter une zone : savoir
qu'elles sont les caméras concernées et les zones adjacentes : ceci justifie donc notre phase
« interprétation ».
Pour celle-ci une variable « tpsInter » est à modifier dans le fichier serveur.conf (ou à
laisser telle que de la même façon que la variable tpsApp précédente). Elle permet de régler
l'intervalle de temps pendant lequel le serveur ne tiendra pas compte des mouvements
détectés.
L'autre variable liée à l'interprétation est la variable NBPOINTS : elle permet de définir
le nombre de points minimums à tester pour juger de la pertinence des tests interprétés.
Dans l'idéal il faut tester toutes les entrées possibles : toutes les valeurs du vecteur que
l'on peut avoir, compte tenu de la disposition des caméras, c'est-à-dire tous les croisements
possibles entre les champs de vision des caméras. Il est donc difficile de juger du nombre
de points minimum : l'utilisateur peut tester des endroits qu'il juge caractéristiques ou à
tester, pour voir l'attribution faite. Avec plus de temps il serait bien de mettre un très grand
nombre de points et un temps tpsInter plus court afin de tester quasiment tous les « points »
du couloir : l'interprétation total en sera un peu plus longue car on ne peut pas mettre un
temps trop court non plus, une seconde reste un minimum acceptable. Il faut ensuite
multiplier ce temps par le nombre de points voulus pour connaître le temps minimal total
d'interprétation.
schéma de l'interprétation
En fait, le serveur continue à écouter les routeurs, dès que l'un d'eux signale un
mouvement, il interprète le vecteur des caméras et l'envoie en paramètre à la
fonction « interprétation » du kohonen. Celle-ci va appeler la fonction « computeWinner »
du kohonen afin de récupérer le numéro du neurone gagnant et renvoyer en paramètre ce
numéro ainsi que le vecteur des caméras à la fonction « modifZones ». Cette dernière va
modifier la ligne indicée par le numéro du gagnant dans la matrice Appartenance (c'est-àdire la ligne indiquant l'appartenance de chaque caméra à la zone d'indice le numéro). Si la
caméra est à 1 dans le vecteur il met l pour l'appartenance de la caméra à la zone sinon il
laisse la valeur qui y était.
La fonction interprétation du kohonen renvoie un entier au serveur indiquant la fin ou
non de l'interprétation : sachant que l'interprétation n’est terminée que lorsque NBPOINTS
ont été testés, la fonction renverra 0 si c'est le cas, 1 sinon.
Quand l'interprétation du côté kohonen estime avoir finis (qu'il a testé les NBPOINT),
juste avant de renvoyer 0 au serveur, il déduit de la matrice d'appartenance alors fixée celle
d'adjacence. Il inscrit alors un « x » dans le fichier kohonen.conf (à la suite de la matrice de
poids déjà enregistrée en fin d'apprentissage: cf 2 ci-dessus), qu'il fait suivre de la matrice
d'appartenance, puis d'un nouveau « x » pour finir par la matrice d'adjacence.
Ainsi, la phase d'apprentissage se termine et le système, en cas d'arrêt dans l'étape
suivante pourra reprendre à partir de cette dernière. Cela semble fort utile : si on arrête le
système pour le redémarrer par la suite dans le même état il sera alors inutile de refaire
toutes les phases précédentes. Par contre, comme on l'a indiqué ci-dessus, si l'utilisateur
rajoute des caméras, en retire, en déplace ect... il devra effacer tous le fichiers kohonen.conf
et modifier le serveur.conf si nécessaire.
4. Suivi
Le suivi consiste en l'affichage de toutes les caméras de la zone visualisant un mouvement
sur une page html, avec l'affichage d'une alerte. S’il n'y a pas de mouvement la page html
présente la dernière zone où a lieu le mouvement avec un message signalant l'absence de
mouvement, et la possibilité d'afficher la caméra voulue.
Pour cette phase aucun paramètre n'est à définir préalablement par l'utilisateur.
schéma du suivi.
En effet, le serveur, sachant l’interprétation terminée, n’a plus qu’à continuer de recevoir
à intervalles de temps très proche (on ne regarde plus tpsApp ou tpsInterp mais toutes les
190ms) l’état des caméras. Si une caméra indique une détection de mouvement, il continue
de regarder l’état de chaque caméra et envoie, au bout du temps d’écoute, au kohonen le
vecteur interprété seulement s’il est différent du précédent.
Ainsi en passant en paramètre le vecteur, à la fonction computewinner, le kohonen calcul
le neurone gagnant lui indiquant donc la zone où se trouve la personne.
Si le neurone gagnant est différent du précédent il lit la matrice d’appartenance afin
d’enregistrer sur un fichier le numéro de la zone concernée puis tous les numéros des
caméras concernées et enfin, après un marqueur x, en lisant la matrice d’adjacence, il
indique les zones voisines.
Ce fichier peut ensuite être lu par le php, qui réactualise la page html permettant de
visualiser toutes les caméras de la zone où à été détecté le mouvement avec en plus le
message d'alerte (avertissement d’un mouvement) qu’il connaît pour avoir lu le fichier
« Etat.txt » créer par le serveur.
La boucle du serveur est alors infinie : il écoute en permanence les caméras et réitère les
processus de cette quatrième phase à chaque détection de mouvement de la part d’une
caméra.
V. EXPERIMENTATION
1. La simulation
La simulation fonctionne sur le même principe d’apprentissage. En effet, les deux
programmes possèdent les fonctions d’apprentissage avec les mêmes variables. La
différence vient donc de la détection du mouvement. En effet, il est impossible d’ajouter à
ce programme le même système de détection de mouvement car il n’y a pas de caméra
réelle.
Notre simulation se présente sous la forme d’un plan que l’on créé. Une petite interface
en console demande de positionner les murs, les entrées/sorties et l’emplacement des
caméras. Une fois fini, un personnage apparaît et que l’on peut déplacer à notre convenance.
Dès que ce personnage arrive dans une case avec au moins une caméra, il active l’auto
organisation. C’est-à-dire qu’il va déclencher l’une des phases suivantes : l’apprentissage,
l’interprétation et le suivi. La phase d’initialisation vue précédemment se faisant pendant la
mise en place des caméras dans le plan. Ainsi, nous avons une simulation de notre système.
Une autre fonction de notre système de simulation est de pouvoir fonctionner avec notre
système réel. Cela signifie que nous pouvons nous pas simuler le déplacement mais simuler
les zones créer par notre système d’apprentissage. En utilisant cette fonction, on peut
visualiser en direct les modifications des zones apportées par l’algorithme mis en place.
Toutefois, il faut au préalable avoir créé le plan du site à surveiller. Il est impossible pour la
simulation de recréer le plan avec la disposition des caméras car si une telle chose était
possible, notre apprentissage serait alors beaucoup plus simple et cela voudrait dire que
notre système arrive à modéliser l’environnement de travail. Nous n’avons pas trouvé
comment faire une telle chose et nous doutons que cela soit possible. Donc, nous devons
renseigner la simulation afin qu’elle puisse nous donner une idée du découpage des zones.
Une fois renseigné, la simulation entre dans une boucle infinie. Pendant cette boucle, elle va
lire un fichier créé par notre système réel. Ce fichier contient toute la matrice de poids de
notre apprentissage. La simulation va alors initialiser les poids de sa matrice avec les poids
indiqués dans le fichier. Ensuite, la simulation va lancer le suivi sur le plan créé. En fait,
nous simulons le déplacement d’une personne dans tous les points du plan. Ainsi, nous
obtenons le neurone gagnant et donc la zone dans laquelle se trouve la personne pour un
point donné du plan. Comme on visite tous les points du plan, on obtient une carte avec la
répartition des zones.
Un petit problème est à considérer quand même, c’est la différence entre la simulation et
le système réel. En effet, dans notre simulation, les caméras on une perception en deux
dimensions. Tandis que les caméras perçoivent des mouvements dans un espace en trois
dimensions. Ce qui peut produire des petites erreurs d’interprétation dans notre simulation.
De plus, la simulation n’apporte pas une très grande précision dans le champ de vision des
caméras. Donc, les résultats sont à prendre avec un recul.
2. Amélioration à apporter
Une première amélioration pourrait être apportée à la simulation. En effet, notre
simulation a des caméras qui perçoivent uniquement dans deux dimensions. Pour être plus
fidèle, on pourrait créer une simulation avec une vision dans un espace. C’est-à-dire créer
une simulation avec des logiciels en 3D. Nous aurions ainsi une plus grande fidélité dans
la simulation car nous pourrions alors implémenter notre détection de mouvement. Le but
serait d’avoir une simulation complète et fidèle de notre système. Les caméras auraient
alors une grande importance que dans notre simulation car dans notre simulation, les
caméras ont une vision et une détection de mouvement parfait dans le sens où dès qu’une
personne entre dans la case qui fait partie du champ de vision, la caméra le détecte
automatiquement et immédiatement. De plus, l’angle de vision serait plus fidèle à la
réalité. Sans oublier que notre détection de mouvement fonctionne uniquement en binaire.
Il faudrait donc modifier cela pour un système similaire à notre système réel.
Une autre amélioration peut être mise en place dans notre système : l’apprentissage en
continu. Il serait bien de pouvoir déplacer une ou plusieurs caméras afin d’avoir un
système qui va s’adapter aux déplacements et apprendre ces déplacements. Nous n’avons
pas pu tester cela car, nous n’avons pas eu le temps. Mais l’idée serait soit d’avoir une
commande pour dire au système qu’une caméra a été déplacée. Ainsi, le système va
recommencer l’apprentissage. Cette méthode est possible à faire, il faut arrêter le système
et supprimer le fichier « kohonen.conf », ainsi le serveur va repartir à zéro. Mais cette
méthode n’est pas convenable au sens où nous l’entendons. Nous voudrions que le système
ne recommence pas tout mais seulement ce qu’y a changé.
Pour faire une telle chose, il faudrait savoir comment le système réagissait avant pour
être comparé maintenant. Une possibilité pourrait être d’enregistrer tout les vecteurs dans
l’interprétation ainsi que les résultats donnés. Cette base de donnée servirait alors de
comparaison pour les vecteurs du suivi. Dès qu’une modification est apportée, nous
pourrions alors refaire un apprentissage. On fait apprendre à notre système les vecteurs de
notre base de données avec le vecteur différent qui a été modifié.
Les résultats obtenus ne sont pas connus mais avec un peu de temps, nous pourrions
tester et dire si cette idée est bonne ou mauvaise.
VI. ORGANISATION
CONCLUSION
Le code présenté aujourd'hui permet le suivi d'une personne circulant dans des couloirs, à
condition que celle-ci soit seule. En effet, l’apprentissage par Kohonen ne permet pas
d’apprendre une telle chose. Le résultat serait alors une mauvaise attribution des zone et donc
sans réel possibilité d’avoir un suivi.
Par la suite nous pourrions limité ce défaut en vérifiant que toutes les caméras actives
comprises dans la zone. Mais ceci ne marcherait que si les personnes se trouvaient éloignées
l’une de l'autre, et qu'il n'y ait pas trop de personnes. On pourrait juste conclure de la présence de
plusieurs personnes mais pas du nombre ni des zones réellement concernées à moins de retirer
les caméras non comprises et tester différents cas, si une zone est fortement activée.
Malheureusement cela ne nous donnerait aucune certitude : le meilleur moyen serait d'allier à
notre système une reconnaissance de personne.
Malgré tout notre système donne des résultats convenables : l'apprentissage nous donne sur
plusieurs test des résultats satisfaisants, la détection de mouvement fonctionne bien sauf dans le
cas où l'on regarde une fenêtre et où l'on peut détecter le mouvement des arbres ou des nuages.
Notre système fonctionne donc dans les conditions d'un espace clos que l'on veut surveiller
alors que personne n'est censé y être présent et ce tant que l'on ne regarde pas en direction d'une
fenêtre trop proche et qu'il n'y a pas de forte différence de luminosités intervenant dans l'espace
couvert.
ANNEXES
•1.Présentation du système (en anglais)
•2.Guide installation du routeur
•3.Guide du site
•4. Principe de fonctionnement caméra numérique
•5. Premiers résumés des documents étudiés
- réseau de caméra,
- carte cognitive,
- auto-organisation
•6.Bibliographie
ANNEXES 1
User's Guide
I. Presentation of system
Thanks to the system you can known if there is one person in your site and visualised her during
she mooves in it.
In this user's guide we describe you the material and its configuration : what you have to do to
install your network. So we present you the system of file and how put the program in the router.
After this, we explain you what you have to do to help the system learned is disposition. To finish,
we will describe your interface where you can see the image of the cameras.
II. Material
To make the network you need cameras (webcameras in our test) linked via USB to one router
(ASUS 500g deluxe) as you can see in the picture :
So we need one router per camera and probably one more because you have to connect one to the
computer which served as server of system.
III.Installation of system
To install your system you have to :
1.
2.
3.
4.
5.
Configure the network
Prepare the router
Execute server and branch router
Do the learning with the system
Do the interpretation with the system
After all that points you can see a personn mooving in the site.
1.Configuration of network
You have to decide of one router which is linked to the server.
This router named « central router » have to known all the MAC's address of the others. All
the router have to know the MAC's adress of the « central router ». You have to configure all the
router in « hybrid » . After that the routers can communicate in the network.
In other side you have to put all the IP's adress in a samed network (if the IP's address of the
computer is 192.168.2.1 the routers have to had adress samed : 192.168.2.*). With a network
configure as this the server will be able to communicate with all the routers.
2. Prepare the router
The program which permit to detect motion must be intall in the router. It's why you have to
prepare the router :
3. Execute server and branch router
After the preparation of network and routers you have to modificate a file before execute
server. In this file, named « server.conf » you have to enter the number of cameras which
constitute your network and the number of zone you want for your space. You have to decide of
a number of points which can caracterise your site : its mean points with different configuration
(different vector of camera which can see or not). The three other variable can rest as it is.
So after that, you can execute server and branch the routers. When you see in your console that
all the cameras is known by the server, it's mean that the system is in the learning mode and
know it's important to do what you can read in the 4 point.
4. Do the learning with the system
Doing the learning means help the system to know where the cameras are in the site.
To do this, the system needs that one person mooved in the site.
So we have to walk in the site, taking car to don't stand too many time in a particulary space :
you have to parcour in all the points of the site whithout do a perfect trajectory. If the system
take points too near it doesn't learned correctly and centralise all the site in one zone ! More in
the first times, you have to make the system considered points spaced.
When the learning is finish the system print it in the console, so we have to do the
interpretation with it.
5. Do the interpretation with the system
Doing the interpretation means help the system to know what cameras is include in what zone.
To do this, the system needs that one personn mooved in the site.
So we have to walk in the site, taking car to stand in differents points : test to be in points
where your are seing by certain cameras and no other. At each time you must test a different
point if it's possible.
When the interpretation is finish the system print it in the console, so now you will able to see
a personn mooved in the site.
6. View person mooved in the site
To observe the site and view the zone where a person is detected, you have to execute the
program named « central », after what, you will see a page which propose you to choise the
cameras you want to see. If there isn't a person in the site, you have the possibility to choise a
camera to observe its image, and the message that indicate you that there isn't alert. If no, you
can see a message incated alert and the cameras of the zone where the person is.
IV.To conclude
This system can detected one person but if there is more person the system can return a fault
zone (zone where the personnes aren't).
When we do the learning or the interpretation, that need a long time, it have to be only one
person in the site.
The system don't oblige you to do back this two stage : the configuration doing by the system
is saved in files : there is one file writed by the server (etat.txt) that indicate the identification of
the router, and later, after learning and interpretation, the kohonen write a file (kohonen.conf) with
the matrice wich describe the system. So you have not to do again this stape if you don't change
your network.
But, if you want to changed a cameras, after learning, you have to delete the file « kohonen.conf »
and doing again the learning and the interpretation. If you want to add or remove a camera you
have to del the « kohonen.conf » (if its exist) and the file « etat.txt » too.
When a person is in your site the system, you can see an alert in the « control screen » and the
zone where the person must be mooved.
ANNEXES 2
ASUS WL 500g deluxe
Mettre à jour / changer le firmware du routeur.
Pour modifier le firmware, il faut un fichier .trx, ces fichiers se trouve sur le net. Le site d' ASUS
en propose, d'autre site mette aussi à disposition des fichiers pour mettre à jour le routeur. Il faut
bien faire attention qu'il ne s'agit pas d'un fichier comropu sinon le routeur ne fonctionnerait plus.
Le site http://oleg.wl500g.info/ propose des firmware permettant d'effectuer des « telnet » ou des
« ssh ». Pour notre projet, nous avons besoin d'effectuer ce genre d'opération.
La mise à jour est une opération risquer car s'il y a un problème, le routeur pourrait ne plus
marcher. En premier lieu, il faut remettre les paramêtes à zéro :
●
connectez-vous au routeur : pour cela :
●
allumez le routeur
●
branchez le câble éthernet sur le routeur et sur votre PC.
●
●
Paramettrez vous ordinateur pour vous cannecter sur le routeur. Ici, il s'agit de
configurer votre PC pour qu'il se connecte à l'adresse du routeur. (Voir le
manuel pour de plus ample explication)
entrez le login et le mot de passe : admin & admin si vous n'avez rien changer.
●
Sur la page web du routeur, il y a un menu à gauche. Appuyez sur « System Nat » puis
sur « firmware custum ».
●
vous arrivez ensuite sur une page vous indiquant la version de votre firmware ainsi que la
possibilité de mettre un autre firmware. Clicker sur explorer pour selectionner un firmware
sur votre PC.
●
Ensuite, il n'y a plus qu'à valider votre choix. Et si tout se passe bien, 80 secondes plus
tard votre routeur redémarre et fonctionne avec le nouveau firmware.
●
Pour vérifier que ça marche reconnettez-vous sur le routeur à la même page que pour
changer de firmware et constater le changement de la version.
Configurer le ssh du routeur
●
Connectez-vous au routeur via un telnet (telnet 192.168.1.1)
●
il faut créer un dossier dans l'arboresce du routeur :
●
●
●
le -p sert dans le cas où le dossier existe, pour ne pas afficher de message
d'erreur.
Ensuite, il faut gérérer des clés, pour DSS :
●
●
mkdir -p /usr/local/etc/dropbear
dropbearkey -t dss -f /usr/local/etc/dropbear/dropbear_dss_host_key
la clé RSA :
●
dropbearkey -t rsa -f /usr/local/etc/dropbear/dropbear_rsa_host_key
●
à ce stade, le ssh ne marche pas encore, il faut lancer la commande dropbear pour que ça
fonctionne.
●
Si vous lancer dropbear comme ça, quand vous allez éteindre votre routeur, il vous faudra
recommencer à vous connecter via un telnet au routeur et relancer la commande dropbear.
●
●
Pour palier à ça, il faut créer un fichier script qui va être lancer à chaque démarrage :
●
mkdir -p /usr/local/sbin/
●
echo «#!/bin/sh» >> /usr/local/sbin/post-boot
●
echo «dropbear» >> /usr/local/sbin/post-boot
●
chmod +x /usr/local/sbin/post-boot
●
flashfs save && flashfs commit && flashfs enable
cette derniere commande permet de flasher le contenu de la mémoire flash du routeur
dans la partie dure et donc d'enregistrer définitivement les modifications.
Monter une clef USB ou un DD USB sur le routeur
Les deux premières étapes sont là seulement pour permettre à ceux qui n'ont pas de partition ext3
d'en avoir. Pour faire ça, il faut que votre périphérique soit branché sur le routeur ou sur le PC
pour les deux premières étapes et ensuite sur le routeur.
●
Il faut d'abord créer un partition avec la commande fdisk. Mais pour cela, vous devez
démonter le périphérique de stockage USB, avec umount. Il n'est pas nécéssaire de créer
une partition, c'est selon la capacité de votre mémoire et votre envie.
●
Ensuite, il faut formater votre partition à l'aide de la commande « mke2fs -j » pour mettre
la partition en ext3.
●
Monter la clef : mount -t ext3 /dev/scsi/host0/bus0/target0/lun0/part1 /mnt
●
copie du routeur sur la clef : tar cvO -C / .version bin/ etc/ lib/ sbin/ usr/ www/ var/ | tar
x -C /mnt
●
création des répertoire nécéssaire pour le bon fonctionnement : mkdir -p /mnt/tmp &&
mkdir -p /mnt/dev && mkdir -p /mnt/proc && mkdir -p /mnt/mnt
●
●
●
demonter la clef : umount /mnt
mettre la cléf comme boot : nvram set boot_dev=
«/dev/scsi/host0/bus0/target0/lun0/part1 »
mettre les changement à jour : nvram commit
●
pour mettre les droits en lecture écriture sur le périphérique USB, il faut mettre la
commande : mount -o remount,rw,noatime /dev/scsi/host0/bus0/target0/lun0/part1
●
pour mettre les droits en lecture seulement, il faut taper la commande suivante : mount -o
remount,ro /dev/scsi/host0/bus0/target0/lun0/part1 /
●
il est aussi possible de mettre les droits en lecture-écriture aux démarges : il faut mettre la
commande dans le fichier /usr/local/sbin/post-boot et suivre les même instruction que plus
haut avec le flashfs save pour mettre les modifications en dure.
ANNEXES 3
Guide du site
Notre site est hébergé par Free. Son adresse Internet est : http://networkcameras.free.fr.
Un menu à gauche permet une navigation sur toutes les rubriques crées.
Il se décompose donc en 5 grandes parties :
Sujet, où l’on peut prendre connaissance de la description du sujet tel que présenter par les
•enseignants. Les deux autres rubriques du sujet (Etudiants et Enseignants) étaient destinées à
citer, et peut être faire une petite description des intervenants dans ce projet, mais il est fort
probable qu’on les retire.
Organisation , cette partie est découpé en trois sous partie, tel que figurant dans le menu déroulant,
visible dès que l’on appuie dessus :
Découpage
Landry
Christelle
La première permet d’accéder à la description de l’organisation du projet au niveau de la
répartition des tâches, on pourra y mettre un diagramme de gantt, en cours de réalisation et bientôt
disponible.
Les deux autres parties décrivent l’organisation de chacun des étudiants pour leur partie
respective.
- Landry
Dans cette partie, propre à Landry, on peut voir tout le travail effectué par ce dernier que ce soit
au niveau de ces objectifs propre, de son organisation et des rapports réalisés progressivement, de
ces codes, ainsi que de ses tests et simulations.
- Christelle
De la même façon, dans cette partie, propre à Christelle, on pourra voir tout le travail effectué par
cette dernière.
- Documents
Cette partie nous a permis de recenser tous les documents nous permettant d’étudier les trois
thèmes dont on avait à faire la bibliographie et qui sont l’Auto Organisation, les cartes cognitives,
et les réseaux de caméras. A la fin de chacune de ses parties nous avons insérer un résumé fait
pour mars, à partir de l'étude des documents citées.
- Rendus
Ici, se trouve tout ce qui concerne le travail rendu : les codes, simulation avec test et rapport.
ANNEXES 4
Principe de fonctionnement caméra numérique
•Nous vous présentons ici le fonctionnement d’une caméra numérique. En effet, comme nous
allons utiliser des caméras numériques pour notre projet, il convient donc d’en connaître le
principe.
Le principe de base est le suivant, des capteurs sont situer derrière une lentille. Ces capteurs
reçoivent la lumière qui travers la lentille et transforme la lumière en signal électrique qui pourra
être en suite traité. Ces capteurs sont donc semblable à une rétine d’un ?il humain. C’est d’ailleurs
l’étude de la vue qui a permit de mettre au point toutes ces techniques de captures et de
traitements. Ces capteurs sont utilisés dans de vaste domaine comme l’astronomie, la biologie, la
photographie et bien d’autre.
Il existe deux principaux type de capteurs. Les capteurs CCD qui existent depuis plus de 25 ans
et les capteurs Cmos.
•Les CCD, Charge coupled devices, sont, avant tout, des composants intégrés qui
permettent le transfert individuel de paquets de charges électrique sur une certaine distance
physique. Dans le processus de construction d’un signal vidéo, ils collectent les charge
photoélectrique et organisent leurs successions dans un ordre simulant un balayage de la
surface photosensible. Ces rétines CCD nécessitent la mise en ?uvre d’un processus de
fabrication particulier et imposent un adressage séquentiel de l’ensemble des points de
l’image. La conversion entre la charge et la tension + amplitude du photo-signal se fait
juste avant la sortie.
•Les capteurs Cmos utilisent une méthode de traitement décentralisé au niveau de chaque photo
site. Ce qui permet de mettre en ?uvre un processus standard et autorisant l’accès aléatoire à
chaque point de l’image. Le concept de base est celui du pixel actif. Ce qui associe au sein de
chaque phot site au minimum un capteur de lumière et un amplificateur. Les rétines Cmos ont
certain avantage comme son plus faible coût et des résolutions potentiellement très élevées.
Néanmoins, Cmos possède un inconvénient qui est sa moindre adaptation à de faible lumière.
Pour obtenir une image en couleur, il faut appliquer des filtres sur les capteurs sinon, une image
en niveau de gris sera obtenue en sortie. Les filtres généralement utilisés sont les filtres RVB.
Cependant, ces filtres étant très absorbants, une solution est de prendre des filtres utilisant des
couleurs complémentaires cyan, jaune et magenta. Mais cette opération n’apporte pas de grande
différence car la conversion dans l’espace de couleurs RVB engendrent des pertes équivalentes.
ANNEXES 4
Carte cognitive.
Définition.
Plusieurs formulations de cette définition ont été trouvées. Voici quelques-unes unes [39] [40]
[41] [42] [43][44][45]:
C’est un concept donné E. Tolman en 1948. Cette notion repose sur la représentation mentale
qu’un individu se fait de l’organisation de l’espace dans lequel il se trouve. Cette représentation
interne mentale implique que l’individu est capable de déduire des relations, des distances ainsi
que des directions qui lient différents points de l’espace sans avoir eu une expérience directe.
Ainsi, l’individu peut atteindre un but en passant par des chemins, sans jamais les avoir emprunter
auparavant. Les expériences en psychologie cognitive montrent que cette carte cognitive est
construite grâce à la perception visuelle.
La carte cognitive traduit de manière visuelle et dynamique des représentations mentales. Elle
permet d'introduire les facteurs cognitifs dans l'analyse et dans la présentation des résultats.
C'est Tolman qui utilise le premier le terme de carte cognitive pour décrire comment ses rats, et
par analogie l'humain, se comportent dans un environnement. Dans un sens général, une carte
cognitive est une construction mentale qu'on utilise pour comprendre et connaître l'environnement.
Cela suppose que les gens stockent de l'information sur leur environnement, qu'ils utilisent ensuite
pour prendre des décisions spatiales. Une carte cognitive aide à simplifier, coder l'interaction
complexe de l'homme avec son environnement. C'est une représentation mentale des
connaissances environnementales. Une carte cognitive inclut les connaissances sur des lieux aussi
bien que des connaissances sur les relations humaines spatiales. Elle entraîne l'intégration
d'images, d'informations, d'attitudes sur un environnement: elle n'est pas une entité isolée du
contexte. Selon Golledge, il n'y a pas une seule carte cognitive dans la mémoire. Nous en
construisons en fonction d'événements spécifiques: une carte cognitive est dynamique.
Il s'agit d'un processus compose d'une série de transformations psychologiques par lesquelles un
individu acquiert, stocke et décode de l'information sur l'emplacement et les attributs d'un
phénomène, dans son environnement spatial de tous les jours. La carte cognitive peut aussi être
définie comme étant l'union entre la cognition spatiale et la cognition environnementale.
La carte cognitive (Debray,1992, p.43) est un outil qui permet, à travers 7 paramètres d’analyse
de l’acte d’apprentissage, de mieux positionner ces difficultés ou de proposer des activités
pertinentes par rapport à des besoins donnés.
Dans une approximation, on peut définir une carte cognitive comme une représentation
matérielle graphique, qui se veut une modélisation d’une représentation mentale d’une personne
sur un problème donné. Cette carte est composé d’idée ou de concepts reliés par des liens.
Pour nous, notre but va d'être de créer une carte de la topologie des routeurs.
Utilisation.
Les cartes cognitives sont utilisées dans des domaines aussi varié que les modélisations
comportementales, la prise de décision, la stratégie…
Il n’y a donc pas une seule utilisation de la cartographie cognitive mais plusieurs et cela pour
tous les domaines.
Elle peut donc être utilisée à chaque fois que l’on a un objet et un individu qui s’en fait une
représentation mentale. Avec diverse méthode, l’individu peut par lui-même ou des tiers
personnes peut faire une représentation graphique de la modélisation mentale qu’il s’en fait.
Un autre point qui pourrait poser problème, c’est le passage entre deux individus. Néanmoins, il
réside une limite de la cartographie cognitive. Cette théorie est expliquée dans un document trouvé
sur Internet [41], elle entreprend de démontrer que la représentation ne sera jamais identique au
représenter.
Concept central de la psychologie cognitive, le concept de carte cognitive a été initié par les
recherches de Tolman (1948) en psychologie animale.
Pour notre cas, ce sont les algorithmes non supervisé qui vont être utilise pour construire notre
carte cognitive. Cette algorithme va nous permettre de trouver la répartition des routeurs dans un
lieu donné.
Méthode d’élaboration.
Une première méthode est de demander à la personne de faire elle-même la carte. C’est une
méthode simpliste mais qui permet de comprendre la personne à l’origine de la carte. Ainsi, on a
une carte cognitive de sa représentation mentale. Cette méthode n’est pas valable si le résultat que
l’on attend n’est pas la représentation mentale qu’un individu a cru comprendre mais la
représentation exacte sur un sujet précis. Prenons en exemple notre sujet, une personne qui lit le
sujet va se faire une représentation mentale du sujet. Mais si cette personne n’a aucune
connaissance en informatique ou en sciences, sa représentation mentale ne sera pas celle attend
pour répondre au sujet.
Une autre méthode est de prendre plusieurs experts pour faire cette représentation. Il convient
pour les experts de ce mettre en accord sur les concepts entrant en jeu. Mais ici, la difficulté est de
mettre en accord tous les experts. Et faute d’accord, le résultat ne remplira pas les attentes.
Afin d’avoir une approche plus rigoureuse et sans la problématique du désaccord des experts, il
est possible de prendre la cartographie cognitive comme un réseau de neurones formels, et ainsi,
utiliser les algorithmes d’apprentissage. Dans ce cas, les concepts deviennent des neurones. Les
liens de causalité sont alors perçut comme les poids d’apprentissage des connexions dans le réseau.
Il convient qu’une personne qualifier mette en place les concepts intervenant dans la
représentation.
Deux types d’apprentissages sont possibles, l’apprentissage supervisé et non supervisé.
L’avantage de l’apprentissage non supervisé est que cela ne nécessite pas une grande connaissance
sur le monde que l’on souhaite modéliser.
Dans tous les cas, il y a une démarche d’acquisition des données puis de traitements des données
pour former une première carte. Ensuite, il faut valider cette représentation puis la modifier en
conséquence. Cette dernière étape est à répéter tant qu’il n’y a pas une validation du modèle.
Pour notre projet, ça va être l'algorithme de Kohonen qui va répartir les différentes caméras dans
des zones et ainsi construire une carte cognitive pour notre système.
Bibliographie
Réseaux de neurone
RechercheLivres
[1]Réseaux neuronaux, une approche connexioniste de l'intelligence artificielle -P.Bourret,
J.Reggia, M.Samuolides - Teknea, 1991.
[2]Applications of neura Network - Edited by AlanF.Murray - Kluwer Academic
Publishers
Fichiers extraits de Internet
[3]Exemple d'utilisation des SOM : Catégoritsation de patrons syntaxiques
[4]Exemple d'utilisation des SOM : Classification des défauts de rails
[5]Rapport d'un stage avec description des cartes de Kohonen
[6]Cours sur les cartes de Kohonen
[7]Cours (Historique et évolution) sur les réseaux de Neurones, l'apprentissage, les cartes
de Kohonen
[8]Sujet d'un projet informatique décrivant les SOM et leur adaptation possible dans les cas
d'&étude d'image ou de texte
[9]Exemple d'utilisation des SOM pour l'analyse de fichier Logs
[10]Exemple d'utilisation des SOM
[11]Exemple d'utilsation des cartes de Kohonen au travers d'un sujet de stage
[12]Exemple d'utilisation des SOM sur un exemple médicale : détéction de
l'hypovigiliance [13]Cours sur le réseaux de neurones, l'auto apprentissage en
citant kohonen
[14]Exemple d'utilisation des SOM : détection d'intrus dans un système
informatique.
On retrouve ici un algorithme d'apprentissage
[15]Exemple d'utilisation des SOM avec plusieurs algorithmes d'apprentissage
[16]Cours sur les réseaux de neurones non supervisés
[17]Cours sur les réseaux de neurones, définition de l'apprentissage supervisé VS
non supervisé
Extrait de These de Mr Andry
[18]pdf extrait de la thése soutenu par Mr Andry
[19]zip du pdf précédent
Liens Internet
[20]Les différents liens recensés ci dessous avec leur description
LIENS RESEAUX DE NEURONES
[21]http://www.cnrs.fr/Cnrspresse/n386/html/n386a09.htm
[22]http://fr.wikipedia.org/wiki/R%C3%A9seau_de_neurones
[23]http://apiacoa.org/teaching/nn/
[24]http://patrice.dargenton.free.fr/ia/ialab/rnautoconfigurant.html
[25]http://www.isib.be/Etudiant/eln3/rapide.htm
[26]http://sn1.chez-alice.fr/presentation/dedoubl.html
[27]http://www.vieartificielle.com/article/index.php?action=article&id=56
[28]http://www.grappa.univ-lille3.fr/polys/apprentissage/sortie005.html
LIENS AUTO ORGANISATION
[29]http://www.irisa.fr/bibli/publi/theses/2003/priam/priam.html
[30]http://diwww.epfl.ch/w3mantra/tutorial/french/competitive.html
[31]http://www.inria.fr/rrrt/tu-1092.html
[32]http://www.vieartificielle.com/article/index.php?action=article&id=56
[33]http://www.vieartificielle.com/article/index.php?action=article&id=56
LIENS CARTES DE Kohonen
[34]http://www.vieartificielle.com/article/index.php?action=article&id=62
[35]http://www.scico.ubordeaux2.fr/~corsini/Pedagogie/ANN/main/node40.html#algo:som
[36]http://perso.wanadoo.fr/kohonen/
[37]http://condor.ebgm.jussieu.fr/~debrevern/COURS/SOM/2004/img0.html
Carte cognitive
Fichiers extraits d'Internet
[38]Une analyse cognitive du concept de vision entrepreneuriale - Fréderic
CREPLET et Babak MEHMANPAZIR - juillet 1999
[39]L'approche socio-cognitive de la formation de la stratégie : apports théoriques et
méthodologiques. - Sylvie EHLINGER
[40]Une analyse cognitive du concept de vision entrepreneuriale - Fréderic CREPLET et
Babak MEHMANPAZIR - juillet 1999
[41]peut-on approcher les représentations mentales grâce la cartographie cognitive?
- Flrence RODHAIN
[42]le modèle des cartes cognitives de graphes conceptuels : un modèle graphique
d'aide la prise de décision.
[43]les cartes cognitives, outil de compréhension des acteurs d'une
organisation en changement?
[44]la cartographie cognitive : outil pour une démarche d'essence heuristique
d'identification des facteur clés de succès
[45]Utilisation d'une carte cognitive pour le problème de la sélection de
l'action dans un cadre multi-motivationnel
Liens Internet
[46]http://tecfa.unige.ch/staf/staf-f/deiaco/staf11/ex1/11carte_cogn.html
[47]http://tecfa.unige.ch/staf/staf9597/pilard/staf15/cogn_map.html
[48]http://www.ymca-cepiere.org/guide/docs/la_carte_cognitive.htm
[49]http://www.i-km.com/cartes_cognitives.htm
[50]http://www.lps.ens.fr/~risc/ecocog/Berder2000/resumes.html
Réseau de caméras
Document
[51]Cours de Mr MOSTAFAOUI sur la détection du mouvement
[52]Dossier sur la vision artificiel
[53]Tutorial sur accv2000
[54]Exemples de ce que peut faire un réseau de caméras.
Liens Internet
[55]http://homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL_COPIES/MANESSIS/lite
r/
[56]http://www.axis.com/fr/index.htm
[57]http://www.topachat.com/comprendre/wifi.php
[58]http://www.commentcamarche.net/wifi/wifiintro.php3
[59]http://www.monde-diplomatique.fr/2001/08/MAZOYER/15444
[60]http://cyberie.qc.ca/jpc/2004/04/certains-dossiers-ont-un-comportement.html
[61]http://ecolesdifferentes.free.fr/GBBIGBRO.htm
[62]http://www.oqlf.gouv.qc.ca/ressources/bibliotheque/dictionnaires/Internet/fich
es/8360922.html
Documents
[63]PDF sur uclinux
Liens Internet
[64]http://france.asus.com/products4.aspx?l1=12&l2=43&l3=0&model=61&mod
elmenu=1
[65]http://materiel.net/details_WL-500gDeluxe.html