nv-segment-ct

Par nvidia · skills

Utilisé pour exécuter NV-Segment-CT VISTA3D sur des volumes CT NIfTI et enregistrer les preuves de la carte d'étiquettes.

npx skills add https://github.com/nvidia/skills --skill nv-segment-ct

NV-Segment-CT

Objectif

  • Utilisé pour exécuter NV-Segment-CT VISTA3D sur des volumes CT au format NIfTI et enregistrer des preuves de label-map. Non destiné à l'interprétation clinique.
  • Utilise le wrapper exactement comme documenté ; ne remplace pas le point d'entrée en amont par une implémentation écrite à la main.
  • E/S du manifest : les entrées sont ct_volume ; les sorties sont label_map et result_json.

Instructions

  • Lisez skill_manifest.yaml avant de modifier les arguments, les effets secondaires ou les portes de validation.
  • Exécutez scripts/run_vista3d.py via la commande documentée ci-dessous ; conservez les sorties dans un répertoire d'exécution fourni par l'appelant.
  • Si un agent hôte expose run_script, utilisez run_script("scripts/run_vista3d.py", args=[...]); sinon, exécutez la commande Bash/Python affichée ci-dessous.
  • Vérifiez le JSON émis et les conseils du vérificateur associé avant de traiter l'exécution comme une preuve.

Scripts disponibles

Script Objectif Arguments
scripts/run_vista3d.py Point d'entrée principal déclaré par skill_manifest.yaml. PATH_TO_CT.nii.gz [--output-dir OUT_DIR] [--label-prompts IDS]

Prérequis

  • Exigences d'exécution : GPU/CUDA déclaré par le manifest ; packages Python listés dans runtime.side_effects.pip_packages.
  • Effets secondaires : écrit le bundle téléchargé sous skills/nv-segment-ct/bundle/, peut mettre en cache les assets du modèle sous ~/.cache/huggingface/, et peut contacter https://huggingface.co lors de la configuration initiale ; le récupérateur de fixture de rate optionnel télécharge MSD09 depuis https://msd-for-monai.s3-us-west-2.amazonaws.com.
  • Exécutez les commandes depuis la racine du dépôt, sauf si une section existante ci-dessous en indique autrement.

Limitations

  • C'est un wrapper mince. L'inférence, le prétraitement et le post-traitement sont entièrement délégués au hugging_face_pipeline.HuggingFacePipelineHelper officiel dans bundle/. Ne modifiez pas le code sous bundle/.
  • transformers doit être une version 4.x ; le code du modèle HF utilise des idiomes pré-5.x (par ex. _tied_weights_keys).
  • Appareil détecté automatiquement (cuda s'il est disponible, sinon cpu) ; le drapeau --device le remplace.
  • La sortie peut être valide selon le schéma mais sémantiquement vide (par ex. des label prompts qui ne correspondent pas à l'anatomie d'entrée). Les portes de santé affirment au moins un voxel de premier plan par anatomie demandée.
  • Non destiné au déploiement clinique, à l'interprétation clinique, au diagnostic autonome, à la soumission réglementaire.

Dépannage

Erreur Cause Correctif
Dépendance manquante ou erreur d'importation Dérive du package d'exécution par rapport à skill_manifest.yaml. Installez les packages déclarés dans le manifest ou utilisez la commande d'installation documentée.
Sortie vide ou invalide selon le schéma Chemin d'entrée incorrect, modalité non supportée, ou défaillance en amont. Réexécutez avec un fixture connu et inspectez le JSON du wrapper et stderr.
Défaillance de la porte de validation La sortie a violé un invariant d'ingénierie déclaré. Conservez le pack de preuves défaillant et utilisez le message de la porte pour réparer les entrées ou le code du wrapper.

Encapsule l'assistant en amont nvidia/NV-Segment-CT. Le wrapper ne réimplémente pas l'inférence VISTA3D.

Surface exécutable exacte

Pour les exécutions de segmentation CT utilisateur, utilisez exactement ce chemin wrapper depuis la racine du dépôt :

python skills/nv-segment-ct/scripts/run_vista3d.py PATH_TO_CT.nii.gz --label-prompts "1,3,5,14" --output-dir OUT_DIR

N'inventez pas infer.py, Medical AI Skills run, python -m nv_segment_ct, ou de drapeaux contenant uniquement des noms d'anatomie. Pour la rate, le foie, le rein droit et le rein gauche, les IDs de label VISTA3D requis sont exactement 1,3,5,14.

Préconditions

La skill suppose un environnement Python 3.12 avec aucune dépendance d'exécution préinstallée — sa commande documentée installe tout ce dont elle a besoin. La liste des dépendances épinglées se trouve à requirements.txt.

Deux téléchargements uniques (la commande documentée en fait le premier ; la récupération du fixture est une étape séparée que vous exécutez lors du démarrage) :

# Exemple de fixture spleen de Decathlon MSD09 (~1,5 GB tar, ~11 MB
# fixture extraite dans skills/nv-segment-ct/fixtures/spleen_03.nii.gz) :
python skills/nv-segment-ct/fixtures/fetch_spleen_fixture.py

Les deux téléchargements (le bundle ci-dessous et le fixture) sont gitignorés (politique Medical AI Skills : aucune donnée médicale ou poids de modèle dans git). Le script de récupération est idempotent et met en cache le tar sous .workbench_data/datasets/ de sorte que les réexécutions sont des no-ops.

L'exécution nécessite un GPU NVIDIA avec CUDA. Le fallback CPU est supporté mais lent.

Utilisation

Depuis la racine du dépôt Medical AI Skills, exécutez toutes les étapes en une seule commande pour que la skill se bootstrappe d'elle-même sur un venv Python 3.12 frais :

pip install -r skills/nv-segment-ct/requirements.txt && \
huggingface-cli download nvidia/NV-Segment-CT \
  --local-dir skills/nv-segment-ct/bundle/ && \
python skills/nv-segment-ct/scripts/run_vista3d.py PATH_TO_CT.nii.gz \
  --label-prompts "1,3,5,14" \
  --output-dir vista3d_outputs

Quand l'utilisateur nomme des anatomies, traduisez-les en IDs de classe VISTA3D avant d'exécuter. Pour la demande abdominale CT courante :

Anatomie ID de classe VISTA3D
foie 1
rate 3
rein droit 5
rein gauche 14

Pour « segmenter la rate, le foie, le rein droit et le rein gauche », la valeur --label-prompts correcte est exactement "1,3,5,14". Ne substituez pas les IDs de rein d'un autre dictionnaire de labels ; le wrapper valide l'ensemble de labels demandé et marquera l'exécution comme invalide si le masque émis contient des labels en dehors de l'ensemble demandé.

L'étape pip install est indispensable : ne supposez pas que monai/torch/etc. sont déjà dans l'environnement actif. L'étape huggingface-cli download fait également partie du contrat — elle récupère le bundle de modèle ~832 MB dans skills/nv-segment-ct/bundle/ (mis en cache après la première exécution ; les appels suivants sont des no-ops).

Les label-prompts sont des IDs de classe VISTA3D. La sortie de preuve enregistre la géométrie d'entrée, le chemin du masque de sortie, les IDs de label observés, les labels inattendus, les comptes de voxels par classe, les volumes physiques par classe calculés à partir de l'espacement du header du masque de sortie, le temps d'exécution, l'identité du modèle, et les vérifications d'artifact dérivés du code fixe tels que la forme du masque, la correspondance affine, l'ensemble de labels, le compte de premier plan, et les limites de volume de classe.

Passez --ground-truth PATH pour enregistrer un chemin de label-map de référence sous input.ground_truth_path. La skill ne calcule pas Dice ; c'est le travail du vérificateur associé.

La plausibilité anatomique (limites de volume par classe, fragmentation, symétrie bilatérale, foie plus grand que rate) et Dice/IoU optionnel par classe par rapport à la vérité de terrain enregistrée sont vérifiés par verifiers/ct_segmentation_quality_v1.

Non destiné à l'interprétation clinique, au déploiement en production, ou aux modalités non-CT.

Skills similaires