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

options IOnnxSessionOptions

Options de session pour le modèle de détection.

preprocessor IYoloDetectionPreprocessor

L'implémentation du pré-processeur à utiliser.

postprocessor IYoloDetectionPostprocessor

L'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

IYoloDetectionPostprocessor

DefaultPreprocessor

Le pré-processeur par défaut utilisé pour préparer les images avant l'inférence.

protected IYoloDetectionPreprocessor? DefaultPreprocessor

Field Value

IYoloDetectionPreprocessor

Properties

BlacklistClassIds

Obtient la collection en lecture seule des IDs de classe à exclure des résultats.

public IReadOnlyCollection<int> BlacklistClassIds { get; }

Property Value

IReadOnlyCollection<int>

IsInitialized

Obtient une valeur indiquant si le moteur a été initialisé.

public bool IsInitialized { get; }

Property Value

bool

IsRunning

Obtient une valeur indiquant si une inférence est actuellement en cours.

public bool IsRunning { get; }

Property Value

bool

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

IModelInputRequirements

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

classId int

L'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

context ISharedImageContext

Contexte image partagé fourni par SharedImageCoordinator.

Exceptions

ArgumentNullException

Si context est null.

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

inputIndex int

Returns

IReadOnlyCollection<long>

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

inputName string

Returns

IReadOnlyCollection<long>

GetInputNames()

Récupère les noms des nœuds d'entrée du modèle.

public IReadOnlyDictionary<int, string>? GetInputNames()

Returns

IReadOnlyDictionary<int, string>

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

globaClassConfidenceThreshold float

Le seuil de confiance unique à appliquer à toutes les classes.

outputIndex int

L'index du nœud de sortie à traiter.

normalizeCoordinates bool

Si 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

globaClassConfidenceThreshold float

Le seuil de confiance unique à appliquer à toutes les classes.

outputName string

Le nom du nœud de sortie à traiter.

normalizeCoordinates bool

Si 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

classConfidenceThresholds float[]

Un tableau de seuils de confiance par classe.

outputIndex int

L'index du nœud de sortie à traiter.

normalizeCoordinates bool

Si 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

classConfidenceThresholds float[]

Un tableau de seuils de confiance par classe. Si un seul seuil est fourni, il est appliqué à toutes les classes.

outputName string

Le nom du nœud de sortie à traiter.

normalizeCoordinates bool

Si 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

globaClassConfidenceThreshold float

Le seuil de confiance unique à appliquer à toutes les classes.

outputIndex int

L'index du nœud de sortie à traiter.

normalizeCoordinates bool

Non 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

globaClassConfidenceThreshold float

Le seuil de confiance unique à appliquer à toutes les classes.

outputName string

Le nom du nœud de sortie à traiter.

normalizeCoordinates bool

Non 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

classConfidenceThresholds float[]

Un tableau de seuils de confiance par classe.

outputIndex int

L'index du nœud de sortie à traiter.

normalizeCoordinates bool

Non 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

classConfidenceThresholds float[]

Un tableau de seuils de confiance par classe.

outputName string

Le nom du nœud de sortie à traiter.

normalizeCoordinates bool

Non 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

outputIndex int

Returns

IReadOnlyCollection<long>

GetOutputDimensions(string)

Récupère les dimensions d'un nœud de sortie à partir de son nom.

public IReadOnlyCollection<long> GetOutputDimensions(string outputName)

Parameters

outputName string

Returns

IReadOnlyCollection<long>

GetOutputNames()

Récupère les noms des nœuds de sortie du modèle.

public IReadOnlyDictionary<int, string> GetOutputNames()

Returns

IReadOnlyDictionary<int, string>

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

options IOnnxSessionOptions

Options de session pour le modèle de détection.

preprocessor IYoloDetectionPreprocessor

L'implémentation du pré-processeur à utiliser.

postprocessor IYoloDetectionPostprocessor

L'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

options IOnnxSessionOptions

Options de session pour le modèle de détection.

preprocessor IYoloDetectionPreprocessor

L'implémentation du pré-processeur à utiliser.

postprocessor IYoloDetectionPostprocessor

L'implémentation du post-processeur à utiliser.

cancellationToken CancellationToken

Jeton d'annulation.

Returns

Task

RemoveFromBlacklist(int)

Supprime un ID de classe de la liste noire.

public void RemoveFromBlacklist(int classId)

Parameters

classId int

L'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

clearInputAfterRun bool

Si 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

clearInputAfterRun bool

Si vrai, efface les entrées après l'exécution.

cancellationToken CancellationToken

Le 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

classIds IEnumerable<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

packedBgrBuffer byte[][]

Tableau de buffers contenant les données des images au format BGR.

imageSizes ImageSize[]

Tableau des tailles des images originales.

inputIndex int

Index 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

packedBgrBuffer byte[][]

Tableau de buffers contenant les données des images au format BGR.

imageSizes ImageSize[]

Tableau des tailles des images originales.

inputName string

Nom 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_R byte[][]

Tableau de buffers contenant les données du canal rouge (R) des images.

planarBuffer_G byte[][]

Tableau de buffers contenant les données du canal vert (G) des images.

planarBuffer_B byte[][]

Tableau de buffers contenant les données du canal bleu (B) des images.

imageSizes ImageSize[]

Tableau des tailles des images originales.

inputIndex int

Index 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_R byte[][]

Tableau de buffers contenant les données du canal rouge (R) des images.

planarBuffer_G byte[][]

Tableau de buffers contenant les données du canal vert (G) des images.

planarBuffer_B byte[][]

Tableau de buffers contenant les données du canal bleu (B) des images.

imageSizes ImageSize[]

Tableau des tailles des images originales.

inputName string

Nom 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

packedBgrBuffer byte[]

Buffer contenant les données de l'image au format BGR.

imageSize ImageSize

Taille (largeur, hauteur) de l'image originale.

inputIndex int

Index 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

packedBgrBuffer byte[]

Buffer contenant les données de l'image au format BGR.

imageSize ImageSize

Taille (largeur, hauteur) de l'image originale.

inputName string

Nom 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_R byte[]

Buffer contenant les données du canal rouge (R) de l'image.

planarBuffer_G byte[]

Buffer contenant les données du canal vert (G) de l'image.

planarBuffer_B byte[]

Buffer contenant les données du canal bleu (B) de l'image.

imageSize ImageSize

Taille (largeur, hauteur) de l'image originale.

inputIndex int

Index 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_R byte[]

Buffer contenant les données du canal rouge (R) de l'image.

planarBuffer_G byte[]

Buffer contenant les données du canal vert (G) de l'image.

planarBuffer_B byte[]

Buffer contenant les données du canal bleu (B) de l'image.

imageSize ImageSize

Taille (largeur, hauteur) de l'image originale.

inputName string

Nom 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

batchSize int

La taille de batch à utiliser pour le préchauffage.

iterations int

Nombre 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

batchSize int

La taille de batch à utiliser pour le préchauffage.

iterations int

Nombre d'itérations de préchauffage (défaut 1).

cancellationToken CancellationToken

Le jeton d'annulation.

Returns

Task