遇见数据集

piebro/factorio-blueprint-visualizations

收藏
Hugging Face2023-12-08 更新2024-03-04 收录
官方服务:

资源简介:

--- license: cc0-1.0 task_categories: - text-to-image tags: - art pretty_name: Factorio Blueprint Visualizations Dataset size_categories: - n<1K --- ## Dataset Description This dataset is a collection of visualizations of [Factorio Blueprints](https://wiki.factorio.com/Blueprint) using this Factorio Visualization Tool: https://github.com/piebro/factorio-blueprint-visualizer. The Blueprints are collected from https://www.factorio.school/. ## Examples ![](png_1024x1024/image_38.png) ![](png_1024x1024/image_39.png) ## Dataset Structure * "svg_original": The svg downloaded like this from the website * "svg_rect": The svg reshaped to a rect and a slightly bigger border * "png_1024x1024": The svg_rect images exported as pngs ## Additional Information The dataset was used to train this lora: https://huggingface.co/piebro/factorio-blueprint-visualizations-sdxl-lora ## Code Attachments Code to create the rectangular svgs: ```python import os import xml.etree.ElementTree as ET def modify_svg(save_dir, svg_file_path): tree = ET.parse(svg_file_path) root = tree.getroot() # Extract current width and height width = float(root.attrib['width'].replace('mm', '')) height = float(root.attrib['height'].replace('mm', '')) # Calculate new dimensions new_size = max(width, height) + 200 # Update width and height root.attrib['width'] = f"{new_size}mm" root.attrib['height'] = f"{new_size}mm" # Adjust viewBox for centering content view_box = root.attrib.get('viewBox', '').split(',') if len(view_box) == 4: x, y, vw, vh = map(float, view_box) dx = vw*0.12 dy = vh*0.12 root.attrib['viewBox'] = f"{x-dx/2}, {y-dy/2}, {vw+dx}, {vh+dy}" # Write back to file or a new file tree.write(os.path.join(save_dir, f"modified_{os.path.basename(svg_file_path)}")) save_dir = "" original_svg_folder_path = "" for file_name in os.listdir(original_svg_folder_path): if file_name.endswith('.svg'): modify_svg(save_dir, os.path.join(original_svg_folder_path, file_name)) ``` Code to create the pngs: ```bash mkdir pngs for file in *.svg; do convert "$file" -resize 1024x1024 "pngs/${file%.svg}.png"; done ```

许可证:CC0 1.0 任务类别: - 文本到图像 标签: - 艺术 友好名称:异星工厂蓝图可视化数据集(Factorio Blueprint Visualizations Dataset) 规模类别: - 样本量小于1000(n<1K) ## 数据集描述 本数据集为使用异星工厂蓝图可视化工具(Factorio Blueprint Visualization Tool,链接:https://github.com/piebro/factorio-blueprint-visualizer)生成的异星工厂(Factorio)蓝图可视化作品集合,蓝图数据均采集自https://www.factorio.school/。 ## 示例 ![](png_1024x1024/image_38.png) ![](png_1024x1024/image_39.png) ## 数据集结构 * "svg_original": 从网站直接下载的原始SVG文件 * "svg_rect": 调整为矩形并添加稍大边框的SVG文件 * "png_1024x1024": 将svg_rect格式的图像导出为分辨率1024×1024的PNG文件 ## 附加信息 本数据集曾用于训练该低秩适配(LoRA):https://huggingface.co/piebro/factorio-blueprint-visualizations-sdxl-lora ## 代码附件 生成矩形SVG的代码: python import os import xml.etree.ElementTree as ET def modify_svg(save_dir, svg_file_path): tree = ET.parse(svg_file_path) root = tree.getroot() # Extract current width and height width = float(root.attrib['width'].replace('mm', '')) height = float(root.attrib['height'].replace('mm', '')) # Calculate new dimensions new_size = max(width, height) + 200 # Update width and height root.attrib['width'] = f"{new_size}mm" root.attrib['height'] = f"{new_size}mm" # Adjust viewBox for centering content view_box = root.attrib.get('viewBox', '').split(',') if len(view_box) == 4: x, y, vw, vh = map(float, view_box) dx = vw*0.12 dy = vh*0.12 root.attrib['viewBox'] = f"{x-dx/2}, {y-dy/2}, {vw+dx}, {vh+dy}" # Write back to file or a new file tree.write(os.path.join(save_dir, f"modified_{os.path.basename(svg_file_path)}")) save_dir = "" original_svg_folder_path = "" for file_name in os.listdir(original_svg_folder_path): if file_name.endswith('.svg'): modify_svg(save_dir, os.path.join(original_svg_folder_path, file_name)) 生成PNG的代码: bash mkdir pngs for file in *.svg; do convert "$file" -resize 1024x1024 "pngs/${file%.svg}.png"; done

提供机构:
piebro
原始信息汇总

数据集描述

该数据集是使用Factorio Visualization ToolFactorio Blueprints进行可视化的集合。这些蓝图是从Factorio School收集的。

示例

数据集结构

  • "svg_original": 从网站下载的原始svg文件
  • "svg_rect": 重新调整为矩形并带有稍大边界的svg文件
  • "png_1024x1024": 将svg_rect图像导出为png格式

附加信息

该数据集用于训练此lora模型:Factorio Blueprint Visualizations SDXL LoRA

代码附件

创建矩形svg的代码: python import os import xml.etree.ElementTree as ET

def modify_svg(save_dir, svg_file_path): tree = ET.parse(svg_file_path) root = tree.getroot()

# Extract current width and height
width = float(root.attrib[width].replace(mm, ))
height = float(root.attrib[height].replace(mm, ))

# Calculate new dimensions
new_size = max(width, height) + 200

# Update width and height
root.attrib[width] = f"{new_size}mm"
root.attrib[height] = f"{new_size}mm"

# Adjust viewBox for centering content
view_box = root.attrib.get(viewBox, ).split(,)
if len(view_box) == 4:
    x, y, vw, vh = map(float, view_box)
    dx = vw*0.12
    dy = vh*0.12
    root.attrib[viewBox] = f"{x-dx/2}, {y-dy/2}, {vw+dx}, {vh+dy}"

# Write back to file or a new file
tree.write(os.path.join(save_dir, f"modified_{os.path.basename(svg_file_path)}"))

save_dir = "" original_svg_folder_path = "" for file_name in os.listdir(original_svg_folder_path): if file_name.endswith(.svg): modify_svg(save_dir, os.path.join(original_svg_folder_path, file_name))

创建png的代码: bash mkdir pngs for file in *.svg; do convert "$file" -resize 1024x1024 "pngs/${file%.svg}.png"; done

搜集汇总
数据集介绍
piebro/factorio-blueprint-visualizations 数据集图片
构建方式
该数据集聚焦于《异星工厂》游戏蓝图的可视化表征,其构建过程融合了自动化脚本处理与多模态数据转换。原始蓝图数据源自社区网站factorio.school,借助专属可视化工具将蓝图解析为SVG格式。随后,通过Python脚本对SVG文件进行几何重构,调整其宽高至统一矩形并扩展边界,最终利用ImageMagick命令将处理后的SVG批量渲染为1024×1024像素的PNG图像,形成包含原始SVG、矩形SVG及标准化PNG的三层级结构。
特点
数据集以精巧的规模(不足千条样本)展现出鲜明的领域特异性与结构完整性。其核心特点在于多格式并存的设计:既保留矢量图形的可编辑性(SVG),又提供适用于图像生成模型的栅格化版本(PNG)。所有图像均经过尺寸标准化处理,消除了原始蓝图在长宽比例上的差异,这种均一化预处理为后续的文本到图像任务奠定了数据基础。此外,数据集已成功应用于LoRA微调训练,验证了其在特定生成任务中的实用价值。
使用方法
该数据集主要服务于文本到图像生成模型的训练与评估,尤其适合《异星工厂》游戏风格的图像合成任务。使用者可直接加载PNG图像作为训练样本,结合蓝图描述文本构建配对数据。SVG文件则可供研究者进行数据增强或格式转换实验。数据集已公开的LoRA模型提供了直接的应用入口,用户可通过HuggingFace模型库加载该LoRA权重,结合Stable Diffusion XL等基座模型快速生成游戏蓝图风格的可视化图像。
背景与挑战
背景概述
在生成式人工智能与游戏设计交叉领域,文本到图像扩散模型正逐步拓展其应用边界,从自然场景生成延伸至虚拟世界中的结构化内容创作。Factorio蓝图可视化数据集(Factorio Blueprint Visualizations Dataset)由独立研究者piebro于2024年前后创建,旨在为自动化工厂模拟游戏《Factorio》的蓝图设计提供视觉化训练资源。该数据集从知名蓝图社区Factorio School收集原始SVG文件,并借助自研工具进行标准化处理,生成矩形化SVG与1024×1024像素的PNG图像。其核心研究问题在于探索如何利用小规模、高专业性的数据集训练出能够理解并生成游戏内复杂逻辑布局的轻量级LoRA模型,从而推动生成式AI在特定领域视觉任务中的实用化进程。该数据集虽规模不足千张,却为游戏模组开发与自动化设计工具的智能化提供了新颖的数据支撑。
当前挑战
该数据集面临的核心挑战在于其领域特异性与规模限制。首先,所解决的领域问题——从文本描述生成游戏内蓝图可视化——要求模型精准理解Factorio中传送带、机械臂、组装机等元素的拓扑关系与空间排列逻辑,这远超通用图像生成任务对物体识别与场景合成的需求,现有扩散模型难以直接迁移。其次,构建过程中遭遇多重困难:原始SVG文件来自众包社区,存在格式不统一、视口尺寸各异及元素冗余等问题,需通过定制化脚本进行矩形化重塑与边界扩展;此外,数据清洗需保留蓝图的功能语义,避免因几何变换破坏其可读性,这对自动化处理流程的鲁棒性提出极高要求;最终,将SVG转换为固定尺寸PNG时,图像缩放策略需权衡细节保留与计算效率,确保训练样本的质量一致性。
常用场景
经典使用场景
该数据集聚焦于《异星工厂》(Factorio)游戏中的蓝图可视化图像,收录了从Factorio School社区采集的蓝图SVG及PNG格式图像。其经典使用场景在于为文本到图像生成模型提供领域特定的训练素材,特别是针对工业自动化布局、物流网络与模块化工厂设计的视觉表征学习。通过将蓝图代码转化为结构化图像,数据集支持模型从抽象符号中理解复杂工程逻辑,从而生成符合游戏物理规则的高保真可视化蓝图。
解决学术问题
该数据集解决了游戏领域内符号化蓝图与视觉语义对齐的学术难题,为研究结构化知识到图像的跨模态映射提供了基准。它填补了自动化设计可视化中缺乏高质量配对数据的空白,使学者能够探索条件生成模型如何从规则驱动的蓝图语法中学习空间布局与资源流动的隐含模式。其意义在于推动程序化内容生成与视觉推理的交叉研究,为游戏AI的自主设计能力奠定数据基础。
衍生相关工作
该数据集衍生了首个面向《异星工厂》蓝图视觉化的Stable Diffusion XL LoRA模型,实现了从蓝图代码到高质量PNG图像的直接生成。相关工作包括利用SVG结构信息优化图像分辨率与长宽比的预处理方法,以及基于viewBox参数调整的居中裁剪技术。此外,该数据集还启发了后续针对其他沙盒游戏(如《我的世界》)建筑蓝图的可视化生成研究,并促进了社区工具链(如factorio-blueprint-visualizer)的标准化改进。
以上内容由遇见数据集搜集并总结生成
二维码
社区交流群
二维码
科研交流群
商业服务