flux tensoriel : : opérations : : SampleDistortedBoundingBox
#include <image_ops.h>
Générez un seul cadre de délimitation déformé de manière aléatoire pour une image.
Résumé
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 génère une localisation déformée de manière aléatoire d'un objet, c'est-à-dire un cadre de délimitation, étant donné un image_size
, 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 cadres de délimitation sont fournis et renvoyés sous la forme [y_min, x_min, y_max, x_max]
. Les coordonnées du cadre de délimitation sont flottantes dans [0.0, 1.0]
par rapport à la largeur et à la hauteur de l'image sous-jacente.
Par exemple,
# 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 le cadre de délimitation n'est disponible, la définition 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.
Arguments :
- scope : un objet Scope
- image_size : 1-D, contenant
[height, width, channels]
. - bounding_boxes : 3D avec une forme
[batch, N, 4]
décrivant les N boîtes englobantes associées à l'image.
Attributs facultatifs (voir Attrs
) :
- seed : Si
seed
ouseed2
sont définis sur une valeur différente de zéro, le générateur de nombres aléatoires est amorcé par laseed
donnée. Sinon, il est ensemencé par une graine aléatoire. - seed2 : Une deuxième graine pour éviter la collision des 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 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 recadrée de l'image des contraintes spécifiées. Après l'échec
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 c'est vrai, supposez une boîte englobante implicite couvrant l'intégralité de l'entrée. Si faux, génère une erreur.
Retours :
- Début
Output
: 1-D, contenant[offset_height, offset_width, 0]
. Fournir en entrée àtf.slice
. - Taille
Output
: 1-D, contenant[target_height, target_width, -1]
. Fournir en entrée àtf.slice
. - Bboxes
Output
: 3D avec la forme[1, 1, 4]
contenant le cadre de délimitation déformé. Fournissez en 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) |
Structures | |
---|---|
tensorflow :: ops :: SampleDistortedBoundingBox :: Attrs | Setters 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
ZonePlage
Attrs AreaRange( const gtl::ArraySlice< float > & x )
AspectRatioPlage
Attrs AspectRatioRange( const gtl::ArraySlice< float > & x )
Tentatives maximales
Attrs MaxAttempts( int64 x )
MinObjectCouvert
Attrs MinObjectCovered( float x )
Graine
Attrs Seed( int64 x )
Semence2
Attrs Seed2( int64 x )
UtiliserImageIfNoBoundingBoxes
Attrs UseImageIfNoBoundingBoxes( bool x )