Toutes les réalisations

Vision par ordinateur

SantéVet Dogs

Explorer une classification de 25 races canines

Mission freelance réelle · reconstruction publique par transfert d’apprentissage

MobileNet + SVM · 25 races

Reconstruction évaluée sur 1 496 images de test · 25 races

Accuracy
89 %
Macro-F1
0.889
Bonne race dans le top 3
96,7 %
Races couvertes
25

Mesures de ce pipeline public MobileNet + SVM. Elles ne décrivent ni le système client ni le modèle ResNet historique.

Explorer la démonstration

Transfert MobileNet · 25 races · calcul local

Comparer 25 races avec un modèle de vision

Un extracteur MobileNet public et une tête SVM entraînée comparent 25 races. Le modèle choisit parmi ces 25 classes même si votre image montre une autre race, un chat ou aucun animal. Elle ne détecte pas la présence d’un chien.

1. Choisir une image

Première image du test par classe dans l’ordre des fichiers, sans sélection selon la réussite du modèle.

Votre photo reste dans ce navigateur. Le moteur et environ 3,6 Mo de paramètres sont téléchargés au premier clic sur Analyser. Le modèle utilise les pixels, jamais le nom du fichier.

Choisissez un exemple ou une photo.

Les cinq premières classes parmi 25

Le résultat apparaîtra après l’analyse. Aucun classement précédent n’est conservé lorsqu’une nouvelle image est choisie.

La mire permet de constater une limite : ce classifieur fermé fournit toujours un classement. Aucun seuil de rejet hors domaine n’a été validé ; cette démo ne constitue pas une identification fiable ni une décision d’assurance.

Méthode, droits des exemples et limites

Les pixels RGB sont échantillonnés en 224 × 224 selon une règle déterministe. MobileNetV1 préentraîné sur ImageNet, figé, produit 512 variables. Une tête SVM linéaire entraînée sur les 25 races classe ces variables normalisées. Il s’agit d’une nouvelle reconstruction, pas du réseau ResNet50V2 historique.

Les images peuvent être déformées par le passage en carré. L’arrière-plan, le cadrage et l’éclairage peuvent influencer la représentation visuelle. Les décodeurs JPEG et profils colorimétriques peuvent différer entre Python et navigateur ; les exemples PNG limitent cet écart. La parité numérique est vérifiée à partir des mêmes pixels décodés.

Exemples : Oxford-IIIT Pet, O. M. Parkhi, A. Vedaldi, A. Zisserman et C. V. Jawahar. Images converties en RGB PNG avec orientation EXIF, sans recadrage. Copyright des photographies : auteurs originaux. Diffusion des adaptations sous CC BY-SA 4.0. Sources, transformations et attributions détaillées.

Comprendre le projet

De la mission à une reconstruction utilisable

Cette mission freelance explorait la classification de races canines à partir de photographies. Le code et les données du portfolio ont été reconstruits pour préserver la confidentialité du travail client.

La chaîne historique utilisait ResNet50V2 et un SVM ; ses poids ne sont plus disponibles. La nouvelle version associe MobileNetV1 préentraîné sur ImageNet, conservé figé, et une tête SVM apprise sur les 25 races canines du corpus Oxford-IIIT Pet. Elle remplace la première démonstration limitée à trois races et à des gradients/couleurs.

Ce que cette réalisation démontre

  • Réutiliser une représentation visuelle profonde et entraîner un classifieur sur un nouveau périmètre.
  • Choisir les paramètres sur validation, puis mesurer un test réservé.
  • Comparer les méthodes sur les mêmes images et contrôler la fidélité de l’export.
  • Exécuter le modèle dans le navigateur avec chargement à la demande et limites visibles.

Le modèle ne détecte pas la présence d’un chien. Il classe aussi une image sans animal parmi ses 25 races. Les croisements, races absentes et conditions inhabituelles restent hors de son périmètre validé. Aucune décision médicale ou d’assurance n’en découle.

Méthode et ressources

PythonTensorFlowMobileNetV1SVM linéaireTensorFlow.jsTypeScript

Une comparaison sur le même test

25 races, mêmes partitions et même grille de régularisation
Représentation + SVMAccuracyMacro-F1Top 3
Gradients et couleurs14,1 %0.13929,5 %
MobileNet figé89 %0.88996,7 %

Le score de la première baseline à trois races n’est pas directement comparable à ce test à 25 races. Le tableau compare deux reconstructions sur exactement le même périmètre.

Protocole

4 980 images après dédoublonnage exact SHA256. 2 787 images pour apprendre, 697 pour choisir C parmi 0,01 / 0,1 / 1, puis 1 496 pour tester. Après sélection, la tête est réentraînée sur les 3 484 images train + validation. Les 180 images de test de la première version sont conservées dans le test.

Pour les autres races, séparation fixe 70/30 par classe, graine 42, puis validation stratifiée dans le train. Le miroir ne fournit pas le split officiel Oxford ; cette séparation est propre à la reconstruction. C retenu : 1 pour MobileNet, 0.01 pour les gradients/couleurs. Aucun réglage sur le test.

Pixels RGB échantillonnés en 224 × 224, normalisés entre −1 et 1 ; MobileNetV1 alpha 0,5 figé, moyenne globale et normalisation L2 des 512 variables ; marges SVM non calibrées. Le moteur et environ 3,6 Mo de paramètres sont chargés uniquement au clic sur Analyser. Les photos restent locales.

Limites et validation technique

Parité Python / TensorFlow.js CPU testée sur trois images synthétiques et huit images test décodées localement : mêmes classes arrivées en tête, écart maximal de marge inférieur à 10⁻⁴. Le contrôle part des mêmes pixels RGB ; les décodeurs JPEG et profils couleur peuvent varier selon le navigateur.

Le préentraînement ImageNet peut contenir des images proches ou communes à Oxford : ce chevauchement externe n’a pas été audité. Les doublons perceptuels ne sont pas exclus. Ce test de corpus ne remplace donc pas une validation externe ou terrain. Aucun taux de réussite sur les photos personnelles, aucune probabilité calibrée ni seuil de rejet hors domaine n’est garanti.

Les 25 races couvertes et leur rappel sur le test

Le rappel mesure la part correctement reconnue parmi les images test de chaque race ; les effectifs sont faibles.

Bouledogue américain
53 / 60
American pit bull terrier
40 / 60
Basset hound
54 / 60
Beagle
50 / 60
Boxer
50 / 60
Chihuahua
53 / 60
Cocker anglais
55 / 59
Setter anglais
49 / 60
Braque allemand
54 / 60
Chien de montagne des Pyrénées
56 / 60
Bichon havanais
58 / 60
Épagneul japonais
56 / 60
Spitz loup
59 / 60
Leonberg
55 / 60
Pinscher nain
50 / 60
Terre-neuve
55 / 59
Spitz nain
50 / 60
Carlin
56 / 60
Saint-bernard
54 / 60
Samoyède
56 / 60
Terrier écossais
56 / 60
Shiba inu
54 / 60
Staffordshire bull terrier
49 / 58
Terrier irlandais à poil doux
52 / 60
Yorkshire terrier
57 / 60

Sources : Oxford-IIIT Pet, miroir utilisé, MobileNet Keras. Provenance, adaptations et licences. Les trois exemples conservent leurs attributions CC BY-SA 4.0.

Reconstruction : scripts/train-santevet-deep.py. Validation : scripts/test-santevet-deep.mjs. Version 2026-10-31. Poids et corpus sont rattachés à leurs empreintes SHA256.