Skip to content
阅读进度0%
Multimodal待复核

数据工程

LAION-5B 清洗、ShareGPT4V 合成与动态分辨率处理

我的学习与文章检索 →
学习记录仅保存在当前浏览器,可随时取消标记。

多模态数据工程 ​

"Data is the new oil" —— 在多模态领域,数据的质量与规模直接决定模型上限。数据工程不仅是收集,更涉及复杂的清洗、过滤与合成策略。


数据工程全景 ​


LAION-5B:工业级数据清洗 ​

LAION-5B是 2022 年发布的大规模图文索引,报告约 58.5 亿图文对。它提供 URL 与元数据等,并不意味着图像统一托管、链接持续可用或所有数据都已获得你的使用许可。

构建流水线 ​

关键过滤步骤 ​

步骤技术目的
URL 过滤黑名单匹配排除低质/违规站点
图像下载并行爬取 + 重试获取原始图像
CLIP 过滤计算图文相似度筛选候选相关性,不保证事实匹配
下游去重内容哈希、pHash 与近邻候选复核按任务去重,不能假设下载后已无重复
风险标签自动分类分数/元数据下游需明确筛选规则并抽检,不等于全部移除

CLIP Score 阈值 ​

下例是 LAION 历史筛选阈值的概念表示,依赖当时的编码器与语言配置。更换模型后分数尺度可能改变;实际阈值应在人工标注的正负匹配样本上校准。

python
# LAION 过滤逻辑
def filter_sample(image, text, language):
    image_emb = clip.encode_image(image)
    text_emb = clip.encode_text(text)
    score = cosine_similarity(image_emb, text_emb)
    
    # 英文数据阈值
    if language == 'en':
        return score >= 0.28
    # 多语言数据阈值
    else:
        return score >= 0.26

CLIP 过滤的双刃剑 ​

优势

✅ 提供图文相关性的自动筛选信号
✅ 自动过滤低质数据
✅ 可大规模并行处理

VS
劣势

❌ 继承 CLIP 偏见
❌ 过滤罕见概念
❌ 某些艺术风格被排除

CLIP 偏见传播

如果 CLIP 无法识别某种艺术风格或生僻概念,相关数据就会被过滤掉。这导致下游模型在这些领域覆盖率不足,形成"偏见闭环"。

LAION 数据集家族 ​

数据集规模语言特点
LAION-400M4 亿英文早期版本
LAION-5B58.5 亿多语言主力数据集
LAION-Aesthetic1.2 亿英文高美学评分
LAION-COCO6 亿英文类 COCO 格式

ShareGPT4V:高质量 Caption 合成 ​

传统网络爬取数据的 alt 文本往往过于简短,缺乏对图像细节的描述。

问题示例 ​

来源Caption 示例
网络 alt 文本"beach photo"
人工标注"A person surfing on a wave"
GPT-4V 生成"The image captures an exhilarating moment of a surfer riding a powerful wave. The surfer, clad in a black wetsuit, demonstrates remarkable balance and skill..."

ShareGPT4V 数据闭环 ​

GPT-4V Prompt 设计 ​

合成描述应把可见事实与推测分开:无法辨认的字、数量或身份要标为不确定,不把世界知识联想当图中证据。以下历史提示需加这一约束,再用人工抽样核对模型是否补写不存在的细节。

markdown
请详细描述这张图片,包括但不限于:
1. 主要对象及其属性(颜色、形状、大小)
2. 对象之间的空间关系
3. 场景的整体氛围和背景
4. 任何文字或符号
5. 图片的艺术风格或拍摄技术
6. 可能的世界知识关联

请用详尽的段落形式描述,而非简单的列表。

数据质量对比 ​

长 caption 可以补充对象属性、关系和文字,但也会增加不可验证的联想。对同一图像逐项审核:可见对象、属性、数量、关系、文字转写和无法判断项,报告每类准确率与漏标率。不要用平均字数替代质量。

训练效果 ​

ShareGPT4V研究了高质量详细描述对多模态训练的作用。迁移到自己的任务时,固定图片和训练预算,对比原 caption、合成 caption 与混合数据;只有在留出 OCR、关系理解与幻觉负例上改善,才说明补充描述有价值。


BLIP CapFilt:数据自举的艺术 ​

核心机制 ​

CapFilt = Captioner + Filter

Captioner 训练 ​

第一步:在高质量人工标注数据(如 COCO)上训练图像描述模型
第二步:对网络图像生成 合成 Caption (synthetic captions)

优势:

  • 合成 Caption 通常比噪声 Alt-text 更准确
  • 能生成更详细、结构化的描述
  • 覆盖 Alt-text 遗漏的视觉细节

Filter 评分机制 ​

ITM(Image-Text Matching)分类器:

python
def filter_captions(image, original, synthetic, score_fn, threshold):
    # 独立过滤两个候选;二者都好可都保留,不强制只选最高分
    kept = []
    for text in (original, synthetic):
        score = score_fn(image, text)
        if score >= threshold:
            kept.append({"caption": text, "score": score})
    return kept

BLIP CapFilt将生成 caption 与过滤匹配分开;原始和合成描述均可保留。上例把阈值作为显式参数,需要按实际 ITM 模型与标注集校准,不存在通用 0.8。若两者都低分,应丢弃或送复核,而不是因为合成分数略高就无条件保留。

自举循环 ​

迭代改进:

  • 第 1 轮:用人工数据训练 Captioner,生成合成 Caption
  • 第 2 轮:用清洗数据重新训练,生成更高质量 Caption(可选)

效果验证 ​

CapFilt 的收益应在固定模型、数据来源与预算下做消融,不把不同年代的数据集和无出处的 VQA/CIDEr 数字拼成对比。比较无过滤、仅过滤、仅合成、合成加过滤,同时报告保留率、训练成本、下游任务与长尾覆盖。

Caption 质量对比 ​

候选可能问题审核方法
网络 alt 文本站点广告、文件名、与图无关图文匹配与来源抽检
合成描述对衣着、数量、背景的补写幻觉逐条事实对照原图
高分匹配描述模型偏好掩盖罕见概念按领域与语言切片人审

动态分辨率:AnyRes ​

问题:固定分辨率的局限 ​

传统方法将所有图像缩放到固定分辨率(如 336×336):

原始图像缩放后问题
高清照片 4K336×336细节丢失
文档截图336×336文字模糊
长图/宽图336×336严重变形

LLaVA-NeXT AnyRes 方案 ​

网格配置 ​

下面只示意 (行数, 列数) 的宽高比匹配,非 LLaVA-NeXT 完整选择器;生产 processor 还会考虑原图有效面积、padding 和 token 上限。

python
GRID_CONFIGS = [
    (1, 1),  # 正方形小图
    (1, 2),  # 宽图
    (2, 1),  # 高图
    (2, 2),  # 大正方形
    (1, 3),  # 超宽图
    (3, 1),  # 超高图
    (2, 3),  # 宽大图
    (3, 2),  # 高大图
]

def select_grid(image_width, image_height, patch_size=336):
    aspect_ratio = image_width / image_height
    # 选择最匹配宽高比的网格配置
    best_grid = min(GRID_CONFIGS, 
                    key=lambda g: abs(g[1]/g[0] - aspect_ratio))
    return best_grid

Token 数量计算 ​

以下为每子图 576 patch 加一个全局视图的粗算;去 padding、换行 token、池化或 patch merge 会改变最终长度,以 processor 实际输出验收。

配置子图数子图 Token全局 Token总计
1×115765761152
2×2423045762880
3×2634565764032

意外收获:零样本视频理解 ​

LLaVA-NeXT 后续研究探索把视频帧作为多图序列输入。单纯支持切图不等于掌握时序;需要保留帧顺序、时间戳与采样规则,并用事件顺序、短暂事件和跨帧指代测试。多帧输入的成本随帧数增长,静态场景答对不能证明视频理解。


数据格式标准 ​

预训练格式 ​

json
{
  "image": "path/to/image.jpg",
  "caption": "A detailed description of the image..."
}

指令微调格式 ​

json
{
  "image": "path/to/image.jpg",
  "conversations": [
    {"from": "human", "value": "<image>\nDescribe this image."},
    {"from": "gpt", "value": "This image shows..."}
  ]
}

多图对话格式 ​

json
{
  "images": ["img1.jpg", "img2.jpg"],
  "conversations": [
    {"from": "human", "value": "<image>\n<image>\nCompare these two images."},
    {"from": "gpt", "value": "The first image shows... while the second..."}
  ]
}

数据质量评估 ​

自动化指标 ​

指标计算方式用途
CLIP Score图文余弦相似度语义相关性
Aesthetic ScoreLAION 美学模型图像质量
Text Complexity词汇多样性/长度Caption 丰富度
Perplexity语言模型困惑度Caption 流畅度

人工评估维度 ​

维度评估内容
准确性Caption 是否真实描述图像
完整性是否覆盖主要视觉元素
细节度空间关系、属性是否充分
相关性是否有无关信息

实践建议 ​

数据收集策略 ​

阶段数据类型规模质量要求
预训练网络爬取10M+中等
多任务公开数据集1M+较高
指令微调人工/合成100K+极高

常见陷阱 ​

数据泄漏

确保训练数据与评测数据无重叠!使用去重和交叉检查。

分布偏差

网络数据存在严重的长尾分布,罕见概念覆盖不足。考虑数据增强或合成补充。


数据集发布门槛 ​

以文档/视频/原始图片为分组单位切分,近重复裁剪不能跨训练和测试。manifest 至少记录原文件哈希、来源与许可、尺寸/时长、caption 生成版本、过滤原因、处理版本,以及图片占位符与文件列表的对应关系。

抽样重放训练预处理:能解码的文件比例、视觉 token 分布、长尾语言保留率、caption 可见事实准确率和跨切分重复量均应可报告。训练只在高清样本失败时先查缩放;所有多图样本错位时查列表顺序;过滤后某类任务骤降时查阈值和采样配比。

参考资源 ​

资源说明
LAION-5B数据集主页
ShareGPT4V高质量 Caption
LLaVA-NeXTAnyRes 技术
img2dataset数据下载工具

基于 VitePress 构建