Skip to content
The beginnings of my ambition to use computer vision / (and later machine learning) to teach myself how to draw.
Jupyter Notebook Python Other
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.ipynb_checkpoints
.texpadtmp
.vscode
__pycache__
code_to_integrate_later
image_collection
image_comparison
image_display
image_processing
images
tests
.DS_Store
2018-02-14.log
2018-02-15.log
2018-02-16.log
2018-02-17.log
2018-02-18.log
2018-02-19.log
2018-02-20.log
2018-02-24.log
Description.pdf
Description.tex
README.md
README.pdf
README.tex
__init__.py
app.py
dg.log
dgdata.txt
dgpy.log
old_log.log
p.sh
pytest.ini
setup.py

README.md

DrawingGuide

UPDATE: When I made this, I think I was a little in-over-my-head. All the individual pieces got too complicated (server, db, app, ML algo, etc) because I basically David Hasselhoff'd the project management (i.e. that there was none). I was too excited about making it that I thought project management would slow me down, so I just went straight to coding. I paid no heed to scope or resources.

I'm rebooting this project (DrawingGuide 2.0) and forcing myself to be a little more rigid with splitting stories into tasks and expanding the scope little by little (i.e. with a Lean Startup / MVP mentality).


The beginnings of my ambition to use computer vision (and, later, machine learning) to teach myself how to draw.

A more detailed write up about this project can be found here:

http://lelon.io/blog/2018/01/24/the-guide-to-drawing-guide

Summary

From talking to the "learning to draw" community as well as the "tried to draw and gave up" community, I realized that, also having tried to draw myself, that the most prominent problem is proportions (i.e. the nose is too big, that doesn't even look like a face..).

After reading Scott H Young's blog post on his 30 day drawing project,

https://www.scotthyoung.com/blog/2016/08/26/ultralearn-portrait-drawing/

I learned that, in order to speed up the trial/error iteration process, he superimposed his attempts of drawing his targets over the targets themselves with GIMP to see exactly where he messed up. I realized that (a) this is a very useful tool that is (b) very cumbersome to do every time and is (c) very much automateable.

So, I decided to make an app to do it. There will be several components:

  • A React Native App on the phone for the interface
  • A python (probably Flask) REST API server hosted somewhere that does the image processing
  • A comparison algorithm* that finds the optimal fit for the superimposition (which can be found here: https://github.com/joshualmitchell/DrawingGuide/blob/master/Description.pdf)
  • A superimposition algorithm that takes the comparison algorithm's instructions and creates an image with the two superimposed
  • A database (probably either SQLite or MySQL) that collects a whole bunch of information on all of this
  • An AI Guide that uses the information from the database to create a prescribed "Learning Plan" that identifies where you're having trouble and generates images for you to draw specifically touching on what you need to improve on

So far, I have a prototype of the comparison algorithm. I need to build the rest.

* I wrote the comparison algorithm from scratch, but unfortunately I learned there was an extremely better way to do so: with PyTorch (since it's just minimizing a cost function with gradient descent).

You can’t perform that action at this time.