如果您的業務情境涉及映像分類,則可以通過映像分類訓練(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路徑。