Hacker News new | past | comments | ask | show | jobs | submit login
Self-organising textures from cellular automata (distill.pub)
418 points by fenomas on Feb 12, 2021 | hide | past | favorite | 59 comments



Authors here. If you have any questions we'll do our best to answer them! Glad to see people find our work interesting thus far.

We also encourage anyone interested to play with the linked Google Colabs [1][2] and read the other articles in the Distill thread. In the Colabs you'll find a bunch more pre-trained textures as well as a workflow to train on your own images, plus some of the scaffolding to recreate figures.

[1] https://colab.sandbox.google.com/github/google-research/self... [2] https://colab.sandbox.google.com/github/google-research/self...


The textures remind me of the beginning of once in a lifetime by talking heads. https://www.youtube.com/watch?v=5IsSpAOD6K8


Looks similar to the Gray-Scott model. https://mrob.com/pub/comp/xmorphia/


This is the first I've ever read about neural cellular automata. I think I was able to pick up the broad strokes from context, but is there a good introductory resource for neural cellular automata?


Wow!!

Really impressive work - in seconds, I see so much both richness of ideas and potential!

And, as is so often the case, the really interesting work happens on the intersection of two fields - neural nets and cellular automata here. I've got tons of new reading to do now!

Any plans to extend it to generation in 3D space?


There's some recent work that involves NCAs in a 3D setting by Horibe et. al [1] and tweet [2]. Other work by Risi and collaborators is definitely worth checking out as well.

[1] https://arxiv.org/abs/2102.02579 [2] https://twitter.com/risi1979/status/1358018266824912897


nice - thanks!


Great post, thanks! I saw Growing Neural Cellular Automata document you describe a strategy to get the model to learn attractor dynamics. I was kind of reminded of Deep Equilibrium Models (https://arxiv.org/abs/1909.01377).

Is there a relationship between these models and do you think these root finding and implicit differentiation techniques could be used to train Cellular Automata too?


Very interesting work. The bottom of the article has links[1] to the GH repo, but I take it that it's a private repo?

1: https://github.com/distillpub/post--selforg-textures


That repo contains the code, figures and text for the article. It's set to public now.


there's links to the basic collab implementations at the top


Question? Yes: Why do I love you so much? I don't even know you!


Thanks for the write up! Just a note: at least in the pytorch collab there are missing includes (numpy and the imread function)


The second cell looks a section title ("Imports and Notebook Utilities"), but contains the definitions of these functions and the imports. Run this cell and I suspect things should work.


I love all you guys' work. Keep it up.


Where do the original textures come from?


The texture template images come from [1], a collection of textures categorised by "description".

[1] https://www.robots.ox.ac.uk/~vgg/data/dtd/


How large is the state space for each cell? Full 8-bit RGB (= 24 bits)?


EDIT: Alex replied below. For more details on quantisation see footnotes in our seminal work [1]

[1] https://distill.pub/2020/growing-ca/


Is it common to describe ones own work as seminal?


In typical parlance today, "seminal" means "from which a bunch of important things have sprung" but I think there is an older definition which is simply "first".


Apologies, not my intention. I was also under the impression seminal could be used to mean ”first” in the succession of our works and this is what I had intended to communicate.


I don't think English is the author's first language.


It's their seminal language XD

As a non-native but long-term speaker of English, I understand "seminal" as in "their seminal work" as "groundbreaking" (and better to be avoided when referring to one's own work). But slips of the pen are inevitable, so no harm done.


Each cell has 12 8-bit channels, including rgb, so it is 96 bits.


The article says "our NCA model contains 16 channels. The first three are visible RGB channels and the rest we treat as latent channels which are visible to adjacent cells during update steps, but excluded from loss functions."


Thanks for noticing. This is a typo stemming from early experiments. We started out with 16 channels, but switched to 12 channels of state when this worked just as well. I've submitted a correction.


If you want to see similar work by some of the same authors, see [1]. The youtube channel "twominutepapers" has an explanation of this work[2].

[1] https://distill.pub/2020/growing-ca/ [2] https://www.youtube.com/watch?v=bXzauli1TyU


Shoutout to twominutepapers, it's a wonderful channel.


If you haven't heard or seen any presentations about the work coming out of the Levin lab, it is super interesting. I don't really know anything about biology, but the work around modifying organisms via changing electrical circuits rather than genes is fascinating, and to a lay-person such as myself seems like the future of bio.

https://ase.tufts.edu/biology/labs/levin/presentations/


Results resemble common micrographs. But perturbed in such a way as to appear alien. Appears we are on the cusp of "neural synthetic biology" ;)

Fast differentiable DNA and protein sequence optimization for molecular design

https://arxiv.org/abs/2005.11275

Regenerating Soft Robots through Neural Cellular Automata

https://arxiv.org/abs/2102.02579


Is a micrograph the same a motif from network theory?


This reminds me a lot of the WaveFunctionCollapse texture generation algorithm [0]. It "generates bitmaps that are locally similar to the input bitmap."

Very cool!

[0]: https://github.com/mxgmn/WaveFunctionCollapse


This is the first I've ever read about neural cellular automata, though I thought I was relatively up to date on both cellular automata and deep learning. I think I was able to pick up the broad strokes from context, but is there a good introductory resource for neural cellular automata?


See also: using differentiable approximations of cellular automata in PyTorch to reverse Conway's Game of Life; in some cases, you can get striking Turing patterns similar to what's described in this paper! http://hardmath123.github.io/conways-gradient.html


Warning for people suffering from trypophobia, some of the combinations can be quite disturbing! [0]

Very interesting how the patterns react to disturbances like rotation, and the animation is very smooth

[0] https://en.wikipedia.org/wiki/Trypophobia


I usually have a very strong (feeling unbearably itchy) trypophobic response to anything "organic" that has clusters of protrusions or holes e.g. lotus seed pods, but none of these examples have any such effect. I think it's because of the bright colours and low resolution.


Ditto, it has to be organic for me. Usually holes with stuff in it.


What about inorganic physical objects, like a shower head?


No problem if it's inorganic. I expect there must be some kind of evolutionary reason for it - the fact that it's an itching/crawling feeling strongly suggests it has/had something to do with bugs.


> In the same way that cells form eye patterns on the wings of butterflies to excite neurons in the brains of predators, our NCA’s population of cells has learned to collaborate to produce a pattern that excites certain neurons in an external neural network.

I know there has been other work on adversarial networks, but this analogy (along with the photo of the butterfly) really communicates the idea well. And although I'm generally skeptical of claims that ANN "x" is the true model of how the human brain works, it makes a lot of sense to me that this is how adversarial self-organizing biological structures interact.

Also, it's a powerful example because of just how effective the butterfly wing's "eye" is. Despite understanding that it's a decoy, I still can't look at it and not be unnerved a bit by it.


What is the significance of this, e.g. can we use this approach to build arbitrary material or even living tissue? I can't help but think of this video [0], it seems there may be commonalities between what's happening in life and simple cellular automata.

[0] https://www.youtube.com/watch?v=7Q9VyHJ1l2Q


This reminds me of a shareware program I had way back in '98 or something. It let you generate (or evolve?) seamlessly tiling textures using a cellular automaton with a bunch of parameters. I remember it being really cool at the time but can't for the life of me remember what it was called.



Nice approximation of nature. You can see both growth and statistical mechanics in the same demonstration.


This is very interesting

I observed that the more symmetric the basic structures of the pattern/texture are, the more stable the result is/the faster the automata converges.

I wonder what it would take to stabilize the worst case I saw there, the veined leaf texture.


For some reason I find these quite disgusting to look at. I wonder why!


Besides the organic, slightly bacterial-colony forming nature of them, I wonder if you also have trypophobia. I feel like some of the images were triggering the same kind of feelings I get from that.


The way the the images move during evolulution kinda reminds me of worms or maggots wriggling around in soil.


https://en.wikipedia.org/wiki/Trypophobia was mentioned in another comment


Very nice! The results look similar to my experiments in applying feedback to style transfer networks (https://www.youtube.com/watch?v=fGSXbYDpI9c), though the self-healing properties of CA make this more interesting!


Very cool, and great demo. This really takes me back as I was really into graphics algorithms, including texture synthesis, in my younger years.

The hexagonal grid seems to have some cell-boundary issues though, especially noticeable with the two radial cell alignments.


This does a good job of illustrating how patterns in nature formed by cells can self organize. I haven't dug in to see how similar the implementation is, but when you look at the way these textures develop it sure looks like it.


This is amazing. As a complete ML/AI neophyte can someone suggests some books/resources to help me understand the basics of what is going on here?


This is awesome. Not sure why, but I was kinda disappointed to find our that it uses ML.


"It reaches out... it reaches out... it reaches out..."

This is too cool.


How does it work?


Until next trip.


is the animation periodically shaking? I was staring at it and it seem to quiver.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: