DeepDream-MLX
Status: Fast + native. Vibe: 2015 hallucinations, 2025 silicon.
DeepDream-MLX brings the original psychedelic computer vision look to Apple Silicon using MLX. No Caffe relics—just clean tensor ops, ready-to-go checkpoints, and a zoom-video pipeline.
What You Get
- MLX checkpoints for GoogLeNet (Inception v1), VGG16/VGG19, ResNet50, AlexNet, plus Places365 + bf16 variants (all
.npz, tracked with LFS). dream.py: full DeepDream CLI with presets (--preset nb14/nb20/nb28), guided dreaming (--guide), and--model allfor side-by-side runs.dream_video.py: zoom feedback loop usingscipy.ndimage.zoom, outputs frames forffmpeg.convert.py: scan or download.pth/.t7checkpoints and convert them into MLX format while keepingtoConvert/clean.benchmark.py+quantize_experiment.py: quick speed checks and quantization experiments on Apple GPUs.
Install
Bring your own env (conda/uv/venv/none) as you prefer:
# using uv (optional)
uv pip install -r requirements.txt
# or plain pip
pip install -r requirements.txt
Run a Dream
# Classic look (GoogLeNet, default layers inception3b/4c/4d)
python dream.py --input assets/demo_googlenet.jpg --output dream.jpg \
--model googlenet --octaves 4 --scale 1.4 --steps 16
# Painterly textures (VGG16) with a preset
python dream.py --input assets/demo_vgg16.jpg --output dream_vgg16.jpg \
--model vgg16 --preset nb20 --steps 20
# Guided dreaming
python dream.py --input assets/demo_vgg16.jpg --guide assets/demo_googlenet.jpg \
--model vgg16 --layers relu4_3 --steps 18 --octaves 4
# Compare everything in one go
python dream.py --input assets/demo_vgg19.jpg --model all
Default layers per model: VGG16 relu4_3, VGG19 relu4_4, ResNet50 layer4_2, AlexNet relu5, GoogLeNet inception3b/4c/4d. Override with --layers layer1 layer2 ... as needed.
Weights (local + optional Hugging Face)
Core .npz weights live in this repo via LFS. If you want a fresh copy or a variant, optionally pull from Hugging Face:
pip install huggingface_hub
# Core checkpoints
huggingface-cli download NickMystic/DeepDream-MLX googlenet_mlx.npz --local-dir .
huggingface-cli download NickMystic/DeepDream-MLX vgg16_mlx.npz --local-dir .
huggingface-cli download NickMystic/DeepDream-MLX resnet50_mlx.npz --local-dir .
# Optional variants
huggingface-cli download NickMystic/DeepDream-MLX googlenet_mlx_bf16.npz --local-dir .
huggingface-cli download NickMystic/DeepDream-MLX resnet50_places365_mlx.npz --local-dir .
huggingface-cli download NickMystic/DeepDream-MLX alexnet_places365_mlx.npz --local-dir .
Programmatic fetch:
from huggingface_hub import hf_hub_download
path = hf_hub_download(repo_id="NickMystic/DeepDream-MLX", filename="googlenet_mlx.npz")
print(path) # local cache path to pass into --weights
Zoom Video Loop
python dream_video.py --input assets/example_googlenet.jpg --output_dir frames \
--model googlenet --layers inception4c --frames 120 --zoom_factor 1.05
# Assemble video (requires ffmpeg)
ffmpeg -framerate 15 -i frames/frame_%04d.jpg -c:v libx264 -pix_fmt yuv420p dream_zoom.mp4
Convert or Add Checkpoints
# Convert anything already in toConvert/
python convert.py --scan toConvert/
# Download common Torch7/PyTorch models and convert automatically
python convert.py --download all
All large .npz remain in Git LFS; keep toConvert/ free of raw blobs before publishing.
Benchmark & Quantize
python benchmark.py
python quantize_experiment.py --model googlenet
License
Apache-2.0 (see LICENSE).
- Downloads last month
- 126