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.