Como fazer treinamento de mixup de arquivos de imagem em Keras

Chengwei Zhang Blocked Unblock Seguir Seguindo 13 de janeiro

Anteriormente, introduzimos uma série de truques para melhorar o desempenho da classificação de imagens com redes convolucionais em Keras, desta vez, vamos dar uma olhada no último truque chamado mixup.

Qual é o treinamento de mixup?

O mixup de papel : ALÉM DA MINIMIZAÇÃO DE RISCO EMPÍRICA oferece uma alternativa à técnica tradicional de aumento de imagem, como zoom e rotação. Formando um novo exemplo através da interpolação linear ponderada de dois exemplos existentes.

(xi; yi) e (xj; yj) são dois exemplos extraídos aleatoriamente de nossos dados de treinamento, e ? ? [0; 1], na prática, ? é amostrado aleatoriamente a partir da distribuição beta, ou seja, Beta (?; ?).

? ? [0,1; 0.4] leva a um melhor desempenho, menor ? cria menos efeito de mistura, enquanto que, para grandes ?, o mixup leva a um mau ajuste.

Como você pode ver no gráfico a seguir, dado um pequeno ? = 0.2, a distribuição beta mostra mais valores próximos a 0 e 1, tornando o resultado do mixup mais próximo de qualquer um dos dois exemplos.

Distribuição beta (? = 0,2)

Quais são os benefícios do treinamento mixup?

Enquanto o aumento de dados tradicional, como os fornecidos na classe Keras ImageDataGenerator, conduz consistentemente a uma generalização aprimorada, o procedimento é dependente do conjunto de dados e, portanto, requer o uso de conhecimento especializado.

Além disso, o aumento de dados não modela a relação entre exemplos de classes diferentes.

Por outro lado,

  • Mixup é uma rotina de aumento de dados agnóstica de dados.
  • Isso faz com que os limites de decisão transitem linearmente de classe para classe, fornecendo uma estimativa mais suave da incerteza.
  • Reduz a memorização de etiquetas corrompidas,
  • Aumenta a robustez aos exemplos contraditórios e estabiliza o treinamento de redes geradoras de adversários.

Gerador de dados de imagem de mixagem em Keras

Tentando dar uma mixup spin? Vamos implementar um gerador de dados de imagem que lê imagens de arquivos e trabalha com Keras model.fit_generator() fora da caixa.

O núcleo do gerador de mixup consiste em um par de iteradores que amostram imagens aleatoriamente a partir do diretório de um lote de cada vez com o __next__ realizado no método __next__ .

Então você pode criar o gerador de treinamento e validação para ajustar o modelo, observe que não usamos mixup no gerador de validação.

Podemos visualizar um lote de imagens e rótulos misturados com o seguinte fragmento em um bloco de anotações Jupyter.

A figura a seguir ilustra como funciona o mixup.

Conclusão e mais pensamentos

Você pode estar pensando em misturar mais de 2 exemplos ao mesmo tempo pode levar a um melhor treinamento, pelo contrário, combinações de três ou mais exemplos com pesos amostrados da generalização multivariada da distribuição beta não fornecem ganhos adicionais, mas aumentam a computação custo de mixup. Além disso, a interpolação apenas entre entradas com rótulo igual não levou a ganhos de desempenho de mixup.

Confira o código-fonte completo no meu Github .

Tony607 / keras_mixup_generator
Como fazer treinamento de mixup de arquivos de imagem em Keras – Tony607 / keras_mixup_generator github.com

Compartilhar no Twitter Compartilhar no Facebook

Texto original em inglês.