StatelessSampleDistortedBoundingBox

classe finale publique StatelessSampleDistortedBoundingBox

Générez de manière déterministe un cadre de délimitation déformé de manière aléatoire pour une image.

Les annotations du cadre de délimitation sont souvent fournies en plus des étiquettes de vérité terrain dans les tâches de reconnaissance d'images ou de localisation d'objets. Une technique courante pour entraîner un tel système consiste à déformer aléatoirement une image tout en préservant son contenu, c'est-à-dire l'augmentation des données . Cette opération, étant donné la même « graine », génère de manière déterministe une localisation déformée de manière aléatoire d'un objet, c'est-à-dire un cadre de délimitation, étant donné une « image_size », des «bounding_boxes » et une série de contraintes.

La sortie de cette opération est une seule boîte englobante qui peut être utilisée pour recadrer l'image originale. La sortie est renvoyée sous forme de 3 tenseurs : `begin`, `size` et `bboxes`. Les 2 premiers tenseurs peuvent être introduits directement dans `tf.slice` pour recadrer l'image. Ce dernier peut être fourni à `tf.image.draw_bounding_boxes` pour visualiser à quoi ressemble le cadre de délimitation.

Les boîtes englobantes sont fournies et renvoyées sous la forme `[y_min, x_min, y_max, x_max]`. Les coordonnées du cadre de délimitation sont des flottants en `[0.0, 1.0]` par rapport à la largeur et à la hauteur de l'image sous-jacente.

La sortie de cette opération est garantie d'être la même étant donné la même « graine » et est indépendante du nombre de fois que la fonction est appelée, et indépendante des paramètres globaux de graine (par exemple « tf.random.set_seed »).

Exemple d'utilisation :

>>> image = np.array([[[1], [2], [3]], [[4], [5], [6]], [[7], [8], [9] ]]) >>> bbox = tf.constant( ... [0.0, 0.0, 1.0, 1.0], dtype=tf.float32, shape=[1, 1, 4]) >>> seed = (1, 2 ) >>> # Génère une seule boîte englobante déformée. >>> bbox_begin, bbox_size, bbox_draw = ( ... tf.image.stateless_sample_distorted_bounding_box( ... tf.shape(image),bounding_boxes=bbox, seed=seed)) >>> # Utiliser le cadre de sélection pour déformer l'image . >>> tf.slice(image, bbox_begin, bbox_size) >>> # Dessinez le cadre de délimitation dans un résumé d'image. >>> couleurs = np.array([[1.0, 0.0, 0.0], [0.0, 0.0, 1.0]]) >>> tf.image.draw_bounding_boxes( ... tf.expand_dims(tf.cast(image, tf .float32),0), bbox_draw, couleurs)

Notez que si aucune information sur le cadre de délimitation n'est disponible, la définition de « use_image_if_no_bounding_boxes = true » supposera qu'il existe un seul cadre de délimitation implicite couvrant toute l'image. Si `use_image_if_no_bounding_boxes` est faux et qu'aucun cadre de délimitation n'est fourni, une erreur est générée.

Classes imbriquées

classe StatelessSampleDistortedBoundingBox.Options Attributs facultatifs pour StatelessSampleDistortedBoundingBox

Méthodes publiques

statique StatelessSampleDistortedBoundingBox.Options
AreaRange (Liste<Float> AreaRange)
statique StatelessSampleDistortedBoundingBox.Options
aspectRatioRange (Liste<Float> aspectRatioRange)
Sortie <Flottant>
bboxes ()
3D avec la forme « [1, 1, 4] » contenant le cadre de délimitation déformé.
Sortie <T>
commencer ()
1-D, contenant `[offset_height, offset_width, 0]`.
static <T étend le nombre, U étend le nombre> StatelessSampleDistortedBoundingBox <T>
créer ( Scope scope, Operand <T> imageSize, Operand <Float>boundingBoxes, Operand <Float> minObjectCovered, Operand <U> seed, Options... options)
Méthode d'usine pour créer une classe encapsulant une nouvelle opération StatelessSampleDistortedBoundingBox.
statique StatelessSampleDistortedBoundingBox.Options
maxAttempts (Long maxAttempts)
Sortie <T>
taille ()
1-D, contenant `[target_height, target_width, -1]`.
statique StatelessSampleDistortedBoundingBox.Options
useImageIfNoBoundingBoxes (booléen useImageIfNoBoundingBoxes)

Méthodes héritées

Méthodes publiques

public static StatelessSampleDistortedBoundingBox.Options AreaRange (List<Float> AreaRange)

Paramètres
zonePlage La zone recadrée de l'image doit contenir une fraction de l'image fournie dans cette plage.

public static StatelessSampleDistortedBoundingBox.Options aspectRatioRange (List<Float> aspectRatioRange)

Paramètres
aspectRatioRange La zone recadrée de l'image doit avoir un rapport hauteur/largeur = largeur/hauteur compris dans cette plage.

Sortie publique <Float> bboxes ()

3D avec la forme « [1, 1, 4] » contenant le cadre de délimitation déformé. Fournissez en entrée à `tf.image.draw_bounding_boxes`.

sortie publique <T> début ()

1-D, contenant `[offset_height, offset_width, 0]`. Fournissez en entrée à `tf.slice`.

public static StatelessSampleDistortedBoundingBox <T> créer ( Scope scope, Operand <T> imageSize, Operand <Float>boundingBoxes, Operand <Float> minObjectCovered, Operand <U> seed, Options... options)

Méthode d'usine pour créer une classe encapsulant une nouvelle opération StatelessSampleDistortedBoundingBox.

Paramètres
portée portée actuelle
taille de l'image 1-D, contenant « [hauteur, largeur, canaux] ».
boîtes de délimitation 3-D avec la forme `[lot, N, 4]` décrivant les N cadres de délimitation associés à l'image.
minObjectCouvert La zone recadrée de l'image doit contenir au moins cette fraction de tout cadre de délimitation fourni. La valeur de ce paramètre doit être non négative. Dans le cas de 0, la zone recadrée n'a pas besoin de chevaucher l'un des cadres de délimitation fournis.
graine 1-D avec la forme `[2]`. La graine du générateur de nombres aléatoires. Doit avoir le type `int32` ou `int64`. (Lors de l'utilisation de XLA, seul « int32 » est autorisé.)
choix porte des valeurs d'attributs facultatifs
Retour
  • une nouvelle instance de StatelessSampleDistortedBoundingBox

public statique StatelessSampleDistortedBoundingBox.Options maxAttempts (Long maxAttempts)

Paramètres
tentatives maximales Nombre de tentatives de génération d'une région recadrée de l'image des contraintes spécifiées. Après l'échec de `max_attempts`, renvoyez l'image entière.

taille de sortie publique <T> ()

1-D, contenant `[target_height, target_width, -1]`. Fournissez en entrée à `tf.slice`.

public static StatelessSampleDistortedBoundingBox.Options useImageIfNoBoundingBoxes (booléen useImageIfNoBoundingBoxes)

Paramètres
useImageIfNoBoundingBoxes Contrôle le comportement si aucun cadre de délimitation n'est fourni. Si c'est vrai, supposez une boîte englobante implicite couvrant l'intégralité de l'entrée. Si faux, génère une erreur.