🔍在之前AIGC助力ResNet分类任务:跃升10个百分点-CSDN博客文章中,提到使用Textual Inversion对COCO、PascalVOC、少样本数据集进行数据增强,再进行分类任务,精度上升。
📕而今天要聊到的这篇论文更全面地探究了扩散模型在下游任务如分类的贡献程度,作者在imageNet数据集上应用了4种不同的数据增强方法,一种为从Laion-5b数据集中直接图像检索得到同类别的图片,其余三种为基于扩散模型的数据增强方法,分别在这些增强后的训练集上训练ResNet50,并比较这四种数据增强方法的分类正确率。最后结论:通过简单的图像检索方法来获取额外数据,比使用扩散模型生成的新图像更能提升下游任务的性能。图1展示了分类正确率的对比。
图1
📌作者总结的用于分类任务的增强方法如图2所示,
A. 然后在原始的10% ImageNet数据集的基础上,使用通过text prompt、微调和图像检索方式生成的数据来增强数据集,并在原始的ImageNet验证集上评估分类器的表现。
**B. **作者给出了所有方法的详细解释,其中这些方法用圆圈括号数字表示:
① 和 ② 通过"A photo of a ClassName"的文本prompt控制某一特定类别的图像生成;
③ 和 ④从模板库中挑选prompt示例;
⑤ 和 ⑥仅优化条件化向量,保持扩散模型不变;
⑦ 对扩散模型进行微调
**⑧ **学习类别描述的伪词,使用多个提示并保持扩散模型不变;
**⑨ **在此基础上还微调扩散模型。
(0)不对扩散模型的任何组件进行调整,而是依赖于编码和解码来创建给定图像的变化版本。
图2
看完上面作者给的解释,很多人可能还是不清楚用了什么方法❓下面就详细地介绍各个方法~😀
💐数据集扩充方法1:从laion-5b数据集获取
图3
LAION-5B[论文链接] 是一个包含 50 亿对图像和标题的公开数据集,这些数据是通过网络爬虫获取的。但是从网络爬取的数据是不能直接用的,要经过筛选,这时作者就想到使用CLIP来对数据进行筛选,这既利于筛选,也利于检索。
CLIP(Contrastive Language-Image Pre-training)是由OpenAI提出的一种深度学习模型,它旨在建立图像和文本之间的关联,使得模型能够理解和匹配图像内容与相关的文本描述。
图4
CLIP模型的核心在于使用对比学习框架来训练一个多模态的embedding空间,在这个空间里,图像和对应文本的特征表示被映射到一起,使得相似的图像和文本描述在向量空间中彼此接近。在网上爬取下来的数据经过筛选,只保留了 CLIP 图像embedding与文本描述embedding一致的图像。这种筛选过程提供了一种弱监督形式,确保了 CLIP 在这些图像上表现更佳的可能性。
作者的做法就是通过类别的名称检索Laion-5B数据集里的图片:从 LAION-5B 数据集用文本检索图像,用于扩充原始数据集,将这种方法作为比较的基线。数据集中的每个图像都有预先计算好的 CLIP embedding,并且提供了 CLIP 嵌入最近邻搜索索引,允许快速搜索和检索。ImageNet 中的每个类别都通过这种方式检索了 130 张图像。与使用扩散模型 生成图像不同,检索图像的过程是非随机的,选择的是与类别名称query最相似的图像。若检索到的图像美学评分低于 5 ,则会被排除在外,也使用了相同的safety checker模型来排除标记为不适宜工作环境 (NSFW) 的图像。
💐数据扩充方法2~4:diffusion-based数据增强方法
使用diffusion进行数据增强的步骤可以总结为
- 使用Stable Diffusion v1.4生成图像,该模型训练时使用的图像尺寸为512像素。
- 通过safety checker筛选出不适合工作的图像(通常指不适宜公开的内容)。
- 对于被标记为不合适的图像,我们生成新的样本来替代它们。
🌼数据扩充方法2:无引导生成
第一种是无引导的生成,来自论文boomerang。通过对图像的加噪和去噪,得到与原始图像有微小变化的增强图。[2210.12100] Boomerang: Local sampling on image manifolds using diffusion models (arxiv.org)
图5
上图展示了一个使用Boomerang方法结合Stable Diffusion模型的示例。从一个原始图像 开始,在前向过程时,向latent添加不同水平的噪声。Boomerang通过从前向扩散过程中添加噪声对应的逆向步骤开始运行逆向扩散过程,将噪声化的潜在变量映射回到图像上。这里设定总的时间步数 ( T = 1000 )。产生的图像与原始图像的相似度取决于所添加噪声的多少。当时间步 ( t ) 接近 ( T ) 时,Boomerang生成的图像内容会越来越远离原始图像。
总结:Boomerang方法能够通过控制噪声的添加和去除,生成一系列与原始图像相似但又有所不同的新图像。这种方法不仅限于Stable Diffusion模型,也可以应用于其他的扩散模型。
🌼数据扩充方法3:基于类别的prompt引导
第二种是基于类别的文本prompt引导方法,通过构造不同的文本prompt进行图像生成。
作者探索了几种基于提示的方法来指导扩散模型生成特定类别的样本。具体包括:
- 简单文本prompt:通过包含类别名称n的简单prompt来引导图像生成,即给模型提示“一张n的照片。”以及它的变体,即去掉类别名称中的空格,“一张w(n)的照片。”。
- CLIP prompt:使用来自CLIP文本编码器模板库的prompt,例如“一张许多w(n)的照片。”、“一张黑白的w(n)的照片。”等。
- Sariyildiz等人提出的text prompt:一组用于创建合成ImageNet数据集的模板(Sariyildiz等人,2022)。
这些基于文本提示的方法旨在引导扩散模型生成与特定类别相关的图像样本,并且尝试了不同类型的提示模板以观察对生成结果的影响。
类别名称选自WordNet提供的ImageNet类别定义,其中的同义词集合(synsets)代表了WordNet图谱中的独特实体。每个同义词集合包含一个或多个描述类别的词条(lemmas),每个词条可以由多个单词组成,例如“Tiger shark, Galeocerdo Cuvieri”。如果一个同义词集合包含多个词条,我们会使用逗号将它们分开,形成像“a tiger shark, Galeocerdo Cuvieri"的照片。这样做是因为我们发现提供多个词条比仅使用同义词集合中的第一个词条能带来更好的性能。
当需要将类别名称插入到提示模板中时,我们随机地采样这些模板并重复使用。Sariyildiz等人提供了多种类型的提示模板中随机选取的背景。对于每种类别,我们随机采样相同数量的图像和背景模板。
可以看出来,对于prompt的选择还是下了很大的功夫
对于Caltech256数据集,我们直接使用该数据集提供的类别名称。
🌼数据扩充方法4:有引导的微调方法
作者探索了多种方法来微调扩散模型(DM)以实现针对特定类别的采样,从而改善分类数据集的重建效果。具体方法包括:
- ft conditioning: 保持DM不变,为每个类别优化一个条件化向量(本论文提出的方法)。
- ft cluster conditioning: 为每个类别优化多个条件化向量,而非单一向量(本论文提出的方法)。
- 受imagic启发,联合微调条件化向量和DM的去噪组件。
- textual inversion: 通过优化表示类别概念的伪词,并结合提示模板进行采样,而不是直接微调条件化向量。
- pseudoword+dm: 结合textual inversion方法与DM的去噪组件的优化
所有微调方法均采用Stable Diffusion的目标函数进行训练,直到验证损失不再下降或开始增加为止,训练epoch小于40。当在全部ImageNet数据集上微调扩散模型时,训练样本数量增加了10倍,为了保持不同模态之间的计算预算可比性,我们在3个epoch后停止训练。我们根据已发表的工作或现有代码设置了超参数。
- 对于ft cluster conditioning模型,我们使用k-means聚类算法在Inception V3嵌入空间中对训练图像进行聚类,并使用DM的文本编码器对简单提示进行编码来初始化条件化向量。
- 在textual inversion方法中,我们微调了与引入的伪词相对应的文本嵌入向量,并从提供的文本模板中采样,以优化我们ImageNet子集的重建目标,同时冻结模型的所有其他部分。伪词嵌入的初始化使用第一个同义词集词典条目中的最后一个词(例如,对于“虎鲨”类别,我们使用“shark”)。
对于每次微调运行,我们都存储了最佳训练和验证损失对应的检查点,以及对应于1、2和3个训练周期的检查点。对于imagic方法,在40个epoch后验证损失仍然在下降,但图像质量在8个epoch后显著下降,因此作者只保存了前8个epoch的检查点。最终模型选择基于ResNet-50分类器在增强样本和目标数据集组合上的验证准确率。
⚙分类任务实验设置
数据集
- ImageNet ILSVRC2012:- 作者用了训练集里的10%(一共126,861张图片),并且保留了不同类别之间的不平衡。我们使用扩散模型为每个类别生成390张图像,使每个类别的图像数量至少增加至原来的三倍。这是因为原始子采样ImageNet数据集中每个类别大约有74到130张图像。- 由于检索方法的问题,1,000个类别中有10个类别没有足够的样本,所以把它们排除了。- 从训练集里随机挑出同样数量的不重复图片作为验证集,用来调整模型参数和挑选最佳模型。
- Caltech256:- 选取了80%的数据集作为训练集。- 剩下的20%被随机分成两部分,一部分作为验证集,另一部分作为测试集。- 由于检索方面的限制,Caltech256数据集中的5个类别也被排除了。
- 评估验证集:- 所有训练好的模型最后都在原始的ILSVRC2012验证集上进行了性能测试。
为了评估扩散模型生成图像对分类器性能的影响,我们采用了一种特定的方法来生成并利用这些图像。具体步骤如下:
分类器训练
- 使用增强后的数据集来训练ResNet-50分类器,从而获得方差估计值。
- 在训练过程中,使用常见的随机调整大小和裁剪操作来进一步增强数据。
- ImageNet上的batchsize为256和学习率为0.1;而在Caltech256上batchsize为1024,学习率为0.003。
- 当验证集准确率在10个epochs内没有提升时,我们将学习率除以10。
- 如果验证集准确率在20个epochs内没有改善或达到最大周期数270,则停止训练。
📕结果
图像检索的方法打败了所有对手!👍
图6
图7
直接使用现成的扩散模型,即不经过适应或条件化以匹配目标数据集,并不会带来好处,甚至可能会降低分类器的表现。
使用针对目标数据集进行提示条件化(prompt-conditioning)的方法生成样本进行数据增强,表现优于未增强的基准。然而,仅仅使用从扩散模型训练数据中检索出的真实图像进行增强会超过基于扩散模型的方法,这表明扩散模型生成的图像存在显著的缺点。
检索出的图像具有高度的照片逼真度、多样性和细节,因为它们本身就是真实世界的图像。但是,这种检索方法的表现仍然低于20% ImageNet的上限性能,这可能是由于ImageNet和Laion 5b之间的图像分布差异,以及检索过程中的失败,包括从CLIP基础搜索索引中检索到不相关的图像,以及类别的模糊性。这反映了CLIP潜在空间中的概念与ImageNet类别之间存在的不匹配,我们通过测量CLIP嵌入的距离来评估语义相似性。
- 使用基于提示条件化技术生成的图像来增强数据集可以提高下游分类器的性能,但这些方法均未能超越检索基线。
- 检查生成的样本后发现仍存在多种挑战:ImageNet数据集已有十多年历史,其中一些图像与最近训练的稳定扩散模型生成的图像风格不同(例如桌面电脑);有的生成图像与ImageNet样本的领域不符,有时过于人工合成,像是计算机渲染(例如摩托车),或者纹理不符合要求(例如蝴蝶),又或者提示与期望的风格不符(例如卡通风格)。这些因素可能加剧了问题的复杂性。
Boomberang失败的原因🤔
这是由Boomerang方法生成的示例图像。生成的图像缺乏多样性,实际上只是在原始图像上添加了噪声。具体包括:
- A. 来自10% ImageNet数据集的示例图像。
- B. 由Boomerang产生的数据增强图像。
- C. 原始图像与增强图像之间的差异很小
图8
个人观点🤔
这篇论文深入研究了数据增强这个领域,它讲了怎么用一种叫扩散模型的技术来做数据增强,还提到了一个很大的数据集叫做 LAION-5B,这个数据集是从网上爬下来的。
但是我觉得,直接拿现成的数据集里的图片和用模型生成的图片做对比可能不太公平。另外,数据增强这东西一般是在训练样本不多的时候用的,也就是少样本学习的情况。所以,如果要真正测试这种方法好不好,应该在样本数量比较少的数据集上试试才行。
版权归原作者 德善的二分之一可爱 所有, 如有侵权,请联系我们删除。