Tensorflow :: ops :: SampleDistortedBoundingBoxV2

#include <image_ops.h>

Generieren Sie einen einzelnen zufällig verzerrten Begrenzungsrahmen für ein Bild.

Zusammenfassung

Bounding-Box-Annotationen werden häufig zusätzlich zu Ground-Truth-Labels bei Bilderkennungs- oder Objektlokalisierungsaufgaben bereitgestellt. Eine übliche Technik zum Trainieren eines solchen Systems besteht darin, ein Bild zufällig zu verzerren, während sein Inhalt erhalten bleibt, dh Daten zu erweitern . Diese Operation gibt eine zufällig verzerrte Lokalisierung eines Objekts aus, dh einen Begrenzungsrahmen, der eine image_size , bounding_boxes und eine Reihe von Einschränkungen enthält.

Die Ausgabe dieses Op ist ein einzelner Begrenzungsrahmen, mit dem das Originalbild zugeschnitten werden kann. Die Ausgabe wird als 3 Tensoren zurückgegeben: begin , size und bboxes . Die ersten 2 Tensoren können direkt in tf.slice eingespeist werden, um das Bild tf.slice . Letzteres kann an tf.image.draw_bounding_boxes , um zu visualisieren, wie der Begrenzungsrahmen aussieht.

Begrenzungsrahmen werden als [y_min, x_min, y_max, x_max] geliefert und zurückgegeben. Die Begrenzungsrahmenkoordinaten sind Gleitkommazahlen in [0.0, 1.0] relativ zur Breite und Höhe des zugrunde liegenden Bildes.

Beispielsweise,

    # 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)

Wenn keine Begrenzungsrahmeninformationen verfügbar sind, wird beim Festlegen von use_image_if_no_bounding_boxes = true davon ausgegangen, dass ein einziger impliziter Begrenzungsrahmen das gesamte Bild abdeckt. Wenn use_image_if_no_bounding_boxes false ist und keine Bounding Boxes angegeben werden, wird ein Fehler use_image_if_no_bounding_boxes .

Argumente:

  • scope: Ein Scope- Objekt
  • image_size: 1-D, enthält [height, width, channels] .
  • Bounding_boxes: 3-D mit der Form [batch, N, 4] , die die N dem Bild zugeordneten Boundingboxen beschreibt.
  • min_object_covered: Der zugeschnittene Bereich des Bildes muss mindestens diesen Bruchteil eines mitgelieferten Begrenzungsrahmens enthalten. Der Wert dieses Parameters sollte nicht negativ sein. Im Fall von 0 muss der zugeschnittene Bereich keinen der mitgelieferten Begrenzungsrahmen überlappen.

Optionale Attribute (siehe Attrs ):

  • Samen: Wenn entweder seed oder seed2 auf nicht-null gesetzt werden, der Zufallszahlengenerator durch das gegebene ausgesät wird seed . Andernfalls wird es durch einen zufälligen Startwert ausgesät.
  • seed2: Ein zweiter Samen, um eine Samenkollision zu vermeiden.
  • Seitenverhältnis: Der zugeschnittene Bereich des Bildes muss innerhalb dieses Bereichs ein Seitenverhältnis = Breite / Höhe haben.
  • area_range: Der zugeschnittene Bereich des Bildes muss einen Bruchteil des bereitgestellten Bildes innerhalb dieses Bereichs enthalten.
  • max_attempts: Anzahl der Versuche, einen beschnittenen Bereich des Bildes der angegebenen Einschränkungen zu generieren. max_attempts Fehlern bei max_attempts das gesamte Image zurück.
  • use_image_if_no_bounding_boxes: Steuert das Verhalten, wenn keine Begrenzungsrahmen angegeben werden. Wenn dies der Fall ist, nehmen Sie einen impliziten Begrenzungsrahmen an, der die gesamte Eingabe abdeckt. Wenn false, wird ein Fehler ausgegeben.

Kehrt zurück:

  • Output beginnen: 1-D, enthaltend [offset_height, offset_width, 0] . Geben Sie als Eingabe für tf.slice .
  • Output : 1-D, enthält [target_height, target_width, -1] . Geben Sie als Eingabe für tf.slice .
  • Output B-Boxen: 3-D mit der Form [1, 1, 4] die den verzerrten Begrenzungsrahmen enthält. Geben Sie als Eingabe für tf.image.draw_bounding_boxes .

Konstruktoren und Destruktoren

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

Öffentliche Attribute

bboxes
begin
operation
size

Öffentliche statische Funktionen

AreaRange (const gtl::ArraySlice< float > & x)
AspectRatioRange (const gtl::ArraySlice< float > & x)
MaxAttempts (int64 x)
Seed (int64 x)
Seed2 (int64 x)
UseImageIfNoBoundingBoxes (bool x)

Strukturen

tensorflow :: ops :: SampleDistortedBoundingBoxV2 :: Attrs

Optionale Attributsetzer für SampleDistortedBoundingBoxV2 .

Öffentliche Attribute

bboxen

::tensorflow::Output bboxes

Start

::tensorflow::Output begin

Operation

Operation operation

Größe

::tensorflow::Output size

Öffentliche Funktionen

SampleDistortedBoundingBoxV2

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

SampleDistortedBoundingBoxV2

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

Öffentliche statische Funktionen

AreaRange

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

AspectRatioRange

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

MaxAttempts

Attrs MaxAttempts(
  int64 x
)

Samen

Attrs Seed(
  int64 x
)

Seed2

Attrs Seed2(
  int64 x
)

UseImageIfNoBoundingBoxes

Attrs UseImageIfNoBoundingBoxes(
  bool x
)