tensorflow::ops::SampleDistortedBoundingBox

#include <image_ops.h>

Gere uma única caixa delimitadora distorcida aleatoriamente para uma imagem.

Resumo

Em tarefas de reconhecimento de imagem ou localização de objetos, as anotações de caixas delimitadoras são frequentemente fornecidas em conjunto com os rótulos de verdade fundamental. Uma técnica comum para treinar um sistema desse tipo é distorcer aleatoriamente uma imagem, preservando seu conteúdo ( aumento de dados ). Esta operação gera uma localização distorcida aleatoriamente de um objeto, ou seja, uma caixa delimitadora, dados um image_size , bounding_boxes e uma série de restrições.

O resultado desta operação é uma única caixa delimitadora que pode ser usada para recortar a imagem original. O resultado é retornado como 3 tensores: ` begin , size e bboxes . Os dois primeiros tensores podem ser usados ​​diretamente em tf.slice para recortar a imagem. O último pode ser usado em tf.image.draw_bounding_boxes para visualizar a aparência da caixa delimitadora.

As caixas delimitadoras são fornecidas e retornadas como [y_min, x_min, y_max, x_max] . As coordenadas da caixa delimitadora são números de ponto flutuante no intervalo [0.0, 1.0] relativos à largura e altura da imagem subjacente.

Por exemplo,

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

Observe que, se nenhuma informação de caixa delimitadora estiver disponível, definir use_image_if_no_bounding_boxes = true assumirá que existe uma única caixa delimitadora implícita que cobre toda a imagem. Se use_image_if_no_bounding_boxes for falso e nenhuma caixa delimitadora for fornecida, um erro será gerado.

Argumentos:

  • escopo: Um objeto de escopo
  • image_size: 1-D, contendo [height, width, channels] .
  • bounding_boxes: 3-D com formato [batch, N, 4] descrevendo as N caixas delimitadoras associadas à imagem.

Atributos opcionais (ver Attrs ):

  • seed: Se seed ou seed2 forem definidos com valores diferentes de zero, o gerador de números aleatórios será inicializado com a seed fornecida. Caso contrário, será inicializado com uma semente aleatória.
  • seed2: Uma segunda semente para evitar colisão de sementes.
  • min_object_covered: A área recortada da imagem deve conter pelo menos essa fração de qualquer caixa delimitadora fornecida. O valor desse parâmetro deve ser não negativo. Caso seja 0, a área recortada não precisa sobrepor nenhuma das caixas delimitadoras fornecidas.
  • aspect_ratio_range: A área recortada da imagem deve ter uma proporção (largura / altura) dentro deste intervalo.
  • area_range: A área recortada da imagem deve conter uma fração da imagem fornecida dentro deste intervalo.
  • max_attempts: Número de tentativas para gerar uma região recortada da imagem de acordo com as restrições especificadas. Após max_attempts falhas, retorna a imagem inteira.
  • use_image_if_no_bounding_boxes: Controla o comportamento caso nenhuma caixa delimitadora seja fornecida. Se verdadeiro, assume uma caixa delimitadora implícita que cobre toda a entrada. Se falso, gera um erro.

Devoluções:

  • Início Output : 1-D, contendo [offset_height, offset_width, 0] . Forneça como entrada para tf.slice .
  • Tamanho Output : 1-D, contendo [target_height, target_width, -1] . Forneça como entrada para tf.slice .
  • Caixas delimitadoras Output : 3D com formato [1, 1, 4] contendo a caixa delimitadora distorcida. Forneça como entrada para tf.image.draw_bounding_boxes .

Construtores e Destrutores

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)

Atributos públicos

bboxes
begin
operation
size

Funções estáticas públicas

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)

Estruturas

tensorflow::ops::SampleDistortedBoundingBox::Attrs

Definidores de atributos opcionais para SampleDistortedBoundingBox .

Atributos públicos

caixas-pretas

::tensorflow::Output bboxes

começar

::tensorflow::Output begin

operação

Operation operation

tamanho

::tensorflow::Output size

Funções públicas

Caixa delimitadora distorcida de amostra

 SampleDistortedBoundingBox(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input image_size,
  ::tensorflow::Input bounding_boxes
)

Caixa delimitadora distorcida de amostra

 SampleDistortedBoundingBox(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input image_size,
  ::tensorflow::Input bounding_boxes,
  const SampleDistortedBoundingBox::Attrs & attrs
)

Funções estáticas públicas

ÁreaIntervalo

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

Intervalo de proporção de aspecto

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

TentativasMáximas

Attrs MaxAttempts(
  int64 x
)

MinObjectCoberto

Attrs MinObjectCovered(
  float x
)

Semente

Attrs Seed(
  int64 x
)

Semente2

Attrs Seed2(
  int64 x
)

UsarImagemSeNãoHouverCaixasDelimitadoras

Attrs UseImageIfNoBoundingBoxes(
  bool x
)