Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
分步指南:从本地路径加载 HuggingFace ControlNet 数据集_创想鸟

分步指南:从本地路径加载 HuggingFace ControlNet 数据集

分步指南:从本地路径加载 huggingface controlnet 数据集

huggingface 提供了不同的选项来加载数据集。为 controlnet 加载本地图像数据集时,重要的是要考虑数据集结构、文件路径以及与 huggingface 数据处理工具的兼容性等方面。

假设您已经创建了调节图像并且具有以下文件夹结构:

my_dataset/├── readme.md└──data/   ├── captions.jsonl   ├── conditioning_images   │   ├── 00001.jpg   │   └── 00002.jpg   └── images       ├── 00001.jpg       └── 00002.jpg

在此结构中,conditioning_images 文件夹存储您的调节图像,而 images 文件夹包含 controlnet 的目标图像。 captions.jsonl 文件包含链接到这些图像的标题。

{"image": "images/00001.jpg", "text": "this is the caption of the first image."}{"image": "images/00002.jpg", "text": "this is the caption of the second image."}

注意字幕文件(或下面的元数据文件)也可以是csv文件。但是,如果您选择 csv,请注意值分隔符,因为文本可能包含逗号,这可能会导致解析问题。

创建元数据文件

元数据文件是提供有关数据集的附加信息的好方法。它可以包含各种类型的数据,例如边界框、类别、文本,或者在我们的例子中,是条件图像的路径。

让我们创建metadata.jsonl 文件:

import jsonfrom pathlib import pathdef create_metadata(data_dir, output_file):    metadata = []    try:        with open(f"{data_dir}/captions.jsonl", "r") as f:            for line in f:                data = json.loads(line)                file_name = path(data["image"]).name                metadata.append(                    {                        "image": data["image"],                        "conditioning_image": f"conditioning_images/{file_name}",                        "text": data["text"],                    }                )        with open(f"{data_dir}/metadata.jsonl", "w") as f:            for line in metadata:                f.write(json.dumps(line) + "n")    except (filenotfounderror, json.jsondecodeerror) as e:        print(f"error processing data: {e}")# example usage:data_dir = "my_dataset/data"create_metadata(data_dir)

这将创建一个metadata.jsonl,其中包含controlnet 所需的所有信息。文件中的每一行对应一个图像、一个条件图像和相关的文本标题。

{"image": "images/00001.jpg", "conditioning_image": "conditioning_images/00001.jpg", "text": "this is the caption of the first image."}{"image": "images/00002.jpg", "conditioning_image": "conditioning_images/00002.jpg", "text": "this is the caption of the second image."}

创建metadata.jsonl 文件后,您的文件结构应如下所示:

my_dataset/├── readme.md└──data/   ├── captions.jsonl   ├── metadata.jsonl   ├── conditioning_images   │   ├── 00001.jpg   │   └── 00002.jpg   └── images       ├── 00001.jpg       └── 00002.jpg

创建加载脚本

最后,我们必须创建一个加载脚本来处理metadata.jsonl 文件中的所有数据。该脚本应与数据集位于同一目录中,并且应具有相同的名称。

你的目录结构应该是这样的:

my_dataset/├── readme.md├── my_dataset.py└──data/   ├── captions.jsonl   ├── metadata.jsonl   ├── conditioning_images   │   ├── 00001.jpg   │   └── 00002.jpg   └── images       ├── 00001.jpg       └── 00002.jpg

对于脚本,我们需要实现一个继承自 generatorbasedbuilder 的类,并包含以下三个方法:

_info 存储有关您的数据集的信息。_split_generators 定义分割。_generate_examples 为每个分割生成图像和标签。

import datasetsclass mydataset(datasets.generatorbasedbuilder):    def _info(self):    def _split_generators(self, dl_manager):    def _generate_examples(self, metadata_path, images_dir, conditioning_images_dir):

添加数据集元数据

有很多选项可用于指定有关数据集的信息,但最重要的是:

features 指定数据集列类型。图像是图像特征conditioning_image 是一个图像特征text 是一个字符串值指定输入特征的监督键。

# global variables_description = "todo"_homepage = "todo"_license = "todo"_citation = "todo"_features = datasets.features(    {        "image": datasets.image(),        "conditioning_image": datasets.image(),        "text": datasets.value("string"),    },)

正如您在上面看到的,我已将一些变量设置为“todo”。这些选项仅供参考,不会影响加载。

def _info(self):    return datasets.datasetinfo(                description=_description,                features=_features,                supervised_keys=("conditioning_image", "text"),                homepage=_homepage,                license=_license,                citation=_citation,            )

定义数据集分割

dl_manager 用于从 huggingface 存储库下载数据集,但这里我们使用它来获取在 load_dataset 函数中传递的数据目录路径。

这里我们定义数据的本地路径

metadata_pathmetadata.jsonl 文件的路径images_dir 图像的路径conditioning_images_dir 调节图像的路径

注意
如果您为文件夹结构选择了不同的名称,则可能需要调整metadata_path、images_dir 和conditioning_images_dir 变量。

def _split_generators(self, dl_manager):    base_path = path(dl_manager._base_path).resolve()    metadata_path = base_path / "data" / "metadata.jsonl"    images_dir = base_path / "data"    conditioning_images_dir = base_path / "data"    return [        datasets.splitgenerator(            name=datasets.split.train,            # these kwargs will be passed to _generate_examples            gen_kwargs={                "metadata_path": str(metadata_path),                "images_dir": str(images_dir),                "conditioning_images_dir": str(conditioning_images_dir),            },        ),    ]

最后一个方法加载 matadata.jsonl 文件并生成图像及其关联的调节图像和文本。

@staticmethoddef load_jsonl(path):    """generator to load jsonl file."""    with open(path, "r") as f:        for line in f:            yield json.loads(line)def _generate_examples(self, metadata_path, images_dir, conditioning_images_dir):    for row in self.load_jsonl(metadata_path):        text = row["text"]        image_path = row["image"]        image_path = os.path.join(images_dir, image_path)        image = open(image_path, "rb").read()        conditioning_image_path = row["conditioning_image"]        conditioning_image_path = os.path.join(            conditioning_images_dir, row["conditioning_image"]        )        conditioning_image = open(conditioning_image_path, "rb").read()        yield row["image"], {            "text": text,            "image": {                "path": image_path,                "bytes": image,            },            "conditioning_image": {                "path": conditioning_image_path,                "bytes": conditioning_image,            },        }

按照以下步骤,您可以从本地路径加载 controlnet 数据集。

# with the loading script, we can load the datasetds = load_dataset("my_dataset")# (optional)# pass trust_remote_code=true to avoid the warning about custom code# ds = load_dataset("my_dataset", trust_remote_code=true)

如果您有任何疑问,请随时在下面留言。

加载脚本的完整代码:

import osimport jsonimport datasetsfrom pathlib import Path_VERSION = datasets.Version("0.0.2")_DESCRIPTION = "TODO"_HOMEPAGE = "TODO"_LICENSE = "TODO"_CITATION = "TODO"_FEATURES = datasets.Features(    {        "image": datasets.Image(),        "conditioning_image": datasets.Image(),        "text": datasets.Value("string"),    },)_DEFAULT_CONFIG = datasets.BuilderConfig(name="default", version=_VERSION)class MyDataset(datasets.GeneratorBasedBuilder):    BUILDER_CONFIGS = [_DEFAULT_CONFIG]    DEFAULT_CONFIG_NAME = "default"    def _info(self):        return datasets.DatasetInfo(            description=_DESCRIPTION,            features=_FEATURES,            supervised_keys=("conditioning_image", "text"),            homepage=_HOMEPAGE,            license=_LICENSE,            citation=_CITATION,        )    def _split_generators(self, dl_manager):        base_path = Path(dl_manager._base_path)        metadata_path = base_path / "data" / "metadata.jsonl"        images_dir = base_path / "data"        conditioning_images_dir = base_path / "data"        return [            datasets.SplitGenerator(                name=datasets.Split.TRAIN,                # These kwargs will be passed to _generate_examples                gen_kwargs={                    "metadata_path": metadata_path,                    "images_dir": images_dir,                    "conditioning_images_dir": conditioning_images_dir,                },            ),        ]    @staticmethod    def load_jsonl(path):        """Generator to load jsonl file."""        with open(path, "r") as f:            for line in f:                yield json.loads(line)    def _generate_examples(self, metadata_path, images_dir, conditioning_images_dir):        for row in self.load_jsonl(metadata_path):            text = row["text"]            image_path = row["image"]            image_path = os.path.join(images_dir, image_path)            image = open(image_path, "rb").read()            conditioning_image_path = row["conditioning_image"]            conditioning_image_path = os.path.join(                conditioning_images_dir, row["conditioning_image"]            )            conditioning_image = open(conditioning_image_path, "rb").read()            yield row["image"], {                "text": text,                "image": {                    "path": image_path,                    "bytes": image,                },                "conditioning_image": {                    "path": conditioning_image_path,                    "bytes": conditioning_image,                },            }

以上就是分步指南:从本地路径加载 HuggingFace ControlNet 数据集的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1349040.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
如何刮
上一篇 2025年12月13日 12:31:51
streamlit侧边菜单栏导航
下一篇 2025年12月13日 12:32:08

相关推荐

  • 按照多个字段的先后顺序进行分组

    按照多个字段的先后顺序进行分组按照多个字段的先后顺序进行分组按照多个字段的先后顺序进行分组按照多个字段的先后顺序进行分组

    groupby多个字段先后顺序,需要具体代码示例 在数据处理和分析中,常常需要对数据进行分组,并按照多个字段的先后顺序进行分组操作。今天,我们将介绍如何使用Python中的pandas库来实现多字段的groupby操作,并提供具体的代码示例。 在开始之前,我们需要安装并导入pandas库,以及加载我…

    2026年9月27日 • 用户投稿
    000
  • MySQL bin目录中存放的文件有哪些功能?

    MySQL bin目录中存放的文件有哪些功能?MySQL bin目录中存放的文件有哪些功能?MySQL bin目录中存放的文件有哪些功能?MySQL bin目录中存放的文件有哪些功能?

    MySQL作为一款常用的数据库管理系统,其bin目录是存放一些重要的可执行文件和脚本的地方。这些文件包含了一些关键的功能,下面将具体介绍MySQL bin目录中存放的文件以及它们的功能,并提供相应的代码示例。 mysql:这是MySQL的客户端工具,用于连接到MySQL服务器并与之交互。可以执行SQ…

    2026年9月27日 • 用户投稿
    100
  • MySQL bin目录下的文件详解及作用介绍

    MySQL bin目录下的文件详解及作用介绍MySQL bin目录下的文件详解及作用介绍MySQL bin目录下的文件详解及作用介绍MySQL bin目录下的文件详解及作用介绍

    MySQL bin目录下的文件详解及作用介绍 MySQL是一种流行的关系型数据库管理系统,其bin目录下存储着许多重要的可执行文件和脚本。本文将详细介绍MySQL bin目录下的一些主要文件及其作用,同时提供代码示例帮助读者更好地理解。 mysql:mysql是MySQL客户端命令行工具,用于与My…

    2026年9月27日 • 用户投稿
    000
  • 用豆包AI生成Python数据挖掘代码

    用豆包AI生成Python数据挖掘代码用豆包AI生成Python数据挖掘代码用豆包AI生成Python数据挖掘代码用豆包AI生成Python数据挖掘代码

    想用豆包ai生成python数据挖掘代码的关键在于明确任务目标和数据结构。1. 首先明确数据挖掘任务类型,如分类、聚类或回归,并具体描述需求,例如“根据用户年龄、消费金额和购买频率做客户分群”。2. 接着提供清晰的数据格式与来源,比如说明csv文件中的字段信息,以便ai进行数据预处理和建模。3. 要…

    2026年9月25日 • 用户投稿
    1000
  • 如何利用Debian Apache日志提升网站性能

    如何利用Debian Apache日志提升网站性能如何利用Debian Apache日志提升网站性能如何利用Debian Apache日志提升网站性能如何利用Debian Apache日志提升网站性能

    本文将阐述如何通过分析Debian系统下的Apache日志来提升网站性能。 一、日志分析基础 Apache日志记录了所有HTTP请求的详细信息,包括IP地址、时间戳、请求URL、HTTP方法和响应代码等。在Debian系统中,这些日志通常位于/var/log/apache2/access.log和/…

    2026年9月25日 • 用户投稿
    100
  • RapidMiner的AI混合工具如何操作?快速实现数据挖掘的实用方法

    RapidMiner通过可视化流程整合数据导入、清洗、特征工程、模型训练与部署,支持文本挖掘、时间序列分析及模型优化,可扩展自定义代码实现AI混合分析。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ RapidMiner的AI混合工具,简单…

    2026年9月23日
    500
  • MySQL中如何导入和导出数据_常用格式有哪些?

    MySQL中如何导入和导出数据_常用格式有哪些?MySQL中如何导入和导出数据_常用格式有哪些?MySQL中如何导入和导出数据_常用格式有哪些?MySQL中如何导入和导出数据_常用格式有哪些?

    mysql中导入导出数据常用方式有三种:一是使用mysqldump导出为sql文件,适合整库或单表备份迁移,命令如mysqldump -u root -p mydb > /backup/mydb.sql;二是通过select into outfile导出csv文件,适用于数据分析与excel处…

    2026年9月22日 • 用户投稿
    400
  • 怎么全选VSCode多个光标_VSCode多光标操作与批量选择文本教程

    VSCode中高效创建多光标的方法包括:Alt+Click手动添加光标,适用于不规则位置;Ctrl+Alt+方向键垂直添加光标,适合连续多行操作;Ctrl+D逐个选择匹配项,精准控制选择范围;Ctrl+Shift+L一次性选择所有匹配项,实现全局批量修改。结合查找替换和列选择模式可进一步提升编辑效率…

    2026年9月21日
    100
  • mysql常用存储引擎有哪些

    InnoDB是现代MySQL应用的首选存储引擎,因其支持事务(ACID)、行级锁、外键约束、崩溃恢复和MVCC,适用于高并发、数据完整性要求高的OLTP场景;MyISAM虽读取快但仅支持表级锁且无事务和外键,适用于读多写少的简单场景,已逐渐被淘汰;Memory引擎将数据存于内存,速度快但易失,适合临…

    2026年9月21日
    000
  • 大数据量下的批量导入/导出优化

    在大数据环境下优化批量导入/导出的方法包括:1. 使用批处理技术分批导入/导出数据,减少系统资源压力;2. 采用数据流技术如apache kafka进行实时处理,降低内存占用;3. 利用并行处理技术分配任务到多个处理器或节点,提高处理速度;4. 通过性能监控和调优识别并解决瓶颈点,以提升整体效率。 …

    2026年9月21日
    400
  • Linux怎么监控特定进程的运行状态

    Linux怎么监控特定进程的运行状态Linux怎么监控特定进程的运行状态Linux怎么监控特定进程的运行状态Linux怎么监控特定进程的运行状态

    监控Linux进程需综合使用ps、top、htop、pgrep和systemctl等工具,结合资源占用、进程状态、日志输出和进程数量判断是否异常,并通过systemd的Restart机制或看门狗脚本实现自动重启,同时利用journalctl、sar、atop及Prometheus+Grafana等方…

    2026年9月21日 • 用户投稿
    100
  • AI推文助手如何设置发布时间 AI推文助手的智能定时发布技巧

    AI推文助手如何设置发布时间 AI推文助手的智能定时发布技巧AI推文助手如何设置发布时间 AI推文助手的智能定时发布技巧AI推文助手如何设置发布时间 AI推文助手的智能定时发布技巧AI推文助手如何设置发布时间 AI推文助手的智能定时发布技巧

    一、使用AI推文助手的智能推荐功能,基于粉丝互动数据选择最佳发布时间;二、手动设定精确发布时间以精准触达特定受众;三、通过日程管理批量导入多条推文的发布计划,提升运营效率;四、开启多时区同步功能,实现跨区域受众在本地黄金时段接收内容,最大化传播效果。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜…

    2026年9月12日 • 用户投稿
    200
  • windows怎么查看并导出事件日志_Windows事件日志查看与导出方法

    通过事件查看器和命令行工具可查看、筛选并导出Windows日志。首先使用eventvwr.msc打开事件查看器,浏览系统、应用程序和安全日志;其次通过筛选功能按级别、ID和时间定位事件;然后右键日志类别选择“将所有事件保存为”以导出为.evtx、CSV等格式;最后利用wevtutil或PowerSh…

    2026年9月12日
    000
  • 如何在mysql中迁移临时表数据

    临时表数据迁移需在会话结束前将数据转存至持久表,常用方法包括:1. 用INSERT INTO…SELECT将临时表数据插入现有普通表;2. 用CREATE TABLE…AS SELECT基于临时表创建新表(无约束);3. 跨会话迁移时需通过中间表或文件中转;4. 可导出为CS…

    2026年9月11日
    200
  • 如何在Gremlin-Java中动态插入未知数量的顶点

    本文探讨了在Gremlin-Java中动态构建查询以插入未知数量顶点的方法。我们将介绍两种主要的后端无关策略:通过迭代构建Gremlin遍历以及利用`inject().unfold()`进行批量数据处理。此外,还将简要提及TinkerPop 3.6引入的`mergeV()`步,为执行更高效的upse…

    2026年9月11日
    300
  • Linux怎么给用户添加多个附属组

    Linux怎么给用户添加多个附属组Linux怎么给用户添加多个附属组Linux怎么给用户添加多个附属组Linux怎么给用户添加多个附属组

    给用户添加多个附属组需使用usermod -aG命令,避免遗漏-a导致原有组被覆盖;添加后用户需重新登录或使用newgrp命令才能获得新权限;批量操作可通过脚本循环处理用户列表;管理时应遵循最小权限原则,使用描述性组名,定期审计并自动化配置以确保安全与效率。 在Linux系统里,给用户添加多个附属组…

    2026年9月10日 • 用户投稿
    100
  • Laravel任务链?任务链怎样定义使用?

    Laravel任务链通过Bus::chain()将多个队列任务按序执行,确保步骤间依赖与统一错误处理,适用于需顺序执行且具原子性的多步流程,如图片处理或订单创建。 Laravel任务链是Laravel队列系统中的一个强大特性,它允许你将多个队列任务(Jobs)串联起来,形成一个有序的执行序列。简单来…

    2026年9月10日
    100
  • 个人抖店怎么绑定抖音?抖店怎么绑定主账号

    随着抖音平台的持续火爆,越来越多的用户开始涉足抖音电商领域,而抖店作为抖音官方推出的电商平台,已经成为众多商家和消费者的重要选择。那么,如何将个人抖店与抖音账号进行绑定呢?下面将为您详细介绍相关操作流程。 一、抖店绑定抖音的重要性 1. 提升曝光率:通过绑定抖音账号,店铺将获得更多的展示机会,有助于…

    2026年9月10日
    100
  • 淘宝开店上架宝贝的步骤是什么?如何批量上架宝贝?淘宝开店上架宝贝全流程解析:从单件发布到批量操作!

    刚开淘宝店不知道怎么上架商品?数据显示,掌握正确的上架流程能让新品流量飙升50%!本文将一步步带你实操:单个商品发布的7大核心环节;两种快速批量上传技巧;最佳上架时间段推荐。更有内部经验分享:如何通过完善属性提升搜索排名,以及批量操作时规避系统报错的实用方法。某女装店铺应用这些策略后,3个月内自然访…

    2026年9月9日
    500
  • 怎么用AI做市场分析_Bard商业数据分析与报告生成方法

    怎么用AI做市场分析_Bard商业数据分析与报告生成方法怎么用AI做市场分析_Bard商业数据分析与报告生成方法怎么用AI做市场分析_Bard商业数据分析与报告生成方法怎么用AI做市场分析_Bard商业数据分析与报告生成方法

    AI能快速处理海量数据并发现隐藏趋势,其核心在于通过精准提示词与迭代优化实现人机协作,结合AI的数据处理优势与人类的战略思维,生成兼具效率与深度的市场分析报告。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 利用AI进行市场分析,特别是借助…

    2026年9月3日 • 用户投稿
    100

发表回复

登录后才能评论
关注微信