L'annotation des images constitue l'étape cruciale pour transformer nos captures brutes en données d'entraînement exploitables par les modèles de Computer Vision.
L'objectif principal est de permettre au modèle de détecter visuellement les zones fonctionnelles d'une page web capturée. Cette détection automatique remplace l'analyse traditionnelle du DOM HTML, souvent compromise par l'obfuscation ou le contenu dynamique.
.. mermaid::
flowchart TD
A[Image de page web] --> B[Annotation manuelle]
B --> C[Zones fonctionnelles identifiées]
C --> D[Format COCO JSON]
D --> E[Entraînement Detectron2]
E --> F[Modèle de détection]
Lors du premier test d'annotation, 7 classes avaient été établies :
| Classe | Description |
|---|---|
title |
Titre principal de la page |
content |
Zone de texte central (article, fiche produit, etc.) |
media |
Image, vidéo ou lecteur embarqué |
header |
Bandeau supérieur, souvent identique sur toutes les pages |
footer |
Bas de page contenant liens, mentions, etc. |
ads |
Publicités et contenus sponsorisés |
sidebar |
Barres latérales (menus ou contenus annexes) |
Note
Ces 7 classes ont permis d'annoter 14 images de test et de valider la faisabilité de l'approche par Computer Vision.
Au cours du développement, l'objectif s'est élargi pour couvrir des cas d'usage plus spécifiques, notamment les plateformes vidéo comme YouTube. Le schéma de classes a été étendu à 18 classes :
.. grid:: 2
.. grid-item-card:: 🌐 Éléments Génériques Web
* ``header`` - En-tête du site
* ``footer`` - Pied de page
* ``logo`` - Logo du site/plateforme
* ``media`` - Contenu multimédia principal
* ``advertisement`` - Zones publicitaires
* ``left sidebar`` / ``right sidebar`` - Barres latérales
* ``pop up`` - Fenêtres surgissantes
* ``none access`` - Zones inaccessibles/masquées
* ``other`` - Éléments non classés
.. grid-item-card:: 🎥 Éléments Spécifiques YouTube
* ``title`` - Titre du contenu
* ``chaine`` - Nom de la chaîne
* ``description`` - Description du contenu
* ``likes`` - Système de mentions "j'aime"
* ``vues`` - Compteur de vues
* ``commentaire`` - Section commentaires
* ``recommendations`` - Contenu recommandé
* ``suggestions`` - Suggestions associées
L'extension du nombre de classes répond à plusieurs besoins :
1. Spécialisation Plateforme
Les plateformes comme YouTube ont des éléments spécifiques (likes, vues, recommandations) qui nécessitent une détection précise pour des analyses d'engagement ou de contenu.
2. Granularité Fonctionnelle
La distinction entre left sidebar et right sidebar permet une analyse plus fine
de la mise en page et des stratégies UX.
3. Robustesse du Modèle
Plus le modèle est entraîné sur des classes variées, plus il devient robuste pour détecter des layouts non-vus pendant l'entraînement.
Warning
Difficultés d'annotation identifiées :
- Chevauchement spatial :
mediaparfois inclus danscontent - Ambiguïté fonctionnelle :
advertisementvssuggestions - Variabilité contextuelle :
headerpeut contenirlogoet navigation - Granularité subjective : différence entre
otheret classes spécifiques
Règles d'annotation établies :
1. Priorité au contenu principal (content > sidebar)
2. Segmentation propre sans chevauchement
3. Annotation de la zone englobante complète
4. Cohérence inter-annotateur via validation croisée
Toutes les annotations suivent le standard COCO (Common Objects in Context) :
{
"info": {
"description": "SmartWebScraper-CV Dataset",
"version": "4.0",
"year": 2025
},
"categories": [
{"id": 1, "name": "header", "supercategory": "web_element"},
{"id": 2, "name": "title", "supercategory": "content"},
{"id": 3, "name": "content", "supercategory": "content"},
{"id": 18, "name": "suggestions", "supercategory": "recommendation"}
],
"annotations": [
{
"id": 1,
"image_id": 1,
"category_id": 2,
"bbox": [x, y, width, height],
"area": 15680,
"iscrowd": 0
}
]
}.. grid:: 3
.. grid-item-card:: 🔧 Compatibilité
:text-align: center
Compatible Detectron2, YOLOv5, etc.
.. grid-item-card:: 📊 Métriques Standard
:text-align: center
mAP, IoU, précision/rappel
.. grid-item-card:: 🔄 Extensibilité
:text-align: center
Ajout facile de nouvelles classes
.. mermaid::
flowchart LR
A[Images brutes] --> B[Sélection échantillon]
B --> C[Annotation Roboflow]
C --> D[Validation qualité]
D --> E[Export COCO]
E --> F[Préparation entraînement]
F --> G{Résultats satisfaisants?}
G -->|Non| H[Annotation supplémentaire]
G -->|Oui| I[Modèle final]
H --> C
| Métrique | Valeur Cible | Description |
|---|---|---|
| Cohérence inter-annotateur | > 85% | Accord entre différents annotateurs |
| Précision des boîtes | IoU > 0.8 | Alignement précis des bounding boxes |
| Couverture des classes | Toutes représentées | Chaque classe a ≥ 10 exemples |
| Équilibrage dataset | Ratio 3:1 max | Éviter les classes sur-représentées |
Tip
Leçons apprises de l'annotation :
- Commencer par un jeu de classes simple et l'étendre progressivement
- Définir des règles d'annotation claires dès le début
- Valider régulièrement la cohérence des annotations
- Équilibrer précision et efficacité selon les contraintes du projet