Modération de Contenu On-Device
Classifieur d’images embarqué, quantifié en trois variantes pour trois cibles de déploiement
93,1 %F1 macro
1,24 Mobuild le plus petit
9 714images
Problème
Une messagerie doit classifier les images partagées sans les envoyer sur un serveur. Le modèle tourne donc sur le téléphone : il doit être petit et rapide, pas seulement précis. La taille est la contrainte dominante.
Approche : transfer learning, puis quantification
Fonctionnement
- Entraînement en deux temps : le backbone ImageNet est gelé pendant 20 époques pour n’entraîner que la tête de classification, puis dégelé sur 3 époques de fine-tuning avec 52 couches BatchNorm figées, ce qui stabilise les statistiques sur un jeu de données de cette taille.
- Trois classes : alimentaire sain, alimentaire non sain, non-alimentaire : 3 716 / 2 998 / 3 000 images. Suffisamment équilibré pour que les métriques macro soient les bonnes à rapporter.
- Un modèle, trois builds : le même réseau entraîné est exporté en TFLite de trois façons. La quantification dynamic-range donne l’artefact le plus petit pour du matériel contraint, float16 est le défaut mobile, et FP32 est conservé pour l’inférence serveur où la taille cesse d’importer.
Pourquoi l’exécution est locale
- À 1,24 Mo, le modèle tient dans le bundle applicatif, sans téléchargement ni démarrage à froid.
- La classification se fait localement : les photos partagées ne quittent jamais le téléphone pour être modérées.
- Fonctionne hors ligne, et ne coûte rien par image à l’inférence.
Résultats
93.10%
F1 macro
92.92%
Exactitude en validation
1.24 MB
Build le plus petit
Stack Technologique
PythonTensorFlowKerasTensorFlow LiteMobileNetV3Transfer learningQuantisationComputer visionDocker