Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PaddleMIX开发大赛的RFC #922

Open
wants to merge 2 commits into
base: develop
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
142 changes: 142 additions & 0 deletions paddlemix/datacopilot/ops/rfc-data.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
> 本文档为 PaddleMIX 开发者任务 RFC(**R**equest **F**or **C**omment) 模板

# 任务名

> RFC 文档相关记录信息

| | |
| ------------ | ----------------- |
| 提交作者 | burt |
| 提交时间 | 2014-12-25 |
| RFC 版本号 | v1.0 |
| 文件名 | rfc-data.md |

## 1. 概述

### 1.1 相关背景
> 随着深度学习模型在多模态任务中的广泛应用,数据质量和多样性对模型性能的提升至关重要。PaddleMIX 作为飞桨框架下的多模态大模型套件,已具备强大的模型训练和推理能力。然而,现有的数据集在多样性和丰富性方面仍存在不足,限制了模型的泛化能力和鲁棒性。

为此,开发一个高效的数据增强模块,能够在保持数据真实性和一致性的前提下,生成多样化的训练样本。这将有助于提升 PaddleMIX 模型在不同应用场景下的表现,降低用户在数据准备阶段的工作量,进一步扩展飞桨框架在多模态数据处理领域的应用。



### 1.2 功能目标

> 具体需要实现的功能点。

- **图像过滤**:实现图像清晰度、图像大小、图像质量的过滤。
- **文本过滤**:实现文本过小的过滤,文本相近改写。
- **多模态同步增强**:确保在进行图像和文本增强时,保持图像与文本之间的一致性和相关性,避免数据错配。

### 1.3 意义

> 数据增强模块将显著提升 PaddleMIX 套件在多模态任务中的数据处理能力,增强模型的泛化性能和鲁棒性。通过自动化的数据增强流程,用户可以更高效地准备高质量的训练数据,减少人工数据处理的时间和成本,推动多模态模型在更多实际应用中的落地。


## 2. 方案背景

> 当前,数据增强在提升深度学习模型性能方面扮演着重要角色。对于多模态数据,尤其是图像与文本的结合,数据增强需要同时考虑视觉和语言的多样性,确保增强后的数据仍然保持原有的语义和关联性。PaddleMIX 套件在多模态数据处理上具有一定优势,但缺乏系统化的数据增强工具,限制了其在更复杂场景下的应用潜力。

通过开发数据增强模块,可以弥补这一不足,提供一套完整的多模态数据增强解决方案,支持用户在不同任务和领域中灵活应用,进一步提升 PaddleMIX 的竞争力和实用性。

## 3. 目标调研

在 **data-juicer** 中,当前主流的数据增强方法主要包括以下几类:

1. **图像增强方法**:
- **几何变换**:旋转、平移、缩放、剪切等。
- **颜色调整**:亮度、对比度、饱和度、色调变化等。
- **噪声添加**:高斯噪声、椒盐噪声、随机遮挡等。
- **图像混合**:Mixup、CutMix 等技术,通过混合不同图像生成新的训练样本。

2. **文本增强方法**:
- **同义词替换**:使用同义词库替换句子中的关键词。
- **随机插入与删除**:随机插入或删除句子中的词语,增加文本的多样性。
- **句子重组**:重新排列句子结构,保持语义不变的同时改变表达方式。
- **回译**:将文本翻译成另一种语言再翻译回来,以生成新的句子表达。

3. **多模态同步增强**:
- **图文一致性**:确保图像与文本在增强过程中保持语义一致性,避免图像与描述之间的错配。
- **联合增强策略**:同时对图像和文本进行增强,确保两者之间的关联性不被破坏。

### 相关研究

#### [Learning Transferable Visual Models From Natural Language Supervision](https://arxiv.org/abs/2103.00020)
- **摘要**:该论文介绍了 CLIP(Contrastive Language-Image Pretraining)模型,通过大量的图像和文本对进行训练,学习到了一种可迁移的视觉表示。CLIP 模型在多个视觉任务上表现出色,展示了文本监督在视觉学习中的潜力。

- **主要方法**:
- **对比学习**:通过最大化图像和文本之间的相似度,最小化不相关图像和文本对之间的相似度。
- **多模态训练**:使用大规模的图像-文本数据集进行训练,以实现跨模态的知识迁移。

- **应用效果**:
- CLIP 在多个下游任务上的表现优于传统的监督学习方法,尤其是在零样本分类和图像检索任务中。

#### [VisualBERT: A Simple and Performant Baseline for Vision and Language](https://arxiv.org/abs/1908.03557)
- **摘要**:该论文提出了 VisualBERT,一个将视觉信息与语言信息结合的模型。通过在 BERT 的基础上引入视觉特征,VisualBERT 实现了图像和文本的联合理解,并在多个多模态任务上取得了良好的效果。

- **主要方法**:
- **视觉特征编码**:将图像通过卷积神经网络(CNN)提取特征,并与文本输入一起送入 BERT 模型。
- **联合训练**:通过多任务学习框架同时优化视觉和语言任务,提高模型的综合性能。

- **实验结果**:
- VisualBERT 在多项基准测试中表现优异,尤其是在视觉问答和图像字幕生成等任务中。

这两篇论文展示了多模态学习领域中的重要进展,强调了通过有效的数据增强和模型设计来提升视觉与语言任务性能的方法。



## 4. 设计思路与实现方案

> 在 paddlemix/datacopilot/ops/filter/ 目录下创建一个新的 filter 文件夹,用于存放数据过滤相关的算子(如图像去重、文本去重等)。在 filter 文件夹下新建 remove_small_texts.py 文件,并在其中实现文本过小过滤的逻辑。使用 @register() 装饰器注册该函数,以便在 MMDataset 中调用。


### 4.1 补充说明[可选]

> 可以是对设计方案中的名词、概念等内容的详细解释。

## 5. 测试和验收的考量

> 在开发完成后,需要对数据增强模块进行全面的测试和验收,确保其功能的正确性、性能的稳定性以及与 PaddleMIX 其他组件的兼容性。具体考量包括:

1. 功能测试:
* 验证各类图像和文本增强方法是否按预期工作。
* 确保同步增强过程中图像与文本的一致性。
2. 性能测试:
* 测试增强模块在大规模数据集上的处理速度和资源消耗。
* 优化多线程或并行处理,提升处理效率。
3. 兼容性测试:
* 确保增强后的数据集能被 PaddleMIX 的训练和推理模块无缝使用。
* 检查不同增强方法的组合是否引发兼容性问题。
4. 用户验收测试:
* 邀请部分用户进行试用,收集反馈,优化用户体验。
* 确保模块的接口和文档清晰易用,满足用户的自定义需求。

## 6. 可行性分析和排期规划

* 里程碑 1:需求分析与设计(11月16日 - 11月18日)
完成数据增强模块的需求分析。
制定详细的设计方案和技术路线。
* 里程碑 2:图像增强和过滤功能开发(11月19日 - 11月25日)
实现各类图像增强方法(几何变换、颜色调整、噪声添加等)。
编写单元测试,确保功能正确。
* 里程碑 3:文本过滤功能开发(11月26日 - 2024-12-01)
实现同义词替换、随机插入与删除、句子重组等文本增强策略。
编写单元测试,确保功能正确。
* 里程碑 4:多模态同步增强开发(2024-12-02 - 2024-12-08)
实现同步增强逻辑,确保图像与文本的一致性。
集成 CLIP 相似度验证,过滤不一致的数据。
* 里程碑 5:可扩展性与自定义接口开发(2024-12-09 - 2024-12-15)
设计模块化接口,支持插件式增强策略。
实现参数配置选项,允许用户自定义增强流程。
* 里程碑 6:集成测试与性能优化(2024-12-16 - 2024-12-22)
进行全模块的集成测试,确保各部分协同工作。
优化处理速度和资源使用,提升整体性能。
* 里程碑 7:用户验收与文档完善(2024-12-23 - 2024-12-28)
完成用户验收测试,收集反馈并进行优化。
编写详细的用户文档和使用指南。

## 7. 影响面

* 模型性能提升:通过增加数据多样性,提升模型的泛化能力和鲁棒性,提升在实际应用中的表现。
* 用户体验优化:提供自动化的数据增强工具,减少用户在数据准备阶段的工作量,提升开发效率。
* 生态扩展:丰富飞桨框架的多模态数据处理生态,吸引更多用户和开发者参与,推动多模态技术的发展。