aliran tensor:: operasi:: Contoh Kotak Batas Terdistorsi
#include <image_ops.h>
Hasilkan satu kotak pembatas yang terdistorsi secara acak untuk sebuah gambar.
Ringkasan
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 menghasilkan lokalisasi objek yang terdistorsi secara acak, yaitu kotak pembatas, dengan image_size
, bounding_boxes
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.
Misalnya,
# 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)
Perhatikan bahwa jika tidak ada informasi kotak pembatas yang tersedia, pengaturan use_image_if_no_bounding_boxes = true
akan mengasumsikan 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.
Argumen:
- ruang lingkup: Objek Lingkup
- image_size: 1-D, berisi
[height, width, channels]
. - pembatas_kotak: 3-D dengan bentuk
[batch, N, 4]
yang mendeskripsikan N kotak pembatas yang terkait dengan gambar.
Atribut opsional (lihat Attrs
):
- seed: Jika salah satu
seed
atauseed2
disetel ke bukan nol, pembuat nomor acak akan diunggulkan olehseed
yang diberikan. Jika tidak, ia akan diunggulkan dengan benih acak. - seed2: Seed kedua untuk menghindari tabrakan seed.
- min_object_covered: 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.
- aspek_rasio_rentang: Area gambar yang dipotong harus memiliki rasio aspek = lebar/tinggi dalam rentang ini.
- area_range: Area gambar yang dipotong harus berisi sebagian kecil dari gambar yang disediakan dalam rentang ini.
- max_attempts: Jumlah upaya menghasilkan wilayah gambar yang dipotong dengan batasan yang ditentukan. Setelah
max_attempts
gagal, kembalikan seluruh gambar. - use_image_if_no_bounding_boxes: Mengontrol perilaku jika tidak ada kotak pembatas yang disediakan. Jika benar, asumsikan kotak pembatas implisit mencakup seluruh masukan. Jika salah, buatlah kesalahan.
Pengembalian:
-
Output
dimulai: 1-D, berisi[offset_height, offset_width, 0]
. Berikan sebagai masukan ketf.slice
. - Ukuran
Output
: 1-D, berisi[target_height, target_width, -1]
. Berikan sebagai masukan ketf.slice
. - Bbox
Output
: 3-D dengan bentuk[1, 1, 4]
berisi kotak pembatas yang terdistorsi. Berikan sebagai masukan ketf.image.draw_bounding_boxes
.
Konstruktor dan Destruktor | |
---|---|
SampleDistortedBoundingBox (const :: tensorflow::Scope & scope, :: tensorflow::Input image_size, :: tensorflow::Input bounding_boxes) | |
SampleDistortedBoundingBox (const :: tensorflow::Scope & scope, :: tensorflow::Input image_size, :: tensorflow::Input bounding_boxes, const SampleDistortedBoundingBox::Attrs & attrs) |
Atribut publik | |
---|---|
bboxes | |
begin | |
operation | |
size |
Fungsi statis publik | |
---|---|
AreaRange (const gtl::ArraySlice< float > & x) | |
AspectRatioRange (const gtl::ArraySlice< float > & x) | |
MaxAttempts (int64 x) | |
MinObjectCovered (float x) | |
Seed (int64 x) | |
Seed2 (int64 x) | |
UseImageIfNoBoundingBoxes (bool x) |
Struktur | |
---|---|
tensorflow:: ops:: SampleDistortedBoundingBox:: Attrs | Penyetel atribut opsional untuk SampleDistortedBoundingBox . |
Atribut publik
bbox
::tensorflow::Output bboxes
mulai
::tensorflow::Output begin
operasi
Operation operation
ukuran
::tensorflow::Output size
Fungsi publik
Contoh Kotak Batas Terdistorsi
SampleDistortedBoundingBox( const ::tensorflow::Scope & scope, ::tensorflow::Input image_size, ::tensorflow::Input bounding_boxes )
Contoh Kotak Batas Terdistorsi
SampleDistortedBoundingBox( const ::tensorflow::Scope & scope, ::tensorflow::Input image_size, ::tensorflow::Input bounding_boxes, const SampleDistortedBoundingBox::Attrs & attrs )
Fungsi statis publik
Rentang Area
Attrs AreaRange( const gtl::ArraySlice< float > & x )
Rentang Rasio Aspek
Attrs AspectRatioRange( const gtl::ArraySlice< float > & x )
Upaya Maks
Attrs MaxAttempts( int64 x )
MinObject Tercakup
Attrs MinObjectCovered( float x )
Benih
Attrs Seed( int64 x )
Benih2
Attrs Seed2( int64 x )
GunakanImageIfNoBoundingBoxes
Attrs UseImageIfNoBoundingBoxes( bool x )