本文介紹圖片標簽檢測功能的應用場景和使用方法等。
功能簡介
圖片標簽檢測可以識別圖片中的場景、物體和事件等內容,實現圖片的自動打標。目前支持的標簽種類包含三十多個分類、數千個標簽,如下圖所示。
應用場景
場景名稱 | 場景說明 |
內容識別 | 根據拍攝或上傳的圖片,識別圖片中的物品、場景等信息,可應用于拍照識物或科普類的功能或產品中。 |
智能相冊 | 根據圖片內容信息,并對圖片進行自動分類,實現相冊圖庫的智能分類,實現高效自動化管理。 |
場景分析 | 對圖片中包含的多種事物或場景進行識別,為不同場景打上內容標簽,提升場景分析效率,減少人工標注成本。 |
內容運營 | 獲取圖片標簽信息,實現內容推薦,可廣泛應用于社交或新聞資訊及電商等內容平臺中。 |
使用限制
圖片標簽檢測的使用限制如下表所示:
限制項 | 限制 |
圖片格式 | 支持檢測的圖片格式如下:
|
圖片大小 | 支持檢測的圖片大小限制如下:
|
前提條件
已創建并獲取AccessKey。具體操作,請參見創建AccessKey。
已開通OSS服務、創建存儲空間并上傳文件到存儲空間。具體操作,請參見控制臺上傳文件。
已開通智能媒體管理服務。具體操作,請參見開通產品。
已通過智能媒體管理控制臺創建項目。具體操作,請參見創建項目。
OSS服務存儲空間與智能媒體管理服務創建項目同屬一個地域,例如華北2。
說明您也可以調用API接口創建項目。具體操作,請參見CreateProject - 創建項目。
您可以調用ListProjects - 列出所有項目信息的列表接口列出指定地域下已創建的所有項目信息。
使用方法
調用DetectImageLabels - 檢測圖片中的標簽信息接口檢測圖片中的標簽信息。
檢測信息
IMM項目名稱:test-project
待檢測圖片的存儲地址:oss://test-bucket/test-object.jpg
圖片示例:
請求示例
{
"ProjectName": "test-project",
"SourceURI": "oss://test-bucket/test-object.jpg",
"Threshold": 0.7
}
返回示例
{
"RequestId": "91C92EBA-5E51-50C8-B51B-8C3BDC66EB86",
"Labels": [
{
"CentricScore": 0.797,
"Language": "zh-Hans",
"LabelConfidence": 1,
"LabelName": "服裝",
"LabelLevel": 2,
"ParentLabelName": "衣服"
},
{
"CentricScore": 0.695,
"Language": "zh-Hans",
"LabelConfidence": 1,
"LabelName": "食肉動物",
"LabelLevel": 2,
"ParentLabelName": "野生動物"
},
{
"CentricScore": 0.723,
"Language": "zh-Hans",
"LabelConfidence": 0.987,
"LabelName": "帳篷",
"LabelLevel": 2,
"ParentLabelName": "其他場景"
},
{
"CentricScore": 0.759,
"Language": "zh-Hans",
"LabelConfidence": 0.963,
"LabelName": "建筑",
"LabelLevel": 3,
"ParentLabelName": "地標建筑"
},
{
"CentricScore": 0.695,
"Language": "zh-Hans",
"LabelConfidence": 0.949,
"LabelName": "寵物",
"LabelLevel": 1,
"ParentLabelName": ""
},
{
"CentricScore": 0.787,
"Language": "zh-Hans",
"LabelConfidence": 0.944,
"LabelName": "人像",
"LabelLevel": 2,
"ParentLabelName": "面部"
},
{
"CentricScore": 0.695,
"Language": "zh-Hans",
"LabelConfidence": 0.939,
"LabelName": "狗",
"LabelLevel": 3,
"ParentLabelName": "寵物狗"
},
{
"CentricScore": 0.803,
"Language": "zh-Hans",
"LabelConfidence": 0.924,
"LabelName": "人",
"LabelLevel": 2,
"ParentLabelName": "面部"
},
{
"CentricScore": 0.687,
"Language": "zh-Hans",
"LabelConfidence": 0.895,
"LabelName": "金毛尋回犬",
"LabelLevel": 3,
"ParentLabelName": "寵物狗"
},
{
"CentricScore": 0.689,
"Language": "zh-Hans",
"LabelConfidence": 0.885,
"LabelName": "露營",
"LabelLevel": 2,
"ParentLabelName": "娛樂"
},
{
"CentricScore": 0.76,
"Language": "zh-Hans",
"LabelConfidence": 0.883,
"LabelName": "家具",
"LabelLevel": 1,
"ParentLabelName": ""
},
{
"CentricScore": 0.802,
"Language": "zh-Hans",
"LabelConfidence": 0.878,
"LabelName": "男性",
"LabelLevel": 2,
"ParentLabelName": "面部"
},
{
"CentricScore": 0.792,
"Language": "zh-Hans",
"LabelConfidence": 0.85,
"LabelName": "女性",
"LabelLevel": 2,
"ParentLabelName": "面部"
},
{
"CentricScore": 0.722,
"Language": "zh-Hans",
"LabelConfidence": 0.849,
"LabelName": "植物",
"LabelLevel": 1,
"ParentLabelName": ""
},
{
"CentricScore": 0.729,
"Language": "zh-Hans",
"LabelConfidence": 0.84,
"LabelName": "草坪",
"LabelLevel": 3,
"ParentLabelName": "自然景觀"
},
{
"CentricScore": 0.695,
"Language": "zh-Hans",
"LabelConfidence": 0.818,
"LabelName": "動物",
"LabelLevel": 2,
"ParentLabelName": "野生動物"
},
{
"CentricScore": 0.782,
"Language": "zh-Hans",
"LabelConfidence": 0.816,
"LabelName": "T恤",
"LabelLevel": 2,
"ParentLabelName": "衣服"
},
{
"CentricScore": 0.749,
"Language": "zh-Hans",
"LabelConfidence": 0.813,
"LabelName": "鞋",
"LabelLevel": 2,
"ParentLabelName": "衣服"
},
{
"CentricScore": 0.826,
"Language": "zh-Hans",
"LabelConfidence": 0.813,
"LabelName": "鞋類",
"LabelLevel": 2,
"ParentLabelName": "衣服"
},
{
"CentricScore": 0.685,
"Language": "zh-Hans",
"LabelConfidence": 0.775,
"LabelName": "拉布拉多犬",
"LabelLevel": 3,
"ParentLabelName": "寵物狗"
},
{
"CentricScore": 0.76,
"Language": "zh-Hans",
"LabelConfidence": 0.746,
"LabelName": "椅子",
"LabelLevel": 2,
"ParentLabelName": "家具"
},
{
"CentricScore": 0.757,
"Language": "zh-Hans",
"LabelConfidence": 0.742,
"LabelName": "女孩",
"LabelLevel": 2,
"ParentLabelName": "面部"
},
{
"CentricScore": 0.776,
"Language": "zh-Hans",
"LabelConfidence": 0.726,
"LabelName": "微笑",
"LabelLevel": 2,
"ParentLabelName": "外貌特征"
},
{
"CentricScore": 0.695,
"Language": "zh-Hans",
"LabelConfidence": 0.722,
"LabelName": "犬類運動",
"LabelLevel": 2,
"ParentLabelName": "體育運動"
},
{
"CentricScore": 0.685,
"Language": "zh-Hans",
"LabelConfidence": 0.664,
"LabelName": "金毛",
"LabelLevel": 3,
"ParentLabelName": "寵物狗"
},
{
"CentricScore": 0.826,
"Language": "zh-Hans",
"LabelConfidence": 1,
"LabelName": "衣服",
"LabelLevel": 1,
"ParentLabelName": ""
},
{
"CentricScore": 0.695,
"Language": "zh-Hans",
"LabelConfidence": 1,
"LabelName": "野生動物",
"LabelLevel": 1,
"ParentLabelName": ""
},
{
"CentricScore": 0.723,
"Language": "zh-Hans",
"LabelConfidence": 0.987,
"LabelName": "其他場景",
"LabelLevel": 1,
"ParentLabelName": ""
},
{
"CentricScore": 0.759,
"Language": "zh-Hans",
"LabelConfidence": 0.963,
"LabelName": "地標建筑",
"LabelLevel": 2,
"ParentLabelName": "旅游&地理"
},
{
"CentricScore": 0.803,
"Language": "zh-Hans",
"LabelConfidence": 0.944,
"LabelName": "面部",
"LabelLevel": 1,
"ParentLabelName": ""
},
{
"CentricScore": 0.695,
"Language": "zh-Hans",
"LabelConfidence": 0.939,
"LabelName": "寵物狗",
"LabelLevel": 2,
"ParentLabelName": "寵物"
},
{
"CentricScore": 0.689,
"Language": "zh-Hans",
"LabelConfidence": 0.885,
"LabelName": "娛樂",
"LabelLevel": 1,
"ParentLabelName": ""
},
{
"CentricScore": 0.729,
"Language": "zh-Hans",
"LabelConfidence": 0.84,
"LabelName": "自然景觀",
"LabelLevel": 2,
"ParentLabelName": "旅游&地理"
},
{
"CentricScore": 0.776,
"Language": "zh-Hans",
"LabelConfidence": 0.726,
"LabelName": "外貌特征",
"LabelLevel": 1,
"ParentLabelName": ""
},
{
"CentricScore": 0.695,
"Language": "zh-Hans",
"LabelConfidence": 0.722,
"LabelName": "體育運動",
"LabelLevel": 1,
"ParentLabelName": ""
},
{
"CentricScore": 0.759,
"Language": "zh-Hans",
"LabelConfidence": 0.963,
"LabelName": "旅游&地理",
"LabelLevel": 1,
"ParentLabelName": ""
}
]
}
檢測結果顯示,該檢測圖片包含以下標簽:
父級標簽:
衣服
、野生動物
、地標建筑
、面部
、寵物狗
等標簽:
服裝
、食肉動物
、帳篷
、建筑
、寵物
、人臉
、狗
等
示例代碼
以Python SDK為例,圖片標簽檢測的完整示例代碼如下。
# -*- coding: utf-8 -*-
# This file is auto-generated, don't edit it. Thanks.
import sys
import os
from typing import List
from alibabacloud_imm20200930.client import Client as imm20200930Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_imm20200930 import models as imm_20200930_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClient
class Sample:
def __init__(self):
pass
@staticmethod
def create_client(
access_key_id: str,
access_key_secret: str,
) -> imm20200930Client:
"""
使用AccessKey ID&AccessKey Secret初始化賬號Client。
@param access_key_id:
@param access_key_secret:
@return: Client
@throws Exception
"""
config = open_api_models.Config(
access_key_id=access_key_id,
access_key_secret=access_key_secret
)
# 填寫訪問的IMM域名。
config.endpoint = f'imm.cn-beijing.aliyuncs.com'
return imm20200930Client(config)
@staticmethod
def main(
args: List[str],
) -> None:
# 阿里云賬號AccessKey擁有所有API的訪問權限,建議您使用RAM用戶進行API訪問或日常運維。
# 強烈建議不要把ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET保存到工程代碼里,否則可能導致AccessKey泄露,威脅您賬號下所有資源的安全。
# 本示例通過從環境變量中讀取AccessKey,來實現API訪問的身份驗證。如何配置環境變量,請參見http://bestwisewords.com/document_detail/2361894.html。
imm_access_key_id = os.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
imm_access_key_secret = os.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
# 初始化客戶端。
client = Sample.create_client(imm_access_key_id, imm_access_key_secret)
detect_image_labels_request = imm_20200930_models.DetectImageLabelsRequest(
project_name='test-project',
source_uri='oss://test-bucket/test-object.jpg',
threshold=0.7
)
runtime = util_models.RuntimeOptions()
try:
# 復制代碼運行請自行打印API的返回值。
client.detect_image_labels_with_options(detect_image_labels_request, runtime)
except Exception as error:
# 如有需要,請打印錯誤信息。
UtilClient.assert_as_string(error.message)
@staticmethod
async def main_async(
args: List[str],
) -> None:
# 阿里云賬號AccessKey擁有所有API的訪問權限,建議您使用RAM用戶進行API訪問或日常運維。
# 強烈建議不要把ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET保存到工程代碼里,否則可能導致AccessKey泄露,威脅您賬號下所有資源的安全。
# 本示例通過從環境變量中讀取AccessKey,來實現API訪問的身份驗證。如何配置環境變量,請參見http://bestwisewords.com/document_detail/2361894.html。
imm_access_key_id = os.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
imm_access_key_secret = os.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
# 初始化客戶端。
client = Sample.create_client(imm_access_key_id, imm_access_key_secret)
detect_image_labels_request = imm_20200930_models.DetectImageLabelsRequest(
project_name='test-project',
source_uri='oss://test-bucket/test-object.jpg',
threshold=0.7
)
runtime = util_models.RuntimeOptions()
try:
# 復制代碼運行請自行打印API的返回值。
await client.detect_image_labels_with_options_async(detect_image_labels_request, runtime)
except Exception as error:
# 如有需要,請打印錯誤信息。
UtilClient.assert_as_string(error.message)
if __name__ == '__main__':
Sample.main(sys.argv[1:])
常見FAQ
圖片標簽檢測支持識別圖片中文字以及涉及日期、地點,并將其標簽化嗎?
暫不支持,可使用圖片語義檢索,提取圖片里的文字信息,然后您可以根據這些文字來確定日期和機構名稱。地點的話,如果您的圖片里面有exif信息,可以調用圖片信息的API,獲取到圖片拍攝的GPS 來獲取。
對于含有暴力、色情或其他敏感內容的圖片,自動檢測可能會不夠敏感或準確,有時候需要結合人工審核。