tensorflow::ops::SampleDistortedBoundingBox

#include <image_ops.h>

Générer un cadre de délimitation unique et déformé aléatoirement pour une image.

Résumé

Dans les tâches de reconnaissance d'images ou de localisation d'objets, les annotations de boîtes englobantes sont souvent fournies en complément des étiquettes de vérité terrain. Une technique courante pour l'entraînement d'un tel système consiste à déformer aléatoirement une image tout en préservant son contenu ( augmentation de données) . Cette opération produit une localisation d'un objet déformée aléatoirement (boîte englobante) à partir d'une image_size , de bounding_boxes et d'une série de contraintes.

Le résultat de cette opération est un cadre de délimitation unique qui peut servir à recadrer l'image originale. Ce résultat est renvoyé sous forme de trois tenseurs : begin , size et bboxes . Les deux premiers peuvent être utilisés directement avec tf.slice pour recadrer l'image. Le dernier peut être fourni à tf.image.draw_bounding_boxes pour visualiser 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 de la boîte englobante sont des nombres flottants compris entre [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 de cadre de délimitation n'est disponible, définir use_image_if_no_bounding_boxes = true supposera l'existence d'un seul cadre de délimitation implicite couvrant l'intégralité de l'image. Si use_image_if_no_bounding_boxes est défini sur `false` et qu'aucun cadre de délimitation n'est fourni, une erreur sera générée.

Arguments :

  • portée : un objet Scope
  • taille_image : 1-D, contenant [height, width, channels] .
  • bounding_boxes : 3D avec forme [batch, N, 4] décrivant les N boîtes englobantes associées à l'image.

Attributs optionnels (voir Attrs ) :

  • Graine : Si l’une seed ou seed2 est différente de zéro, le générateur de nombres aléatoires est initialisé avec la seed fournie. Sinon, il est initialisé avec une graine aléatoire.
  • seed2 : Une deuxième graine pour éviter les collisions entre les graines.
  • min_object_covered : La zone recadrée de l’image doit contenir au moins cette fraction de chaque cadre de délimitation fourni. La valeur de ce paramètre doit être non négative. Si la valeur est 0, la zone recadrée ne doit chevaucher aucun des cadres de délimitation fournis.
  • aspect_ratio_range : La zone recadrée de l’image doit avoir un rapport hauteur/largeur compris dans cette plage.
  • area_range : La zone recadrée de l’image doit contenir une fraction de l’image fournie comprise dans cette plage.
  • max_attempts : Nombre de tentatives de génération d'une zone recadrée de l'image selon les contraintes spécifiées. Après max_attempts échecs, l'image entière est renvoyée.
  • use_image_if_no_bounding_boxes : détermine le comportement en l’absence de cadres de délimitation. Si la valeur est « true », un cadre de délimitation implicite couvre l’ensemble de l’image. Si la valeur est « false », une erreur est générée.

Retours :

  • Début Output : 1-D, contenant [offset_height, offset_width, 0] . Fournir comme entrée à tf.slice .
  • Taille Output : 1D, contenant [target_height, target_width, -1] . À fournir comme entrée à tf.slice .
  • Boîtes Output : 3D de forme [1, 1, 4] contenant la boîte englobante déformée. À fournir 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

Définiteurs d'attributs optionnels pour SampleDistortedBoundingBox .

attributs publics

boîtes bboxes

::tensorflow::Output bboxes

commencer

::tensorflow::Output begin

opération

Operation operation

taille

::tensorflow::Output size

fonctions publiques

Boîte englobante déformée d'échantillon

 SampleDistortedBoundingBox(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input image_size,
  ::tensorflow::Input bounding_boxes
)

Boîte englobante déformée d'échantillon

 SampleDistortedBoundingBox(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input image_size,
  ::tensorflow::Input bounding_boxes,
  const SampleDistortedBoundingBox::Attrs & attrs
)

fonctions statiques publiques

Plage de zones

Attrs AreaRange(
  const gtl::ArraySlice< float > & x
)

Plage de rapport d'aspect

Attrs AspectRatioRange(
  const gtl::ArraySlice< float > & x
)

Nombre maximal de tentatives

Attrs MaxAttempts(
  int64 x
)

MinObjectCovered

Attrs MinObjectCovered(
  float x
)

Graine

Attrs Seed(
  int64 x
)

Graine2

Attrs Seed2(
  int64 x
)

UtiliserImageSiPasDeBoîtesDeDélimitation

Attrs UseImageIfNoBoundingBoxes(
  bool x
)