Show HN: Creating custom coloring pages from photos. Great for parents/teachers (portraitart.app)
Making coloring pages out of your own personal photos is a fun and creative way to engage kids (and adults!) with art. Instead of generic coloring pages, you can turn special memories into custom works of art just waiting to be filled in with color.
82 comments
[ 2.2 ms ] story [ 166 ms ] threadWe do not use the data for other purpose.
This is a good suggestion. We will definitely think about how to design the UI to satisfy both.
[0]: https://portraitart.app/static/gallery/motorcycle1_original_... [1]: https://wallup.net/1960-bmw-r60-classic-bike-motorbike/ [2]: https://portraitart.app/static/gallery/motorcycle1_coloring_... [3]: https://portraitart.app/static/gallery/wedding1_coloring_pag...
[1]: https://www.pexels.com/photo/orange-and-black-bmw-motorcycle...
And it seems personalized coloring page is very popular, we actually just decided to make the coloring pages free of watermarks, as our minor contribution to education. Will change the code to make that happen soon (in a few days).
Nope
This turns black and mixed people into white-presenting caricatures of themselves. E.g. compare [1] and [2] where the hairstyles of the black people are turned into distinctly "white" hairstyles. My son's hair is closer in texture to that of the man on the right, and there's no way of getting it into the shape of the coloring-in page.
I get there's no ill intent here, but even for far less ethnically ambiguous inputs this "whitewashes" hairstyles and general appearance, and once I saw it I couldn't unsee it.
If my son was the age to want to use this, I'd be concerned about letting him use this, because I know he is sensitive about how he is different to his friends, etc. and this would wildly misrepresent and erase his actual appearance.
[3] and [4] is another stark example.
[5] and [6]....
[1] https://portraitart.app/static/gallery/group1_original_1024....
[2] https://portraitart.app/static/gallery/group1_coloring_page_...
[3] https://portraitart.app/static/gallery/portrait4_original_10...
[4] https://portraitart.app/static/gallery/portrait4_coloring_pa...
[5] https://portraitart.app/static/gallery/basketball2_original_...
[6] https://portraitart.app/static/gallery/basketball2_coloring_...
And one that is very likely underrepresented in the training set for no fault of theirs.
And this is why getting diversity "right" (so not the Gemini fiasco way) is hard - you can be extremely well meaning and just not have it register until someone for whom it's personal looks at it.
There are several modes (https://portraitart.app/portrait-art) - some of them are better at keeping people looking like they originally look, the "coloring page" mode seems to be the most "heavy-handed"...
It also doesn't like freckles: https://portraitart.app/static/gallery/portrait6_original_10... -> https://portraitart.app/static/gallery/portrait6_pencilsketc...
After some further browsing, the "caricature" mode seems to be the strangest - caricatures are supposed to take the characteristic traits of a person and exaggerate them in a humorous way, while these images sometimes lack even the slightest resemblance to the original. For example, this mixed race couple https://portraitart.app/static/gallery/couple1_original_1024... is not only turned into two brunettes https://portraitart.app/static/gallery/couple1_caricature_10..., but they also have a different pose, different hairstyle and wear completely different clothes...
Once a failure mode is known - like here - how do you fix it? The foundational problem is minorities are a minority of the training set. Good training data is expensive, so how can we practically boost representation without getting the Gemini fiasco?
One idea: start with the best coloring books. Presumably some human has mastered the art of “accurately representing black or mixed hair without it turning into a caricature”. Find them, and start buying their art. When they have drawings based on photos, use that training pair. When they have line art only, use a style transfer tool (like this one!) to convert to a photo. That gives you another pair for use in the other direction.
Another idea: make it easy to users to flag poor transfers. Add a “whitewashed” option to the standard mod report flow. Feed that into RLHF. Get better.
Another idea: focus dev cycles on this. Once you have a system to flag problems and address them, use all this fancy AI to identify input photos with black/mixed hair. Manually inspect how the model performs and push feedback into the next training cycle.
One tool for this is https://www.aquariumlearning.com/
The point is - once you identify a corner of feature space where things break, you can fix them.
There absolutely are good examples, yes, and I think you're right that the failure of capturing it is largely down to volume in the extant datasets, and particularly in datasets that provide a direct match for the type of line-art colouring in style, which is in itself fairly dated.
I agree with all of your recommendations. I think it's definitely a problem that will be solved. The main thing is for people to get used to looking for it.
I was not at all surprised when it turned Black people into White people.
This to me is one of the clearest examples I've seen of what people talk about when they talk about biases in training data. Clearly the training data of "coloring books" is heavily biased towards "stereotypical 1950s white people" and turns everyone into them.
(And you can add [1] and [2] to your list of comparison images.)
1. https://portraitart.app/static/gallery/father1_original_1024...
2. https://portraitart.app/static/gallery/father1_coloring_page...
It does not apply to a machine doing a poor job because it lacks context in its training data. Just like medieval art, which was inaccurate¹ due to ignorance, not because the person doing the drawing decided to add some flare.
¹ https://www.youtube.com/watch?v=jnB2Uj7gWSE
There's a site showing how Europeans drew elephants from popular descriptions once they disappeared from the continent: https://www.uliwestphal.de/elephas-anthropogenus/index.html
We use a model but not a diffusion model + controlnet which is what I'm assuming this website does.
Would love any feedback on the results + site [2] – before it's asked: we do not use any user uploaded images for model training, they're only stored to show you the color version of your originally uploaded image
[1] https://static.dreamandcolor.com/aa828ad1-5696-4d4e-95eb-bcd...
[2] https://dreamandcolor.com/
Also, just FYI, asking three different time across these comments for people to check out your site feels a bit spammy to me. I'd suggest you do your own 'Show HN' if you are trying to engage with the community here for feedback.
[1]: https://portraitart.app/static/gallery/group1_original_1024....
[2]: https://portraitart.app/static/gallery/group1_coloring_page_...
It’s simple and works relatively well but is prone to fail on high frequency objects like foliage, where the ML approach appears to a) succeed and b) stylise (seems to cause problems).
The free trial on the cloud function expired so the web app doesn’t work and the source JS code is awful but someone (maybe me) could pretty easily rewrite the cloud function into a flask server to allow local hosting.
1. What's the style name for dilbert-like comic strips? Comic? Line art?
2. How do I produce consistent characters throughout the "comic box" and episodes?
3. How do I hint the generation of the comic? E.g. I draw a stick figure of someone sitting, and it generates my character with that pose.
4. How do I "refine" some parts of the generated image. For example I like the generated character, but I want the face to look different direction.
2. You can use one of the many ip-adapter models but the best result would probably be a combination of ip-adapter + subject LoRa.
3. That would be a controlnet model probably sketch best results would be achieved (for poses) using open or dw pose models.
4. You would do that with inpainting or stable drag.
https://stable-diffusion-art.com is a good starting point.
I don't think there's a clear settled name for that specific style, but I'd describe it as an American newspaper strip with low levels of detail and inspiration from "ligne claire" (Ligne claire is the style of Tintin etc. - focuses on strong, clear lines with a lot of details omitted, rarely shading very rarely hatching; e.g. hair in Ligne Claire is usually described by its borders - even messy hair is mostly hinted at by tufts sticking out, with the rest flat shaded).
American newspaper strips by no means always use simple line work, so describing it as that in isolation is unlikely to work, but it has other characteristics (which are by no means universal - this is a regular complication in categorizing this), such as often omitting backgrounds, or just hinting at backgrounds (e.g. with a picture hanging on a wall being all you see of the wall), and often using panels that change little or sometimes not at all during a conversational exchange (basically strips have a lot of characteristics around streamlining works for artists on a deadline that's often a major stress factor, so lots of simplification, but what requires simplification to same the artist time will vary greatly).
But there is variation there too, and especially very significant variation between the classic single-strip-a-day format and the Sunday format with a bigger panel, where you often end up seeing non-traditional layout or characters "bursting out" of individual frames in various ways where the single strips are often far more regimented. Many comics do both, and will sometimes look very different between the two.
E.g. Calvin and Hobbes strips are fairly regimented, usually four panels of near uniform size, while the Sunday panels were renowned for breaking "rules" with uneven, sometimes overlapping panels, and drawings bursting out of them - the last ever Calvin and Hobbes consists of 3 or 5 or 7 frames depending on how you count - the first frame contains another frame, which contains a drawing, which contains another frame with a drawing. The two top outer frames don't even align with the bottom outer frame... [1]
You almost certainly would need to try multiple things and add additional descriptors to get the specific feel you want.
[1] https://www.washingtonpost.com/arts-entertainment/2020/12/31...
"style of Scott Adams."
3. How do I hint the generation of the comic? E.g. I draw a stick figure of someone sitting, and it generates my character with that pose: controlnet "open pose/sketching"
4. How do I "refine" some parts of the generated image. For example I like the generated character, but I want the face to look different direction: inpainting
It's still basically impossible to get perfectly consistent character features across multiple images/without a massive amount of effort. These models have been trained to generate single/standalone images.
Maybe some of the Sora related tech (where it generates frames in parallel/each frame has the context of every other frame) for coherency can be used to improve the plain image generation stuff as well, ie being able to specify a character with multiple views (3/4, back, front etc) so that you can refer to that character in your prompt.
According to whom? There’s just that sentence, surrounded by laurel leaves, above five stars. Zero indication of where that award/rating came from. Did you make it up?
https://colorbliss.art
Fun, but it’s no longer a special memory. There’s so little tying the source and result.
For example, I used a random selfie of me on the beach and big rocks in the water, wearing dark sunglasses and mouth closed.
Watercolor: Added eyes to my glasses (!). The rocks and water turned green, and it looked like I was standing in a park. Coloring Page: Ferns and trees added that weren't there before. Both: Gave me a teethy smile when my lips were closed.
The examples on the home page must have been extremely handpicked because I'm not seeing anything to that same fidelity.
I'm no Photoshop expert, but someone else in this discussion pointed out that Photoshop has some filters or other tools that do edge detection and can yield much more accurate results. If the techniques could be replicated in a SaaS then you'd have a much better product. Of course, if it could be done in a desktop Mac app or an iOS app, I might choose that for privacy reasons.
I've been using Stable Diffusion, and more recently Bing (app) and now GPT-4/Dall-E 3 (ChatGPT app) for that very purpose, with quite good success rate. It's perfect for when my daughter randomly asks me for a coloring page with a dancing vacuum cleaner or such. Dall-E is quite good at this, all you need to do is tack "in the style of a children coloring book" or such to the end of your prompt.
[1] https://dreamandcolor.com/
Libera te ... me ...
Soon we'll hear
libera te tutemet ex inferis
You lost your opportunity, you can now go back to anonimity.