sergiomrebelo / evo-poster

The Evolutionary Poster Composer (evo-poster) is a generative poster design system. From a given content (including text and imagery), evo-poster can generate and evolve poster designs considerating the aesthetic and semantics features of the content.
MIT License
3 stars 0 forks source link
computational-creativity computational-design evolutionary-algorithms evolutionary-art generative-design javascipt nodejs

Evolutionary Poster Composer

Evolutionary Poster Composer (Evo-poster) is a computational design approach that explores Evolutionary Computation for the generation of poster designs based on user-provided input (both imagery and text).

Table of Contents

  1. About
  2. Getting Started
  3. Contributing
  4. Papers and Documentation
  5. Acknowledgments
  6. License

About

Evo-poster approach takes inspiration from the highly algorithmic processes of letterpress design in nineteenth-century print houses. During this era, typographers, in collaboration with clients, selected and composed typography, ornaments, and wood-engraved illustrations to fill a matrix. Design choices were very pragmatic, with condensed typefaces for lengthy sentences and extended typefaces for shorter ones. Important content was highlighted using bigger and bolder typefaces.

In this version of evo-poster (3.0.1), our approach considers aesthetic and semantic objectives alongside legibility constraints. The fitness of an individual is determined using a hardwired fitness assignment scheme strategy. We explore two strategies for managing constrained evolution, including the utilisation of stochastic ranking selection. Users can define the search space of the Genetic Algorithm, controlling the visual variation in evolved outputs. Furthermore, users can customise the evolutionary and evaluation processes through a dedicated interface by adjusting the system parameters. The evaluation metrics consist of the evaluation of designs in terms of their legibility, aesthetic features, and coverage of content semantics. Legibility metrics determine whether all text content is adequately displayed and readable within the design, including the evaluation of text legibility and grid appropriateness. Aesthetic metrics assess the visual quality of the designs, examining aspects like alignment, balance, justification, regularity, typeface pairing, and negative space fraction. Semantic metrics focus on assessing how the composed text effectively conveys the semantic meaning of the content in terms of layout, visuals, and typography.

In this work, we introduce an emotion recognition Nature Language Processing method, combining lexicon-based and Machine Learning techniques. This method facilitates the identification of emotionally significant parts of input texts, dividing them into sentences. Moreover, users can visually characterise each emotion according to their preferences, incorporating this information into the design process.

Both metrics and emotion recognition methods are developed as stand-alone modules (see src/@evoposter).

Project Banner

The development of this work follows an agile science methodology, structured around potential user cases and scenarios. In summary, these users' stories and scenarios unveil that this system can present two main challenges: visual exploration and discovery; and automation. We observed that since the system can identify the most emotionally significant parts of a given text, it can be also used as a casual visualization tool.

Getting Started

Follow these steps to get the project up and running on your local machine.

Prerequisites

Make sure you have installed Node.js (version 21.6.0 or higher) and npm on your machine.

This system uses the IBM Watson Language Translator and Merriam-Webster dictionary APIs. To use these APIs, you must create an account and get the API keys.

Installation

Clone the repository and install dependencies

   git clone https://github.com/sergiomrebelo/evo-poster.git
   cd evo-poster
   npm install

Usage

  1. To run the application, use the following command:
    npm start
  2. Open your browser and go to http://localhost:8000/
  3. Upload the input image and text
  4. Click on the "Next" button
  5. Setup the system parameters, and, in the end, it will start the evolutionary process

Additional Commands

  1. Run the server in development mode:
    npm run dev
  2. Build the Project:
    
    npm run build
  3. To disconnect the application:
    npm run stop
  4. Run the tests:
    npm run test
    npm test:cypress

Customise Configuration

Users must define some settings in the .env file before running the application.

Example Configuration File

NODE_ENV=development
PORT=8000

MW_API_KEY=YOUR_MW_API_KEY

LANGUAGE_TRANSLATOR_IAM_APIKEY=WATSON_API_KEY
LANGUAGE_TRANSLATOR_URL=WATSON_API_KEY_URL

The system parameters and available visual and typographic features can be customised through the evo-poster.config.js file.

Contributing

We welcome contributions to enhance and improve this project! Whether you want to report a bug, request a new feature, or contribute code, your involvement is highly appreciated.

Bug Reports and Feature Requests

If you come across any issues or have ideas for new features, please open an issue on GitHub. When creating an issue, be sure to include relevant details such as the version, operating system, and steps to reproduce the problem.

Code Contributions

We encourage you to contribute to the codebase. Here's how you can do it:

  1. Fork the repository to your GitHub account.
  2. Create a new branch for your changes.
  3. Make changes and commit them to your branch.
  4. Open a pull request (PR) against the dev branch of this repository.

Papers and Documentation

Evo-poster is a part of the experimental work conducted within the scope of the Computational Graphic Design and Typography Practices Ph.D. thesis in Informatics Engineering, Human-Centered Computing, of Sérgio M. Rebelo supervised by Professors Penousal Machado and João Bicker.

One may find more supplementary material at res including the data related to the preliminary testing of this approach. For more information about work and previous related works, please visit cdv.dei.uc.pt/projects/evoposter

Publications

Related Previous Work

Acknowledgments

This work is supported by the Foundation for Science and Technology (FCT), Portugal, within the scope of the project UID/CEC/00326/2019. Sérgio M. Rebelo was funded by FCT under the grant SFRH/BD/132728/2017 and COVID/BD/151969/2021. This work is based upon work from a scholarship supported by SPECIES, the Society for the Promotion of Evolutionary Computation in Europe and its Surroundings.

License

This project is licensed under the MIT License - see the LICENSE file for details.