如果您的业务场景涉及度量学习,则可以通过图像度量学习训练(raw)组件构建度量学习模型,从而进行模型推理。本文为您介绍图像度量学习训练(raw)组件的配置方法和使用示例。
前提条件
已开通OSS并完成授权,详情请参见开通OSS服务和云产品依赖与授权:Designer。
功能限制
支持的计算引擎为DLC。
算法简介
图像度量学习训练(raw)组件提供了resnet50、resnet18、resnet34、resnet101、swint_tiny、swint_small、swint_base、vit_tiny、vit_small、vit_base、xcit_tiny、xcit_small和xcit_base等主流模型。
可视化配置组件
输入桩
输入桩(从左到右)
限制数据类型
建议上游组件
是否必选
训练数据标注文件
OSS
否
评估数据标注文件
OSS
否
组件参数
页签
参数
是否必选
描述
默认值
字段设置
度量学习模型类型
是
训练模型使用的算法类型,支持以下取值:
数据并行的度量学习
模型并行的度量学习
数据并行的度量学习
保存训练输出的oss目录
是
存储训练模型的OSS目录,比如:
oss://examplebucket/yun****/designer_test
。无
训练数据标注结果文件路径
否
如果您没有通过输入桩配置训练数据标注文件,则需要配置该参数。
说明如果您同时通过输入桩和该参数配置了训练数据标注文件,则优先使用输入桩配置的数据。
训练数据标注文件所在的OSS路径,比如:
oss://examplebucket/yun****/data/imagenet/meta/train_labeled.txt
。其中train_labeled.txt文件每行的存储格式为:
绝对路径/图片名称.jpg label_id
。重要图片存放路径和label_id之间使用空格分隔。
无
验证数据标注结果文件路径
否
如果您没有通过输入桩配置评估数据标注文件,则需要配置该参数。
说明如果您同时通过输入桩和该参数配置了验证数据标注文件,则优先使用输入桩配置的数据。
验证数据标注文件所在的OSS路径,比如:
oss://examplebucket/yun****/data/imagenet/meta/val_labeled.txt
。其中val_labeled.txt文件每行的存储格式为:
绝对路径/图片名称.jpg label_id
。重要图片存放路径和label_id之间使用空格分隔。
无
类别名称列表文件
否
支持直接写入类别名称,或设置为存有类别名称的txt文件所在的OSS路径。
无
数据源格式
是
输入数据的格式类型,支持ClsSourceImageList和ClsSourceItag。
ClsSourceImageList
预训练模型oss路径
否
如果您有自己的预训练模型,则将该参数配置为预训练模型的OSS路径。如果没有配置该参数,则使用PAI提供的默认预训练模型。
无
参数设置
度量学习模型使用的backbone
是
选择使用的主流模型,支持以下取值:
resnet_50
resnet_18
resnet_34
resnet_101
swin_transformer_tiny
swin_transformer_small
swin_transformer_base
resnet50
图片resize大小
是
图片调整后的大小,单位为像素。
224
bachbone输出的特征维度
是
设置主流模型输出的特征维度,整数。
2048
特征输出的特征维度
是
设置Neck输出的特征维度,整数。
1536
训练数据分类标注的类别数目
是
度量学习设置的输出维度数目。
无
度量学习模型使用的损失函数
是
损失函数用来评估训练模型预测值与真实值不一致的程度。支持以下取值:
AMSoftmax推荐参数margin 0.4 scale 30
ArcFaceLoss推荐参数margin 28.6 scale 64
CosFaceLoss推荐参数margin 0.35 scale 64
LargeMarginSoftmaxLoss推荐参数margin 4 scale 1
SphereFaceLoss推荐参数margin 4 scale 1
基于模型并行的AMSoftmax可随着GPU数目扩展分类上线
基于模型并行的Softmax可随着GPU数目扩展分类上限
AMSoftmax推荐参数margin 0.4 scale 30
度量学习损失函数参数scale
是
根据度量学习使用的损失函数设置。
30
度量学习损失函数参数margin
是
根据度量学习使用的损失函数设置。
0.4
度量学习损失函数权重
否
损失函数的权重值,用来权衡度量和分类的优化比例。
1.0
优化方法
是
训练模型使用的优化方法,支持以下取值:
SGD
AdamW
SGD
初始学习率
是
初始学习率大小,浮点类型。
0.03
训练batch_size
是
训练的批大小,即模型训练过程中,每次迭代(每一步)训练的样本数量。
无
总的训练迭代epoch轮数
是
所有样本训练完成一轮表示一个epoch。总的epoch轮数表示所有样本共训练多少轮。
200
保存checkpoint的频率
否
保存模型文件的频率。取值为1表示1个epoch训练完成后保存一次模型。
10
执行调优
读取训练数据线程数
否
读取训练数据的进程数量。
4
开启半精度
否
选中该参数,表示使用半精度进行模型训练,用来降低内存占用。
无
单击或分布式(MaxCompute/DLC)
是
组件运行的引擎,您可以结合实际情况选择。系统支持以下计算引擎:
单机DLC
分布式DLC
单机DLC
worker个数
否
当运行引擎为分布式DLC时,需要配置该参数。
训练过程中,并发的进程(worker)数量。
1
gpu机型选择
是
选择运行的GPU规格。
8vCPU+60GB Mem+1xp100-ecs.gn5-c8g1.2xlarge
使用示例
您可以使用图像度量学习训练(raw)组件构建如下工作流。本示例中,您需要按照以下流程配置组件:
准备数据,通过PAI提供的智能标注模块进行数据标注,详情请参见智能标注(iTAG)。
使用读OSS数据-4和读OSS数据-5组件分别训练数据标注结果文件和验证数据标注结果文件,即配置读OSS数据组件的OSS数据路径参数为存放训练数据标注结果文件和验证数据标注结果文件的OSS路径。
将以上2个读OSS数据组件接入图像度量学习训练(raw)组件,并配置具体参数,详情请参见上文的可视化配置组件。