five

MihaiPopa-1/minecraft-skins-1.1m-deduped-64x64-2.0

收藏
Hugging Face2026-04-05 更新2026-04-12 收录
下载链接:
https://hf-mirror.com/datasets/MihaiPopa-1/minecraft-skins-1.1m-deduped-64x64-2.0
下载链接
链接失效反馈
官方服务:
资源简介:
--- task_categories: - text-to-image - image-classification - unconditional-image-generation tags: - minecraft - minecraft-skins - de-duped - deduped - zip-dataset - zip - zip-archive size_categories: - 1M<n<10M license: apache-2.0 pretty_name: Minecraft Skins 1.1M Deduped (64x64 Edition) 2.0 --- # Minecraft Skins 1.1M Deduped (64x64 Edition) 2.0! [Minecraft Skins 1.1M Deduped 1.5](https://huggingface.co/datasets/MihaiPopa-1/minecraft-skins-1.1m-deduped-64x64-1.5) but it's tagged. Format is just a 76.5 MB JSONL file and a 6.1 MB zipped JSONL file (as a JSONZ file) # Tools used PIL Image (Python) and Google Colab (T4 GPU tier, but it didn't use the GPU at all!) # How it was made 1. Loaded [Minecraft Skins 1.1M Deduped 1.5](https://huggingface.co/datasets/MihaiPopa-1/minecraft-skins-1.1m-deduped-64x64-1.5), 2. Tagged using a simple system where it looks for colors and complexity, 3. Output is given in a 6.1 MB ZIP archive or a 76.5 MB JSONL. This can be used to make your own skin generation model (but I'm going with VQ-VAE anyway!) # Future improvements for version 2.5 1. Captioning (with Florence 2 Base) or tagging with CLIP 2. ~~Filtering troll skins (skins that are formed of just a single color)~~ already done! # Code Code to reproduce it (first by Claude 4.6 Sonnet): Same code as before, then: ```python import numpy as np from PIL import Image import json import os from tqdm import tqdm SKIN_DIR = "/content/skins_v1_5" OUTPUT_FILE = "/content/tags.jsonl" def get_tags(img): arr = np.array(img.convert("RGBA")) rgb = arr[:,:,:3] alpha = arr[:,:,3] tags = [] pixels = rgb.reshape(-1, 3) visible = pixels[alpha.flatten() > 128] # only non-transparent pixels if len(visible) == 0: return tags # --- COLOR TAGS --- r = visible[:,0].mean() g = visible[:,1].mean() b = visible[:,2].mean() brightness = (r + g + b) / 3 # Dominant color if brightness < 40: tags.append("black") elif brightness > 220: tags.append("white") elif r > g + 40 and r > b + 40: tags.append("red") elif g > r + 40 and g > b + 40: tags.append("green") elif b > r + 40 and b > g + 40: tags.append("blue") elif r > 180 and g > 180 and b < 100: tags.append("yellow") elif r > 180 and g > 100 and b < 80: tags.append("orange") elif r > 150 and b > 150 and g < 100: tags.append("purple") elif r > 180 and g < 100 and b > 180: tags.append("magenta") elif b > 180 and g > 180 and r < 100: tags.append("cyan") elif r > 120 and g > 80 and b < 60: tags.append("brown") elif r > 180 and g > 150 and b > 150: tags.append("pink") elif abs(r-g) < 20 and abs(g-b) < 20: tags.append("gray") # --- BRIGHTNESS TAGS --- if brightness < 60: tags.append("dark") elif brightness > 180: tags.append("bright") # --- COMPLEXITY TAGS --- std = rgb.std() if std < 10: tags.append("minimal") elif std > 60: tags.append("detailed") else: tags.append("colorful") # --- TRANSPARENCY TAGS --- transparent_ratio = (alpha.flatten() < 128).sum() / len(alpha.flatten()) if transparent_ratio > 0.3: tags.append("cape") # lots of transparency = likely has cape/overlay # --- SKIN TONE TAGS --- # Check face region (8x8 pixels at 8,8 in skin layout) face = rgb[8:16, 8:16] face_r = face[:,:,0].mean() face_g = face[:,:,1].mean() face_b = face[:,:,2].mean() if face_r > 150 and face_g > 100 and face_b < 120: tags.append("human") # skin-tone face = likely human return tags # Load done set for resuming done = set() if os.path.exists(OUTPUT_FILE): with open(OUTPUT_FILE, "r") as f: for line in f: try: entry = json.loads(line) done.add(entry["filename"]) except: continue print(f"Resuming from {len(done):,} already tagged") skin_files = [ f for f in os.listdir(SKIN_DIR) if f.endswith(".png") and f not in done ] print(f"Remaining: {len(skin_files):,}") with open(OUTPUT_FILE, "a") as f: for filename in tqdm(skin_files): try: img = Image.open(os.path.join(SKIN_DIR, filename)) tags = get_tags(img) f.write(json.dumps({"filename": filename, "tags": tags}) + "\n") except Exception: continue f.flush() os.fsync(f.fileno()) # force write to Drive! print("Done!") ``` then: ```bash !zip -9 tags.jsonl.zip tags.jsonl ``` then renamed from `tags.jsonl.zip` to `tags.jsonz`
提供机构:
MihaiPopa-1
5,000+
优质数据集
54 个
任务类型
进入经典数据集
二维码
社区交流群

面向社区/商业的数据集话题

二维码
科研交流群

面向高校/科研机构的开源数据集话题

数据驱动未来

携手共赢发展

商业合作