如果您的業務場景涉及圖像分類,則可以通過圖像分類訓練(torch)組件構建圖像分類模型,從而進行模型推理。本文為您介紹圖像分類訓練(torch)組件的配置方法及使用示例。
前提條件
已開通OSS并完成授權,詳情請參見開通OSS服務和云產品依賴與授權:Designer。
功能限制
僅Designer提供該算法組件。
支持的計算引擎為DLC。
算法簡介
圖像分類訓練(torch)組件提供了CNN和Transformer兩大類主流模型,支持ResNet、ResNeXt、HRNet、ViT、SwinT、MobileNetv2算法,并提供了基于ImageNet預訓練的模型,方便您進行模型調整。
圖像分類訓練(torch)組件位于組件庫視覺算法文件夾下的離線訓練模型子文件夾。
可視化配置組件
輸入樁
輸入樁(從左到右)
限制數據類型
建議上游組件
是否必選
訓練數據標注文件
OSS
否
驗證數據標注文件
OSS
否
組件參數
頁簽
參數
是否必選
描述
默認值
字段設置
訓練模型類型
是
訓練模型使用的算法類型,僅支持Classification。
Classification
保存訓練輸出的oss目錄
是
存儲訓練模型的OSS目錄,比如:
oss://examplebucket/yunji.cjy/designer_test
。無
訓練數據標注結果文件路徑
否
如果您沒有通過輸入樁配置該組件的訓練數據標注結果文件,則需要配置該參數。
說明如果您同時通過輸入樁和該參數配置了該組件的訓練數據標注結果文件,則優先使用輸入樁配置的數據。
訓練數據標注結果文件所在的OSS路徑,比如:
oss://examplebucket/yunji.cjy/data/imagenet/meta/train_labeled.txt
。其中train_labeled.txt文件每行的存儲格式為:
絕對路徑/圖片名稱.jpg label_id
。重要圖片存放路徑和label_id之間使用空格分隔。
重要組件提供ClsSourceImageList和ClsSourceItag格式的訓練數據輸入。通過PAI提供的智能標注模塊進行數據標注的數據文件可以直接輸入進行訓練。
驗證數據標注結果文件路徑
否
如果您沒有通過輸入樁配置該組件的驗證數據標注結果文件,則需要配置該參數。
說明如果您同時通過輸入樁和該參數配置了該組件的驗證數據標注結果文件,則優先使用輸入樁配置的數據。
驗證數據標注結果文件所在的OSS路徑,比如:
oss://examplebucket/yunji.cjy/data/imagenet/meta/val_labeled.txt
。其中val_labeled.txt文件每行的存儲格式為:
絕對路徑/圖片名稱.jpg label_id
。重要圖片存放路徑和label_id之間使用空格分隔。
說明組件提供ClsSourceImageList和ClsSourceItag格式的訓練數據輸入。通過PAI提供的智能標注模塊進行數據標注的數據文件可以直接輸入進行訓練。
無
類別名稱列表文件
是
類別名稱列表文件用于指定圖像分類后的類別列表,支持直接寫入類別名稱,或設置為存有類別名稱的txt文件路徑。
直接寫入類別名稱:配置格式為
[name1,name2,……]
多個類別名稱間使用逗號(,)分隔,例如[0, 1, 2]
或[person, dog, cat]
。配置為txt文件路徑:可將類別名稱列表寫入txt文件后,將txt文件上傳至同地域的OSS,此處即可配置為OSS中的文件路徑。
此場景下,txt文件中的類別名稱可以使用逗號(,)或換行符號(\n)分隔。例如
0, 1, 2
,或0, \n 1, \n 2\n
。如果此參數為空,類別名稱將默認為
str(0)
到str(num_classes-1)
。其中num_classes
為類別數目。即如果圖像分類后的類別數為3,則默認的類別名稱列表為
0,1,2
。
無
數據源格式
是
輸入數據的格式類型,支持ClsSourceImageList和ClsSourceItag。
ClsSourceItag
預訓練模型oss路徑
否
如果您有自己的預訓練模型,則將該參數配置為預訓練模型的OSS路徑。如果沒有配置該參數,則使用PAI提供的默認預訓練模型。
無
參數設置
圖像分類模型使用的backbone
是
選擇使用的骨干模型,支持以下幾種主流模型:
resnet
resnext
hrnet
vit
swint
mobilenetv2
inceptionv4
resnet
圖像類別數目
是
數據中類別標簽的數目。
無
圖片resize大小
是
圖片大小調整成固定的高和寬(默認長寬相等)。
224
優化方法
是
模型訓練的優化方法,支持以下取值:
SGD
Adam
SGD
初始學習率
是
初始學習率大小。
0.05
學習率調整策略
是
使用學習率調整策略來控制學習率。支持的學習率調整策略為step:人工指定各階段的學習率。
step
lr step
是
與學習率調整策略配合使用,多個step用半角逗號(,)連接。當epoch數量達到某個階段,學習率默認衰減0.1倍。
比如:初始學習率為0.1,總的訓練迭代epoch輪數為20,lr step為5,10。則epoch輪數為1~5時,學習率為0.1;epoch輪數為5~10時,學習率為0.01;epoch輪數為10~20時,學習率為0.001。
[30,60,90]
訓練batch_size
是
訓練的批大小,即模型訓練過程中,每次迭代(每一步)訓練的樣本數量。
2
評估batch_size
是
評估(驗證)的批大小,即模型驗證過程中,每次迭代(每一步)加載的樣本數量。
2
總的訓練迭代epoch輪數
是
所有樣本訓練完成一輪表示一個epoch。總的epoch輪數表示所有樣本共訓練多少輪。
1
保存checkpoint的頻率
否
保存模型文件的頻率。取值為1表示1個epoch訓練完成后保存一次模型。
1
導出的模型類型
是
導出模型的格式,提供兩種導出格式。
raw
onnx
raw
執行調優
每個GPU讀取訓練數據的進程數
否
每個GPU讀取訓練數據的進程數量。
4
開啟半精度
否
選中該參數,表示使用FP16半精度進行模型訓練,用來降低內存占用。
無
單機或分布式DLC
是
組件運行的引擎,您可以結合實際情況選擇。系統支持以下計算引擎:
單機DLC
分布式DLC
單機DLC
worker個數
否
當運行引擎為分布式DLC時,需要配置該參數。
訓練過程中,并發的進程(worker)數量。
1
cpu機型選擇
否
當運行引擎為分布式DLC時,需要配置該參數。
選擇運行的CPU規格。
16vCPU+64GB Mem-ecs.g6.4xlarge
gpu機型選擇
是
選擇運行的GPU規格。
8vCPU+60GB Mem+1xp100-ecs.gn5-c8g1.2xlarge
輸出樁
輸出樁
數據類型
下游組件
輸出模型
OSS路徑。該路徑是您在字段設置頁簽的保存訓練輸出的oss目錄參數配置的OSS路徑,訓練生成的模型存儲在該路徑下。
使用示例
您可以使用圖像分類訓練(torch)組件構建如下工作流。本示例中,您需要按照以下流程配置組件:
準備數據,通過PAI提供的智能標注模塊進行數據標注,詳情請參見智能標注(ITAG)。
使用讀OSS數據-1和讀OSS數據-2組件分別讀取訓練數據標注結果文件和驗證數據標注結果文件,即配置讀OSS數據組件的OSS數據路徑參數為存放訓練數據標注結果文件和驗證數據標注結果文件的OSS路徑。
重要數據源格式處選擇ClsSourceItag格式
將以上2個讀OSS數據組件接入圖像分類訓練(torch)組件,并配置具體參數,詳情請參見上文的可視化配置組件。
使用讀OSS數據-3組件讀取預測數據文件,即配置讀OSS數據組件的OSS數據路徑參數為存放預測數據文件的OSS路徑。
通過通用圖像預測組件進行離線推理,需要配置以下關鍵參數,詳情請參見通用圖像預測。
模型類型:選擇torch_classifier。
模型OSS路徑:圖像分類訓練(torch)組件輸出模型的OSS路徑。