PictorIA - Roboflow - PPTM

Télécharger au format pptx, pdf ou txt
Télécharger au format pptx, pdf ou txt
Vous êtes sur la page 1sur 39

Roboflow

Tutoriel “Détection d’objets”

Atelier PictorIA

BnF Datalab
26 juin 2024

Jean-Philippe Moreux
[email protected]
Plan de l’atelier

A. Créer un projet
B. Annoter
C. Créer un jeu de données
D. Entraîner un modèle
E. Déployer un modèle
F. Exporter au format IIIF
Roboflow est une plateforme agrégeant des outils d’annotation de jeu de
données et d’entraînement de modèles d’analyse d’images. La plateforme
est payante mais une période d’essai est offerte, et un compte “Recherche”
peut être négocié sous réserve que les données soient publiques.
Dans ce projet Roboflow, nous allons créer un modèle de détection d’objets
opérant sur des manuscrits enluminés de la base Mandragore. Le modèle va
cibler deux classes d’objet visuel, “humain” et “cheval”.
A. Créer un projet
Créer un projet Roboflow

• Donner un nom
• Choisir le mode “Object Detection”
• Choisir la visibilité
(publique, privée)
Charger les images
Charger les images
B. Annoter
Choisir le mode d’annotation

• Autolabel : un modèle visuel


(Grounding Dino) va tenter de
détecter les objets à partir d’une
requête textuelle
• Roboflow labelling : annotation
humaine (service payant)
• Manual labelling : vous allez faire
le travail (ou vos collègues)
Choisir le mode d’annotation : Autolabel

Autolabel : un écran permet de tester sur quelques images les prompts à


écrire pour chaque classe.

● Essayer plusieurs
prompts (en anglais).
● Jouer sur le seuil
de confiance.
● Si les résultats sont
satisfaisants, appliquer
sur tout le corpus.
● Sinon, passer en
mode manuel.
Choisir le mode d’annotation : manuel

C’est à cette étape qu’il est possible


d’inviter d’autres usagers à annoter.
Sinon, assigner la tâche à vous seul.
Annoter

L’écran présente le corpus selon deux onglets, images à annoter


et images déjà annotées.
Annoter

Plusieurs modes d’annotation :


● Rectangle
● Polygone
● Smart Polygone : en fait le modèle
SAM (Segment Anything). Dans
certains cas, ce mode est plus
rapide que le mode Rectangle.
● via un modèle existant
● Recopie des annotations de l’image
précédente
Annoter : SAM

SAM est un modèle de segmentation interactif. En cliquant sur un point de


l’objet, on obtient une première segmentation, qu’il est possible d’étendre
ou de restreindre en recliquant à l’extérieur ou à l’intérieur du contour.
Annoter : SAM

Lorsque le contour convient, on peut choisir de le simplifier. Puis la


classe de l’objet est choisie. Pour la première segmentation d’un
objet, il faut saisir le nom de la classe.
Annoter : avec un modèle

Il est possible d’utiliser un modèle existant pour préannoter les


images (ici, un modèle déjà entraîné sur le même corpus).
Annoter : avec un modèle

Ajuster le seuil de confiance permet d’obtenir plus ou moins


d’annotations exactes.
C. Créer un jeu de données
Créer un jeu de données

Les images annotées doivent être ajoutées à un jeu de données.


La répartition entre images d’entraînement, d’autovalidation (par le
modèle) et de test (par l’utilisateur) peut être ajustée.
Créer un jeu de données

L’écran suivant permet de vérifier la cohérence du jeu. Dans cet exemple,


les classes cheval et arbre et sont sous-représentées.
Créer un jeu de données : vérification

L’écran suivant permet de vérifier la cohérence du jeu. Dans cet exemple,


les classes cheval et arbre et sont sous-représentées.
Créer un jeu de données : versionnement

Enfin il faut créer une version du jeu de données pour entraîner un


modèle. C’est à cette étape que l’on peut appliquer des prétraitements
aux images du jeu et accroître leur nombre avec des techniques
d’augmentation.
Créer un jeu de données : prétraitements

● Correction de l’orientation
● Redimensionnement
● Correction du contraste
● Gestion des images sans annotation
● …
Créer un jeu de données : augmentation

Les traitements d’augmentation peuvent


s’appliquer au niveau de l’image ou de
la boîte englobante :
● Rotation
● Déformation
● Colorimétrie
● …
Créer un jeu de données : création

Finalement, il faut choisir le facteur d’accroissement du jeu


D. Entraîner un modèle
Créer un modèle

A ce stade, il est possible d'entraîner un modèle sur la version du jeu de


données qui vient d’être créée (et aussi d’exporter le jeu de données).
Créer un modèle

L’entraînement achevé, le modèle est disponible et ses performances


peuvent être évaluées avec plusieurs outils.
Créer un modèle : évaluation

Visualisation : Comparaison image par image de l’annotation (Ground


Truth) et de la sortie du modèle (Model Predictions)
Créer un modèle : évaluation

Métriques d’évaluation, dont la matrice de confusion du modèle. Cliquer


sur une case False… conduit aux images ayant généré des erreurs.
Créer un modèle : test

Une image de test peut être chargée sur la page du modèle.


Créer un modèle : test

Dans l’onglet Visualize, les images de test du jeu sont affichées avec le
résultat de leur traitement. Une image externe peut aussi être chargée.
E. Déployer un modèle
Déployer : localement

L’onglet Deploy présente les options de déploiement du modèle. Self-


hosted inference permet de télécharger le modèle puis de l’exécuter
localement.
Déployer : localement

L’onglet Deploy présente les options de déploiement du


modèle. Self-hosted inference permet de télécharger le
modèle puis de l’exécuter localement.

>python -m venv roboflow


>source roboflow/bin/activate
>pip install inference
>export ROBOFLOW_API_KEY="votre clé"
>python test_inference.py …
Déployer : localement

Ce script lance l’inférence sur une image et exporte un fichier JSON des annotations.
> python test_inference.py images/6000415-150.jpg "cheval-mandragore/3"

https://github.com/altomator/pictorIA/blob/main/python/test_inference.py https://gallica.bnf.fr/ark:/12148/btv1b6000415h/f150
F. Exporter au format IIIF
IIIF
Ce script convertit l’export JSON de Roboflow en annotations IIIF (API Presentation 2.0,
un fichier par canvas).
> python roboflow2iiif.py btv1b6000415h 150 2.438 images/6000415-150.json

https://github.com/altomator/pictorIA/blob/main/python/roboflow2iiif.py
IIIF

Ce fichier d’annotations IIIF peut ensuite être chargé dans un visualiseur IIIF.

https://manuscrits-france-angleterre.org/view3if/?target=https://gallica.bnf.fr/iiif/ark:/12148/btv1b6000415h/manifest.json&lang=fr&page=150

Vous aimerez peut-être aussi