StatelessSampleDistortedBoundingBox

classe final pública StatelessSampleDistortedBoundingBox

Gere uma caixa delimitadora distorcida aleatoriamente para uma imagem de forma determinística.

Anotações de caixa delimitadora geralmente são fornecidas além de rótulos de verdade em tarefas de reconhecimento de imagem ou localização de objetos. Uma técnica comum para treinar tal sistema é distorcer aleatoriamente uma imagem preservando seu conteúdo, ou seja, aumento de dados . Este Op, dada a mesma `seed`, produz determinísticamente uma localização distorcida aleatoriamente de um objeto, ou seja, caixa delimitadora, dado um `image_size`, `bounding_boxes` e uma série de restrições.

A saída deste Op é uma única caixa delimitadora que pode ser usada para recortar a imagem original. A saída é retornada como 3 tensores: `begin`, `size` e `bboxes`. Os primeiros 2 tensores podem ser alimentados diretamente em tf.slice para cortar a imagem. O último pode ser fornecido a tf.image.draw_bounding_boxes para visualizar como é a 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 flutuantes em `[0.0, 1.0]` em relação à largura e à altura da imagem subjacente.

A saída deste Op é garantidamente a mesma dada a mesma `seed` e é independente de quantas vezes a função é chamada, e independente das configurações globais de seed (por exemplo tf.random.set_seed ).

Exemplo de uso:

>>> imagem = 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 ) >>> # Gera uma única caixa delimitadora distorcida. >>> bbox_begin, bbox_size, bbox_draw = ( ... tf.image.stateless_sample_distorted_bounding_box( ... tf.shape(image), bounding_boxes=bbox, seed=seed)) >>> # Empregar a caixa delimitadora para distorcer a imagem . >>> tf.slice(imagem, bbox_begin, bbox_size) >>> # Desenha a caixa delimitadora em um resumo de imagem. >>> cores = 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, cores)

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

Classes aninhadas

classe StatelessSampleDistortedBoundingBox.Options Atributos opcionais para StatelessSampleDistortedBoundingBox

Métodos públicos

static StatelessSampleDistortedBoundingBox.Options
areaRange (List<Float> areaRange)
static StatelessSampleDistortedBoundingBox.Options
aspectRatioRange (List<Float> aspectRatioRange)
Saída <Float>
caixas ()
3-D com forma `[1, 1, 4]` contendo a caixa delimitadora distorcida.
Saída <T>
começar ()
1-D, contendo `[offset_height, offset_width, 0]`.
estático <T estende Número, U estende Número> StatelessSampleDistortedBoundingBox <T>
create ( Escopo do escopo, Operando <T> imageSize, Operando <Float> boundingBoxes, Operando <Float> minObjectCovered, Operando <U> seed, Options... options)
Método de fábrica para criar uma classe que envolve uma nova operação StatelessSampleDistortedBoundingBox.
static StatelessSampleDistortedBoundingBox.Options
maxAttempts (longo maxAttempts)
Saída <T>
tamanho ()
1-D, contendo `[target_height, target_width, -1]`.
static StatelessSampleDistortedBoundingBox.Options
useImageIfNoBoundingBoxes (booleano useImageIfNoBoundingBoxes)

Métodos Herdados

Métodos públicos

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

Parâmetros
areaIntervalo A área cortada da imagem deve conter uma fração da imagem fornecida dentro desse intervalo.

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

Parâmetros
aspectRatioRange A área recortada da imagem deve ter uma proporção = largura/altura dentro desse intervalo.

bboxes de saída pública <Float> ()

3-D com forma `[1, 1, 4]` contendo a caixa delimitadora distorcida. Forneça como entrada para tf.image.draw_bounding_boxes .

saída pública <T> começar ()

1-D, contendo `[offset_height, offset_width, 0]`. Forneça como entrada para tf.slice .

public static StatelessSampleDistortedBoundingBox <T> create ( Escopo do escopo, Operando <T> imageSize, Operando <Float> boundingBoxes, Operando <Float> minObjectCovered, Operando <U> semente, Opções... opções)

Método de fábrica para criar uma classe que envolve uma nova operação StatelessSampleDistortedBoundingBox.

Parâmetros
alcance escopo atual
tamanho da imagem 1-D, contendo `[altura, largura, canais]`.
caixas delimitadoras 3-D com forma `[lote, N, 4]` descrevendo as N caixas delimitadoras associadas à imagem.
minObjectCovered A área cortada da imagem deve conter pelo menos esta fração de qualquer caixa delimitadora fornecida. O valor deste parâmetro deve ser não negativo. No caso de 0, a área cortada não precisa sobrepor nenhuma das caixas delimitadoras fornecidas.
semente 1-D com forma `[2]`. A semente para o gerador de números aleatórios. Deve ter dtype `int32` ou `int64`. (Ao usar XLA, apenas `int32` é permitido.)
opções carrega valores de atributos opcionais
Devoluções
  • uma nova instância de StatelessSampleDistortedBoundingBox

public static StatelessSampleDistortedBoundingBox.Options maxAttempts (Long maxAttempts)

Parâmetros
maxtentativas Número de tentativas de gerar uma região recortada da imagem das restrições especificadas. Após falhas de `max_attempts`, retorne a imagem inteira.

Public Output <T> tamanho ()

1-D, contendo `[target_height, target_width, -1]`. Forneça como entrada para tf.slice .

public static StatelessSampleDistortedBoundingBox.Options useImageIfNoBoundingBoxes (booleano useImageIfNoBoundingBoxes)

Parâmetros
useImageIfNoBoundingBoxes Controla o comportamento se nenhuma caixa delimitadora for fornecida. Se true, suponha uma caixa delimitadora implícita cobrindo toda a entrada. Se false, gera um erro.