# Exercício sobre Modelos Generativos

Utilizaremos os datasets de imagens de digitais contidos no [link](http://bias.csr.unibo.it/fvc2002/databases.asp). Esse é o mesmo dataset utilizado no exercício de autoencoders, descrito no [post](https://www.kdnuggets.com/2020/03/recreating-fingerprints-using-convolutional-autoencoders.html) do KDNuggets. O dataset é composto de quatro grupos cujas digitais foram capturadas utilizando sensores específicos.
O objetivo nesse exercício é implementar modelos generativos utilizando Autoencoders Variacionais e Redes Generativas e comparar o desempenho dos dois.
## :memo: Onde Começar?
### Autoencoders variacionais
Caso ainda não tenha seguido o tutorial do [kdnuggets](https://www.kdnuggets.com/2020/03/recreating-fingerprints-using-convolutional-autoencoders.html), esse pode ser um bom ponto de partida para se familiarizar com o dataset. Comece com implementações simples de autoencoders variacionais com arquiteturas baseadas em Multi-layer Perceptrons, como descrito [nesse tutorial](https://tiao.io/post/tutorial-on-variational-autoencoders-with-a-concise-keras-implementation/), passando a arquiteturas mais complexas, como redes convolucionais, como [esse exemplo](https://keras.io/examples/generative/vae/).
Faça plots que "passeiem" pelo espaço latente para verificar a capacidade de interpolação desses modelos.
### Redes Generativas
Uma boa inspiração pode ser encontrada nos papers [[1]](https://eprint.iacr.org/2020/217.pdf) e [[2]](https://arxiv.org/pdf/1812.10482.pdf). Vocês podem começar com implementações simples de GANs, como a [desse](https://towardsdatascience.com/gan-by-example-using-keras-on-tensorflow-backend-1a6d515a60d0) ou [desse](https://towardsdatascience.com/writing-your-first-generative-adversarial-network-with-keras-2d16fd8d4889?gi=f8519e7e805d) link.
### Comparando resultados
Durante nossas aulas, foram difscutidas métricas para a avaliação de modelos generativos. Vocês podem encontrar inspiração nas referências [[3]](https://openreview.net/pdf?id=Sy1f0e-R-) e [[4]](https://machinelearningmastery.com/how-to-evaluate-generative-adversarial-networks/).
## :white_check_mark: Objetivos
Vocês se reunir em grupos e organizar uma apresentação, onde todos os componentes devem apresentar. O código implementado deve ser atualizado no gitlab do Hub.