Skip to content

DARWICHAli/Image-Labellisation-modele

Repository files navigation

Modèles

Introduction

Ce dépôt défini le code des différents modèles.

Ce fichier commence par expliquer comment tester notre modèle d’annotation via une interface graphique, puis comment installer le module. La suite explique brièvement les entrées/sorties et le fonctionnement global des modèles.

Tester le modèle

Le site est déployé à l’adresse suivante: https://captioning.zefresk.com/

L’interface est simple à utiliser. Vous pouvez retrouver une explication detaillée de son fonctionnement dans le dépôt Interface: https://git.unistra.fr/image-labellisation/interface

Installation

Dépendances

Ce dépôt est testé avec :

  • torch 1.13.1

  • opencv 0.14.1

  • detectron2 0.2.1

Instructions

L’installation du modèle est complexe mais faisable. Elle nécessite d'installer une version précise de detectron2.

  1. Cloner le dépôt et ses sous-modules.

git clone --recursive https://git.unistra.fr/image-labellisation/modele.git
  1. (facultatif) Il est recommandé de créer un environnement virtuel avec venv, puis l’ouvrir :

python -m venv env
source ./env/bin/activate
  1. Installer les packages simples à installer

pip install torch opencv-python pycocotools h5py line_profiler spacy
  1. Installer le modèle spacy :

python -m spacy download en_core_web_md
  1. Installer detectron2 v0.2.1

pip install -e detectron2
  1. Compiler et installer les modèles bua :

python setup.py build develop
  1. Il reste à télécharger les modèles (voir section suivante).

Modèles

Les modèles doivent être téléchargés à part et mis dans le dossier courant.

wget --content-disposition "https://seafile.unistra.fr/f/d1bddb9791ff4fc596f3/?dl=1"
wget --content-disposition "https://seafile.unistra.fr/f/7f271666b0874097be6b/?dl=1"

Fonctionnemment global

Le modèle d’annotation peut être découpé en deux parties principales, de manière analogue à un autoencoder.

Autoencoder
Figure 1. Structure d’un autoencoder

Encodeur / Extraction de features

L'"encodeur" d’après les articles étudiés et ce dépôt prend en entrée des images RGB et retourne un certain nombre de masques rectangulaires ainsi que la représentation latente des pixels dans le masque.

En effet la partie "décodeur" est composée d’un R-CNN qui a pour objectif d’extraire les ROI(Region Of Interest) les plus "essentielles" à la description de l’image sous forme de "bounding-box". Le nombre de bounding box est décrit par la variable \(N\). Ensuite, une représentation latente de ces \(N\) régions va être déterminée à l’aide d’un réseau à convolution "classique" (e.g. ResNet).

Le modèle est donc chargé d’extraire un certain nombre de features mais pas la position de ces dernières (bruh).

D’un point de vue tensoriel, si la représentation latente est de dimension \(K\) :

\[\text{input}(1) = (224, 224, 3) \\ \text{output}(1) = (N, K)\]

Oui, le M2 n’utilise pas la position des features ????

Encodeur pipeline
Figure 2. Traitement d’une image par l’encodeur

Par exemple, si l’encodeur utilise ResNet , la dimension de plongement est 2048, donc \(K=2048\) et la sortie sera de dimension \((N, 2048)\).

Décodeur / Génération d’annotation

Le "décodeur" prend en entrée les \(N\) features de l’encodeur et utilise un réseau de transformeurs (et donc un modèle encodeur/décodeur) pour générer les tokens un à un et ainsi former une phrase. Comme le réseau décodeur est un transformeur, les phrases finales ne pourront pas dépasser une longueur fixe \(L\).

D’un point de vue tensoriel, si la représentation latente est de dimension \(K\) :

\[\text{input}(1) = (N, K) \\ \text{output}(1) = (1, L)\]
Décodeur en action
Figure 3. Traitement des features par le décodeur

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages