Pergunta

Eu tenho certeza que muitas pessoas já vi demos do uso de algoritmos genéticos para gerar uma imagem que corresponda a uma imagem de amostra. Você começa com ruído, e gradualmente se trata de se parecer com a imagem de destino cada vez mais perto, até que você tenha uma forma mais ou menos exata duplicar.

Todos os exemplos que eu vi, no entanto, usar uma comparação bastante simples pixel por pixel, resultando em um bastante previsível 'fade in' da imagem final. O que eu estou procurando é algo mais romance:. Uma medida de fitness que se aproxima ao que vemos como 'semelhante' do que a abordagem ingênua

Eu não tenho um resultado específico em mente - Eu estou apenas procurando por algo mais 'interessante' do que o padrão. Sugestões?

Foi útil?

Solução

Eu suponho que você está falando de algo como Roger Alsing programa .

Eu implementei uma versão deste, então eu também estou interessado em funções alternativas de fitness, embora eu estou vindo para ele a partir da perspectiva de melhorar o desempenho ao invés de estética. Espero que haverá sempre algum elemento de "fade-in", devido à natureza do processo evolutivo (embora aprimorando os operadores evolutivos podem afetar como isso parece).

Uma comparação pixel a pixel pode ser caro para nada, mas pequenas imagens. Por exemplo, o 200x200 pixels uso da imagem I tem 40.000 pixels. Com três valores por pixel (R, G e B), que é 120.000 valores que têm de ser incorporados no cálculo aptidão para uma única imagem. Na minha aplicação eu escalar o baixo imagem antes de fazer a comparação de modo que há menos pixels. O trade-off é ligeiramente precisão da imagem evoluiu reduzida.

Ao investigar funções alternativas de fitness me deparei com algumas sugestões para usar o YUV espaço de cor vez de RGB uma vez que este é mais alinhado com a percepção humana.

Outra idéia que eu tive foi comparar apenas uma amostra aleatória de pixels. Não tenho certeza como isso iria funcionar sem tentar. Uma vez que os pixels em comparação seria diferente para cada avaliação que teria o efeito de manter a diversidade dentro da população.

Além disso, você está nos reinos da visão de computador. Espero que estas técnicas, que dependem de extração de características, seria mais caro por imagem, mas eles podem ser mais rápido em geral, se resultar em menos gerações sendo necessária para alcançar um resultado aceitável. Você pode querer investigar o href="http://pdiff.sourceforge.net/" rel="nofollow noreferrer"> PerceptualDiff biblioteca . Além disso, esta página mostra alguns Java código que pode ser usado para comparar imagens para similaridade com base em recursos, em vez de pixels.

Outras dicas

Uma medida de fitness que se aproxima ao que vemos como 'semelhante' do que a abordagem ingênua.

A implementação de tal medida um em software é definitivamente não trivial. Google 'modelo A visão humana', 'erro perceptual métrica' para alguns pontos de partida. Você pode evitar a questão -. Apenas apresentar as imagens candidatos a um ser humano para selecionar os melhores, embora possa ser um pouco chato para o ser humano

Eu não vi tal demo (talvez você poderia ligar um). Mas um par de proto-idéias de seu desription que podem desencadear um interessante:

  • Três algoritmos diferentes correndo em paralelo, talvez RGB ou HSV.
  • Mover, girar ou alterar a imagem alvo ligeiramente durante a corrida.
  • Fitness com base nas diferenças de contraste / valor entre pixels, mas sem saber a cor real.
  • ... então "prime" um único pixel com a cor correta?

Eu concordo com outros contribuintes que este não é trivial. Eu também gostaria de acrescentar que seria comercialmente muito valioso -. Por exemplo, as empresas que desejam proteger seu IP visuais seria extremamente feliz por ser capaz de arrasto na internet procurando imagens semelhantes aos seus logos

A minha abordagem ingênua para isso seria para treinar um reconhecedor padrão de uma série de imagens, cada gerado a partir da imagem alvo com um ou mais transformações aplicadas a ele: por exemplo, rodado alguns graus de qualquer forma; tradução de alguns pixels de qualquer forma; escalas diferentes da mesma imagem; vários borrões e efeitos (máscaras de convolução são bons aqui). Gostaria de acrescentar também algum ruído aleatoriedade à cada uma das imagens. Quanto mais amostras, melhor.

O treinamento pode ser feito off-line, por isso não deve causar um problema com o desempenho de tempo de execução.

Uma vez que você tem um reconhecedor padrão treinado, você pode apontar para as imagens população GA, e obter alguma pontuação escalar fora das reconhecedores.

Pessoalmente, eu gosto radiais Networks Base . Rápida para treinar. Eu começaria com demasiadas entradas, e talhar-los com análise de componentes principais (IIRC). As saídas poderia ser apenas uma medida medida similaridade e de dissimilaridade.

Uma última coisa; Independentemente da abordagem que você ir para - você poderia blog sobre isso, publicar o demo, o que quer; deixe-nos saber como você começou em.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top