图片分类

更新时间:
复制 MD 格式

Model Gallery中,您可以直接部署预训练图片分类模型,也可以使用自己的数据集进行微调训练,获得定制化类别的分类模型。

前提条件

已创建OSS Bucket存储空间,具体操作请参见控制台创建存储空间

一、进入模型详情页面

  1. 进入Model Gallery页面。

    1. 登录PAI控制台

    2. 在顶部左上角根据实际情况选择地域。

    3. 在左侧导航栏选择工作空间列表,单击指定工作空间名称,进入对应工作空间内。

    4. 在左侧导航栏选择快速开始 > Model Gallery

  2. Model Gallery首页,单击计算机视觉区域下的图片分类,然后单击ViT图像分类-通用模型卡片,进入模型详情页面。

    image

    模型列表展示了来自多个开源社区的主流模型,可选择适合您业务需求的模型。

    • 参数量越大,模型效果越好,但所需训练数据量和在线服务费用也越高。

    • 大多数模型标注了预训练数据集。数据集与您的使用场景越接近,部署和微调效果越好。选择模型后可在详情页查看预训练数据集信息。

二、直接部署模型

Model Gallery提供的cv_vit-base_image-classification_ImageNet-labels模型来源于ModelScope提供的ViT图像分类-通用模型。它是基于Transformer ViT Base架构的图片分类模型,在ImageNet-1K数据集上完成图片分类训练,可以直接用于ImageNet-1K标签覆盖到的图片分类任务。您可以通过Model Gallery将此模型直接部署到EAS,创建一个模型服务,用于图片分类的推理任务。具体操作步骤如下:

  1. 部署服务。

    1. 在模型详情页面,单击模型部署

    2. 确认模型服务信息资源部署信息

      Model Gallery已根据模型特点预置了计算资源和服务名称,本案例使用默认配置。您也可以根据业务需要修改配置。如何配置参数,详情请参见部署模型和调试模型

    3. 单击部署,并在计费提醒对话框中,单击确定

      页面自动跳转到服务详情页面,在基本信息区域查看模型服务部署状态。当状态变为运行中时,表明模型服务已部署成功。

  2. 调用模型服务。

    部署成功后,通过HTTP API调用模型服务发送预测请求。模型服务接收Base64编码的图片,返回JSON格式的预测结果。

    1. 服务详情页面的资源信息区域,单击查看调用信息

      image

    2. 调用信息对话框的公网地址调用页签中,查看公网调用的访问地址Token,并保存到本地。

    3. 使用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)
      

      其中:tokenurl替换为上述步骤中查询到的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标签中时,可提供少量标注图片进行微调,获得定制领域的分类模型。

  1. 准备数据。

    1. 按照以下目录结构准备数据集:

      模型支持使用OSS上的图片数据进行训练。您需要通过目录结构组织数据集,每一个目录名是一个类别,相应类别的图片都存放在类别目录的一级子目录下。例如训练数据集的输入为oss://{YourOssBucket}.{OssEndpoint}/{PathToTrainData}/,则该目录下的数据结构为:

      ├── category-1
      │   ├── image1.jpeg
      │   └── image2.jpeg
      ├── category-2
      │   ├── image3.jpeg
      │   └── image4.jpeg
      |...
      |...
      └── category-n
          ├── imagexxx.jpeg
          └── imageyyy.jpeg

      为获得更好的模型,建议同时按上述目录结构准备验证数据集,用于评估性能和调整训练参数。

    2. 将数据集按照上述目录结构上传到OSS存储空间。如何上传数据到OSS存储空间,请参见上传文件

  2. 提交训练作业。

    1. 准备好使用的数据集后,您可以在模型详情页面单击训练,配置训练数据集验证数据集输出路径

      Model Gallery已根据模型特点预置了计算资源超参数,可使用默认值,也可按需修改。如何配置参数,请参见模型部署及训练

      说明

      cv_vit-base_image-classification_ImageNet-labels的模型默认使用MiniImageNet-100数据集进行微调训练,方便您进行试用体验。

    2. 单击训练

      image

      页面将自动跳转至任务详情页面。您可以查看训练任务的执行进度、任务日志以及模型的评估信息。当训练任务成功运行后,训练作业生成的模型将保存在上述步骤配置的输出路径中。

      image

  3. 部署微调模型。

    训练好的模型会自动注册到AI资产-模型管理中,您可以查看或部署对应的模型,详情请参见注册及管理模型