Show HN: A little side project, a watercolor art generator
224 points| nfriend | 3 years ago |brushify.art
I've had the best results with pictures of houses, although certain photos of people or nature can look neat, too. (For example: https://brushify.art/s/ruYmQWk, original photo from https://en.wikipedia.org/wiki/Pillars_of_Creation.) The effect obscures the edges of the photo, so images with plenty of margin around the subject work best.
Something I'd like to play around with is swapping the GIMP script for an AI-based process (maybe using something like Stable Diffusion?), with the goal of generating images that look more handmade (something like these: https://www.etsy.com/ca/search?q=watercolor+house). I have exactly zero AI experience though, so there would be a bit of a learning curve.
Would love any thoughts or critiques!
----
edit: remove unrelated details
[+] [-] rikroots|3 years ago|reply
[1] - Tyler Hobbs (2017) - a guide to simulating watercolor paint with generative art - https://tylerxhobbs.com/essays/2017/a-generative-approach-to...
[2] - Curtis|Anderson|Seims|Fleischery|Salesin (undated) - Computer-Generated Watercolor - https://grail.cs.washington.edu/projects/watercolor/paper_sm...
[+] [-] ikkjo|3 years ago|reply
It is loosely based on the process described here: https://yunfei.work/watercolor/watercolor_pp.pdf and I though this can't be too hard...
I found it challenging to combine high resolution results with reasonable processing times.
[+] [-] kuu|3 years ago|reply
Otherwise the process is the following:
I enter the page -> Upload image -> See 4h of queue for getting my result -> I close the tab, leaving there a pending task.
[+] [-] synapticpaint|3 years ago|reply
Here's how I would approach it: train a dreambooth model on watercolor style images, then run image-to-image using that model.
For examples of what dreambooth models can do see: https://synapticpaint.com/dreambooth/info/ (sample images here generated using a "modern disney" style model).
If you need help getting this set up feel free to email me! This stuff is probably not harder than getting gimp to run in a container.
[+] [-] wongarsu|3 years ago|reply
[+] [-] nfriend|3 years ago|reply
[+] [-] rlv-dan|3 years ago|reply
[+] [-] nfriend|3 years ago|reply
[+] [-] selcuka|3 years ago|reply
[+] [-] wishinghand|3 years ago|reply
[+] [-] nfriend|3 years ago|reply
[+] [-] jansan|3 years ago|reply
Congrats for the unexpected success :)
[+] [-] tfsh|3 years ago|reply
Any chance of porting this to the web using WASM? I've used ImageMagick in the browser before, I've never used Gimp, but if there's enough overlap you could use the former. That's of course assuming two things:
1) you have the time
2) you're happy to port the closed source, source code to the client
Both of which are perfectly fine to answer with a "no" :)
Also, I think it would be prudent to terminate the request if the client instance is destroyed. Right now I assume there's a bunch of requests being processed for users who have closed the tab.
[+] [-] wingworks|3 years ago|reply
[+] [-] chrischen|3 years ago|reply
You can implement with something like this and simply train it against a watercolor image: https://github.com/yusuketomoto/chainer-fast-neuralstyle
Haven’t tried it with stable diffusion but you’d probably have more control and better results with a CNN like the one I linked.
[+] [-] andai|3 years ago|reply
[+] [-] jasonjmcghee|3 years ago|reply
What you want to gain is experience with prompt engineering for these tools.
Here's a good resource https://openart.ai/promptbook
[+] [-] bambax|3 years ago|reply
Dall-e offers an API with some limitations (max 4MB square PNG, content filtering): https://beta.openai.com/docs/guides/images/usage
Photopea.com has a watercolor filter, in JS, all client side. It's not very good ATM so there's certainly room for improvement. Doing it all client side would solve the queue problem.
[+] [-] gregoriol|3 years ago|reply
Have fun!
[+] [-] ikkjo|3 years ago|reply
[+] [-] justchad|3 years ago|reply
Like you said I bet using Stable Diffusion would speed this up dramatically but who knows if you'll get the same effect on your images.
[+] [-] _448|3 years ago|reply
[+] [-] yuvalkarmi|3 years ago|reply
[+] [-] seshagiric|3 years ago|reply
[+] [-] asmosoinio|3 years ago|reply
Seeing example output would be interesting, even if service is hugged to death.
[+] [-] hollowdene|3 years ago|reply
PS: Congrats on the little one. :D
[+] [-] iruoy|3 years ago|reply
[+] [-] _dan|3 years ago|reply