Download README.md from fireviewer/convnext-tiny-alert-categories-v2: direct link, hf CLI and curl.
- Browser
- Download file 7.6 kB
-
https://huggingface.co/fireviewer/convnext-tiny-alert-categories-v2/resolve/main/README.md
- Command line
-
hf download hf://fireviewer/convnext-tiny-alert-categories-v2/README.md
-
curl -L -o README.md https://huggingface.co/fireviewer/convnext-tiny-alert-categories-v2/resolve/main/README.md
license: bsd-3-clause
tags:
- fireviewer
- convnext
- torchvision
- fire
- smoke
- image-classification
library_name: pytorch
pipeline_tag: image-classification
datasets:
- fireviewer/fireviewer_fire_smoke_flame_v3_native
model-index:
- name: FireViewer ConvNeXt-Tiny · Context
results:
- task:
type: image-classification
name: Image Classification
dataset:
type: fireviewer/fireviewer_fire_smoke_flame_v3_native
name: FireViewer · validation avec catégorie
config: default
split: validation
revision: 8c8b197fa1c928217529a04bff434fb70a66614e
metrics:
- type: f1
name: F1 macro (%)
value: 76.92
- type: accuracy
name: Accuracy (%)
value: 87.72
ConvNeXt-Tiny · Six catégories de contexte
Classer une image selon le contexte visuel du feu ou de la fumée. Ce modèle PyTorch produit une catégorie parmi six ; les cibles de classification proviennent des annotations Luna du corpus FireViewer.
| Architecture | Entrée | F1 macro validation | Accuracy validation |
|---|---|---|---|
| ConvNeXt-Tiny | 920 × 920 · RGB | 76,92 % | 87,72 % |
Checkpoint disponible
| Fichier | Contenu |
|---|---|
| best.pth | Meilleur checkpoint de validation ; recommandé pour l’inférence. |
| last.pth | Dernier checkpoint complet conservé pour une éventuelle reprise. |
| architecture.json | Architecture Torchvision et provenance de l’initialisation. |
| class_mapping.json | Correspondance exacte des six indices de sortie. |
Catégories prédites
| ID | Catégorie | Sens de l’annotation |
|---|---|---|
| 0 | human_useful_fire |
Usage humain contrôlé : feu de camp, barbecue, activité agricole ou industrielle. |
| 1 | domestic_origin |
Foyer, poêle, cuisson ou contexte domestique identifiable. |
| 2 | suspect_origin |
Origine ou détails insuffisants ; feu ou fumée potentiellement dangereux. |
| 3 | fire_road_urban |
Véhicules, routes ou incident en milieu bâti. |
| 4 | forest_natural_area_wildfire |
Feu apparent de végétation non maîtrisé en zone naturelle. |
| 5 | negative |
Ni feu ni fumée visibles selon l’annotation de contexte. |
Ces catégories décrivent le contexte apparent d’une image. Elles ne forment pas une échelle ordinale de gravité. suspect_origin ne signifie pas une origine criminelle établie ; il couvre une origine ou des détails insuffisants avec un feu ou une fumée potentiellement dangereux.
Résultats sur la validation
Évaluation du meilleur checkpoint sur 11 237 images disposant d’une catégorie, à l’époque 5. La prédiction est la classe au logit maximal parmi les six sorties.
| ID | Contexte | Précision | Rappel | F1 | Images |
|---|---|---|---|---|---|
| 0 | Usage contrôlé | 62,39 % | 78,46 % | 69,51 % | 260 |
| 1 | Contexte domestique | 47,46 % | 58,33 % | 52,34 % | 48 |
| 2 | Origine suspecte / indéterminée | 74,71 % | 75,26 % | 74,98 % | 2292 |
| 3 | Route / urbain | 88,35 % | 84,57 % | 86,42 % | 1121 |
| 4 | Feu en zone naturelle | 80,20 % | 87,47 % | 83,68 % | 1181 |
| 5 | Négatif | 95,76 % | 93,43 % | 94,58 % | 6335 |
Le F1 macro donne le même poids aux six classes. L’accuracy agrège toutes les images et dépend davantage des classes fréquentes. La classe domestique ne compte que 48 images de validation : son score est plus sensible à quelques erreurs.
Ces chiffres évaluent la concordance avec les catégories Luna du split de validation. Ils ne constituent ni une validation indépendante de la dangerosité réelle ni une mesure sur le test réservé.
Inférence avec PyTorch
pip install torch torchvision pillow huggingface_hub
import torch
from PIL import Image
from torch import nn
from torchvision.models import convnext_tiny
from torchvision.transforms import functional as TF
from huggingface_hub import hf_hub_download
path = hf_hub_download(
"fireviewer/convnext-tiny-alert-categories-v2",
"best.pth",
)
checkpoint = torch.load(path, map_location="cpu", weights_only=False)
labels = checkpoint["classes"]
size = int(checkpoint["image_size"])
model = convnext_tiny(weights=None)
model.classifier[2] = nn.Linear(model.classifier[2].in_features, len(labels))
model.load_state_dict(checkpoint["model"])
model.eval()
with Image.open("image.jpg") as image:
image.draft("RGB", (size, size))
image = image.convert("RGB").resize((size, size), Image.Resampling.BILINEAR)
tensor = TF.normalize(
TF.to_tensor(image),
mean=[0.485, 0.456, 0.406],
std=[0.229, 0.224, 0.225],
).unsqueeze(0)
with torch.inference_mode():
logits = model(tensor)
category = labels[int(logits.argmax(dim=1).item())]
print(category)
Le prétraitement doit rester cohérent avec le run : RGB, redimensionnement direct en 920 × 920, interpolation bilinéaire, pixels dans [0, 1], puis normalisation ImageNet. Le modèle n’utilise pas le letterboxing du détecteur YOLO.
Données et paramètres du run
| Paramètre | Valeur |
|---|---|
| Base | torchvision.convnext_tiny, initialisation IMAGENET1K_V1 |
| Tête de classification | Couche linéaire finale à 6 sorties |
| Dataset | fireviewer/fireviewer_fire_smoke_flame_v3_native |
| Révision des données | 8c8b197fa1c928217529a04bff434fb70a66614e |
| Catégories manquantes | 191 valeurs nulles exclues de la classification |
| GPU | NVIDIA L4 |
| Résolution | 920 × 920 |
| Batch physique / accumulation | 8 / 4, soit un batch effectif de 32 |
| Optimiseur | AdamW, LR de référence 0.0003 |
| Plan de LR | Warmup de 3 époques puis décroissance cosinus |
| Fonction de perte | Entropie croisée pondérée, label_smoothing=0.05 |
| Précision | BF16 |
| Sélection du best | F1 macro de validation |
| Patience configurée / plafond | 7 validations sans amélioration / 75 époques |
| Époques complètes de ce checkpoint | 5 |
Les splits du corpus sont conservés. Les images sans catégorie ne sont pas transformées en exemples negative.
Usages et limites
Le modèle peut servir à explorer, filtrer ou regrouper des images par contexte visuel. Il classe l’image entière : il ne produit pas de boîtes et n’identifie pas une distance caméra / foyer.
Une même image peut contenir plusieurs contextes, alors que le modèle ne renvoie qu’une catégorie. Les scènes ambiguës et les différences entre caméras, éclairages ou environnements peuvent diminuer les performances. Les catégories d’origine sont visuelles et ne déterminent pas avec certitude la cause d’un incendie.
Licence et traçabilité
Licence déclarée : BSD-3-Clause. Les conditions des images sont décrites dans la fiche du dataset. Les poids évalués proviennent de la révision 12dd4da71da5dd4264c63e07cab5f41c3a007b77 ; cette mise à jour de documentation ne modifie pas les checkpoints.
Projet : FireViewer · Documentation mise à jour : 12 novembre 2026.
