litert-models / docs /USAGE.md
Charlbi's picture
Refresh bilingual documentation, model evidence and continued-learning guides
bdcd483 verified
|
Raw History Blame Contribute Delete
6.94 kB

Utiliser les conversions

Français · English

1. Choisir la variante

Consulter la matrice. Un graphe d’inférence et sa variante _learning sont distincts. Les bundles multi-graphes exigent tous les composants, processeurs et tokeniseurs du pipeline.json. Ne pas renommer un seul composant pour simuler un modèle complet. Les poids sont téléchargés séparément de l’APK.

2. Épingler et vérifier

Python 3.11+ et huggingface_hub sont nécessaires à cet exemple. Si un accès est requis, utiliser hf auth login ; aucun identifiant secret dans le code ou la documentation. Télécharger une révision immuable puis contrôler chaque entrée du manifeste :

from huggingface_hub import snapshot_download

snapshot_download(
    repo_id="fireviewer/litert-models",
    revision="330e9097409042751988e9fa5994b51ac2b577bc",
    allow_patterns=["models/fireviewer_dfine_m_strict_v1_learning/*"],
    local_dir="model-checkout",
)

Le contrôle suivant porte sur le dossier téléchargé ci-dessus.

from pathlib import Path
import hashlib, json

folder = Path("model-checkout/models/fireviewer_dfine_m_strict_v1_learning")  # choose the downloaded folder
for name, expected in json.loads((folder / "artifact_manifest.json").read_text(encoding="utf-8")).items():
    path = (folder / name).resolve()
    assert path.is_relative_to(folder.resolve())
    assert path.stat().st_size == expected["bytes"]
    with path.open("rb") as stream:
        assert hashlib.file_digest(stream, "sha256").hexdigest() == expected["sha256"]

Le manifeste couvre aussi les configurations : conserver leurs octets. Un nouveau hash de poids exige une nouvelle qualification. Licences, notices et restrictions des modèles sources restent indépendantes d’Apache-2.0 pour l’application.

3. Respecter le contrat

Lire runtime_contract.json et android_model_config.json lorsqu’ils existent ; les anciennes variantes/bundles utilisent config.json, pipeline.json et le rapport de conversion. Respecter dtype, disposition NCHW/NHWC, RGB/BGR, normalisation, bornes/pas, ordre des classes et décodeur. Le prétraitement d’une famille n’est pas transférable à une autre. Redimensionner les masques au plus proche voisin et conserver la transformation de coordonnées vers l’image originale. Une entrée externe dynamique peut être redimensionnée dans le graphe vers un encodeur figé de taille fixe.

Dans Vision Dataset Studio, ouvrir Modèles, configurer la source HF autorisée, télécharger/importer la variante et son contrat, puis inspecter et essayer une image avant un lot. Le parcours manuel fonctionne sans modèle. Un adaptateur présent dans le code ne valide pas toutes les conversions.

4. Runtime et apprentissage

Le SDK autonome/conversion utilise org.tensorflow:tensorflow-lite:2.16.1 et org.tensorflow:tensorflow-lite-select-tf-ops:2.16.1. La campagne applicative du 22 septembre utilise séparément LiteRT 1.4.2 + Select TF Ops 2.16.1. La rc5 du 23 septembre utilise Flex 2.16.1-vds16k1 reconstruit pour les pages 16 Ko ; sa suite de base 4/16 Ko ne remplace pas un retest de toutes les conversions. Détails du correctif. Ces environnements ne sont pas des garanties interchangeables. CPU, XNNPACK désactivé pour le graphe d’apprentissage, Flex pour les checkpoints ; GPU/NPU et téléphone ARM non qualifiés ici.

Les signatures réelles train, infer, save, restore et leurs noms d’entrées/sorties doivent correspondre au contrat. Les cibles suivent targetEncoding, formes et classes ; une annotation absente n’est pas un exemple négatif. L’application ne prend pas en charge les entrées texte d’apprentissage. Seules les têtes/adaptations sont mutables ; tous les encodeurs visuels fournis sont figés. Les adaptations de détection ne créent pas de propositions absentes du détecteur figé. Changer le nombre de classes impose de reconstruire la tête.

5. Cycle du lot dans l’application

Importer → préannoter si activé → corriger/valider manuellement → exporter et vérifier la relecture → apprentissage facultatif du lot exporté → nettoyage confirmé → lot suivant. L’apprentissage est désactivé par défaut et s’exécute sur Android. Il utilise uniquement les images acceptées de ce lot ; rejets et autres lots sont exclus. Le nettoyage attend sa fin et son évaluation ; interruption/erreur conservent les données. Activation des nouveaux poids manuelle. Le premier entraînement conserve l’original et crée une version séparée ; les suivants poursuivent ses derniers poids validés, même avant activation. Versions et checkpoints.

Les checkpoints conservent paramètres, moments et étape. Conserver aussi les hashes modèle/classes, provenance du dataset et exemples de rejeu/contrôle. Une restauration réussie ne prouve pas la généralisation. L’application exige au moins 32 images d’apprentissage et 8 de contrôle après partage déterministe. Les empreintes persistantes par projet survivent au nettoyage et excluent les copies exactes de fichiers/pixels ; elles ne couvrent pas tous les quasi-doublons retouchés.

6. Reproduire les contrôles Android

Utiliser les outils de recette de l’application sur un appareil dédié et avec les APK vérifiées. fetch_model_fixtures.py télécharge les fixtures épinglées hors APK et vérifie les manifestes. qualify_converted_models.py exécute chaque variante et consigne build, hashes et verdict Android. Consulter --help pour fournir chemins des modèles/preuves et numéro de l’appareil. La variable de consentement est VDS_ALLOW_TEST_INSTALL=1. Aucun entraînement automatique d’un corpus utilisateur ; conserver échecs et délais dépassés. Aucun optimiseur hôte dans ce chemin de test applicatif.

Diagnostic

  • Hash incorrect : arrêter, vérifier la révision et retélécharger le fichier concerné.
  • Opération Flex/Save/Restore absente : contrôler runtime CPU et signatures.
  • Forme/pas incompatible : vérifier formes et décodeur ; le défaut applicatif RTMDet sans apprentissage a été corrigé et son retest du 22 septembre est réussi.
  • Perte non finie ou checkpoint incompatible : conserver les données et restaurer une génération compatible vérifiée.
  • Émulateur logiciel lent : preuve fonctionnelle uniquement, aucune déduction de vitesse sur téléphone.

Lire les résultats et limites avant utilisation.

FireViewer Kotlin SDK / SDK Kotlin FireViewer includes detector target construction and DINOv3 four-task supervision. Its standalone test is separate from application integration.