tensorflow :: opérations :: SampleDistortedBoundingBox
#include <image_ops.h>
Générez une seule boîte englobante déformée de manière aléatoire pour une image.
Résumé
Les annotations de boîte englobante sont souvent fournies en plus des étiquettes de vérité terrain dans les tâches de reconnaissance d'image ou de localisation d'objets. Une technique courante d'apprentissage d'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 produit une localisation déformée aléatoirement d'un objet, c'est-à-dire une boîte englobante, étant donné une image_size
, des bounding_boxes
et une série de contraintes.
Le résultat de cette opération est un cadre de délimitation unique qui peut être utilisé pour recadrer l'image d'origine. 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 la boîte englobante.
Les boîtes englobantes sont fournies et renvoyées sous la forme [y_min, x_min, y_max, x_max]
. Les coordonnées de la boîte englobante sont des flottants dans [0.0, 1.0]
rapport à la largeur et à la hauteur de l'image sous-jacente.
Par example,
# Generate a single distorted bounding box. begin, size, bbox_for_draw = tf.image.sample_distorted_bounding_box( tf.shape(image), bounding_boxes=bounding_boxes)
# Draw the bounding box in an image summary. image_with_box = tf.image.draw_bounding_boxes(tf.expand_dims(image, 0), bbox_for_draw) tf.summary.image('images_with_box', image_with_box)
# Employ the bounding box to distort the image. distorted_image = tf.slice(image, begin, size)
Notez que si aucune information sur la zone de délimitation n'est disponible, la définition de use_image_if_no_bounding_boxes = true
supposera qu'il existe une seule zone de délimitation implicite couvrant toute l'image. Si use_image_if_no_bounding_boxes
est false et qu'aucune zone de délimitation n'est fournie, une erreur est générée.
Arguments:
- scope: un objet Scope
- image_size: 1-D, contenant
[height, width, channels]
. - bounding_boxes: 3-D avec forme
[batch, N, 4]
décrivant les N boîtes englobantes associées à l'image.
Attributs facultatifs (voir Attrs
):
- seed: Si
seed
ouseed2
est défini sur différent de zéro, le générateur de nombres aléatoires est amorcé par laseed
donnée. Sinon, il est semé par une graine aléatoire. - seed2: Une deuxième graine pour éviter la collision de graines.
- min_object_covered: 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.
- aspect_ratio_range: la zone recadrée de l'image doit avoir un rapport hauteur / largeur = largeur / hauteur compris dans cette plage.
- area_range: la zone recadrée de l'image doit contenir une fraction de l'image fournie dans cette plage.
- max_attempts: nombre de tentatives de génération d'une région rognée de l'image des contraintes spécifiées. Après l'échec de
max_attempts
, renvoyez l'image entière. - use_image_if_no_bounding_boxes: contrôle le comportement si aucun cadre de délimitation n'est fourni. Si vrai, supposons une boîte englobante implicite couvrant toute l'entrée. Si faux, déclenchez une erreur.
Retour:
-
[offset_height, offset_width, 0]
Output
: 1-D, contenant[offset_height, offset_width, 0]
. Fournir comme entrée àtf.slice
. - Taille de
Output
: 1-D, contenant[target_height, target_width, -1]
. Fournir comme entrée àtf.slice
. - Bboxes de
Output
: 3-D avec la forme[1, 1, 4]
contenant la boîte englobante déformée. Fournissez comme entrée àtf.image.draw_bounding_boxes
.
Constructeurs et destructeurs | |
---|---|
SampleDistortedBoundingBox (const :: tensorflow::Scope & scope, :: tensorflow::Input image_size, :: tensorflow::Input bounding_boxes) | |
SampleDistortedBoundingBox (const :: tensorflow::Scope & scope, :: tensorflow::Input image_size, :: tensorflow::Input bounding_boxes, const SampleDistortedBoundingBox::Attrs & attrs) |
Attributs publics | |
---|---|
bboxes | |
begin | |
operation | |
size |
Fonctions statiques publiques | |
---|---|
AreaRange (const gtl::ArraySlice< float > & x) | |
AspectRatioRange (const gtl::ArraySlice< float > & x) | |
MaxAttempts (int64 x) | |
MinObjectCovered (float x) | |
Seed (int64 x) | |
Seed2 (int64 x) | |
UseImageIfNoBoundingBoxes (bool x) |
Structs | |
---|---|
tensorflow :: ops :: SampleDistortedBoundingBox :: Attrs | Définisseurs d' attributs facultatifs pour SampleDistortedBoundingBox . |
Attributs publics
bboxes
::tensorflow::Output bboxes
commencer
::tensorflow::Output begin
opération
Operation operation
Taille
::tensorflow::Output size
Fonctions publiques
SampleDistortedBoundingBox
SampleDistortedBoundingBox( const ::tensorflow::Scope & scope, ::tensorflow::Input image_size, ::tensorflow::Input bounding_boxes )
SampleDistortedBoundingBox
SampleDistortedBoundingBox( const ::tensorflow::Scope & scope, ::tensorflow::Input image_size, ::tensorflow::Input bounding_boxes, const SampleDistortedBoundingBox::Attrs & attrs )
Fonctions statiques publiques
ZoneRange
Attrs AreaRange( const gtl::ArraySlice< float > & x )
AspectRatioRange
Attrs AspectRatioRange( const gtl::ArraySlice< float > & x )
MaxAttempts
Attrs MaxAttempts( int64 x )
MinObjectCovered
Attrs MinObjectCovered( float x )
Planter
Attrs Seed( int64 x )
Graine2
Attrs Seed2( int64 x )
UseImageIfNoBoundingBoxes
Attrs UseImageIfNoBoundingBoxes( bool x )