Tensorflow :: ops :: SampleDistortedBoundingBox
#include <image_ops.h>
Generieren Sie einen einzelnen zufällig verzerrten Begrenzungsrahmen für ein Bild.
Zusammenfassung
Begrenzungsrahmenanmerkungen werden häufig zusätzlich zu Grundwahrheitsbezeichnungen 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, wenn eine image_size
, bounding_boxes
und eine Reihe von Einschränkungen gegeben sind.
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 Form
[batch, N, 4]
, die die N dem Bild zugeordneten Boundingboxen beschreibt.
Optionale Attribute (siehe Attrs
):
- Samen: Wenn entweder
seed
oderseed2
auf nicht-null gesetzt werden, der Zufallszahlengenerator durch das gegebene ausgesät wirdseed
. Andernfalls wird es durch einen zufälligen Startwert ausgesät. - seed2: Ein zweiter Samen, um eine Samenkollision zu vermeiden.
- 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.
- aspect_ratio_range: 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 beimax_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ürtf.slice
. -
Output
: 1-D, enthält[target_height, target_width, -1]
. Geben Sie als Eingabe fürtf.slice
. -
Output
B-Boxen: 3-D mit der Form[1, 1, 4]
die den verzerrten Begrenzungsrahmen enthält. Geben Sie als Eingabe fürtf.image.draw_bounding_boxes
.
Konstruktoren und Destruktoren | |
---|---|
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) |
Öffentliche Attribute | |
---|---|
bboxes | |
begin | |
operation | |
size |
Öffentliche statische Funktionen | |
---|---|
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) |
Strukturen | |
---|---|
tensorflow :: ops :: SampleDistortedBoundingBox :: Attrs | Optionale Attributsetzer für SampleDistortedBoundingBox . |
Öffentliche Attribute
bboxen
::tensorflow::Output bboxes
Start
::tensorflow::Output begin
Operation
Operation operation
Größe
::tensorflow::Output size
Öffentliche Funktionen
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 )
Öffentliche statische Funktionen
AreaRange
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 )
Samen
Attrs Seed( int64 x )
Seed2
Attrs Seed2( int64 x )
UseImageIfNoBoundingBoxes
Attrs UseImageIfNoBoundingBoxes( bool x )