TensorImage est la classe wrapper pour l'objet Image. Lorsque vous utilisez des utilitaires de traitement d'images dans la bibliothèque TFLite.support, il est courant de convertir dans un premier temps les objets image de types de variantes au format TensorImage.
À l'heure actuelle, seules les images RVB sont prises en charge, et le canal A est toujours ignoré.
Détails du stockage de données: un objet TensorImage
peut avoir deux sources potentielles de référence: Bitmap
ou TensorBuffer
. TensorImage
conserve l'état et ne convertit l'un des états que si nécessaire. Un cas d'utilisation typique de TensorImage
consiste à charger d'abord une image Bitmap
, puis à la traiter à l'aide de ImageProcessor
, puis à obtenir le ByteBuffer
sous-jacent de TensorBuffer
et à l'insérer dans l'interpréteur TFLite.
IMPORTANT: Pour optimiser les performances, TensorImage
évite de copier des données chaque fois que cela est possible. Par conséquent, elle n'est pas propriétaire de ses données. Les appelants ne doivent pas modifier les objets de données transmis à load(Bitmap)
ou load(TensorBuffer, ColorSpaceType)
.
IMPORTANT: Toutes les méthodes ne sont pas éprouvées comme étant thread-safe.
Voir également
Constructeurs publics
TensorImage()
Initialise un objet
TensorImage . |
|
TensorImage(type de données DataType)
Initialise un objet
TensorImage avec le type de données spécifié. |
Méthodes publiques
statique TensorImage |
createFrom(TensorImage src, DataType)
Crée une copie profonde d'un
TensorImage donné avec le type de données souhaité. |
statique TensorImage |
fromBitmap(bitmap de bitmap)
|
Bitmap |
getBitmap().
Renvoie une représentation
Bitmap de ce TensorImage . |
ByteBuffer |
getBuffer()
Renvoie une représentation
ByteBuffer de ce TensorImage avec le type de données attendu. |
ColorSpaceType |
getColorSpaceType()
Récupère le type d'espace colorimétrique de ce
TensorImage . |
DataType |
getDataType()
Récupère le type de données de ce
TensorImage . |
int |
getHeight()
Récupère la hauteur de l'image.
|
Images |
getMediaImage()
Renvoie une représentation
Image de ce TensorImage . |
TensorBuffer |
getTensorBuffer()
Renvoie une représentation
TensorBuffer de ce TensorImage avec le type de données attendu. |
int |
getWidth()
Récupère la largeur de l'image.
|
void |
load(tampon TensorBuffer, ColorSpaceType colorSpaceType)
Charge un
TensorBuffer contenant les valeurs de pixels avec l'ColorSpaceType spécifique. |
void |
load(bitmap bitmap)
Charge un objet image
Bitmap dans cette TensorImage . |
void |
load(int[] pixels, int[] shape)
Charge un tableau entier en pixels RVB dans ce
TensorImage , représentant les pixels qu'il contient. |
void |
load(float[] pixels, int[] shape)
Charge un tableau flottant en pixels RVB dans ce
TensorImage , représentant les pixels qu'il contient. |
void |
load(tampon ByteBuffer, ImageProperties imageProperties)
Charge un
ByteBuffer contenant les valeurs de pixels avec l'ImageProperties spécifique. |
void |
load(tampon TensorBuffer, ImageProperties imageProperties)
Charge un
TensorBuffer contenant les valeurs de pixels avec l'ImageProperties spécifique. |
void |
load(image de l'image)
Charge un objet
Image dans TensorImage . |
Méthodes héritées
Constructeurs publics
public TensorImage ()
Initialise un objet TensorImage
.
Remarque: Le type de données de ce TensorImage
est DataType.UINT8
. Utilisez TensorImage(DataType)
si d'autres types de données sont recommandés.
public TensorImage (DataType dataType)
Initialise un objet TensorImage
avec le type de données spécifié.
Lors de l'obtention d'une TensorBuffer
ou d'une ByteBuffer
à partir de ce TensorImage
, par exemple en utilisant getTensorBuffer()
et getBuffer()
, les valeurs de données sont converties dans le type de données spécifié.
Remarque: la forme d'un TensorImage
n'est pas fixe. Il peut être ajusté à la forme de l'image chargée dans ce TensorImage
.
Paramètres
dataType | le type de données attendu du TensorBuffer obtenu. Le type est toujours fixe pendant toute la durée de vie de TensorImage . Pour convertir le type de données, utilisez createFrom(TensorImage, DataType) afin de créer une copie et de convertir le type de données en même temps. |
---|
Génère
IllegalArgumentException | Si dataType n'est ni DataType.UINT8 , ni DataType.FLOAT32
|
---|
Méthodes publiques
public statique TensorImage createFrom (TensorImage src, DataType dataType)
Crée une copie profonde d'un TensorImage
donné avec le type de données souhaité.
Paramètres
src | le TensorImage à partir duquel effectuer la copie |
---|---|
dataType | le type de données attendu du TensorImage nouvellement créé. |
Renvoie
- Une
TensorImage
dont les données sont copiées à partir desrc
et dont le type de données estdataType
public statique TensorImage fromBitmap (bitmap de bitmap)
Initialise un objet TensorImage
de DataType.UINT8
avec un Bitmap
.
Paramètres
bitmap |
---|
public Bitmap getBitmap ()
Renvoie une représentation Bitmap
de ce TensorImage
.
La conversion et la limitation numérique seront appliquées si les données stockées ne sont pas de type uint8.
Notez que le moyen le plus fiable d'obtenir des pixels à partir d'un bitmap ALPHA_8
est d'utiliser copyPixelsToBuffer
. Les méthodes bitmap telles que `setPixels()` et `getPixels` ne fonctionnent pas.
Important: il ne s'agit que d'une référence. NE PAS MODIFIER. Nous ne créons pas de copie ici pour des raisons de performances, mais si une modification est nécessaire, veuillez en faire une copie.
Renvoie
- Une référence à un
Bitmap
dans la configurationARGB_8888
(le "canal A" est toujours opaque) ou dansALPHA_8
, en fonction duColorSpaceType
de ceTensorBuffer
.
Génère
IllegalStateException | si TensorImage ne charge jamais de données.
|
---|
public ByteBuffer getBuffer ()
Renvoie une représentation ByteBuffer
de ce TensorImage
avec le type de données attendu.
La conversion et la limitation numérique sont appliquées si les données stockées sont différentes du type de données de l'élément TensorImage
.
Important: il ne s'agit que d'une référence. NE PAS MODIFIER. Nous ne créons pas de copie ici pour des raisons de performances, mais si une modification est nécessaire, veuillez en faire une copie.
Il s'agit essentiellement d'un raccourci pour getTensorBuffer().getBuffer()
.
Renvoie
- une référence à un
ByteBuffer
qui contient les données d'image ;
Génère
IllegalStateException | si TensorImage ne charge jamais de données.
|
---|
public ColorSpaceType getColorSpaceType ()
Récupère le type d'espace colorimétrique de ce TensorImage
.
Génère
IllegalStateException | si TensorImage ne charge jamais de données.
|
---|
public DataType getDataType ()
Récupère le type de données de ce TensorImage
.
Renvoie
- un type de données. Actuellement, seuls
DataType.UINT8
etDataType.FLOAT32
sont acceptés.
public int getHeight ()
Récupère la hauteur de l'image.
Génère
IllegalStateException | si TensorImage ne charge jamais de données. |
---|---|
IllegalArgumentException | si les données sous-jacentes sont corrompues |
public Image getMediaImage ()
Renvoie une représentation Image
de ce TensorImage
.
Cette méthode ne fonctionne que lorsque TensorImage
repose sur un Image
, ce qui signifie que vous devez d'abord charger un Image
via load(Image)
.
Important: il ne s'agit que d'une référence. NE PAS MODIFIER. Nous ne créons pas de copie ici pour des raisons de performances, mais si une modification est nécessaire, veuillez en faire une copie.
Renvoie
- Une référence à un
Bitmap
dans la configurationARGB_8888
(le "canal A" est toujours opaque) ou dansALPHA_8
, en fonction duColorSpaceType
de ceTensorBuffer
.
Génère
IllegalStateException | si TensorImage ne charge jamais de données.
|
---|
public TensorBuffer getTensorBuffer ()
Renvoie une représentation TensorBuffer
de ce TensorImage
avec le type de données attendu.
La conversion et la limitation numérique sont appliquées si les données stockées sont différentes du type de données de l'élément TensorImage
.
Important: il ne s'agit que d'une référence. NE PAS MODIFIER. Nous ne créons pas de copie ici pour des raisons de performances, mais si une modification est nécessaire, veuillez en faire une copie.
Renvoie
- une référence à un
TensorBuffer
qui contient les données d'image ;
Génère
IllegalStateException | si TensorImage ne charge jamais de données.
|
---|
public int getWidth ()
Récupère la largeur de l'image.
Génère
IllegalStateException | si TensorImage ne charge jamais de données. |
---|---|
IllegalArgumentException | si les données sous-jacentes sont corrompues |
public vide load (tampon TensorBuffer, ColorSpaceType colorSpaceType)
Charge un TensorBuffer
contenant les valeurs de pixels avec l'ColorSpaceType
spécifique.
Compatible uniquement avec ColorSpaceType.RGB
et ColorSpaceType.GRAYSCALE
. Utilisez load(TensorBuffer, ImageProperties)
pour les autres types d'espaces colorimétriques.
Remarque: Si le type de données de buffer
ne correspond pas à celui de ce TensorImage
, le casting et la limitation numérique sont appliqués lors de l'appel de getTensorBuffer()
et de getBuffer()
.
Paramètres
mise en mémoire tampon | TensorBuffer à charger. Sa forme doit être (h, w, 3) ou (1, h, w, 3) pour les images RVB, et (h, w) ou (1, h, w) pour les images GRIS |
---|---|
colorSpaceType |
Génère
IllegalArgumentException | si la forme du tampon ne correspond pas au type d'espace colorimétrique ou si le type d'espace colorimétrique n'est pas compatible |
---|
public vide load (bitmap de bitmap)
Charge un objet image Bitmap
dans cette TensorImage
.
Remarque: Si TensorImage
a un type de données autre que DataType.UINT8
, la conversion et la limitation numérique sont appliquées lors de l'appel de getTensorBuffer()
et getBuffer()
, où Bitmap
est converti en TensorBuffer
.
Important: Lors du chargement d'un bitmap, NE MODIFIEZ PAS le bitmap côté appelant. L'objet TensorImage
s'appuiera sur le bitmap. Cela modifiera probablement également le bitmap.
Dans cette méthode, nous effectuons une approche de zéro copie pour ce bitmap en conservant simplement sa référence. Utilisez bitmap.copy(bitmap.getConfig(), true)
pour créer une copie si nécessaire.
Remarque: Pour obtenir des performances optimales, chargez des images ayant la même forme afin d'éviter la réallocation de mémoire.
Paramètres
bitmap |
---|
Génère
IllegalArgumentException | Si bitmap n'est pas au format ARGB_8888
|
---|
public void load (int[] pixels, int[] shape)
Charge un tableau entier en pixels RVB dans ce TensorImage
, représentant les pixels qu'il contient.
Remarque: Le casting et la limitation numérique sont appliqués pour convertir les valeurs dans le type de données de ce TensorImage
lorsque vous appelez getTensorBuffer()
et getBuffer()
.
Paramètres
pixels | les pixels RVB représentant l'image |
---|---|
shape | la forme de l'image, qui doit se présenter sous la forme (h, w, 3) ou (1, h, w, 3) |
Génère
IllegalArgumentException | si la forme n'est ni (h, w, 3) ni (1, h, w, 3) |
---|
public void load (float[] pixels, int[] shape)
Charge un tableau flottant en pixels RVB dans ce TensorImage
, représentant les pixels qu'il contient.
Remarque: Si TensorImage
possède un type de données autre que DataType.FLOAT32
, le casting et la limitation numérique sont appliqués lors de l'appel de getTensorBuffer()
et getBuffer()
.
Paramètres
pixels | les pixels RVB représentant l'image |
---|---|
shape | la forme de l'image, qui doit se présenter sous la forme (h, w, 3) ou (1, h, w, 3) |
Génère
IllegalArgumentException | si la forme n'est ni (h, w, 3) ni (1, h, w, 3) |
---|
public void load (tampon ByteBuffer, ImageProperties imageProperties)
Charge un ByteBuffer
contenant les valeurs de pixels avec l'ImageProperties
spécifique.
Remarque: Si le type de données de buffer
ne correspond pas à celui de ce TensorImage
, le casting et la limitation numérique sont appliqués lors de l'appel de getTensorBuffer()
et de getBuffer()
.
Paramètres
mise en mémoire tampon | |
---|---|
imageProperties |
Génère
IllegalArgumentException | Si la taille de la mémoire tampon est inférieure à la taille de l'image indiquée par la hauteur, la largeur et le type d'espace colorimétrique dans ImageProperties
|
---|
public void load (tampon TensorBuffer, ImageProperties imageProperties)
Charge un TensorBuffer
contenant les valeurs de pixels avec l'ImageProperties
spécifique.
La forme de TensorBuffer
ne sera pas utilisée pour déterminer la hauteur et la largeur de l'image.
Définissez les propriétés de l'image via ImageProperties
.
Remarque: Si le type de données de buffer
ne correspond pas à celui de ce TensorImage
, le casting et la limitation numérique sont appliqués lors de l'appel de getTensorBuffer()
et de getBuffer()
.
Paramètres
mise en mémoire tampon | |
---|---|
imageProperties |
Génère
IllegalArgumentException | Si la taille de la mémoire tampon est inférieure à la taille de l'image indiquée par la hauteur, la largeur et le type d'espace colorimétrique dans ImageProperties
|
---|
public vide load (image image)
Charge un objet Image
dans TensorImage
.
La principale utilisation de cette méthode consiste à charger un objet Image
en tant qu'entrée de modèle dans https://www.tensorflow.org/lite/inference_with_metadata/task_library/overview.
TensorImage
reposant sur Image
n'est pas compatible avec ImageProcessor
.
* @renvoie IllegalArgumentException si le ImageFormat
de image
n'est pas YUV_420_888.
Paramètres
Image |
---|