Sujet: Suivi d'objet avec filtre à particule.
Cuttlefish-seq1-.2xratio.0.0.2.0.0.0.2.0.2.-.05-hogcascadelbp-cos-ppp2Dbb-multinomial-128x128-1000.mp4
Le projet se concentrer sur le suivi de seiches grace au filtre a particule sur des videos. Les informations initiales sur la seiche suivie sont donnees par une premiere detection, effectue par le reseau de neurone YOLOv7. Ce modele de reseau de neurone a ete fine-tune au prealable sur un dataset de seiche. Ces informations sont alors utilises pour initialiser les particules du filtre, afin d'avoir une chance plus faible de diverger et une convergence plus rapide. L'etape de mis a jour des particules est faites en passant un patch de la frame en cours de traitement dans un descripteur, puis une mesure de similarite est effectue sur le resultat du descripteur avec le resultat du descripteur correspondant au patch de la meilleure particule a l'etape precedente.
L'objectif du projet est de suivre un objet dans une sequence d'image en utilisant un agorithme de filtre a particule. Il se decoupera donc en plusieurs sous objectifs:
- Creer le repo initial.
- Organiser la structure fichier du projet.
- Creer une template de rapport en Latex.
- Creer un dataset de seiches pour YOLOv7.
- Fine-tuning de YOLOv7 sur notre dataset.
- Creer un programme pour la detection initiale de seiches.
- Implementer plusieurs descripteurs d'image (environ 5).
- Implementer plusieurs mesures de similarite (environ 5).
- Implementer un slicer d'image et de descripteur
- Definir un ou plusieurs vecteurs de representation de ce que l'on suit.
- Implementer un filtre a particule modulable.
- Creer un programme principal qui va gerer les transmissions de donnees entre modules.
- Implementer des metriques d'evaluation pour le programme principal.
- Test des differentes combinaisons entre les descripteurs et les mesures de similarite.
- Evaluation de notre application sur le terrain (Aquarium).
- (Optionnelle) Implementer des metriques d'evaluation pour chaque modules.
La version 3.10 de python est utilise. Les librairies requises peuvent etre installe avec la commande suivante.
pip install -r requirements.txt
Pour lancer le proramme sur une sequence video, la commande ci-dessous peut-etre utilise.
python tracking.py --filepath YOUR_VIDEO --N 500 --descriptor hogcascadelbp --similarity cos --particle ppp2Dbb --resampling multinomial --alpha 1.3 --scale-factor 1 --resample-factor 1 --desc-size 64 64 --lbp-nbpoints 16 --lbp-radius 2
Le dataset est constitue de 2161 images de seiche annotees a la main, qui ont ete augmentees en 5175 images et split entre le train (70%), valid (20%) et test (10%) set. Les images sont de taille 640x640 en RGB. L'augmentation du dataset a ete effectue par miroir, rotations des images, ainsi que par modification de la saturation, de la luminosite ou de l'exposition et enfin, par ajout de flou, de bruit, ou cutout.
Le modele YOLOv7 est utilise comme base (avec poids pretrain) et a ete fine-tune pour 300 epochs supplementaire sur notre dataset, pendant plus de 20H. Les resultats obtenus apres les 300 epochs sont les suivants:
Precision | Recall | mAP@.5 | mAP@.5:.95 |
---|---|---|---|
0.953 | 0.959 | 0.971 | 0.607 |
TODO
TODO
Le principe general du filtre a particule implemente est le suivant:
- On genere N particules, chaque particule represente un etat possible dans lequel ce trouve l'objet a suivre.
- A chaque particule est associe une probabilite initial, donnee par notre premiere detection, representant notre confiance en une particule de bien represente l'etat de notre objet.
- On predit l'etat de nos particules grace a une modelisation du systeme que l'on suppose assez proche du systeme reel.
- On met a jour la distribution de probabilite modelise par nos particules en calculant la similarite entre notre estimation a la frame precedente et chacune des particules. Ce calcul nous permet alors de modifier notre confiance dans chaque particule.
- On regarde ensuite combien de particules participent reellement au suivi de l'objet. Si ce nombre passe en dessous d'un certain seuil, passe a l'etape 6, sinon, on passe a l'etape 7.
- On resample les particules pour que plus de particules participent au suivi de l'objet (duplication des meilleures particules et rejet des autres).
- On calcule l'etat estime dans lequel notre objet ce trouve en faisant la moyenne des particules ponderes par leur probabilite.
- On revient a l'etape 3 et on recommence le processus.
TODO