tensorflow:: ops:: SampleDistortedBoundingBox

#include <image_ops.h>

Wygeneruj pojedynczy, losowo zniekształcony prostokąt ograniczający obraz.

Streszczenie

Adnotacje w postaci prostokątów ograniczających są często dostarczane oprócz etykiet referencyjnych w zadaniach rozpoznawania obrazu lub lokalizacji obiektów. Powszechną techniką trenowania takiego systemu jest losowe zniekształcanie obrazu z zachowaniem jego zawartości, czyli augmentacja danych . Ta operacja generuje losowo zniekształconą lokalizację obiektu, czyli prostokąt ograniczający, na podstawie parametrów image_size , bounding_boxes i serii ograniczeń.

Wynikiem tej operacji jest pojedynczy prostokąt ograniczający, który można wykorzystać do przycięcia oryginalnego obrazu. Wynik jest zwracany w postaci 3 tensorów: begin , size i bboxes . Pierwsze 2 tensory można przekazać bezpośrednio do tf.slice w celu przycięcia obrazu. Ten ostatni można przekazać do tf.image.draw_bounding_boxes , aby zwizualizować wygląd prostokąta ograniczającego.

Pola ograniczające są dostarczane i zwracane jako [y_min, x_min, y_max, x_max] . Współrzędne pola ograniczającego są liczbami zmiennoprzecinkowymi w zakresie [0.0, 1.0] względem szerokości i wysokości obrazu bazowego.

Na przykład,

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

Należy pamiętać, że jeśli nie są dostępne żadne informacje o polu ograniczającym, ustawienie use_image_if_no_bounding_boxes = true spowoduje założenie, że istnieje pojedyncze, niejawne pole ograniczające obejmujące cały obraz. Jeśli use_image_if_no_bounding_boxes ma wartość false i nie podano żadnych pól ograniczających, zgłaszany jest błąd.

Argumenty:

  • zakres: obiekt zakresu
  • image_size: 1-D, zawierający [height, width, channels] .
  • bounding_boxes: 3-D o kształcie [batch, N, 4] opisującym N pól ograniczających powiązanych z obrazem.

Atrybuty opcjonalne (patrz Attrs ):

  • seed: Jeśli albo seed , albo seed2 są ustawione na wartość różną od zera, generator liczb losowych jest zasiewany na podstawie podanego seed . W przeciwnym razie, zasiewany jest na podstawie ziarna losowego.
  • seed2: Drugie nasiono zapobiegające kolizji nasion.
  • min_object_covered: Przycięty obszar obrazu musi zawierać co najmniej taką część dowolnego podanego pola ograniczającego. Wartość tego parametru powinna być nieujemna. W przypadku wartości 0, przycięty obszar nie musi nachodzić na żadne z podanych pól ograniczających.
  • aspect_ratio_range: Przycięty obszar obrazu musi mieć współczynnik proporcji = szerokość / wysokość mieszczący się w tym zakresie.
  • area_range: Przycięty obszar obrazu musi zawierać część dostarczonego obrazu w tym zakresie.
  • max_attempts: Liczba prób wygenerowania przyciętego obszaru obrazu z określonymi ograniczeniami. W przypadku nieudanych max_attempts , zwróć cały obraz.
  • use_image_if_no_bounding_boxes: Kontroluje zachowanie, jeśli nie podano żadnych pól ograniczających. Jeśli wartość to true, zakłada się, że pole ograniczające obejmuje całe dane wejściowe. Jeśli wartość to false, zgłaszany jest błąd.

Zwroty:

  • Początek Output : 1-D, zawierający [offset_height, offset_width, 0] . Przekaż jako dane wejściowe do tf.slice .
  • Rozmiar Output : 1-D, zawierający [target_height, target_width, -1] . Podaj jako dane wejściowe do tf.slice .
  • Output pola bbox: 3-D o kształcie [1, 1, 4] zawierające zniekształcony blok ograniczający. Podaj jako dane wejściowe do tf.image.draw_bounding_boxes .

Konstruktory i destruktory

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)

Atrybuty publiczne

bboxes
begin
operation
size

Publiczne funkcje statyczne

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)

Struktury

tensorflow:: ops:: SampleDistortedBoundingBox:: Attrs

Opcjonalne settery atrybutów dla SampleDistortedBoundingBox .

Atrybuty publiczne

pudełka

::tensorflow::Output bboxes

zaczynać

::tensorflow::Output begin

działanie

Operation operation

rozmiar

::tensorflow::Output size

Funkcje publiczne

PróbkaZniekształconaOgraniczającaBox

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

PróbkaZniekształconaOgraniczającaBox

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

Publiczne funkcje statyczne

Zakres obszaru

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

Zakres proporcji

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

Maksymalna liczba prób

Attrs MaxAttempts(
  int64 x
)

MinObjectCovered

Attrs MinObjectCovered(
  float x
)

Nasienie

Attrs Seed(
  int64 x
)

Seed2

Attrs Seed2(
  int64 x
)

Użyj obrazu, jeśli nie ma pól ograniczających

Attrs UseImageIfNoBoundingBoxes(
  bool x
)