Skip to content
Sample of Neural Biodiversity (Sofia Crespo — Neural Zoo / Artificial Natural History)

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.

Family
ml_artists
Source
ml artists
Evolution
particle
Render
layered_sinusoidal_field
Complexity
medium
Agents
36
Year
2019
Author
Sofia Crespo (concept)

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

Sample of DeepDream Field (Mike Tyka — AI: DeepDream / Inceptionism)

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.

View →
Sample of GAN Watercolor (Helena Sarin — Neural Bricolage / #latentDoodles)

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.

View →
Sample of Glitch (Mario Klingemann — glitch-print aesthetic)

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.

View →
Sample of Memories of Passersby (Mario Klingemann — Memories of Passersby I)

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.

View →
Sample of Style Transfer Field (Gene Kogan — ml4a)

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.

View →

See all ml_artists artworks →