Class YoloDetection
- Namespace
- NT2I.ONNX.Architectures.YOLO
- Assembly
- NT2I.ONNX.Architectures.dll
Fournit une architecture de haut niveau pour les modèles de détection d'objets de type YOLO. Cette classe orchestre le pré-traitement, l'inférence et le post-traitement.
public class YoloDetection : IYoloDetection, IDisposable, IImageConsumingArchitecture
- Inheritance
-
YoloDetection
- Implements
- Inherited Members
Constructors
YoloDetection()
Initialise une nouvelle instance de la classe YoloDetection.
public YoloDetection()
YoloDetection(IOnnxSessionOptions, IYoloDetectionPreprocessor, IYoloDetectionPostprocessor)
Initialise une nouvelle instance de la classe YoloDetection avec les options et processeurs spécifiés.
public YoloDetection(IOnnxSessionOptions options, IYoloDetectionPreprocessor preprocessor, IYoloDetectionPostprocessor postprocessor)
Parameters
optionsIOnnxSessionOptionsOptions de session pour le modèle de détection.
preprocessorIYoloDetectionPreprocessorL'implémentation du pré-processeur à utiliser.
postprocessorIYoloDetectionPostprocessorL'implémentation du post-processeur à utiliser.
Fields
DefaultPostprocessor
Le post-processeur par défaut utilisé pour extraire les boîtes englobantes après l'inférence.
protected IYoloDetectionPostprocessor? DefaultPostprocessor
Field Value
DefaultPreprocessor
Le pré-processeur par défaut utilisé pour préparer les images avant l'inférence.
protected IYoloDetectionPreprocessor? DefaultPreprocessor
Field Value
Properties
BlacklistClassIds
Obtient la collection en lecture seule des IDs de classe à exclure des résultats.
public IReadOnlyCollection<int> BlacklistClassIds { get; }
Property Value
IsInitialized
Obtient une valeur indiquant si le moteur a été initialisé.
public bool IsInitialized { get; }
Property Value
IsRunning
Obtient une valeur indiquant si une inférence est actuellement en cours.
public bool IsRunning { get; }
Property Value
Requirements
Décrit les besoins du modèle en entrée image pour le Hub partagé. Disponible après Initialize(IOnnxSessionOptions, IYoloDetectionPreprocessor, IYoloDetectionPostprocessor).
public IModelInputRequirements Requirements { get; }
Property Value
Exceptions
- InvalidOperationException
Lancée si le moteur n'a pas été initialisé.
Methods
AddToBlacklist(int)
Ajoute un ID de classe à la liste noire pour l'exclure des résultats.
public void AddToBlacklist(int classId)
Parameters
classIdintL'ID de la classe à exclure.
BindFromContext(ISharedImageContext)
Lie le tenseur d'entrée du modèle YOLO à celui fourni par le ISharedImageContext.
Remplace SetInputImageBgr / SetInputBatchImageBgr dans le mode Hub.
L'OrtValue est créé sur place par-dessus le buffer du Hub (sans copie) ; l'architecture n'est pas propriétaire du buffer sous-jacent — le Hub le libère à la fin du contexte.
public void BindFromContext(ISharedImageContext context)
Parameters
contextISharedImageContextContexte image partagé fourni par
SharedImageCoordinator.
Exceptions
- ArgumentNullException
Si
contextestnull.- InvalidOperationException
Si le moteur n'est pas initialisé.
CleanModelFolder()
Nettoie le dossier contenant le modèle extrait (si applicable).
public void CleanModelFolder()
CleanProfilingFile()
Supprime le fichier de profilage généré par la session (si applicable).
public void CleanProfilingFile()
ClearBlacklist()
Vide complètement la liste noire, incluant ainsi toutes les classes dans les résultats.
public void ClearBlacklist()
ClearInput()
Efface toutes les données d'entrée précédemment définies.
public void ClearInput()
Dispose()
Libère les ressources utilisées par le moteur ONNX et les processeurs.
public void Dispose()
GetInputDimensions(int)
Récupère les dimensions d'un nœud d'entrée à partir de son index.
public IReadOnlyCollection<long> GetInputDimensions(int inputIndex = 0)
Parameters
inputIndexint
Returns
GetInputDimensions(string)
Récupère les dimensions d'un nœud d'entrée à partir de son nom.
public IReadOnlyCollection<long> GetInputDimensions(string inputName)
Parameters
inputNamestring
Returns
GetInputNames()
Récupère les noms des nœuds d'entrée du modèle.
public IReadOnlyDictionary<int, string>? GetInputNames()
Returns
GetOutputDetection(float, int, bool)
Applique le post-traitement en utilisant un seuil de confiance global pour toutes les classes.
public IEnumerable<IEnumerable<IBoundingBox>> GetOutputDetection(float globaClassConfidenceThreshold, int outputIndex = 0, bool normalizeCoordinates = false)
Parameters
globaClassConfidenceThresholdfloatLe seuil de confiance unique à appliquer à toutes les classes.
outputIndexintL'index du nœud de sortie à traiter.
normalizeCoordinatesboolSi vrai, les coordonnées des boîtes seront normalisées entre 0.0 et 1.0.
Returns
- IEnumerable<IEnumerable<IBoundingBox>>
Une collection de résultats par image dans le batch.
GetOutputDetection(float, string, bool)
Applique le post-traitement en utilisant un seuil de confiance global pour toutes les classes.
public IEnumerable<IEnumerable<IBoundingBox>> GetOutputDetection(float globaClassConfidenceThreshold, string outputName, bool normalizeCoordinates = false)
Parameters
globaClassConfidenceThresholdfloatLe seuil de confiance unique à appliquer à toutes les classes.
outputNamestringLe nom du nœud de sortie à traiter.
normalizeCoordinatesboolSi vrai, les coordonnées des boîtes seront normalisées entre 0.0 et 1.0.
Returns
- IEnumerable<IEnumerable<IBoundingBox>>
Une collection de résultats par image dans le batch.
GetOutputDetection(float[], int, bool)
Applique le post-traitement sur la sortie du modèle pour extraire les boîtes englobantes (bounding boxes).
public IEnumerable<IEnumerable<IBoundingBox>> GetOutputDetection(float[] classConfidenceThresholds, int outputIndex = 0, bool normalizeCoordinates = false)
Parameters
classConfidenceThresholdsfloat[]Un tableau de seuils de confiance par classe.
outputIndexintL'index du nœud de sortie à traiter.
normalizeCoordinatesboolSi vrai, les coordonnées des boîtes seront normalisées entre 0.0 et 1.0.
Returns
- IEnumerable<IEnumerable<IBoundingBox>>
Une collection de résultats par image dans le batch, chaque résultat étant une collection de boîtes englobantes.
GetOutputDetection(float[], string, bool)
Applique le post-traitement sur la sortie du modèle pour extraire les boîtes englobantes (bounding boxes).
public IEnumerable<IEnumerable<IBoundingBox>> GetOutputDetection(float[] classConfidenceThresholds, string outputName, bool normalizeCoordinates = false)
Parameters
classConfidenceThresholdsfloat[]Un tableau de seuils de confiance par classe. Si un seul seuil est fourni, il est appliqué à toutes les classes.
outputNamestringLe nom du nœud de sortie à traiter.
normalizeCoordinatesboolSi vrai, les coordonnées des boîtes seront normalisées entre 0.0 et 1.0.
Returns
- IEnumerable<IEnumerable<IBoundingBox>>
Une collection de résultats par image dans le batch, chaque résultat étant une collection de boîtes englobantes.
GetOutputDetectionAsSpan(float, int, bool)
Applique le post-traitement avec un seuil global et retourne les détections brutes sous forme de spans.
public IBatchDetections<float> GetOutputDetectionAsSpan(float globaClassConfidenceThreshold, int outputIndex = 0, bool normalizeCoordinates = false)
Parameters
globaClassConfidenceThresholdfloatLe seuil de confiance unique à appliquer à toutes les classes.
outputIndexintL'index du nœud de sortie à traiter.
normalizeCoordinatesboolNon utilisé dans cette méthode.
Returns
- IBatchDetections<float>
Une interface IBatchDetections<T> permettant un accès efficace aux données de détection brutes.
GetOutputDetectionAsSpan(float, string, bool)
Applique le post-traitement avec un seuil global et retourne les détections brutes sous forme de spans.
public IBatchDetections<float> GetOutputDetectionAsSpan(float globaClassConfidenceThreshold, string outputName, bool normalizeCoordinates = false)
Parameters
globaClassConfidenceThresholdfloatLe seuil de confiance unique à appliquer à toutes les classes.
outputNamestringLe nom du nœud de sortie à traiter.
normalizeCoordinatesboolNon utilisé dans cette méthode.
Returns
- IBatchDetections<float>
Une interface IBatchDetections<T> permettant un accès efficace aux données de détection brutes.
GetOutputDetectionAsSpan(float[], int, bool)
Applique le post-traitement et retourne les détections brutes sous forme de spans.
public IBatchDetections<float> GetOutputDetectionAsSpan(float[] classConfidenceThresholds, int outputIndex = 0, bool normalizeCoordinates = false)
Parameters
classConfidenceThresholdsfloat[]Un tableau de seuils de confiance par classe.
outputIndexintL'index du nœud de sortie à traiter.
normalizeCoordinatesboolNon utilisé dans cette méthode.
Returns
- IBatchDetections<float>
Une interface IBatchDetections<T> permettant un accès efficace aux données de détection brutes.
GetOutputDetectionAsSpan(float[], string, bool)
Applique le post-traitement et retourne les détections brutes sous forme de spans, pour des performances maximales et une allocation mémoire minimale.
public IBatchDetections<float> GetOutputDetectionAsSpan(float[] classConfidenceThresholds, string outputName, bool normalizeCoordinates = false)
Parameters
classConfidenceThresholdsfloat[]Un tableau de seuils de confiance par classe.
outputNamestringLe nom du nœud de sortie à traiter.
normalizeCoordinatesboolNon utilisé dans cette méthode.
Returns
- IBatchDetections<float>
Une interface IBatchDetections<T> permettant un accès efficace aux données de détection brutes.
GetOutputDimensions(int)
Récupère les dimensions d'un nœud de sortie à partir de son index.
public IReadOnlyCollection<long> GetOutputDimensions(int outputIndex = 0)
Parameters
outputIndexint
Returns
GetOutputDimensions(string)
Récupère les dimensions d'un nœud de sortie à partir de son nom.
public IReadOnlyCollection<long> GetOutputDimensions(string outputName)
Parameters
outputNamestring
Returns
GetOutputNames()
Récupère les noms des nœuds de sortie du modèle.
public IReadOnlyDictionary<int, string> GetOutputNames()
Returns
Initialize(IOnnxSessionOptions, IYoloDetectionPreprocessor, IYoloDetectionPostprocessor)
Initialise le moteur d'inférence YOLO avec les options et processeurs spécifiés.
public void Initialize(IOnnxSessionOptions options, IYoloDetectionPreprocessor preprocessor, IYoloDetectionPostprocessor postprocessor)
Parameters
optionsIOnnxSessionOptionsOptions de session pour le modèle de détection.
preprocessorIYoloDetectionPreprocessorL'implémentation du pré-processeur à utiliser.
postprocessorIYoloDetectionPostprocessorL'implémentation du post-processeur à utiliser.
InitializeAsync(IOnnxSessionOptions, IYoloDetectionPreprocessor, IYoloDetectionPostprocessor, CancellationToken)
Initialise le moteur YOLO de manière asynchrone (la création de la
InferenceSession ORT est offload sur un thread du ThreadPool).
public Task InitializeAsync(IOnnxSessionOptions options, IYoloDetectionPreprocessor preprocessor, IYoloDetectionPostprocessor postprocessor, CancellationToken cancellationToken = default)
Parameters
optionsIOnnxSessionOptionsOptions de session pour le modèle de détection.
preprocessorIYoloDetectionPreprocessorL'implémentation du pré-processeur à utiliser.
postprocessorIYoloDetectionPostprocessorL'implémentation du post-processeur à utiliser.
cancellationTokenCancellationTokenJeton d'annulation.
Returns
RemoveFromBlacklist(int)
Supprime un ID de classe de la liste noire.
public void RemoveFromBlacklist(int classId)
Parameters
classIdintL'ID de la classe à inclure à nouveau.
RunInference(bool)
Exécute l'inférence sur les données d'entrée actuellement définies.
public void RunInference(bool clearInputAfterRun = true)
Parameters
clearInputAfterRunboolSi vrai, efface les entrées après l'exécution pour libérer la mémoire.
RunInferenceAsync(bool, CancellationToken)
Exécute l'inférence de manière asynchrone.
public Task RunInferenceAsync(bool clearInputAfterRun = true, CancellationToken cancellationToken = default)
Parameters
clearInputAfterRunboolSi vrai, efface les entrées après l'exécution.
cancellationTokenCancellationTokenLe jeton d'annulation.
Returns
- Task
Une tâche représentant l'opération asynchrone.
SetBlacklist(IEnumerable<int>)
Remplace la liste noire existante par une nouvelle collection d'IDs de classe.
public void SetBlacklist(IEnumerable<int> classIds)
Parameters
classIdsIEnumerable<int>La nouvelle collection d'IDs de classe à exclure.
SetInputBatchImageBgr(byte[][], ImageSize[], int)
Définit et pré-traite un batch d'images au format BGR comme entrée, en utilisant l'index de l'entrée.
public void SetInputBatchImageBgr(byte[][] packedBgrBuffer, ImageSize[] imageSizes, int inputIndex)
Parameters
packedBgrBufferbyte[][]Tableau de buffers contenant les données des images au format BGR.
imageSizesImageSize[]Tableau des tailles des images originales.
inputIndexintIndex de l'entrée du modèle ONNX.
Exceptions
- ArgumentException
Lancée si les tailles des tableaux ne correspondent pas.
- InvalidOperationException
Lancée si le moteur n'est pas initialisé.
SetInputBatchImageBgr(byte[][], ImageSize[], string)
Définit et pré-traite un batch d'images au format BGR comme entrée pour le modèle.
public void SetInputBatchImageBgr(byte[][] packedBgrBuffer, ImageSize[] imageSizes, string inputName)
Parameters
packedBgrBufferbyte[][]Tableau de buffers contenant les données des images au format BGR.
imageSizesImageSize[]Tableau des tailles des images originales.
inputNamestringNom du nœud d'entrée du modèle ONNX.
Exceptions
- ArgumentException
Lancée si les tailles des tableaux ne correspondent pas.
- InvalidOperationException
Lancée si le moteur n'est pas initialisé.
SetInputBatchImagePlanar(byte[][], byte[][], byte[][], ImageSize[], int)
Définit et pré-traite un batch d'images au format planaire comme entrée, en utilisant l'index de l'entrée.
public void SetInputBatchImagePlanar(byte[][] planarBuffer_R, byte[][] planarBuffer_G, byte[][] planarBuffer_B, ImageSize[] imageSizes, int inputIndex)
Parameters
planarBuffer_Rbyte[][]Tableau de buffers contenant les données du canal rouge (R) des images.
planarBuffer_Gbyte[][]Tableau de buffers contenant les données du canal vert (G) des images.
planarBuffer_Bbyte[][]Tableau de buffers contenant les données du canal bleu (B) des images.
imageSizesImageSize[]Tableau des tailles des images originales.
inputIndexintIndex de l'entrée du modèle ONNX.
Exceptions
- ArgumentException
Lancée si les tailles des tableaux ne correspondent pas.
- InvalidOperationException
Lancée si le moteur n'est pas initialisé.
SetInputBatchImagePlanar(byte[][], byte[][], byte[][], ImageSize[], string)
Définit et pré-traite un batch d'images au format planaire comme entrée.
public void SetInputBatchImagePlanar(byte[][] planarBuffer_R, byte[][] planarBuffer_G, byte[][] planarBuffer_B, ImageSize[] imageSizes, string inputName)
Parameters
planarBuffer_Rbyte[][]Tableau de buffers contenant les données du canal rouge (R) des images.
planarBuffer_Gbyte[][]Tableau de buffers contenant les données du canal vert (G) des images.
planarBuffer_Bbyte[][]Tableau de buffers contenant les données du canal bleu (B) des images.
imageSizesImageSize[]Tableau des tailles des images originales.
inputNamestringNom de l'entrée du modèle ONNX.
Exceptions
- ArgumentException
Lancée si les tailles des tableaux ne correspondent pas.
- InvalidOperationException
Lancée si le moteur n'est pas initialisé.
SetInputImageBgr(byte[], ImageSize, int)
Définit et pré-traite une seule image au format BGR comme entrée pour le modèle, en utilisant l'index de l'entrée.
public void SetInputImageBgr(byte[] packedBgrBuffer, ImageSize imageSize, int inputIndex)
Parameters
packedBgrBufferbyte[]Buffer contenant les données de l'image au format BGR.
imageSizeImageSizeTaille (largeur, hauteur) de l'image originale.
inputIndexintIndex du nœud d'entrée du modèle ONNX.
Exceptions
- InvalidOperationException
Lancée si le moteur n'est pas initialisé.
SetInputImageBgr(byte[], ImageSize, string)
Définit et pré-traite une seule image au format BGR comme entrée pour le modèle.
public void SetInputImageBgr(byte[] packedBgrBuffer, ImageSize imageSize, string inputName)
Parameters
packedBgrBufferbyte[]Buffer contenant les données de l'image au format BGR.
imageSizeImageSizeTaille (largeur, hauteur) de l'image originale.
inputNamestringNom du nœud d'entrée du modèle ONNX.
Exceptions
- InvalidOperationException
Lancée si le moteur n'est pas initialisé.
SetInputImagePlanar(byte[], byte[], byte[], ImageSize, int)
Définit et pré-traite une seule image au format planaire comme entrée, en utilisant l'index de l'entrée.
public void SetInputImagePlanar(byte[] planarBuffer_R, byte[] planarBuffer_G, byte[] planarBuffer_B, ImageSize imageSize, int inputIndex)
Parameters
planarBuffer_Rbyte[]Buffer contenant les données du canal rouge (R) de l'image.
planarBuffer_Gbyte[]Buffer contenant les données du canal vert (G) de l'image.
planarBuffer_Bbyte[]Buffer contenant les données du canal bleu (B) de l'image.
imageSizeImageSizeTaille (largeur, hauteur) de l'image originale.
inputIndexintIndex de l'entrée du modèle ONNX.
Exceptions
- InvalidOperationException
Lancée si le moteur n'est pas initialisé.
SetInputImagePlanar(byte[], byte[], byte[], ImageSize, string)
Définit et pré-traite une seule image au format planaire (canaux séparés) comme entrée.
public void SetInputImagePlanar(byte[] planarBuffer_R, byte[] planarBuffer_G, byte[] planarBuffer_B, ImageSize imageSize, string inputName)
Parameters
planarBuffer_Rbyte[]Buffer contenant les données du canal rouge (R) de l'image.
planarBuffer_Gbyte[]Buffer contenant les données du canal vert (G) de l'image.
planarBuffer_Bbyte[]Buffer contenant les données du canal bleu (B) de l'image.
imageSizeImageSizeTaille (largeur, hauteur) de l'image originale.
inputNamestringNom de l'entrée du modèle ONNX.
Exceptions
- InvalidOperationException
Lancée si le moteur n'est pas initialisé.
WarmUp(int, int)
Exécute des inférences à blanc pour préchauffer le moteur.
public void WarmUp(int batchSize = 1, int iterations = 1)
Parameters
batchSizeintLa taille de batch à utiliser pour le préchauffage.
iterationsintNombre d'itérations de préchauffage (défaut 1).
WarmUpAsync(int, int, CancellationToken)
Exécute de manière asynchrone des inférences à blanc pour préchauffer le moteur.
public Task WarmUpAsync(int batchSize = 1, int iterations = 1, CancellationToken cancellationToken = default)
Parameters
batchSizeintLa taille de batch à utiliser pour le préchauffage.
iterationsintNombre d'itérations de préchauffage (défaut 1).
cancellationTokenCancellationTokenLe jeton d'annulation.