24 comments

  • rrradical a minute ago

    Very neat project. Could I use this code to generate skin tones in my own project? Or more meant to just be educational/inspirational? I guess I'm wondering if you've considered adding a license.

  • vermarish 28 minutes ago

    This is beautiful work! First, I thought this would involve using PCA to go from 3D to 2D, which would result in an easier selector to use, but at the expense of representing every person.

    Then, I thought this would stop at using the U-space vectors (the ones that form the basis of the PCA image) and their corresponding ellipse to form our color space, but no, the function fitting is a very slick idea, even if it was executed by hand.

    Lastly, I love the presentation of sampling from different r values. Whether you sample from a fixed r value or a range of r values, I bet this has great applications in game design or animation.

    I still don't quite get the manual data labeling process at the beginning? It seems like it would encode some bias, but the consistency of the first point cloud and the results certainly speak for themselves.

      dr_scully 12 minutes ago

      If you look at my doctoral thesis, in fact skin colour can be parametrised using melanin and haemoglobin concentration; which it means it is indeed (roughly) two dimensional. This allows you to invert the colour of a pixel and identify someone’s chromophore concentration. This is based on previous work of others cited in the thesis.

      https://discovery.ucl.ac.uk/id/eprint/10093345/

        GolDDranks 6 minutes ago

        I've heard that the so-called "yellowish" skin color that non-tanned East Asians tend to have, is due to relative abundance of subcutaneous fat. If that's true, is that captured by the haemoglobin dimension or is it a yet another degree of freedom?

      automatoney 23 minutes ago

      Thank you! I call out the manual labeling bias and also that a future work improvement would be to be scientific about that labeling process (multiple labelers, expert labelers), and then to feed that into the equation generation steps. Part of where the "good enough" naming comes from - I was hoping that using my art brain and keeping a bunch of reference images in mind (shout out to the Humanae project) would maybe offset the bias a bit. But 100% right on the bias being there.

  • PullJosh 4 minutes ago

    I love this! Such a beautiful use of some real nerdy math to benefit humans in a way non-nerds would appreciate.

  • stephantul 26 minutes ago

    Love it. I especially thought the introspective “aside” section on related resources was great, and I wish more people would show this kind of reflection.

      automatoney 21 minutes ago

      Thanks! I hope to send lots of love those ways, they're basically all things that I found outside of this work that I liked enough to remember (I think Humanae was the one that I found while doing this).

  • andai 33 minutes ago

    Nice. Most of these colors look right to me, but I'm also seeing green, blue and purple? If you're curating colors from the space manually then it's not a problem.

    "Only realistic colors" would be a different problem. And I'm not sure if there's a way to solve that problem without excluding some real colors too.

    (Maybe if the colour selector was a different shape? I don't know much about color spaces.)

      automatoney 28 minutes ago

      Yes absolutely right on - I mention much deeper in the page that in a picker UI you can use a bigger range, but that in a generation context you might want to be a bit more selective. I go into it a bit more when I explain what R^2 is.

      "not sure if there's a way to solve that problem without excluding some real colors too" - 100% right on that too. A big part of this work was to define a way to tweak/improve the equations in order to approach a solution to these issues - part of my hope in sharing is to get more eyes and brains thinking about this and proposing improvements!

        compass_copium 17 minutes ago

        I would have "show sphere" on by default--this kind of threw me at first, too.

        This is a really nice project. Great work and a great write-up. Thanks for sharing.

      richiebful1 19 minutes ago

      Reducing the R^2 value to ~1.5 excludes skin colors that are extremely blue, green and purple. That seems to be a happy medium between including real outliers and excluding colors like green.

      wongarsu 24 minutes ago

      If you drag the bottom slider all the way to the right you only have plausible skin tones. Drag it all the way to the right and you can match skin tones for orcs, Na'vi and djinn

  • ptsneves 9 minutes ago

    On the movie Dolemite by Eddy Murphy, they go over the fact that black people absorb light and white people reflect, and how that changes the motion picture shooting process totally. Also how one size does not fit all. Cool project! I am not much into the humanities part of the project. For me this is as natural as having a localization framework, just in this case for skin tones.

  • m_w_ an hour ago

    This is super cool! I have always loved projects that try to categorize color space. Usually my work has gone in the other direction - isGray, isCloseToWhite, isPastel - but it's the same insofar as it's defining shapes like your matplot visual.

    Wish I had this on hand like this three or four years ago when I was working on VR avatar software - we had hard-coded skin tone options at the time - would have been a cool addition!

      automatoney 39 minutes ago

      In sharing this around I've found more people than I thought who've done things to semantically chop up the color space - definitely a more interesting area than I first thought of when working on my narrow use case. Feels like it'd be fun to play with something that has a whole bunch of different regions of color space labeled - like "here's where IsPastel overlaps with IsGreen".

      But absolutely the hope is that this is a tool that stays accessible to people for whatever they're building and everyone can slow down on reinventing the wheel here for every character creator/digital art application.

  • Abh1Works 32 minutes ago

    Cool work!

  • hluska 19 minutes ago

    This is excellent work! You’ve got a 49 year old and a 10 year old equally into it. That’s impressive - nice work.

  • RIMR 28 minutes ago

    For anyone confused, turn off your dark mode extension. :)

      automatoney 20 minutes ago

      Oh wow, didn't even think of how that sort of thing might affect the page.

  • moralestapia 34 minutes ago

    Interesting.

    It might be a bit biased though, as there's much more variation on fairer skin tones than on dark ones (there's only one that looks like the colloquial "black").

    This contradicts all research and social media from the past decade.

      Tossrock 29 minutes ago

      ...Did you read the article, or use the picker? It's a continuous (up to the limits of RGB quantization) space which includes thousands upon thousands of shades of black. The selected tones at the top of the article are random and change continuously.

  • 383toast 29 minutes ago

    Seems to underrepresent pale skin tone variety

      LocalH 6 minutes ago

      Turn off your dark mode reader extension