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 `seed', deterministycznie wyprowadza 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) 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 |
Stałe
Strunowy | OP_NAME | Nazwa tej operacji znana silnikowi rdzenia TensorFlow |
Metody publiczne
statyczny StatelessSampleDistortedBoundingBox.Options | areaRange (Lista<Float> areaRange) |
statyczny StatelessSampleDistortedBoundingBox.Options | aspektRatioRange (List<Float> aspektRatioRange) |
Dane wyjściowe <TFloat32> | 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]`. |
statyczny <T rozszerza TNumber > StatelessSampleDistortedBoundingBox <T> | |
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
Stałe
publiczny statyczny końcowy ciąg znaków OP_NAME
Nazwa tej operacji znana silnikowi rdzenia TensorFlow
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. |
---|
publiczne wyjście < TFloat32 > 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, Operand <T> imageSize, Operand < TFloat32 >boundingBoxes, Operand < TFloat32 > minObjectCovered, Operand <? rozszerza TNumber > nasion, 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. |
---|