HuggingFace图像-文本数据集构建全流程:从本地图片到Hub流式加载

搞多模态训练或者给图文检索、图像生成做数据准备的时候,第一步往往不是写模型,而是先把图像-文本数据集理顺。接触 HuggingFace 生态的同学应该深有体会:datasets库加载数据集非常方便,但很多人到了“我想把自己手里的图片和 caption 做成一个标准数据集”这一步就开始卡壳——要么不知道目录怎么摆,要么不清楚元数据该存成什么格式,要么传上 Hub 之后发现加载出来全是乱七八糟的路径。

这篇文章就围绕“构建 HuggingFace 图像-文本数据集”这件事,把从本地图片整理、caption 元数据设计、datasets构建、上传 Hub,到最终流式加载的完整链路讲清楚。适合正在做多模态微调、想发布训练数据、或者被各种imagefolder加载问题折磨过的同学参考。我会直接按我自己踩过坑之后沉淀下来的做法来讲,不会绕弯子。

1. 先想清楚:为什么要用 HuggingFace 来承载图像-文本数据

1.1 图像-文本数据的几种存在形态

图像-文本数据最原始的形态就是一堆图片文件加一个映射表。这个映射表可以是 CSV、JSON、JSONL,也可以是数据库里的某张表。图片文件本身没法直接塞进表格里,所以常规做法是“图片路径 + 文本字段”关联。

在这个基础上,常见的管理方式大概有三类。

第一类是纯本地文件夹。图片放在train/、val/这样的目录里,文本信息写在同名的.txt文件或者单独的 CSV 里。好处是直观,坏处是换一台机器、换一个项目,路径全乱,而且别人拿到你的数据时候根本不知道 caption 对应哪张图。

第二类是封装成 tar、zip 之类的压缩包,里面保留目录结构。这个方式在早期爬虫数据里很常见,传输方便,但读取时需要先解压,内存和磁盘开销都很大,而且没法做随机访问。

第三类就是用数据集管理框架来承载,HuggingFacedatasets就是典型代表。它内部会把数据转换成 Arrow 格式,形成内存映射,读取时不会把整个数据集一次性加载到内存里。图片这种“非结构化数据”会被当成一种特殊字段存在,和文本字段一起放进同一个样本里。

从实际使用体验来看,第三种方式最接近我理想中的“数据产品”:有统一的访问接口、有版本、有缓存、有流式加载,还能直接推到 Hub 上共享或者备份。

1.2 我的方案选型:数据集中管理 + Hub 分发

我构建图像-文本数据集时,推荐的链路是:本地原始图片 + 元数据表 → 用datasets库转换成数据集对象 → 本地验证 → push 到 HuggingFace Hub。这套链路的核心思路是“先本地构建,再远程分发”,而不是直接在 Hub 上操作海量小文件。

为什么强调先本地构建?因为图像-文本数据集的构建过程非常容易出错:图片损坏、caption 为空、文件名编码错误、大小写不一致……如果本地没有做完整校验,直接推上去,后面每次加载都会随机报错,排查成本极高。

另外,datasets库在本地构建时会生成一个 Arrow 缓存。这个缓存的好处是:后续反复读取时速度非常快,且不占额外内存。你可以把它理解成给数据做了一次“预编译”。虽然第一次构建会花一点时间,但后面每次使用都会受益。

选 HuggingFace Hub 做分发还有一个重要原因:它自带数据集版本管理和权限控制。你把 v1.0 的数据传上去之后,后面如果想改 caption 或者删掉一批坏图,可以重新生成一个新版本推送,而不是让所有下游使用者面对一个不可追溯的“数据集最终版”。

1.3 一句话理解数据集仓库结构

一个标准的 HuggingFace 图像-文本数据集仓库,从使用者视角看,至少要包含三样东西:

  • 数据本身(通常是一个或多个 Arrow/Parquet 文件,或者imagefolder结构)
  • 数据集卡片README.md(说明数据集是什么、怎么用、字段含义)
  • 元信息配置(比如数据集名称、许可证,以及加载脚本可能需要的一些参数)

从内部视角看,datasets加载图片时会走一条固定管线:读取路径 → 解码成PIL.Image或二进制字节 → 封装成数据集样本。这个“图片即路径”的设计非常关键,因为数据集文件里真正保存的往往不是图片的二进制数据,而是图像文件在仓库中的路径或字节偏移量。加载时才按需解码。

理解了这一点,你就明白为什么有人把数据传上去之后,拉下来发现image字段显示的是None或者变成了dict——多半是路径没有正确匹配上,或者加载方式选错了。

2. 动手前的准备:数据、目录与元数据结构设计

2.1 图片资源的组织规范

图片组织方式看似简单,但实际影响很大。我最开始犯过一个错误:把图片按来源子目录放得特别深,比如data/sourceA/2024/01/images/xxx.jpg,结果构建数据集时路径拼接全部出问题。后来学乖了,统一成扁平目录,图片全部放在同一层,文件名用稳定的 ID 作为前缀。

推荐的组织方式如下:

my_image_text_dataset/ ├── images/ │ ├── 000001.jpg │ ├── 000002.jpg │ ├── 000003.jpg │ └── ... ├── metadata.csv └── README.md

images/目录只放图片文件,metadata 单独放。文件名建议用定长数字 ID,比如000001.jpg而不是1.jpg。原因是排序稳定,而且在构建 JSON/CSV 时不容易出现1.jpg和10.jpg混在一起的问题。

关于图片格式,我建议统一成 JPEG 或 WebP。不是说 PNG 不能用,而是 PNG 在大量数据场景下体积偏大,解码速度也慢一些。如果原图是透明背景,需要先做白底合成,避免后期训练时出现奇怪的黑边。

2.2 caption 等元数据列的设计要点

metadata.csv 是整个数据集的核心。常见的列包括:

列名类型说明
idstring/int样本唯一标识,最好与图片文件名一致
image_pathstring图片文件的相对路径或绝对路径
captionstring图像对应的文本描述
sourcestring可选,标记数据来源
splitstring可选,train/val/test 划分
width/heightint可选,图片尺寸,提前记录可加速后续处理

这里有三个细节需要注意。

第一,image_path最好存相对路径,而不是绝对路径。绝对路径在本地构建时没问题,但数据集一旦上传到 Hub,别人加载时路径就失效了。相对路径配合datasets的Image特性,可以自动匹配仓库里的文件。

第二,caption列不要留空。如果确实没有文本信息,可以填一个特殊占位符,但最好在构建前过滤掉。空字符串在训练时会导致 loss 异常,很多时候看起来不是数据问题,实际上就是 caption 空值惹的祸。

第三,如果需要做多语言或多种文本描述,不要塞在一个列里用分隔符硬拆。合理的做法是存成 JSON 字符串,比如{"en": "...", "zh": "..."},或者干脆一个样本多行。数据集的列结构越规整,后续切换任务时越灵活。

2.3 质量清洗的几条硬经验

别跳过数据清洗,这是整个流程里最值得花时间的环节。我总结了几条硬经验,都是吃一堑长一智换来的。

  • 图片分辨率过滤:低于某个阈值(比如 512x512 用于训练低分辨率模型,或者低于 256x256)的图片直接剔除。低分辨率小图会对训练稳定性造成明显影响。
  • 宽高比极端过滤:比如长宽比超过 3:1 的图片,很多模型不擅长处理,建议要么过滤,要么提前做裁剪方案。
  • caption 语言一致性检查:训练中文图文模型就确保 caption 是中文,训练英文模型就统一英文。混着来效果会很怪。
  • 去重:图片内容层面的重复比文件名重复更隐蔽。可以用感知哈希(perceptual hash)做粗排去重,至少把完全相同的图片去掉。
  • 敏感内容筛查:涉及暴力、色情、仇恨言论等不合规内容,坚决清理。这点无论如何不能省,尤其发布到公共 Hub 之前,一旦被标记,整个数据集会被封禁,后期申诉很麻烦。

清洗完数据之后,把统计信息写进 README,比如样本总数、图片分辨率分布、caption 长度分布。这些看起来琐碎,但在别人试用你数据集的时候,能省掉大量沟通成本。

3. 核心实操:从本地数据到 HuggingFace 数据集

3.1 用 datasets 库构建 Arrow 缓存

实际构建推荐直接写一个 Python 脚本,用datasets库完成。先把依赖装好:

pip install datasets pillow pandas

然后写构建脚本。假设 metadata.csv 已经有image_path和caption两列,最简单的构建方式是用load_dataset配合图片目录:

from datasets import load_dataset # 如果 images 目录旁边有 metadata.csv,并且 metadata.csv 里有 image_path 列 dataset = load_dataset("imagefolder", data_dir=".", split="train") print(dataset[0])

imagefolder是datasets内置的一个特殊加载器,专门处理“图片 + 元数据”结构。它会自动把目录下的图片文件与 metadata 里的信息关联起来。需要注意,这里对 metadata 文件名有要求:必须是metadata.csv或metadata.jsonl,放在data_dir下。

如果你希望更精细地控制样本内容,可以用from_dict或from_pandas手动构建:

from datasets import Dataset, Features, Image, Value import pandas as pd df = pd.read_csv("metadata.csv") # 注意:Feature 里声明 image_path 是 Image 类型 features = Features({ "id": Value("string"), "image_path": Image(), "caption": Value("string"), }) dataset = Dataset.from_pandas(df, features=features, preserve_index=False)

这里最关键的代码是把image_path的类型声明为Image()。如果不声明,datasets只会把它当成普通字符串,加载时不会解码图片,后续使用dataset[i]["image"]拿到的就是路径而不是图像对象。

构建完成后,建议马上做一次抽样检查:

for i in range(3): sample = dataset[i] print(sample["id"], sample["image"].size, sample["caption"][:50])

sample["image"]此时应该是一个PIL.Image对象,打印size能看到宽高。如果这里就报错,说明图片路径有问题,需要回到上一步排查。

3.2 生成数据集卡片与 README

数据集不写 README 就像代码不写注释,自己用没问题,一旦分享或隔几个月回来看,就全靠猜了。README 里需要包含的信息至少有以下几项:

  • 数据集名称和一句话简介
  • 样本总量、字段说明(一个表格列出来)
  • 数据来源与 license
  • 构建脚本的说明,最好把代码也贴进去
  • 已知的局限或注意事项(比如某个子集有重复噪声)

HuggingFace Hub 的数据集卡片用的是 Markdown 格式,最上面可以放 YAML 元信息:

--- license: mit task_categories: - image-text-to-text language: - zh tags: - image-text pretty_name: My Image Text Dataset ---

注意task_categories和language这些字段不是强制要求,但填了之后,平台的搜索和过滤功能才能正常工作。如果不填,数据集也能上传,只是别人很难通过标签找到你。

3.3 上传 Hub 与版本管理

上传之前需要先登录:

huggingface-cli login

按提示输入 Access Token。个人使用建议创建一个具备write权限的 token,不要用账号密码登录。

登录之后,可以用 huggingface_hub 库直接创建仓库并上传。这里推荐用push_to_hub方法,因为可以顺便传数据集卡片:

dataset.push_to_hub("your_name/my-image-text-dataset", private=False)

如果你是先把数据集构建成本地目录,再手动上传,也可以用:

huggingface-cli upload your_name/my-image-text-dataset ./my_image_text_dataset .

这个命令会把本地目录上传到 Hub 的仓库根目录。这里要注意,小文件众多时直接上传可能很慢。建议先把图片打包成一个大文件,比如 tar 包,或者在构建数据集时采用流式写入,避免一次 push 几万个小文件。

版本管理方面,推荐在 README 或数据集的version字段里记录版本号。每次修改数据后,不要覆盖旧版本,而是新建一个版本分支或者标注 v2、v3。这样下游项目使用哪个版本一目了然。

如果数据集比较大,建议先把数据推到私有仓库,然后在本地做一轮完整的加载测试,确认没有任何问题后再改为公开。改公开的方法是在仓库设置里修改可见性,不需要重新上传。

3.4 从 Hub 加载与流式使用

构建和上传都是为了最终能被便捷地加载。从 Hub 加载图像-文本数据集,最简单的用法就是:

from datasets import load_dataset dataset = load_dataset("your_name/my-image-text-dataset", split="train") print(len(dataset)) print(dataset[0]["image"])

这时dataset对象会自动下载数据文件到本地缓存并建立索引。第一次加载会慢一些,之后基本都是毫秒级。

如果你的数据集非常大,比如几十万张图,或者你只是想预览一部分样本,不要用普通load_dataset,改用流式模式:

streamed_dataset = load_dataset( "your_name/my-image-text-dataset", split="train", streaming=True, ) for sample in streamed_dataset: print(sample["id"], sample["caption"]) # 记得加 break,否则会一直读下去 break

流式模式不会把整个数据集下载到本地,而是按批次读取,内存占用极小。代价是没法直接len()和通过索引随机访问,因为底层是迭代器。需要随机访问的时候,还是得老老实实下载完整数据。

还有一点,很多多模态训练框架现在支持直接从 Hub 读取imagefolder数据集。如果你传给框架的路径是your_name/my-image-text-dataset,框架内部会自动识别并加载,不需要手动写数据加载器。

4. 常见问题与排查技巧实录

4.1 上传中断与断点续传

推大文件到 Hub 时,网络波动几乎是必然的。push_to_hub失败之后重试,经常遇到“已经传了一半,又从零开始”的情况。

解决办法是换用huggingface_hub的上传 API,并开启resume功能:

from huggingface_hub import HfApi api = HfApi() api.upload_folder( repo_id="your_name/my-image-text-dataset", folder_path="./my_image_text_dataset", repo_type="dataset", resume=True, )

upload_folder对目录里的文件会逐个上传,并且支持断点续传。如果你是用命令行工具,也可以加--resume参数:

huggingface-cli upload your_name/my-image-text-dataset ./my_image_text_dataset . --resume

另外,上传时不建议一次性把整个数据集目录往里丢,而是先上传数据文件,再补 README,再更新卡片。这样即使中途失败,也不影响已经传好的部分。

4.2 图片解码失败与坏图问题

坏图是构建图像数据集的头号敌人。表面上浏览目录时所有文件都有后缀名,但其中可能混着只有几百字节的损坏文件,或者扩展名是.jpg、内容实际是 PNG 的伪装文件。加载时会出现PIL.UnidentifiedImageError,或者报image file is truncated。

一个比较有效的办法是先用脚本把所有图片完整解码一遍,把无法解码的文件挑出来:

from PIL import Image from pathlib import Path for path in Path("images").glob("*"): try: with Image.open(path) as img: img.load() except Exception as e: print(f"bad image: {path}, error: {e}") # 把坏图移到 quarantine 目录,或者记录到一个文件里

不要只相信Image.open不报错就算完,Image.open是惰性加载,必须调用img.load()真正解码像素,才能发现 truncation 问题。

处理截断图片还有一种补救方式:用 PIL 的ImageFile.LOAD_TRUNCATED_IMAGES = True可以容忍某些截断,但我不建议在训练数据里这么干。宁可丢掉也不要让模型去吃脏数据。

4.3 caption 缺失与列类型混乱

构建时经常遇到两个隐蔽问题。

第一是 CSV 里的 caption 列有 BOM 头,或者某些单元格包含换行符,导致datasets解析时把一列内容拆成多行。解决方法是读取 CSV 时明确指定编码和引擎:

df = pd.read_csv("metadata.csv", encoding="utf-8-sig", engine="python")

第二是 caption 里混入了数字类型。比如 CSV 中某一行 caption 写的是12345,pandas 会默认把它读成 int,最终数据集里caption字段类型就不一致了。所以在from_pandas构建时,一定要显式声明 Features,把 caption 强制设为Value("string"),把 image 字段设为Image(),避免类型推断带来的坑。

4.4 流式加载中的乱序与性能

流式加载时,很多人会误以为“加载顺序就是文件里的顺序”。实际上在数据经过多进程预取和 shuffle 之后,顺序不一定保持。如果你对样本顺序有要求,比如需要严格按id排序后切分训练集和验证集,就不要用 streaming 模式,直接把数据集完整下载下来再排序。

还有性能问题:图像解码比文本加载慢得多。即使datasets内部用了多进程缓存,在流式读取时瓶颈通常还是 CPU 解码。如果你只是做快速验证,可以对image字段不做完整解码,只读取原始字节:

from datasets import Features, Image # 构建时如果用 Image(decode=False),图片字段会保存二进制 bytes features = Features({ "image": Image(decode=False), "caption": Value("string"), })

这样加载速度会明显提升,适合只想读取 caption 或者只统计图片大小的场景。

4.5 数据集审核与可见性设置

提交到公共 Hub 的数据集会进入安全审核流程。如果你的数据集包含大量图片,审核可能需要排队一段时间。如果被判定为违规或者缺少许可证说明,仓库会被限制为私有或直接下架。

我的建议是:

  • 上传前先确认所有图片都符合平台内容政策,清除任何可疑内容。
  • README 里写清楚数据来源、版权说明、使用条款。拿不准的 license 不要随便写mit,写other并在卡片里补充说明更稳妥。
  • 不要把 token 或者任何敏感路径信息写进 metadata,这也是很多新手容易犯的操作失误。
  • 不公开的数据集保持在私有状态即可,私有数据集同样可以使用load_dataset加载,只是需要登录且有权限。

在平台上构建图像-文本数据集,核心并不是“把文件传上去”这一个动作,而是从数据整理、元数据设计、质量清洗到加载验证的整套流程。我个人在做过几个图文数据集之后最大的体会是:元数据设计决定了数据集能用多久,质量清洗决定了模型训练顺不顺畅,而 README 决定了一个数据集能不能被其他人顺利地复用。这套流程跑顺之后,后续再有新数据进来,基本就是替换图片、改改 CSV、重新 push 一遍的事,熟练之后一两个小时就能搞定一版干净的数据集。

相关新闻

Excel基础知识题库刷题指南:从背答案到能上手

Excel基础知识题库刷题指南:从背答案到能上手

简介:EXCEL基础知识题库.doc 是一份面向 Excel 初学者、计算机基础备考者及办公软件培训学员的题库资料,帮助解决知识点零散、缺少系统练习和自测抓手的问题。题库覆盖单元格操作、公式与函数、图表与数据分析、工作簿与工作表管理、数据处理和格式设置等…

2026/10/20 18:20:00 阅读更多 →
3-1-Node.js环境搭建及镜像加速

3-1-Node.js环境搭建及镜像加速

别让环境问题拖垮开发效率:Node.js 与 npm 的镜像加速配置,才是前端工程化的第一道门槛 项目刚启动,同事的电脑却卡在 npm install 上,进度条纹丝不动——这不只是网络问题,而是整个开发链路的起点被卡住了。 一、从卡住的 npm install 开始 项目刚初始化,同事的电脑卡在…

2026/10/20 18:20:00 阅读更多 →
从Demo到生产:大模型应用开发实战指南

从Demo到生产:大模型应用开发实战指南

你花一个下午调通了大模型API,做一个智能客服Demo,发到工作群里,大家纷纷点赞,说你牛逼。然后呢?然后就没有然后了。这是太多刚开始接触大模型应用开发的人撞过的同一堵墙——Demo能跑,不代表它能在生产环境…

2026/10/20 18:19:59 阅读更多 →

最新新闻

CANFD记录仪如何破解新能源车偶发故障排查难题

CANFD记录仪如何破解新能源车偶发故障排查难题

1. 先从一次海外售后支援说起:偶发故障为什么难缠做国产新能源出海配套这几年,我接过最多的需求不是“帮我们做个新功能”,而是“帮我们查一个偶发故障”。这类故障有个共同点:客户报障时描述得很清楚——没动力、亮故障灯、偶发抖…

2026/10/20 19:02:01 阅读更多 →
REA房产经纪人全攻略:从带看谈单到风险控制,手把手教你站稳这行

REA房产经纪人全攻略:从带看谈单到风险控制,手把手教你站稳这行

REA,三个字母,如果不在这一行里泡过几年,可能很多人会以为是某个软件版本号或者游戏职业缩写,但在我们这行,它就是"房产经纪人"的标准代号。我见过不少人抱着"卖房子不就是陪客户看看房"的想法入行…

2026/10/20 19:02:01 阅读更多 →
消息传递接口死锁检测:基于队列的模拟算法与工程实现解析

消息传递接口死锁检测:基于队列的模拟算法与工程实现解析

1. 题目到底在说什么 这道题,是最短路径问题的一个经典变体,题意很直白,但实现起来有不少小坑。我们需要在一个无向图中,给定起点,找到所有其他点到起点的最短路径长度,并且要求输出这些路径本身&#xff0…

2026/10/20 19:02:01 阅读更多 →
非定常气动力与颤振计算:偶极子格网法和p-k法工程实践

非定常气动力与颤振计算:偶极子格网法和p-k法工程实践

简介:压缩包“飞行器机翼非定常气动力计算及颤振计算程序.7z”是一份面向航空航天专业研究生、工程师及高年级本科生的轻量级MATLAB代码资源,重点解决飞行器机翼在非定常流动环境下的气动力响应计算与颤振边界预测问题。资源包内仅含1个程序文件&#xf…

2026/10/20 19:02:01 阅读更多 →
深入理解.NET Async/Await原理:状态机、同步上下文与性能开销

深入理解.NET Async/Await原理:状态机、同步上下文与性能开销

“每日一题:.NET中的Async/Await原理是什么”——这题我前后被面试官问过至少三次,也在组内分享时讲过两轮。我越来越觉得,这个题目最值钱的地方不在“语法长什么样”,而在于它能把线程模型、编译器机制、上下文调度和性能开销串成…

2026/10/20 19:02:01 阅读更多 →
字节开源Agent手册:可运行源码拆解调度循环与工具注册

字节开源Agent手册:可运行源码拆解调度循环与工具注册

简介:这份资源是字节跳动开源的Agent实践手册配套可运行源码包,面向企业内部业务与技术团队、AI应用开发者及希望将智能体技术落地到实际业务中的技术人员。手册系统总结了字节在飞书、抖音、教育等多条业务线落地Agent的方法、工具与规范,涵…

2026/10/20 19:01:00 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →