Giter Club home page Giter Club logo

circle-evolution's Introduction

Hi there ๐Ÿ‘‹

circle-evolution's People

Contributors

ahmedkhalf avatar guimorg avatar lucas-c avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

circle-evolution's Issues

example script from README not working...

The bug
When running your script from the command line like:
circle_evolution "Mona Lisa 128.jpg" --size 1 --max-generation 5000
The program works just fine.

but when run with the python script (from the README) I only get like the first generation (I think that is what I get; 5 grey circles)

Screenshot
alt text

System

  • OS: Pop!_os 20.04 (based on Ubuntu)
  • Version 0.1
  • Python version 3.8

Base Reporter

Is your feature request related to a problem? Please describe.

Currently, circle-evolution does not support logging - it actually uses the __buitlins__.print function to show some info to the user.

Describe the solution you'd like

We want to implement a Reporter class to be able to extend and build any Reporter we feel like using, like sending info to UIs, loggers, or even another process.

Describe alternatives you've considered

Additional context

Checkpoint Saver

Is your feature request related to a problem? Please describe.

Currently, saving checkpoints is performed by manually invoking numpy. savetxt function using the latest genotype winner (after evolution ended).

We want to be able to have a generic way of saving checkpoints (genotypes) and specifying if we need to save a checkpoint after X evolution iterations, or after the evolution finished - i.e., saving a checkpoint every 1000 generations.

This can help if we want to visualize how the image was rendered throughout evolution and if we want to later load the checkpoint to continue training.

Describe the solution you'd like

A suggestion is having an interface for Checkpoints, that way we can implement multiple ways of saving them - CSV, text, image, etc - and later restoring them! Kudos if you implemented more than one Checkpoint.

Describe alternatives you've considered

Additional context

Add examples folder

Is your feature request related to a problem? Please describe.
Lots of people (myself included) like reading examples as it is a fast way to get to know the codebase without having to read the docs.

Describe the solution you'd like
Add "Example" folder in root directory.
Add example scripts with lots of comments to help people get started!

Describe alternatives you've considered

Additional context

Features to be added for v0.2

Reporter class

Just like the fitness.py but for logging and letting the user know what is going on.

  • Add reporter.py and the base Reporter class.
  • Add many types of reports such as logging, printing, and GUI.
  • Update evolution.py to use the new Reporter class instead of the printing function.

Add support for many color channels

  • Improve support for 1 color channel (grayscale)
  • Add support for 2 color channels (grayscale and alpha)
  • Add support for 3 color channels (RGB)
  • Add support for 4 color channels (RGBA)

Add abstractions (functions) for loading and saving checkpoints

These should go in the Specie class

  • Add support for saving a checkpoint
  • Add support for loading a checkpoint
  • Add support for saving current phenotype to an image of any resolution

This is it for v0.2, in v0.3 we will look into improving performance.

Image Saver

Is your feature request related to a problem? Please describe.
Using helper classes is great for viewing phenotypes however It would be great to have a function in the species class that can save the phenotype to whatever resolution you specify, and show this image without having to import helper class. This will make the code users type more concise and not have to rely on many import statements

Describe the solution you'd like
Add save_img(resolution -> [optional] tuple) function.
Add show_img(resolution -> [optional] tuple) function.
If no resolution is specified then it is saved with the same resolution as the target image.

Describe alternatives you've considered
Create a new species class with a bigger resolution and then use render and helper.showimage(), however, this is not simple and relies on many import statements.

Support for non-square images

Is your feature request related to a problem? Please describe.
It seems to be that circle_evolution currently can only produce square images.
Could it be modified to also generates rectangular ones if the source image is non-square ?

Describe the solution you'd like
Handle rectangular images.

Describe alternatives you've considered
I admit I haven't. This is just a suggestion for an improvement :)

Additional context
None really, but thanks a lot for releasing this tool as an open-souce project !
And good job on the code, it is quite clear ๐Ÿ‘

Improve support for 1 color channel

Is your feature request related to a problem? Please describe.

Currently, circle-evolution supports 1 color channel evolutions - grayscale. There is some room for improvements making the Evolution and Species more generic - adding support for future improvements as more color channels.

Describe the solution you'd like

Some suggestions:

  • Generalize species class so it can have multiple genotypes (making room for more color channels)
  • Generalize evolution class so it can use species with one, two or more channels

Describe alternatives you've considered

Additional context

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.