User Tools

Site Tools


dewailly_veroone:thibault_dewailly_maxime_veroone

Projet infovis

IEEE VAST challenge 2008 episode 4

Ce problème de visualisation de données concerne un attentat fomenté par un groupe d’activistes religieux. Ces activistes revendiquent le droit d’être soignés à la maison et dénoncent les hôpitaux et les entreprises développant les soins dans les écoles et les administrations publiques. Cet attentat a consisté en une explosion d’une bombe de faible capacité dans les locaux d’une usine du département de la santé.

Présentation du problème

Ce bâtiment était équipé d’antennes RFID permettant de tracer les positions de tous les employés et visiteurs au cours du temps.

Les documents fournis sont :
- Un plan du bâtiment
- Un journal des déplacements des visiteurs et employés de l’usine. Ce journal comprend l’ID de la personne, le tick de temps et les coordonnées correspondantes.
Il est précisé que le laps de temps qui nous est fourni comprend le temps avant l’explosion, mais il se termine avant l’arrivée des secours.


On nous demande :

- D’identifier l’emplacement de la bombe
- D’identifier les victimes potentielles
- D’identifier des témoins potentiels
- D’identifier des suspects
- D’identifier les suspects qui auraient pu s’échapper

Il s’agit avant tout d’un travail d’investigation, les questions qui nous sont posées doivent être des aides pour la police criminelle. Il ne s’agit en aucun cas de tirer des conclusion hâtives, mais d’orienter les recherches et de faire avancer l’enquête en cours.

Partie I : Traitement des données brutes

Afin de traiter ces données brutes nous avons tout d’abord exécuté un script awk pour modifier le format du document décrivant la structure du bâtiment :

awk '{ 
	split($0,s," "); \
	for(i=1;i<=NF;i++) { \
		print s[i]";"i";"NR \
	}\
     }' 'BUILDING DATA.txt' \
>> map.csv

Ce script récupère la valeur 0 ou 1 (vide ou plein), avec les coordonnées correspondantes. Cela crée un fichier CSV importable, nous donnant la carte sous Tulip :

A partir de cette carte, nous avons ensuite importé le fichier retraçant les déplacements des différentes personnes présentes dans l’usine au moment de l’accident. Puis nous avons crée une propriété permettant de déterminer si un nœud est une personne, ou un élément de la carte. Cela nous permettra de traiter les nœuds en fonction de leur type.
Puis nous avons construit un sous-graphe par personne retraçant son parcours en fonction du temps, ce qui nous a permis d’analyser leur comportement. Pour ce faire, nous avons utilisé une échelle de couleur, du rouge (le plus tôt) vers le bleu (le plus tard). Ainsi, toutes les trajectoires sont référencées.
En superposant la carte avec ces trajectoires on obtient :


On a donc un aperçu général des évènements, qui ne convient pas tout à fait pour répondre au problème, mais auquel on peut appliquer des filtres pour isoler les informations qui nous intéressent.

Partie II : Analyse des données

Dans cette partie, nous nous intéresserons aux réponses que nous avons apportées au problème posé.

1) Instant de la détonation

Pour déterminer l’instant de l’explosion, nous avons tout d’abord constaté qu’en temps normal, les personnes dans l’usine étaient à leurs postes, immobiles. Nous avons ensuite remarqué qu’une agitation suite à l’explosion avait lieu, entrainant l’évacuation du bâtiment. Nous avons donc conclu que l’instant ou la bombe avait explosé était celui juste avant que tous les employés ne bougent.
Dans un premier temps, nous avons calculé les mouvements des personnes, puis nous avons effectué un cumul des mouvements pour chaque personne. Ensuite, nous avons regroupé l’ensemble des mouvements par temps, nous donnant l’ensemble des mouvements cumulés de tous les employés en fonction du temps. Cela nous donne le graphique suivant :

Nous avons ensuite dérivé localement cette courbe pour avoir les variations de mouvements cumulés au cours du temps, ce qui donne :

A la lecture de ce graph, nous constatons une grande agitation à partir du tick t=374. En considérant que les personnes ont mis quelques secondes à réagir, nous avons conclu que la bombe a explosé entre les instants 371 et 373.

2) Identification des victimes

Une fois l’instant de la détonation déterminée, nous nous sommes intéressés aux personnes n’ayant pas évacué le bâtiment. Nous avons remarqué un regroupement anormal de personnes immobiles et qui le sont restés jusqu’à la fin de l’enregistrement. Ce regroupement se situe dans la section sud-est de l’usine. La capture suivante montre les trajectoires des personnes n’ayant pas évacué le bâtiment :

Sur cette image, les points noirs représentent la position de ces personnes lors de l’explosion de la bombe, les points de couleur leur trajectoire en fonction du temps (rouge au plus tôt vers le bleu au plus tard) et les croix représentent leur position à la fin de l’enregistrement. On remarque que parmi ces cinq personnes, quatre n’ont quasiment pas bougé suite à l’explosion, tandis que le dernier va tituber jusqu’à sa position finale. Nous interprétons ces comportements comme des blessures graves voire mortelles, ce qui nous donne les cinq victimes de l’accident.

3) Emplacement de la bombe

Notre première hypothèse de travail était de travailler sur un vecteur vitesse des personnes pour déterminer si elles avaient été soufflées par l’explosion. Malheureusement, toutes les personnes ont une vitesse constante, ce qui ne nous permettait pas de déterminer l’emplacement de la bombe.

A partir de l’identification des victimes, nous nous sommes donc intéressés plus précisément à leur position lors de l’explosion. De cette information nous avons pu isoler un périmètre autour duquel il fallait rechercher l’emplacement de la bombe. Ensuite, nous avons remarqué qu’une personne était sorti d’une des salles touchées par l’explosion avant celle-ci, avait pénétré dans une salle adjacente, puis était reparti vers la sortie juste après l’explosion. Nous en avons conclu que celui-ci avait placé la bombe, et nous avons supposé qu’elle était placée à l’endroit où la personne se trouvait au début de l’enregistrement.

Sur cette image, nous avons retracé la trajectoire du suspecté poseur de bombe. Les symboles d’explosion représentent l’endroit où les victimes se trouvaient lors de l’explosion pour corroborer notre hypothèse.

4) Les témoins

Ayant déterminé l’emplacement de la bombe et ayant trouvé un suspect qui l’aurait posé selon nos hypothèses, nous avons recherché des personnes susceptibles d’avoir vu cet homme placer la bombe ou s’échapper. Nous avons repéré une personne survivante qui a croisé l’homme après que la bombe ait explosé.

Vidéo Youtube

Cette animation montre les deux protagonistes se déplacer dans l’usine au cours du temps. On remarque que notre suspect numéro un a croisé cette personne durant l’évacuation. Ce pourrait donc être un témoin survivant potentiel à interroger.

5) Les suspects

Hormis le suspect numéro un que l’on soupçonne d’être le poseur de bombe, nous avons remarqué plusieurs comportements suspects durant l’évacuation du bâtiment. Trois personnes sont sorties de leur pièce bien après tout le monde (environ 120 ticks).
Ce qui signifierait que ces hommes étaient au courant que l’explosion allait avoir lieu et n’ont pas paniqué lors de l’évacuation. Plus suspicieux encore, un homme qui était trois pièces plus loin est tout d’abord sorti, puis a fait demi-tour pour venir les chercher. A la find e l’enregistrement, ils sont toujours à l’intérieur de l’usine. Bien qu’il soit possible qu’il y ait eu des blessés et que ceux-ci soient allés les secourir, nous estimons que des questions doivent leur être posées.

Vidéo Youtube

On voit bien ici que les trois hommes stationnent dans le couloir en attendant de se regrouper au lieu d'évacuer le bâtiment. En particulier, un des suspects de la salle la plus à l'est attend ses 3 compères en faisant les 100 pas dans le couloir.

6) Les suspects qui se seraient échappés

Celui que nous suspectons d’avoir posé la bombe a évacué l’usine bien avant tout le monde et aura eu tout le loisir de s’échapper.
Cependant, les informations dont nous disposons montrent que les autres personnes ayant éveillés nos soupçons étaient encore à l’intérieur de l’usine à l’arrivée des secours, mais on se sait pas ce qu’il est advenu par la suite.

Partie III : Techniques de visualisation

Dans cette partie, nous verrons quels scripts ont été utilisés pour initialiser le graphe, puis pour appliquer les filtres nécessaires au traitement de l’information.

1) Génération de la carte et des trajectoires

Pour générer la carte, nous utilisons une fonction mapInit. Celle-ci parcourt les nœuds dont la propriété est ‘tile’ (dalle), repère si la valeur est 0 ou 1 et applique la couleur blanche ou noire à ce noeud. On positionne ensuite les noeuds en grille pour créer une dalle composée de carrés 5×5, reconstituant le plan du bâtiment.

L’image ci-dessus montre en détail la composition de la dalle, qui se compose de nœuds séparés. En ce qui concerne les trajectoires, la deuxième partie de la fonction mapInit se charge tout d’abord de trier les nœuds. Elle les classe par personnes puis par tick de temps. Les nœuds sont alors ordonnés ainsi :

Personne Temps
1 1
1 2
1
1 837
2 1
2 2

Ensuite, la fonction parcourt les nœuds et construit une arête si le suivant appartient à la même personne. Nous obtenons au final une trajectoire pour chaque personne, chaque nœud représentant une position à un instant T, joignant le nœud de l’instant T+1 et T-1.

Ces Noeuds sont ensuite placés sur la grille en fonction de leurs coordonnées, avec un axe Z proportionnel au temps. Afin de mettre en valeur les positions initiales et finales de ces personnes, on a posé :

Z = valeur_absolue( 418 - temps )

2) Filtres

Le jeu de données étant très fourni, il a été nécessaire de mettre en place certains filtres afin de n'afficher qu'une quantité réduite d'informations

Pour cela nous avons mis en place une propriété booléenne représentant le fait de savoir si le noeud était masqué par un filtre ou non :

False = a été masqué, ne pas afficher

True = est valide, afficher

Une fonction parcourt ensuite les noeuds, et les affiche ou les masque suivant la valeur de leur propriété. Pour pouvoir réinitialiser tout cela, une autre fonciton a été mise en place, remettant la valeur à 'True' pour tous les noeuds.

Quant aux filtres eux mêmes, ils offrent la possibilité d'afficher les noeuds d'un intervale de temps donné et/ou les noeuds correspondant à une liste de personnes.

3) Animation

Pour pouvoir rendre compte de certains comportements suspects ou de vérifier les positions relatives de ertaines eprsonnes à un instant donné, il nous a paru pertinent de mettre en place des animations. Pour cela, nous avons dû trouver le moyen le plus rapide de mettre à jour les noeuds affichés afin de rendre l'animation la moins lente possible, étant déja significativement ralentie par un appel de updateVisualization() à chaque itération, qui doit réafficher 75k noeuds. Les fonctions utilisées sont donc moins génériques afin de ne pas boucler sur tous les noeuds, mais seulement ceux dont la position/couleur doit être modifiée.

4) Calculs de mouvements

Le moment de la détonation a été calculé grâce à la quantité de mouvement générale au cours du temps et à sa dérivée. Pour parvenir à ce résultat, nous avons utilisé une fonction qui tout d’abord va calculer pour chaque personne et pour chaque instant, la distance qu’il a parcouru par rapport à l’instant précédent.
Ensuite, nous cumulons ces distances parcourues pour chaque personne, ce qui nous donne les mouvements cumulés par personne au cours du temps.
Enfin, grâce à Excel, nous effectuons une moyenne par instant du mouvement cumulé de toutes les personnes. Avec ces valeurs, nous avons réalisé un graphique, puis en dérivant localement, nous avons la variation de mouvement cumulés.

Conclusion

Au terme de ce mini-projet, nous avons appris à aborder un problème concret et à utiliser des techniques de visualisation pour permettre d’y répondre. Dans ce sujet, il nous était demandé de formuler des hypothèses concernant les suspects, l’emplacement de la bombe ou encore les victimes de l’accident.
Grâce à un traitement des données brutes, il nous a été permis de visualiser ces données et de formuler des hypothèses concernant les questions posées. De plus, ces hypothèses s’appuient sur des outils visuels pour argumenter notre position.
Il n’en reste pas moins que ces réponses ne sont pas une certitude, elles sont orientées par une analyse des comportements humains qui relève des sciences cognitives et non plus de la visualisation de données.

Cependant, l’objectif principal étant d’utiliser la visualisation pour contribuer à résoudre un problème, ce qui a été utilisé ici.

/net/html/perso/melancon/Visual_Analytics_Course/data/pages/dewailly_veroone/thibault_dewailly_maxime_veroone.txt · Last modified: 2012/05/04 17:39 by melancon