StatelessSampleDistortedBoundingBox

publiczna klasa końcowa StatelessSampleDistortedBoundingBox

Generuj deterministycznie losowo zniekształconą ramkę ograniczającą dla obrazu.

Adnotacje dotyczące obwiedni są często dostarczane jako dodatek do etykiet podstawowych w zadaniach rozpoznawania obrazu lub lokalizacji obiektów. Powszechną techniką uczenia takiego systemu jest losowe zniekształcanie obrazu przy jednoczesnym zachowaniu jego zawartości, czyli powiększanie danych . Ta operacja, mając to samo `ziarno', deterministycznie generuje losowo zniekształconą lokalizację obiektu, tj. obwiednię, biorąc pod uwagę `image_size`, `bounding_boxes` i serię ograniczeń.

Wynikiem tej operacji jest pojedyncza ramka ograniczająca, której można użyć do przycięcia oryginalnego obrazu. Dane wyjściowe są zwracane jako 3 tensory: `begin`, `size` i `bboxes`. Pierwsze 2 tensory można wprowadzić bezpośrednio do tf.slice w celu przycięcia obrazu. Te ostatnie można dostarczyć do tf.image.draw_bounding_boxes w celu wizualizacji wyglądu ramki ograniczającej.

Ramki ograniczające są dostarczane i zwracane jako `[y_min, x_min, y_max, x_max]`. Współrzędne ramki ograniczającej są zmiennoprzecinkowe w zakresie „[0,0, 1,0]” w stosunku do szerokości i wysokości obrazu bazowego.

Gwarantuje się, że wynik tej operacji będzie taki sam, przy tym samym „ziarnie” i jest niezależny od tego, ile razy funkcja jest wywoływana i niezależny od globalnych ustawień nasion (np. tf.random.set_seed ).

Przykładowe użycie:

>>> obraz = np.array([[[1], [2], [3]], [[4], [5], [6]], [[7], [8], [9] ]]) >>> bbox = tf.constant( ... [0.0, 0.0, 1.0, 1.0], dtype=tf.float32, kształt=[1, 1, 4]) >>> nasiono = (1, 2 ) >>> # Wygeneruj pojedynczą zniekształconą ramkę ograniczającą. >>> bbox_begin, bbox_size, bbox_draw = ( ... tf.image.stateless_sample_distorted_bounding_box( ... tf.shape(image),bounding_boxes=bbox, nasion=nasiono)) >>> # Użyj ramki ograniczającej, aby zniekształcić obraz . >>> tf.slice(image, bbox_begin, bbox_size) >>> # Narysuj obwiednię w podsumowaniu obrazu. >>> kolory = np.array([[1.0, 0.0, 0.0], [0.0, 0.0, 1.0]]) >>> tf.image.draw_bounding_boxes( ... tf.expand_dims(tf.cast(image, tf .float32),0), bbox_draw, kolory)

Należy pamiętać, że jeśli nie są dostępne żadne informacje o ramce ograniczającej, ustawienie `use_image_if_no_bounding_boxes = true` zakłada, że ​​istnieje jedna niejawna ramka ograniczająca obejmująca cały obraz. Jeśli `use_image_if_no_bounding_boxes` ma wartość false i nie podano żadnych ramek ograniczających, zgłaszany jest błąd.

Klasy zagnieżdżone

klasa StatelessSampleDistortedBoundingBox.Opcje Opcjonalne atrybuty dla StatelessSampleDistortedBoundingBox

Metody publiczne

statyczny StatelessSampleDistortedBoundingBox.Options
areaRange (Lista<Float> areaRange)
statyczny StatelessSampleDistortedBoundingBox.Options
aspektRatioRange (List<Float> aspektRatioRange)
Wyjście <Pływak>
bboxy ()
Trójwymiarowy kształt „[1, 1, 4]” zawierający zniekształconą ramkę ograniczającą.
Wyjście <T>
zaczynać ()
1-D, zawierający `[wysokość_przesunięcia, szerokość_przesunięcia, 0]`.
static <T rozszerza numer, U rozszerza numer> StatelessSampleDistortedBoundingBox <T>
utwórz ( Zakres zasięgu , Operand <T> imageSize, Operand <Float>boundingBoxes, Operand <Float> minObjectCovered, Argument <U> ziarno, Opcje... opcje)
Metoda fabryczna służąca do tworzenia klasy opakowującej nową operację StatelessSampleDistortedBoundingBox.
statyczny StatelessSampleDistortedBoundingBox.Options
maxAttempts (Długie maxAttempts)
Wyjście <T>
rozmiar ()
1-D, zawierający `[wysokość_docelowa, szerokość_docelowa, -1]`.
statyczny StatelessSampleDistortedBoundingBox.Options
useImageIfNoBoundingBoxes (wartość logiczna useImageIfNoBoundingBoxes)

Metody dziedziczone

Metody publiczne

public static StatelessSampleDistortedBoundingBox.Options areaRange (List<Float> areaRange)

Parametry
obszarZakres Przycięty obszar obrazu musi zawierać część dostarczonego obrazu w tym zakresie.

public static StatelessSampleDistortedBoundingBox.Options aspektRatioRange (List<Float> aspektRatioRange)

Parametry
aspektRatioRange Przycięty obszar obrazu musi mieć współczynnik kształtu = szerokość / wysokość mieszczący się w tym zakresie.

public Output <Float> bboxes ()

Trójwymiarowy kształt „[1, 1, 4]” zawierający zniekształconą ramkę ograniczającą. Podaj jako dane wejściowe do tf.image.draw_bounding_boxes .

publiczne wyjście <T> rozpocząć ()

1-D, zawierający `[wysokość_przesunięcia, szerokość_przesunięcia, 0]`. Podaj jako dane wejściowe do tf.slice .

public static StatelessSampleDistortedBoundingBox <T> utwórz ( zakres zakresu , argument <T> imageSize, argument <Float>boundingBoxes, argument <Float> minObjectCovered, ziarno argumentu <U>, opcje... opcje)

Metoda fabryczna służąca do tworzenia klasy opakowującej nową operację StatelessSampleDistortedBoundingBox.

Parametry
zakres aktualny zakres
rozmiar obrazu 1-D, zawierający `[wysokość, szerokość, kanały]`.
ograniczające Trójwymiarowy kształt „[partia, N, 4]” opisujący N ramek ograniczających skojarzonych z obrazem.
minObjectCovered Przycięty obszar obrazu musi zawierać co najmniej tę część dowolnej dostarczonej ramki ograniczającej. Wartość tego parametru powinna być nieujemna. W przypadku wartości 0 przycięty obszar nie musi zachodzić na żadną z dostarczonych ramek ograniczających.
nasionko 1-D z kształtem „[2]”. Ziarno generatora liczb losowych. Musi mieć typ „int32” lub „int64”. (W przypadku korzystania z XLA dozwolone jest tylko „int32”).
opcje przenosi opcjonalne wartości atrybutów
Zwroty
  • nowa instancja StatelessSampleDistortedBoundingBox

public static StatelessSampleDistortedBoundingBox.Options maxAttempts (Long maxAttempts)

Parametry
maxPróby Liczba prób wygenerowania przyciętego obszaru obrazu z określonymi ograniczeniami. Po niepowodzeniach `max_attempts` zwróć cały obraz.

publiczny Rozmiar wyjścia <T> ()

1-D, zawierający `[wysokość_docelowa, szerokość_docelowa, -1]`. Podaj jako dane wejściowe do tf.slice .

public static StatelessSampleDistortedBoundingBox.Options useImageIfNoBoundingBoxes (boolean useImageIfNoBoundingBoxes)

Parametry
użyjImageIfNoBoundingBoxes Kontroluje zachowanie, jeśli nie podano ramek ograniczających. Jeśli to prawda, załóż niejawną ramkę ograniczającą obejmującą całe wejście. Jeśli fałszywe, zgłoś błąd.