Aide à protéger la Grande barrière de corail avec tensorflow sur Kaggle Rejoignez Défi

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 de 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: 3D avec forme [batch, N, 4] décrivant les N boîtes englobantes associées à l'image.

Attributs facultatifs (voir Attrs ):

  • seed: Si seed ou seed2 est défini sur différent de zéro, le générateur de nombres aléatoires est amorcé par la seed 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 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
)