ml_artists · CrespoNeuralBiodiversity
Neural Biodiversity (Sofia Crespo — Neural Zoo / Artificial Natural History)
Inspired by Sofia Crespo's Neural Zoo (2018-), Artificial Natural History (2019-), and Beneath the Neural Waves (2021): she uses 3D GANs, CNN-based texture synthesis and 3D style transfer to fabricate a 'natural history book that never was' — chimerical creatures whose anatomies recombine fragments of real species. The neural networks learn texture, not shape; the silhouette of each creature emerges from overlapping fields of organic-looking surface patterns. We replicate the kernel: N creature sites are placed at random positions on the canvas; each creature is rendered as a soft coloured disk with a sinusoidal outline perturbation r(θ) = r0·(1 + Σ_k a_k·sin(k·θ + φ_k)), filled with an internal sine-wave texture and tinted from a Crespo-flavoured palette. Creatures overlap semi-transparently so layered forms suggest anatomical structure. Each step slowly drifts the outline phases and centres so the biodiversity field 'evolves'.
Original: https://www.thisiscolossal.com/2020/09/sofia-crespo-ai-natural-history/
▶ Try the live demo (JS port) ▶ Run reference.py via Pyodide 10 formulas have instant JS ports. The Pyodide path runs the actual Python in your browser — first load is ~6 MB, then instant.
Math essence
For each creature i: compute r(θ) = r_i·(1 + Σ_k a_{i,k}·sin(k·θ + φ_{i,k})); mask m_i = clip(1 - (r(x,y) - r(θ))/δ_i, 0, 1); texture t_i = sin(k_x·x + k_y·y + ψ_i); colour c_i = palette_i · (0.55 + 0.55·t_i); composite canvas ← canvas·(1-α·m_i) + c_i·α·m_i.
Parameters
| Name | Type | Default | Range | Description |
|---|---|---|---|---|
dim | int | 600 | 200–1500 | Square canvas side length (px). |
n_creatures | int | 36 | 1–200 | Number N of creature sites. |
base_radius | float | 110 | 10–400 | Average creature radius (px). |
radius_jitter | float | 0.55 | 0–1.5 | Per-creature multiplicative radius jitter. |
outline_amp | float | 0.25 | 0–1 | Sinusoidal outline perturbation amplitude (fraction of r0). |
outline_freq | int | 5 | 2–16 | Base number of outline lobes (jittered ±2 per creature). |
texture_freq | float | 0.07 | 0.001–0.5 | Internal texture spatial frequency. |
palette | str | crespo_coral | null–null | crespo_coral|crespo_insect|crespo_anemone|random. |
Reference
First 60 lines of reference.py. Full source:
library_external/ml_artists/CrespoNeuralBiodiversity/reference.py
"""CrespoNeuralBiodiversity — Sofia Crespo "Neural Biodiversity" kernel.
Sofia Crespo's *Neural Zoo* (2018-), *Artificial Natural History*
(2019-), *Artificial Remnants* (2020-) and *Beneath the Neural Waves*
(2021) use 3D GANs, CNN-based texture synthesis and 3D style transfer
to fabricate a "natural history book that never was": chimerical
creatures whose anatomies recombine fragments of real species. Her
neural networks learn *texture*, not shape — the silhouette of each
creature emerges from overlapping fields of organic-looking surface
patterns.
We replicate the kernel in pure numpy:
1. Place N "creature sites" at random positions on the canvas.
2. Each creature is a layered field of sinusoidal blobs:
concentric rings + radial lobes + a slowly-varying texture
derived from layered sine functions of (r, θ).
3. Render each creature as a soft coloured disk with a sinusoidal
outline perturbation — the outline is r(θ) = r0 · (1 +
ε · Σ_k sin(k·θ + φ_k)).
4. Compose all creatures into a single biodiversity field with
semi-transparent overlap so layered forms suggest anatomy.
References:
- https://www.thisiscolossal.com/2020/09/sofia-crespo-ai-natural-history/
- https://sofiacrespo.com/neural-zoo/
- https://www.nvidia.com/en-us/research/ai-art-gallery/artists/sofia-crespo/
- https://www.ted.com/talks/sofia_crespo_ai_generated_creatures_that_stretch_the_boundaries_of_imagination
"""
from __future__ import annotations
from typing import ClassVar
import numpy as np
class CrespoNeuralBiodiversity:
"""A field of layered sinusoidal creatures (Neural Biodiversity).
Parameters
----------
dim : int
Square canvas side length (px).
n_creatures : int
Number N of creature sites.
base_radius : float
Average creature radius (px).
radius_jitter : float
Per-creature multiplicative radius jitter (0..1).
outline_amp : float
Sinusoidal outline perturbation amplitude (fraction of r0).
outline_freq : int
Number of lobes in the outline sinusoid (typical 3-8).
texture_freq : float
Spatial frequency of internal texture pattern.
palette : str
``"crespo_coral"``, ``"crespo_insect"``, ``"crespo_anemone"``
or ``"random"``.
"""
family: ClassVar[str] = "ml_artists" Try running it locally
The reference implementation is self-contained Python with numpy. Install the package and run:
python library_external/ml_artists/CrespoNeuralBiodiversity/reference.py Need help? See Learn for the standard environment setup, or Playground for an in-browser sketchbook.
More from ml artists
DeepDream Field (Mike Tyka — AI: DeepDream / Inceptionism)
ml_artists · TykaDeepDreamField
Inspired by Mike Tyka's AI: DeepDream series (2015-) and his co-authorship of 'Inceptionism: Going Deeper into Neural Networks' with Mordvintsev and Olah.
GAN Watercolor (Helena Sarin — Neural Bricolage / #latentDoodles)
ml_artists · SarinWatercolor
Inspired by Helena Sarin's Neural Bricolage practice (#latentDoodles, GAN Weaver, The Book of veGAN): she trains GANs on her own watercolor paintings and sketches, then curates the output back into analog paintings.
Glitch (Mario Klingemann — glitch-print aesthetic)
ml_artists · KlingemannGlitch
Klingemann's practice amplifies the visible failure modes of digital pipelines — distorted faces mid-decode, colour-shifted artefacts, rectangular datamosh tears — into the subject matter itself.
Memories of Passersby (Mario Klingemann — Memories of Passersby I)
ml_artists · KlingemannMemorex
Inspired by Mario Klingemann's Memories of Passersby I (2018, Sotheby's) — a custom GAN trained on 17th–19th-century portraits that runs forever, never repeats an output, and 'observes itself' in a feedback loop.
Style Transfer Field (Gene Kogan — ml4a)
ml_artists · KoganStyleTransferField
Inspired by Gene Kogan's Experiments with Style Transfer and the ml4a curriculum: neural style transfer iteratively updates an image so its Gram-matrix feature statistics match a style reference — the gradient of the style loss with respect to pixels defines a vector field.