在Model Gallery中,您可以選擇直接部署開源的預訓練圖片分類模型,或針對定制化場景,使用自己的數據集對預訓練模型進行微調訓練,并使用微調訓練模型將圖片分類成定制化的類別。本文為您介紹如何使用Model Gallery執行圖片分類任務。
前提條件
已創建OSS Bucket存儲空間,具體操作請參見控制臺創建存儲空間。
一、進入模型詳情頁面
進入快速開始頁面。
登錄PAI控制臺。
在左側導航欄單擊工作空間列表,在工作空間列表頁面中單擊待操作的工作空間名稱,進入對應工作空間內。
在左側導航欄單擊快速開始,進入快速開始頁面。
在Model Gallery首頁,單擊計算機視覺區域下的圖片分類,然后單擊ViT圖像分類-通用模型卡片,進入模型詳情頁面。
在模型列表頁面,您可以看到多個來自不同開源社區的主流模型。您也可以自由選擇其他適合您當前業務需求的模型。
一般來說,參數量越大的模型效果會更好,但相應的微調訓練所需要的數據量和模型在線服務運行時產生的費用也會更多。
大多數模型會標注所使用的預訓練數據集。預訓練數據集和實際使用場景越接近,直接部署和微調訓練效果都會越好。您可以在選擇模型后的模型詳情頁面獲得更多關于該模型預訓練數據集的信息。
二、直接部署模型
Model Gallery提供的cv_vit-base_image-classification_ImageNet-labels模型來源于ModelScope提供的ViT圖像分類-通用模型。它是基于Transformer ViT Base架構的圖片分類模型,在ImageNet-1K數據集上完成圖片分類訓練,可以直接用于ImageNet-1K標簽覆蓋到的圖片分類任務。您可以通過Model Gallery將此模型直接部署到EAS,創建一個模型服務,用于圖片分類的推理任務。具體操作步驟如下:
部署服務。
在模型詳情頁面,單擊模型部署。
確認模型服務信息和資源部署信息。
Model Gallery已經根據每個模型的特點預置了部署相關的計算資源與服務名稱,本案例使用默認配置。您也可以根據業務需要對部署相關的配置進行更改。如何配置參數,詳情請參見部署模型和調試模型。
單擊部署,并在計費提醒對話框中,單擊確定。
頁面自動跳轉到服務詳情頁面,在基本信息區域查看模型服務部署狀態。當狀態變為運行中時,表明模型服務已部署成功。
調用模型服務。
模型服務部署成功后,您即可通過HTTP API調用模型服務,發送預測請求。模型服務接收通過Base64編碼的圖片,并以JSON形式返回預測的結果。具體操作步驟如下。
在服務詳情頁面的資源信息區域,單擊查看調用信息。
在調用信息對話框的公網地址調用頁簽中,查看公網調用的訪問地址和Token,并保存到本地。
使用Python Requests庫調用模型服務,示例代碼如下。
import requests import base64 image_path = "<PathToLocalImage>" url = "<PredictionServiceURL>" token = "<PredictionServiceAccessToken>" def encode_file_to_base64(f): with open(f, "rb") as file: encoded_string = base64.b64encode(file.read()) base64_str = str(encoded_string, "utf-8") return base64_str base64_string = encode_file_to_base64(image_path) request_body = { "image": base64_string } headers = {"Authorization": token} resp = requests.post(url=url, headers=headers, json=request_body) print(resp.content.decode()) print("status code:", resp.status_code)
其中:
token
和url
替換為上述步驟中查詢到的Token和訪問地址;image_path替換為本地圖片路徑,圖片格式為.png或.jpg。調用成功,模型服務將返回最有可能的5個圖片分類和每個分類的得分。結果示例如下。
{ "scores": [ 0.4078965485095978, 0.24673610925674438, 0.1930493414402008, 0.0026617543771862984, 0.0009246605914086103 ], "labels": [ "tiger cat", "tabby, tabby cat", "Egyptian cat", "lynx, catamount", "tiger, Panthera tigris" ] }
三、微調訓練模型
cv_vit-base_image-classification_ImageNet-labels模型適用于ImageNet-1K覆蓋標簽的圖片分類任務。當您需要分類的圖片領域不在ImageNet-1K標簽中時,可以通過提供少量相關的圖片和標簽,通過微調訓練的方式獲得對應領域的圖片分類模型。您可以按照以下操作步驟完成模型的微調訓練以及產出模型的部署。
準備數據。
按照以下目錄結構準備數據集:
模型支持使用OSS上的圖片數據進行訓練。您需要通過目錄結構組織數據集,每一個目錄名是一個類別,相應類別的圖片都存放在類別目錄的一級子目錄下。例如訓練數據集的輸入為
oss://{YourOssBucket}.{OssEndpoint}/{PathToTrainData}/
,則該目錄下的數據結構為:├── category-1 │ ├── image1.jpeg │ └── image2.jpeg ├── category-2 │ ├── image3.jpeg │ └── image4.jpeg |... |... └── category-n ├── imagexxx.jpeg └── imageyyy.jpeg
為了獲得性能更好的模型,除了提供訓練數據集之外,也推薦您按照以上目錄結構準備一份驗證數據集,用于評估模型的性能以及訓練參數的優化調整。
將數據集按照上述目錄結構上傳到OSS存儲空間。如何上傳數據到OSS存儲空間,請參見控制臺上傳文件。
提交訓練作業。
準備好使用的數據集后,您可以在模型詳情頁面單擊訓練,配置訓練數據集、驗證數據集和輸出路徑。
Model Gallery已經預先根據模型特點預置了計算資源、超參數等參數,您可以使用默認參數,也可以根據業務需要進行修改。如何配置參數,請參見訓練模型。
說明cv_vit-base_image-classification_ImageNet-labels的模型默認使用MiniImageNet-100數據集進行微調訓練,方便您進行試用體驗。
單擊訓練。
頁面將自動跳轉至任務詳情頁面。您可以查看訓練任務的執行進度、任務日志以及模型的評估信息。當訓練任務成功運行后,訓練作業生成的模型將保存在上述步驟配置的輸出路徑中。
部署微調模型。
訓練好的模型會自動注冊到AI資產-模型管理中,您可以查看或部署對應的模型,詳情請參見注冊及管理模型。