Namespace NT2I.ONNX.Hub
Classes
- CpuSharedImageContext
Contexte d'image partagée sur chemin CPU.
Stocke une (mono-image) ou plusieurs (batch multi-image) images BGR brutes une seule fois, puis matérialise à la demande des tenseurs pré-traités selon les IModelInputRequirements fournis par chaque modèle. Les tenseurs sont mis en cache : deux modèles avec des requirements identiques partagent le même buffer
float[].Pipeline de pré-traitement (par image source) :
- Démultiplexage BGR entrelacé → canaux R, G, B séparés.
- Transformation géométrique par canal (Letterbox ou StretchResize).
- Assemblage planaire [R plane | G plane | B plane].
- Normalisation (Scale01 ou ImageNet mean/std).
[N, C, H, W]. Les tailles d'entrée sont hétérogènes (chaque image peut avoir ses propres width/height) ; toutes les sorties partagent la taille cible imposée parRequirements.Strict-match BatchSize :
requirements.BatchSizedoit être égal au nombre d'images stockées dans le contexte (ImageCount). Toute incohérence lève une InvalidOperationException — pas de réplication automatique.
- CpuSharedImageContextFactory
Factory par défaut pour SharedImageCoordinator. Produit des CpuSharedImageContext.
- SharedImageCoordinator
Coordinateur du Hub d'images partagées.
Centralise les IImageConsumingArchitecture enregistrées et crée à la demande des ISharedImageContext qui pré-traitent l'image une seule fois pour l'ensemble des modèles inscrits.
Le périphérique cible (CPU, GPU CUDA, …) est déterminé par la ISharedImageContextFactory injectée au constructeur. Par défaut, une
CpuSharedImageContextFactoryest utilisée. Pour la voie GPU CUDA, référencerNT2I.ONNX.Hub.Cudaet passernew CudaSharedImageContextFactory().// CPU (default) var coord = new SharedImageCoordinator(); coord.RegisterModel(yoloDetector); coord.RegisterModel(samEncoder); using var ctx = coord.CreateContext(bgrFrame, frameWidth, frameHeight); // À ce stade, chaque modèle a déjà reçu son ISharedTensorHandle via BindFromContext. // GPU CUDA var coord = new SharedImageCoordinator(new CudaSharedImageContextFactory());