tensorflow::ops::SampleDistortedBoundingBox

#include <image_ops.h>

สร้างกรอบสี่เหลี่ยมบิดเบี้ยวแบบสุ่มเพียงกรอบเดียวสำหรับรูปภาพ

สรุป

ในงานการจดจำภาพหรือการระบุตำแหน่งวัตถุ มักจะมีการให้คำอธิบายประกอบกรอบล้อมรอบวัตถุเพิ่มเติมจากป้ายกำกับความจริง เทคนิคทั่วไปในการฝึกระบบดังกล่าวคือการบิดเบือนภาพแบบสุ่มโดยยังคงรักษาเนื้อหาของภาพไว้ นั่นคือ การเพิ่มข้อมูล (data augmentation ) ฟังก์ชันนี้จะส่งออกตำแหน่งของวัตถุที่ถูกบิดเบือนแบบสุ่ม นั่นคือ กรอบล้อมรอบวัตถุ โดยกำหนด image_size กรอบล้อมรอบ bounding_boxes และข้อจำกัดต่างๆ

ผลลัพธ์ของการดำเนินการนี้คือกรอบสี่เหลี่ยมล้อมรอบวัตถุเพียงกรอบเดียว ซึ่งสามารถนำไปใช้ในการตัดภาพต้นฉบับได้ ผลลัพธ์จะถูกส่งกลับมาในรูปแบบเทนเซอร์ 3 ตัว ได้แก่ begin , size และ bboxes เทนเซอร์ 2 ตัวแรกสามารถนำไปใช้โดยตรงกับ tf.slice เพื่อตัดภาพได้ ส่วนเทนเซอร์ตัวสุดท้ายสามารถนำไปใช้กับ tf.image.draw_bounding_boxes เพื่อแสดงภาพว่ากรอบสี่เหลี่ยมล้อมรอบวัตถุมีลักษณะอย่างไร

กรอบล้อมรอบจะถูกส่งเข้ามาและส่งกลับในรูปแบบ [y_min, x_min, y_max, x_max] พิกัดของกรอบล้อมรอบเป็นค่าทศนิยมในช่วง [0.0, 1.0] สัมพันธ์กับความกว้างและความสูงของภาพต้นฉบับ

ตัวอย่างเช่น,

    # 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)

โปรดทราบว่า หากไม่มีข้อมูลกรอบขอบเขต (bounding box) การตั้งค่า use_image_if_no_bounding_boxes = true จะถือว่ามีกรอบขอบเขตโดยปริยายเพียงกรอบเดียวที่ครอบคลุมภาพทั้งหมด หาก use_image_if_no_bounding_boxes เป็น false และไม่มีการระบุกรอบขอบเขต จะเกิดข้อผิดพลาดขึ้น

ข้อโต้แย้ง:

  • ขอบเขต: วัตถุ ขอบเขต
  • image_size: 1 มิติ ประกอบด้วย [height, width, channels]
  • bounding_boxes: 3 มิติที่มีรูปร่าง [batch, N, 4] ซึ่งอธิบายกรอบสี่เหลี่ยมล้อมรอบ N กรอบที่เกี่ยวข้องกับรูปภาพ

คุณลักษณะเสริม (ดูที่ Attrs ):

  • seed: หาก seed หรือ seed2 ตัวใดตัวหนึ่งถูกตั้งค่าเป็นค่าที่ไม่ใช่ศูนย์ ตัวสร้างเลขสุ่มจะเริ่มต้นด้วย seed ที่กำหนด มิฉะนั้น จะเริ่มต้นด้วยค่า seed แบบสุ่ม
  • seed2: เมล็ดพันธุ์ที่สองเพื่อหลีกเลี่ยงการชนกันของเมล็ดพันธุ์
  • min_object_covered: พื้นที่ที่ถูกตัดของภาพต้องครอบคลุมอย่างน้อยเศษส่วนนี้ของกรอบสี่เหลี่ยมที่กำหนดให้ ค่าของพารามิเตอร์นี้ต้องไม่ติดลบ ในกรณีที่เป็น 0 พื้นที่ที่ถูกตัดไม่จำเป็นต้องทับซ้อนกับกรอบสี่เหลี่ยมที่กำหนดให้
  • aspect_ratio_range: อัตราส่วนของพื้นที่ที่ถูกครอปในภาพต้องอยู่ในช่วงที่เท่ากับความกว้างต่อความสูง
  • area_range: พื้นที่ที่ถูกตัดออกจากภาพจะต้องครอบคลุมส่วนหนึ่งของภาพที่ให้มาภายในช่วงที่กำหนด
  • max_attempts: จำนวนครั้งที่พยายามสร้างส่วนที่ถูกตัดแต่งจากภาพตามข้อจำกัดที่ระบุ หลังจากล้มเหลวครบ max_attempts ระบบจะส่งคืนภาพทั้งหมด
  • use_image_if_no_bounding_boxes: ควบคุมพฤติกรรมหากไม่มีการระบุกรอบขอบเขต หากเป็นจริง จะถือว่ามีกรอบขอบเขตโดยปริยายครอบคลุมภาพทั้งหมด หากเป็นเท็จ จะแสดงข้อผิดพลาด

การส่งคืนสินค้า:

  • Output เริ่มต้น: 1 มิติ ประกอบด้วย [offset_height, offset_width, 0] โปรดป้อนเป็นข้อมูลเข้าให้กับ tf.slice
  • ขนาด Output : 1 มิติ ประกอบด้วย [target_height, target_width, -1] ป้อนค่านี้เป็นอินพุตให้กับ tf.slice
  • ขอบเขต Output : 3 มิติที่มีรูปร่าง [1, 1, 4] ซึ่งบรรจุขอบเขตที่บิดเบี้ยว ป้อนเป็นอินพุตให้กับ tf.image.draw_bounding_boxes

ตัวสร้างและตัวทำลาย

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)

คุณลักษณะสาธารณะ

bboxes
begin
operation
size

ฟังก์ชันคงที่สาธารณะ

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)

โครงสร้าง

tensorflow::ops::SampleDistortedBoundingBox::Attrs

ตัวเลือกในการตั้งค่าแอตทริบิวต์สำหรับ SampleDistortedBoundingBox

คุณลักษณะสาธารณะ

กล่อง

::tensorflow::Output bboxes

เริ่ม

::tensorflow::Output begin

การดำเนินการ

Operation operation

ขนาด

::tensorflow::Output size

หน้าที่สาธารณะ

กล่องขอบเขตบิดเบี้ยวตัวอย่าง

 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
)

ฟังก์ชันคงที่สาธารณะ

พื้นที่ช่วง

Attrs AreaRange(
  const gtl::ArraySlice< float > & x
)

ช่วงอัตราส่วนภาพ

Attrs AspectRatioRange(
  const gtl::ArraySlice< float > & x
)

จำนวนครั้งสูงสุด

Attrs MaxAttempts(
  int64 x
)

วัตถุขนาดเล็กที่ถูกปกคลุม

Attrs MinObjectCovered(
  float x
)

เมล็ดพันธุ์

Attrs Seed(
  int64 x
)

เมล็ดพันธุ์2

Attrs Seed2(
  int64 x
)

ใช้รูปภาพหากไม่มีกรอบล้อมรอบ

Attrs UseImageIfNoBoundingBoxes(
  bool x
)