Peringatan: API ini tidak digunakan lagi dan akan dihapus di versi TensorFlow mendatang setelah penggantinya stabil.

StatelessSampleDistortedBoundingBox

kelas akhir publik StatelessSampleDistortedBoundingBox

Hasilkan kotak pembatas yang terdistorsi secara acak untuk gambar secara deterministik.

Anotasi kotak pembatas sering disertakan sebagai tambahan untuk label kebenaran dasar dalam tugas pengenalan gambar atau pelokalan objek. Teknik umum untuk melatih sistem seperti itu adalah mendistorsi gambar secara acak sambil mempertahankan kontennya, yaitu augmentasi data . Op ini, dengan `seed` yang sama, secara deterministik mengeluarkan lokalisasi objek yang terdistorsi secara acak, yaitu kotak pembatas, dengan `ukuran_gambar`, `kotak_batas` dan serangkaian batasan.

Output dari Op ini adalah kotak pembatas tunggal yang dapat digunakan untuk memotong gambar asli. Output dikembalikan sebagai 3 tensor: `begin`, `size` dan `bboxes`. 2 tensor pertama dapat dimasukkan langsung ke tf.slice untuk memotong gambar. Yang terakhir mungkin diberikan ke tf.image.draw_bounding_boxes untuk memvisualisasikan seperti apa kotak pembatas itu.

Kotak pembatas disediakan dan dikembalikan sebagai `[y_min, x_min, y_max, x_max]`. Koordinat kotak pembatas adalah float di `[0.0, 1.0]` relatif terhadap lebar dan tinggi gambar di bawahnya.

Output dari Op ini dijamin sama dengan `seed` yang sama dan tidak tergantung pada berapa kali fungsi dipanggil, dan tidak tergantung pada pengaturan seed global (misalnya tf.random.set_seed ).

Contoh penggunaan:

>>> gambar = 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, shape=[1, 1, 4]) >>> seed = (1, 2 ) >>> # Buat satu kotak pembatas terdistorsi. >>> bbox_begin, bbox_size, bbox_draw = ( ... tf.image.stateless_sample_distorted_bounding_box( ... tf.shape(image), bounding_boxes=bbox, seed=seed)) >>> # Gunakan kotak pembatas untuk mendistorsi gambar . >>> tf.slice(gambar, bbox_begin, bbox_size) >>> # Gambar kotak pembatas dalam ringkasan gambar. >>> warna = 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, warna)

Perhatikan bahwa jika tidak ada informasi kotak pembatas yang tersedia, menyetel `use_image_if_no_bounding_boxes = true` akan menganggap ada satu kotak pembatas implisit yang menutupi seluruh gambar. Jika `use_image_if_no_bounding_boxes` salah dan tidak ada kotak pembatas yang disediakan, kesalahan akan muncul.

Kelas Bersarang

kelas StatelessSampleDistortedBoundingBox.Options Atribut opsional untuk StatelessSampleDistortedBoundingBox

Metode Publik

Statis StatelessSampleDistortedBoundingBox.Options
areaRange (Daftar<Float> areaRange)
Statis StatelessSampleDistortedBoundingBox.Options
aspekRatioRange (Daftar<Float> aspekRatioRange)
Keluaran <Float>
kotak -kotak ()
3-D dengan bentuk `[1, 1, 4]` berisi kotak pembatas yang terdistorsi.
Keluaran <T>
mulai ()
1-D, berisi `[offset_height, offset_width, 0]`.
static <T memperluas Angka, U memperluas Angka> StatelessSampleDistortedBoundingBox <T>
buat ( Lingkup lingkup, Operand <T> imageSize, Operand <Float> boundingBoxes, Operand <Float> minObjectCovered, Operand <U> seed, Opsi... opsi)
Metode pabrik untuk membuat kelas yang membungkus operasi StatelessSampleDistortedBoundingBox baru.
Statis StatelessSampleDistortedBoundingBox.Options
maxAttempts (Long maxAttempts)
Keluaran <T>
ukuran ()
1-D, berisi `[tinggi_target, lebar_target, -1]`.
Statis StatelessSampleDistortedBoundingBox.Options
useImageIfNoBoundingBoxes (Boolean useImageIfNoBoundingBoxes)

Metode yang Diwarisi

Metode Publik

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

Parameter
areaRentang Area gambar yang dipotong harus berisi sebagian kecil dari gambar yang disediakan dalam rentang ini.

StatelessSampleDistortedBoundingBox.Options statis publik aspekRatioRange (Daftar<Float> aspekRatioRange)

Parameter
aspekRasioRentang Area gambar yang dipotong harus memiliki rasio aspek = lebar / tinggi dalam rentang ini.

Output publik <Float> bbox ()

3-D dengan bentuk `[1, 1, 4]` berisi kotak pembatas yang terdistorsi. Berikan sebagai masukan ke tf.image.draw_bounding_boxes .

Output publik <T> mulai ()

1-D, berisi `[offset_height, offset_width, 0]`. Berikan sebagai masukan ke tf.slice .

public static StatelessSampleDistortedBoundingBox <T> buat ( Scope scope, Operand <T> imageSize, Operand <Float> boundingBoxes, Operand <Float> minObjectCovered, Operand <U> seed, Options... options)

Metode pabrik untuk membuat kelas yang membungkus operasi StatelessSampleDistortedBoundingBox baru.

Parameter
cakupan lingkup saat ini
ukuran gambar 1-D, berisi `[tinggi, lebar, saluran]`.
kotak pembatas 3-D dengan bentuk `[batch, N, 4]` yang menggambarkan N kotak pembatas yang terkait dengan gambar.
minObjectCovered Area gambar yang dipotong harus berisi setidaknya sebagian kecil dari kotak pembatas yang disediakan. Nilai parameter ini harus non-negatif. Dalam kasus 0, area yang dipotong tidak perlu tumpang tindih dengan kotak pembatas yang disediakan.
benih 1-D dengan bentuk `[2]`. Benih ke generator nomor acak. Harus memiliki dtype `int32` atau `int64`. (Saat menggunakan XLA, hanya `int32` yang diperbolehkan.)
pilihan membawa nilai atribut opsional
Kembali
  • contoh baru StatelessSampleDistortedBoundingBox

publik statis StatelessSampleDistortedBoundingBox.Options maxAttempts (Long maxAttempts)

Parameter
maxAttempts Jumlah upaya untuk menghasilkan wilayah yang dipangkas dari gambar batasan yang ditentukan. Setelah `max_attempts` gagal, kembalikan seluruh gambar.

Output publik <T> ukuran ()

1-D, berisi `[tinggi_target, lebar_target, -1]`. Berikan sebagai masukan ke tf.slice .

StatelessSampleDistortedBoundingBox.Options public static useImageIfNoBoundingBoxes (Boolean useImageIfNoBoundingBoxes)

Parameter
gunakanImageIfNoBoundingBoxes Mengontrol perilaku jika tidak ada kotak pembatas yang disediakan. Jika benar, asumsikan kotak pembatas implisit yang mencakup seluruh input. Jika salah, naikkan kesalahan.