Dataset Card for Moonworks Lunara Aesthetic II
67
21 commits
1 linked in READMEs
updated Feb 9, 2026
This dataset introduces the second open-source release by Moonworks. This dataset contains original image and art created by Moonworks and their contextual variations generated by Moonworks Lunara, a sub-10B parameter model with a novel diffusion mixture architecture.
Paper: https://arxiv.org/pdf/2602.01666
While part 1 is intended for learning and evaluating regional as well as region-agnostic art styles, part 2 is intended for learning contextual variations while maintaining high aesthetic value.
Part 1: https://huggingface.co/datasets/moonworks/lunara-aesthetic
Each pair shows an original image (left) and its corresponding variant (right).
![]() | ![]() | ![]() | ![]() | |
![]() | ![]() | ![]() | ![]() | |
![]() | ![]() | ![]() | ![]() | |
![]() | ![]() | ![]() | ![]() | |
![]() | ![]() | ![]() | ![]() |
The snippet below loads the dataset from the Hugging Face Hub and displays an original / variant image pair side by side.
from datasets import load_dataset
import matplotlib.pyplot as plt
import random
import io
from PIL import Image as PILImage
def to_pil(x):
"""
Convert Hugging Face Image feature outputs (or streaming outputs)
into a real PIL.Image.Image for matplotlib.
Supports:
- already-PIL
- dict with 'bytes'
- dict with 'path'
- plain path string
"""
if isinstance(x, PILImage.Image):
return x
if isinstance(x, dict):
if x.get("bytes") is not None:
return PILImage.open(io.BytesIO(x["bytes"])).convert("RGB")
if x.get("path") is not None:
return PILImage.open(x["path"]).convert("RGB")
if isinstance(x, str):
return PILImage.open(x).convert("RGB")
raise TypeError(f"Unsupported image type: {type(x)}; value={repr(x)[:200]}")
# Stream (fast startup, no full split materialization)
ds_stream = load_dataset(
"moonworks/lunara-aesthetic-image-variations",
split="train",
streaming=True,
)
buffer_size = 300
buffer = list(ds_stream.take(buffer_size))
k = 5
k = min(k, len(buffer))
samples = random.sample(buffer, k)
fig, axes = plt.subplots(k, 2, figsize=(12, 3.6 * k))
if k == 1:
axes = [axes] # normalize shape
for i, sample in enumerate(samples):
orig = to_pil(sample["original_image"])
var = to_pil(sample["variant_image"])
axes[i][0].imshow(orig)
axes[i][0].set_title("Original", fontsize=12)
axes[i][0].axis("off")
axes[i][1].imshow(var)
axes[i][1].set_title("Variant", fontsize=12)
axes[i][1].axis("off")
plt.subplots_adjust(hspace=0.15, wspace=0.02)
plt.show()
paper: https://arxiv.org/abs/2602.01666
The Moonworks Lunara Aesthetic II Dataset is a compact image variation dataset designed for studying identity preservation and contextual consistency in image editing and image-to-image generation.
Each sample consists of:
This dataset is intended for:
If you use this dataset, please cite:
@article{wang2026lunaraII,
title={Moonworks Lunara Aesthetic II: An Image Variation Dataset},
author={Wang, Yan and Hassan, Partho and Sadeka, Samiha and Soliman, Nada and Abdullah, M M Sayeef and Hassan, Sabit},
journal={arXiv preprint arXiv:2602.01666},
year={2026}
}
19 commits
2 commits
Dataset Card for Moonworks Lunara Aesthetic II
67
21 commits
1 linked in READMEs
updated Feb 9, 2026
This dataset introduces the second open-source release by Moonworks. This dataset contains original image and art created by Moonworks and their contextual variations generated by Moonworks Lunara, a sub-10B parameter model with a novel diffusion mixture architecture.
Paper: https://arxiv.org/pdf/2602.01666
While part 1 is intended for learning and evaluating regional as well as region-agnostic art styles, part 2 is intended for learning contextual variations while maintaining high aesthetic value.
Part 1: https://huggingface.co/datasets/moonworks/lunara-aesthetic
Each pair shows an original image (left) and its corresponding variant (right).
![]() | ![]() | ![]() | ![]() | |
![]() | ![]() | ![]() | ![]() | |
![]() | ![]() | ![]() | ![]() | |
![]() | ![]() | ![]() | ![]() | |
![]() | ![]() | ![]() | ![]() |
The snippet below loads the dataset from the Hugging Face Hub and displays an original / variant image pair side by side.
from datasets import load_dataset
import matplotlib.pyplot as plt
import random
import io
from PIL import Image as PILImage
def to_pil(x):
"""
Convert Hugging Face Image feature outputs (or streaming outputs)
into a real PIL.Image.Image for matplotlib.
Supports:
- already-PIL
- dict with 'bytes'
- dict with 'path'
- plain path string
"""
if isinstance(x, PILImage.Image):
return x
if isinstance(x, dict):
if x.get("bytes") is not None:
return PILImage.open(io.BytesIO(x["bytes"])).convert("RGB")
if x.get("path") is not None:
return PILImage.open(x["path"]).convert("RGB")
if isinstance(x, str):
return PILImage.open(x).convert("RGB")
raise TypeError(f"Unsupported image type: {type(x)}; value={repr(x)[:200]}")
# Stream (fast startup, no full split materialization)
ds_stream = load_dataset(
"moonworks/lunara-aesthetic-image-variations",
split="train",
streaming=True,
)
buffer_size = 300
buffer = list(ds_stream.take(buffer_size))
k = 5
k = min(k, len(buffer))
samples = random.sample(buffer, k)
fig, axes = plt.subplots(k, 2, figsize=(12, 3.6 * k))
if k == 1:
axes = [axes] # normalize shape
for i, sample in enumerate(samples):
orig = to_pil(sample["original_image"])
var = to_pil(sample["variant_image"])
axes[i][0].imshow(orig)
axes[i][0].set_title("Original", fontsize=12)
axes[i][0].axis("off")
axes[i][1].imshow(var)
axes[i][1].set_title("Variant", fontsize=12)
axes[i][1].axis("off")
plt.subplots_adjust(hspace=0.15, wspace=0.02)
plt.show()
paper: https://arxiv.org/abs/2602.01666
The Moonworks Lunara Aesthetic II Dataset is a compact image variation dataset designed for studying identity preservation and contextual consistency in image editing and image-to-image generation.
Each sample consists of:
This dataset is intended for:
If you use this dataset, please cite:
@article{wang2026lunaraII,
title={Moonworks Lunara Aesthetic II: An Image Variation Dataset},
author={Wang, Yan and Hassan, Partho and Sadeka, Samiha and Soliman, Nada and Abdullah, M M Sayeef and Hassan, Sabit},
journal={arXiv preprint arXiv:2602.01666},
year={2026}
}
19 commits
2 commits