StatelessSampleDistortedBoundingBox

StatelessSampleDistortedBoundingBox kelas akhir publik

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

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

Keluaran dari Operasi ini adalah kotak pembatas tunggal yang dapat digunakan untuk memotong gambar asli. Outputnya 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 dalam `[0.0, 1.0]` relatif terhadap lebar dan tinggi gambar di bawahnya.

Output dari Operasi ini dijamin sama dengan `seed` yang sama dan tidak bergantung pada berapa kali fungsi tersebut dipanggil, dan tidak bergantung 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 ) >>> # Hasilkan satu kotak pembatas yang 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) >>> # Gambarlah kotak pembatas pada 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, pengaturan `use_image_if_no_bounding_boxes = true` akan menganggap ada satu kotak pembatas implisit yang menutupi keseluruhan 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

StatelessSampleDistortedBoundingBox.Options statis
areaRange (Daftar<Float> areaRange)
StatelessSampleDistortedBoundingBox.Options statis
aspekRatioRange (Daftar<Float> aspekRatioRange)
Keluaran <Mengambang>
kotak b ()
3-D dengan bentuk `[1, 1, 4]` berisi kotak pembatas yang terdistorsi.
Keluaran <T>
mulai ()
1-D, berisi `[offset_height, offset_width, 0]`.
statis <T memperluas Nomor, U memperluas Nomor> 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.
StatelessSampleDistortedBoundingBox.Options statis
maxAttempts (MaxAttempts panjang)
Keluaran <T>
ukuran ()
1-D, berisi `[tinggi_target, lebar_target, -1]`.
StatelessSampleDistortedBoundingBox.Options statis
useImageIfNoBoundingBoxes (Boolean useImageIfNoBoundingBoxes)

Metode Warisan

Metode Publik

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

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

public static StatelessSampleDistortedBoundingBox.Options aspekRatioRange (Daftar<Float> aspekRatioRange)

Parameter
aspekRatioRange 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 .

Keluaran publik <T> mulai ()

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

public static StatelessSampleDistortedBoundingBox <T> buat ( Lingkup cakupan , Operand <T> imageSize, Operand <Float>boundingBoxes, Operand <Float> minObjectCovered, Operand <U> seed, Opsi... opsi)

Metode pabrik untuk membuat kelas yang membungkus operasi StatelessSampleDistortedBoundingBox baru.

Parameter
cakupan ruang lingkup saat ini
ukuran gambar 1-D, berisi `[tinggi, lebar, saluran]`.
pembatasKotak 3-D dengan bentuk `[batch, N, 4]` yang mendeskripsikan 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 tidak boleh negatif. Dalam kasus 0, area yang dipotong tidak perlu tumpang tindih dengan kotak pembatas mana pun 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 dari StatelessSampleDistortedBoundingBox

public static StatelessSampleDistortedBoundingBox.Options maxAttempts (Long maxAttempts)

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

publik Output <T> ukuran ()

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

StatelessSampleDistortedBoundingBox.Options statis publik useImageIfNoBoundingBoxes (Boolean useImageIfNoBoundingBoxes)

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