数据风格变换:ModelArts的数据域迁移功能

举报
T_c_D 发表于 2020/08/07 14:35:05 2020/08/07
【摘要】 在视觉领域中提出了许多域适应方法来减少训练数据域与测试数据域之间的差异,包含了从模型结构出发改善两个域之间差异的方法,也有生成具有测试数据域style的训练数据的方法。本文介绍ModelArts在后者领域推出的新应用:无监督数据域迁移算法。

数据风格变换:ModelArts的数据域迁移功能

特殊的迁移学习-域适应介绍

为什么我用在重庆收集的汽车道路数据集训练得到的车辆检测模型,在杭州道路上识别效果变得很差?

为什么我用真实图片训练得到的人物识别模型,无法识别动漫人物图像?

为什么我的算法训练效果这么好,部署成推理服务之后,实际使用效果变差了?

在迁移学习中, 当源域和目标的数据分布不同 ,但两个算法任务相同,这种特殊的迁移学习叫做域适应 (Domain Adaptation,DA )。几乎所有算法在落地实际场景时都会遇到域适应问题。因为带有标注的训练数据集是很容易获得的,我们训练模型使用的都是这些数据,但是将模型应用到实际场景中的数据来源往往是不同的且没有标注的。推理时的数据域与训练时的数据域分布差异很大,就可能导致模型推理效果变差。

以车辆检测模型为例,你在重庆收集汽车道路数据并精确标注后,训练了一个车辆检测模型,在重庆路上测试效果极好,但在杭州道路上就变得非常糟糕。重庆的道路高高低低,杭州道理相对平坦;重庆的出租车是黄色的,杭州的出租车是绿色的等,同样动漫人物中的人形一般较为夸张、抽象、色彩鲜艳,与真实人形差别较大,你训练的模型在这些场景下表现很差的原因是数据域发生了变化。

那怎么解决这类训练数据域与测试数据域变化很大的问题呢?在视觉领域中已经提出了许多域适应方法来减少训练数据域与测试数据域之间的差异,包含了从模型结构出发改善两个域之间差异的方法,也有生成具有测试数据域style的训练数据的方法。本文介绍ModelArts在后者领域推出的新应用:无监督数据域迁移算法


ModelArts 无监督数据域迁移算法

数据域迁移算法介绍

针对训练数据域与测试数据域分布差别大的问题,ModelArts推出了无监督数据域迁移的算法。ModelArts的无监督数据域迁移算法旨在将输入数据集B的特性映射到输入数据集A中,生成具有目标域数据集B特征的数据集A。

以“素描”的源域A和“卡通剪纸”的目标域B为例,源域与目标域的图像如下图所示:


使用无监督数据域迁移算法对上述“素描”的源域A到“卡通剪纸”的目标域B的进行数据生成,下图为源域A从素描图不断训练,每个迭代中往卡通方向迁移的过程。可以看到原本素描的环境图逐渐有了丰富的颜色。


ModelArts数据域迁移使用示例

数据管理中创建源域、目标域数据集

参考 ModelArts数据管理说明书 在数据管理中导入源域和目标域数据集,比如分别导入卡通、素描的苹果数据集:

卡通:


素描:


创建数据域迁移作业

在任务类型中选择数据增强,在算法中选择“图像生成--域迁移”


在输入1中选择源域:卡通苹果数据集clipart_apple,在输入2中选择目标域:素描苹果数据集sketch_apple,在输出中选择空的数据集。


结果展示

在数据管理界面的输出数据集dataset-abc1中,我们可以看到由域迁移新生成的图像,已经将有颜色的卡通水果图转变成了黑白素描图:


相关案例

案例1:KITTI-> Cityscapes物体检测域适应

任务及数据集介绍

KITTI数据集由德国卡尔斯鲁厄理工学院和丰田美国技术研究院联合创办,是目前国际上最大的自动驾驶场景下的计算机视觉算法评测数据集。KITTI包含市区、乡村和高速公路等场景采集的真实图像数据,每张图像中最多达15辆车和30个行人,还有各种程度的遮挡与截断。本案例中截取了其中车辆的位置数据,用于的ModelArts物体检测任务。

Cityscapes数据集,即城市景观数据集,其中包含从50个不同城市的街景中记录的各种立体视频序列。

KITTI与Cityscapes的数据分布差别很大,如在KITTI中交通图像较为明亮,而Cityscapes中较为灰暗等。两个数据集的样例如下图所示:

ModelArts无监督数据域迁移

使用ModelArts无监督数据域迁移算法将Cityscapes图像特征映射到KITTI交通图像里,如下图所示,KITTI表示KITTI的原始图像,DA_KITTI表示域适应算法在KITTI上映射了Cityscapes图像特征之后生成的图像。显然在数据域迁移算法生成之后的KITTI图像环境也与Cityscapes一样开始暗淡起来。

迁移学习测试

抽取KITTI与Cityscapes两个数据集中车辆的位置,处理后的数据集相关信息如下表所示,其中kitti+da_kitti2city表示在KITTI数据集基础上加上了无监督数据域迁移算法生成的图像。

数据集 类别数 数据集大小
kitti 1 6044
CityScapes 1 607
kitti+da_kitti2city 1 12088

使用ModelArts的AI市场物体检测FasterRcnn算法训练KITTI数据集,在Cityscapes做推理测试。KITTI源域直接推理以及使用无监督数据域迁移算法进行训练后的推理测试结果如下表所示。显然KITTI源域直接推理Cityscapes效果较差,使用无监督数据域迁移算法后进行推理后,mAP提升14个百分点

训练集 测试集 mAP
kitti CityScapes 0.285
kitti+da_kitti CityScapes 0.421


案例2:金域宫颈癌数据集

项目及数据集介绍

金域宫颈癌数据集来自华为云实际项目数据,该项目目的是为了检测宫颈癌图像中的病变细胞。宫颈癌数据中包含多种病变ASC-US(不典型鳞状上皮细胞)、 AGC(非典型腺细胞)、 LSIL(低级别鳞状上皮内病变)、 ASC-H(非典型鳞状细胞)、 HSIL(高级别鳞状上皮内病变)、 AIS(原位腺癌)和NILM(未见上皮内病变或恶性病变)。这些病变都是观察细胞状态来判断的,但是不同医院可能使用不同厂家的机器,虽然观察的病变状态是一样的,但得到的细胞颜色、背景有一定差异。金域宫颈癌数据集中包含了三个厂家的机器:kfbsvsndp,下图为三家机器观察到的细胞,差异较为明显。

只使用某一家宫颈癌数据集训练得到的模型,使用范围较窄(只能在一家机器上表现很好),在对另一家机器观察得到的宫颈癌图像进行识别时,有可能会导致识别效果变差。重新标注其他两家机器的数据集需要额外损耗极大的专业标注成本(需要专业医师亲自标注)。


ModelArts无监督数据域迁移

使用ModelArts无监督数据域迁移算法将svs厂家机器的宫颈癌图像特征映射到kfb宫颈癌图像里,如下图所示,Jinyu_kfb表示kfb的原始图像,kfb->svs表示域迁移算法在kfb上映射了svs图像特征之后生成的图像,Jinyu_svs为svs的原始图像。显然在域迁移算法生成之后的kfb图像与svs机器的宫颈癌图像相似了起来。

迁移学习测试

在该项目中模型先通过物体检测算法得到细胞的目标框,再同个图像分类算法将这个框中的细胞进行分类。以下只对图像分类进行测试,将所有数据分为两类:有病变、无病变,将病变的细胞从原图中分离出来作为正样本,并随机选择非病变的细胞作为负样本。数据集相关信息如下表所示,其中jinyu_kfb+da_kfb2svs与jinyu_kfb+da_kfb2nbp表示在kfb数据集基础上加上了无监督域迁移算法生成的图像。

数据集 类别数 数据集大小(8:2随机切分训练、测试集)
jinyu_svs 2 1708
jinyu_nbp 2 584
jinyu_kfb 2 9912
jinyu_kfb+da_kfb2svs 2 19800
jinyu_kfb+da_kfb2nbp 2 19800

下图为ModelArts无监督域迁移算法生成的图像与源数据域、目标数据域的对比展示,生成的图像也具有了目标数据域的特征。

在上述分类图像上使用ModelArts AI市场算法ResNet50进行训练,得到如下表格的测试结果。其中jinyu_svs_train->jinyu_svs_test与jinyu_nbp_train->jinyu_nbp_test表示目标域上进行随机划分训练集与测试集之后进行图像分类的结果,作为本案例测试的上限。源域jinyu_kfb为训练集,jinyu_svs和jinyu_nbp测试集,得到的结果是不做任何域适应算法的结果,是本案例测试的下限。显然源域模型在目标域的宫颈癌图像上推理,效果表现较差。

使用ModelArts无监督域迁移生成的新数据集与源域融合进行迁移学习训练,在jinyu_svs和jinyu_nbp上进行推理测试,相比源域模型直接推理目标域精度提升了5-10个百分点

训练集 测试集 ACC
jinyu_svs_train jinyu_svs_test 0.891
jinyu_nbp_train jinyu_nbp_test 0.82
jinyu_kfb jinyu_svs 0.629
jinyu_kfb jinyu_nbp 0.5343
jinyu_kfb+da_kfb2svs jinyu_svs 0.6793
jinyu_kfb+da_kfb2nbp jinyu_nbp 0.6343


案例3:visda-2019图像分类-多源域适应竞赛数据集

数据集介绍

visda-2019图像分类-多源域适应竞赛 包含了6个域的数据集:clipart(剪贴画图像的集合)、infograph(具有特定对象的信息图图像)、painting(以绘画形式对物体的艺术描绘)、quickdraw(快速绘画)、real(照片和真实世界图像)、sketch(特定对象的草图),均包含了344个相同的类。下图为图像示例,每行代表了一个域,每列代表一个类别。

ModelArts无监督域迁移

竞赛中的clipart、painting为目标域,只能使用其他域作为训练集。我们使用ModelArts无监督域迁移算法将sketch、real分别相对clipart、painting进行域迁移数据生成。部分生成效果如下,sketch到clipart、painting的适应效果非常明显,上色非常饱满。





最终得到的数据集信息如下表。其中sketch+da_sketch2painting、sketch+da_sketch2clipart、real+da_real2clipart表示源域融合了ModelArts无监督域迁移生成的新域数据集。

数据集 类别数 数据集大小
sketch 344 70386
painting 344 75759
clipart 344 48833
real 344 175327
sketch+da_sketch2painting 344 140246
sketch+da_sketch2clipart 344 139908
real+da_real2clipart 344 350135


迁移学习测试

本案例是单个域训练到单个域的测试,如sketch域上训练到clipart域上进行测试。本案例测试使用ModelArts AI市场算法ResNet50进行训练,得到如下表格的测试结果。其中painting_train->painting_test与clipart_train->clipart_test表示目标域上进行随机划分训练集与测试集之后进行图像分类的结果,取自论文测试结果,作为本案例测试的上限。源域real、sketch为训练集,clipart和painting测试集,得到的结果是不做任何域适应的结果,作为本次测试的下限。

使用ModelArts无监督域迁移生成的新数据集与源域融合进行迁移学习训练,在clipart和painting上进行推理测试,相比源模型直接推理目标域精度提升了1-4个百分点

训练集 测试集 ACC
painting_train painting_test 0.576
clipart_train clipart_test 0.655
sketch painting 0.269
sketch clipart 0.438
real clipart 0.4377
sketch+da_sketch2painting painting 0.308
sketch+da_sketch2clipart clipart 0.463
real+da_real2clipart clipart 0.4467



ModelArts数据处理相关博客

1. 数据处理简介:https://bbs.huaweicloud.cn/blogs/193413 

2. 数据增强:https://bbs.huaweicloud.cn/blogs/189148  使用数据增强,解决数据不足和数据集不均衡的情况

3. 数据生成域迁移:https://bbs.huaweicloud.cn/blogs/193405  数据风格变换:ModelArts的数据域迁移功能

4. 数据校验:https://bbs.huaweicloud.cn/blogs/193412  数据校验--给你的数据做个体检吧

5. 数据去重:https://bbs.huaweicloud.cn/blogs/193420  数据去重---ModelArts在数据处理上的应用技巧-免费,欢迎大家体验

6. 数据清洗:https://bbs.huaweicloud.cn/blogs/193421  数据清洗---ModelArts在数据处理上的应用技巧-免费,欢迎大家体验

7. 难例筛选:https://bbs.huaweicloud.cn/blogs/193422  如何加速AI模型迭代:Modelarts的难例筛选功能



【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。