Skip to content

Trabalho semestral de Algoritmos Genéticos: reconstruindo imagens usando Algoritmos Genéticos. Trabalho feito pelos alunas Alice Barbarino Santos e Maria Eduarda de Oliveira Crist e o aluno Bruno Ferreira Brischi. Disciplina da Ilum - Escola de Ciência, ministrada por Daniel Cassar

License

Notifications You must be signed in to change notification settings

BBrischi/HPC-reconstroi-imagens-com-AG

Repository files navigation

HPC reconstrói imagens com Algoritmos Genéticos

Grupo: HPC: High Phofocas & Condiments
Integrantes: Alice Barbarino Santos, Bruno Ferreira Brischi e Maria Eduarda de Oliveira Crist
Instituição: Ilum - Escola de ciência

Apresentação

Este GitHub compõe um dos dois trabalhos finais de Redes Neurais e Algoritmos Genéticos, disciplina ministrada por Daniel Roberto Cassar na Ilum - Escola de Ciências. Dessa forma, esse projeto busca reconstruir imagens usando uma implementação de Algoritmos Genéticos com python.

Estrutura do Repositório

  • GA reconstruidor.ipynb: Jupyter Notebook que apresenta o algoritmo genético e sua implementação.
  • resultados/: diretório que possui todas as imagens que foram obtidas pelo callback durante a execução do algoritmo.
  • image_test.py: classe da referência [1] para criar e manipular imagens.
  • elitism_callback.py: classe da referência [1] para modificar a função eaSimple da deap, implementando elitismo e callback.
  • callback.py: classe adaptada da elitism_callback.py, removendo o sistema de elitismo e deixando apenas o callback_.
  • Mona_Lisa_head.png: imagem que será usada como teste do algoritmo genético.
  • HPC_logo: Logo da equipe para exibi-lá no github e no notebook.
  • images: diretório que contém os resultados do algoritmo a cada 100 gerações.
  • comparativo_livro.png: captura de tela da referência [1] para ser exibida no notebook.

Motivação

Algoritmos genéticos são ferramentas poderosas inspirados na biologia e que auxiliam na resolução de problemas de otimização, sendo muito populares pela sua capacidade de evoluirem e conseguirem soluções melhores com o decorrer do tempo, sendo uma alternativa aos métodos de otimização por busca em grade e busca aleatória [3][4]. Assim, a reconstrução de imagens é um método importante em processamento de imagem, já que pode ser aplicada em recuperar imagens corrompidas e em redução de ruído [2]. Então, propomos com esse projeto fazer uma implementação do algoritmo proposto pelos autores da referência [1], mas tentando realizar mudanças para melhorar a convergência da solução e aperfeiçoá-lo.

Requisitos

É necessário o python instalado, além do Jupyter habilitado com as bibliotecas: PIL, skimage, deap, IPython, cv2 (OpenCV), matplotlib, numpy, os, seaborn e random, que são usadas em momentos variados do código.

Bibliotecas

As principais bibliotecas utilizadas nesse trabalho são:

  • PIL para criar imagens e "desenhar" polígonos nela.
  • skimage para computar o SSIM (uma das funções de fitness) e processar imagens.
  • cv2 para usar color maps RGB na imagem criada.
  • matplotlib para plotar as imagens e gráficos de resultado.
  • deap para construir e implementar todo o algoritmo genético.
  • IPython para visualização de imagem em formato PIL.
  • random para gerar valores aleatórios.
  • os para criar diretórios e salvar as imagens do resultado.
  • seaborn para definir um aspecto pontual do plot do resultado.

Como utilizar

Nesse repositório, o usuário tem acesso à um notebook executável, que pode ser baixado e executado pelo usuário, com o intuito de que ele entenda passo a passo da construção do algoritmo genético, além de acompanhar sua evolução. Por já apresentar a rede neural treinada, o usuário pode usufruir desse notebook para fazer previsões por si só, desfrutando do modelo apresentado.

Obs.: o notebook foi executado em um Lenovo ThinkPad E14 i5, demorando algumas horas para sua execução completa; devido ao fato de ser um código pesado, recomendamos seu uso em uma máquina com um bom processador.

Referências

[1] Wirsansky, E. (2020). Hands-on genetic algorithms with Python: applying genetic algorithms to solve real-world deep learning and artificial intelligence problems. Packt Publishing Ltd.

[2] Mirjalili, S., Song Dong, J., Sadiq, A. S., & Faris, H. (2020). Genetic algorithm: Theory, literature review, and application in image reconstruction. Nature-inspired optimizers: Theories, literature reviews and applications, 69-85.

[3] Notebok 1.3 e 1.5 da disciplina de Algoritmos Genéticos, de autoria do professor.

[4] Notebook 2.3 da disciplina de Algoritmos Genéticos, de autoria do professor.

About

Trabalho semestral de Algoritmos Genéticos: reconstruindo imagens usando Algoritmos Genéticos. Trabalho feito pelos alunas Alice Barbarino Santos e Maria Eduarda de Oliveira Crist e o aluno Bruno Ferreira Brischi. Disciplina da Ilum - Escola de Ciência, ministrada por Daniel Cassar

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published