Wygeneruj pojedynczą, losowo zniekształconą ramkę ograniczającą obraz.
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 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.
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 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 | PróbkaDistortedBoundingBox.Opcje | Opcjonalne atrybuty dla SampleDistortedBoundingBox |
Stałe
Smyczkowy | OP_NAME | Nazwa tej operacji znana silnikowi rdzenia TensorFlow |
Metody publiczne
statyczny SampleDistortedBoundingBox.Options | areaRange (Lista<Float> areaRange) |
statyczny SampleDistortedBoundingBox.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 > SampleDistortedBoundingBox <T> | |
statyczny SampleDistortedBoundingBox.Options | maxAttempts (Długie maxAttempts) |
statyczny SampleDistortedBoundingBox.Options | nasiona (długie nasiona) |
statyczny SampleDistortedBoundingBox.Options | nasiona 2 (Długie nasiona 2) |
Wyjście <T> | rozmiar () 1-D, zawierający `[wysokość_docelowa, szerokość_docelowa, -1]`. |
statyczny SampleDistortedBoundingBox.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
publiczny statyczny SampleDistortedBoundingBox.Options areaRange (List<Float> areaRange)
Parametry
obszarZakres | Przycięty obszar obrazu musi zawierać część dostarczonego obrazu w tym zakresie. |
---|
publiczny statyczny SampleDistortedBoundingBox.Options aspektRatioRange (List<Float> aspektRatioRange)
Parametry
aspektRatioRange | Przycięty obszar obrazu musi mieć współczynnik proporcji = 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 SampleDistortedBoundingBox <T> create ( Zakres zakresu, Operand <T> imageSize, Operand < TFloat32 >boundingBoxes, Operand < TFloat32 > minObjectCovered, Opcje... opcje)
Metoda fabryczna służąca do tworzenia klasy opakowującej nową operację SampleDistortedBoundingBox.
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. |
opcje | przenosi opcjonalne wartości atrybutów |
Powroty
- nowa instancja SampleDistortedBoundingBox
public static SampleDistortedBoundingBox.Options maxAttempts (Długie maxAttempts)
Parametry
maxPróby | Liczba prób wygenerowania przyciętego obszaru obrazu z określonymi ograniczeniami. Po niepowodzeniach `max_attempts` zwróć cały obraz. |
---|
public static SampleDistortedBoundingBox.Options ziarno (długie ziarno)
Parametry
nasienie | Jeśli „ziarno” lub „ziarno2” jest ustawione na wartość różną od zera, generator liczb losowych jest inicjowany przez dane „ziarno”. W przeciwnym razie jest on zaszczepiany losowo. |
---|
public static SampleDistortedBoundingBox.Options nasiono 2 (długie ziarno 2)
Parametry
ziarno2 | Drugie ziarno, aby uniknąć kolizji nasion. |
---|
publiczny Rozmiar wyjścia <T> ( )
1-D, zawierający `[wysokość_docelowa, szerokość_docelowa, -1]`. Podaj jako dane wejściowe do tf.slice
.
publiczny statyczny SampleDistortedBoundingBox.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. |
---|