Boxxfish / paint_rl

ai art but good

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

PaintGym

aka my attempts to use AI to quickly add lineart, base colors, and rendering to sketches.

First pass:

  • Add ability to control size of the image through config.
  • Get human rendering mode working.
  • Add ability to stroke a line on screen with a start and end point.
  • Create agent with random policy for testing.
  • Get benchmarking set up with realistic training times.
  • Add real time plotting functionality.

Second pass (Get agent working on environment):

  • Get model exporting working.
  • Set up model in copy stroke environment for single env.
  • Upgrade to batch mode.
  • Check if cuda makes a difference in training speed.
  • Add CLI parsing for hyperparameters and fix environments not reloading correctly.
  • Add monitor.
  • Hyperparameter search integration.
  • Create debug environments (constant obs, constant reward, etc).
  • Switch to PPO.
  • Add benchmark for rollout buffer.
  • Add proper brush (thickness) support.
  • Anneal standard deviation of brush stroke positions over time.

Third pass (Get cloud training working):

  • Integrate cloud logging service for monitor.
  • Integrate cloud logging service for Optuna.
  • Add categorical distribution.
  • Add normal distribution.
  • Check PPO implementation with cartpole.
  • Create docker container for repo.
  • Set up linting in CI (clippy, rustfmt, black, mypy).
  • Set up docker container building and uploading on main.
  • Run docker container using EC2 spot instance.
  • Get logging working in cloud.
  • Create CLI for deploying workloads in cloud.
  • Add price estimation for workloads.
  • Get checkpointing and restoring working using S3 (or equivalent), adding the option in the CLI to auto continue if terminated early.
  • Add ability to request different instances (like compute or memory optimized).

Third pass (Get copy stroke working)

  • As a test, make sure the agent can learn to stroke a simple square.
  • Iterate on random stroke 64x64 sized image with brush thickness of 4 until model gives satisfactory results.
  • Add colored brush support.
  • Iterate on environment until model gives satisfactory results.
  • Add bezier curve support.
  • Iterate on environment until model gives satisfactory results.
  • Add brush radius support.
  • Iterate on environment until model gives satisfactory results.
  • Add opacity support.
  • Iterate on environment until model gives satisfactory results.

About

ai art but good


Languages

Language:Rust 86.7%Language:Python 12.6%Language:Dockerfile 0.7%