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 zone de délimitation 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 ou seed2 sont définis sur une valeur différente de zéro, le générateur de nombres aléatoires est amorcé par la seed 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
)