在資料擷取部署的應用程式中,已連結的 Vision Warehouse (corpus) 包含一或多個媒體物件 assets。您可以透過 dataSchema 和使用者提供的 annotation 資源,提供這些媒體物件 assets 的詳細資料。
您必須先建立資料結構定義資源,才能建立具有該資料結構定義鍵的 annotation 資源。建立資料結構 (dataSchema 資源) 後,Vertex AI Vision API 就能解讀媒體註解,接著您就可以在資料倉儲中建立媒體的 annotation 資源。
建立資料結構定義 (API)
REST
使用任何要求資料之前,請先替換以下項目:
- REGIONALIZED_ENDPOINT:端點可能包含與
LOCATION_ID相符的前置字串,例如europe-west4-。進一步瞭解 地區化端點。 - PROJECT_NUMBER:您的 Google Cloud專案編號。
- LOCATION_ID:您使用 Vertex AI Vision 的區域。例如:
us-central1、europe-west4。請參閱可用區域。 - CORPUS_ID:目標語料庫的 ID。
- DATASCHEMA_KEY:這個鍵必須與使用者指定的註解鍵相符,且在
corpus內不得重複。例如:data-key。 - ANNOTATION_DATA_TYPE:註解的資料類型。可用的值包括:
DATA_TYPE_UNSPECIFIEDINTEGERFLOATSTRINGDATETIMEGEO_COORDINATEPROTO_ANYBOOLEAN
詳情請參閱 API 參考說明文件。
- ANNOTATION_GRANULARITY:這個
dataSchema下註解的精細程度。可用的值包括:GRANULARITY_UNSPECIFIED- 未指定精細程度。GRANULARITY_ASSET_LEVEL- 素材資源層級的精細度 (註解不得包含媒體素材資源的時間分割資訊)。GRANULARITY_PARTITION_LEVEL- 分區層級的精細程度 (註解必須包含媒體資產的時間分區資訊)。
- SEARCH_STRATEGY:其中一個可用的列舉值。要套用至註解鍵的搜尋策略類型。可用的值包括:
NO_SEARCHEXACT_SEARCHSMART_SEARCH
HTTP 方法和網址:
POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/dataSchemas
JSON 要求主體:
{
"key": "DATASCHEMA_KEY",
"schema_details": {
"type": "ANNOTATION_DATA_TYPE",
"granularity": "ANNOTATION_GRANULARITY",
"search_strategy": {
"search_strategy_type": "SEARCH_STRATEGY"
}
}
}
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/dataSchemas"
PowerShell
將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/dataSchemas" | Select-Object -Expand Content
您應該會收到如下的 JSON 回應:
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/dataSchemas/DATASCHEMA_ID",
"key": "data-key",
"schemaDetails": {
"type": "BOOLEAN",
"granularity": "GRANULARITY_ASSET_LEVEL",
"searchStrategy": {
"search_strategy_type": "EXACT_SEARCH"
}
}
}
更新資料結構定義 (API)
REST 和指令列
下列程式碼使用 projects.locations.corpora.dataSchemas.patch 方法更新 dataSchema。
這個範例會在要求網址中使用 ?updateMask=schemaDetails.type,schemaDetails.granularity,並在要求主體中加入新的 schemaDetails.type 和 schemaDetails.granularity 值,以更新資料結構。
使用任何要求資料之前,請先替換以下項目:
- REGIONALIZED_ENDPOINT:端點可能包含與
LOCATION_ID相符的前置字串,例如europe-west4-。進一步瞭解 地區化端點。 - PROJECT_NUMBER:您的 Google Cloud專案編號。
- LOCATION_ID:您使用 Vertex AI Vision 的區域。例如:
us-central1、europe-west4。請參閱可用區域。 - CORPUS_ID:目標語料庫的 ID。
- DATASCHEMA_ID:目標資料結構定義的 ID。
?updateMask=fieldToUpdate:可套用updateMask的可用欄位之一。在要求主體中指定對應的新欄位值。這項新值會取代現有的欄位值。可用欄位:- 鍵:
?updateMask=key - 結構定義類型:
?updateMask=schemaDetails.type - 結構定義精細程度:
?updateMask=schemaDetails.granularity - 結構定義搜尋策略類型:
?updateMask=schemaDetails.searchStrategy.searchStrategyType - 更新所有欄位:
?updateMask=*
- 鍵:
HTTP 方法和網址:
PATCH https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/dataSchemas/DATASCHEMA_ID?updateMask=schemaDetails.type,schemaDetails.granularity
JSON 要求主體:
{
"key": "original-data-key",
"schemaDetails": {
"type":"INTEGER",
"granularity":"GRANULARITY_PARTITION_LEVEL"
"searchStrategy": {
"searchStrategyType": "NO_SEARCH"
}
}
}
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:
curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/dataSchemas/DATASCHEMA_ID?updateMask=schemaDetails.type,schemaDetails.granularity"
PowerShell
將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/dataSchemas/DATASCHEMA_ID?updateMask=schemaDetails.type,schemaDetails.granularity" | Select-Object -Expand Content
您應該會收到如下的 JSON 回應:
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/dataSchemas/DATASCHEMA_ID",
"key": "original-data-key",
"schemaDetails": {
"type": "INTEGER",
"granularity": "GRANULARITY_PARTITION_LEVEL",
"searchStrategy": {
"searchStrategyType": "NO_SEARCH"
}
}
}
新增自訂結構體資料結構定義
使用者可透過自訂結構體定義更複雜的容器來保留值,並提供搜尋功能。如要使用這項功能,必須先定義資料結構,例如:
REST
使用任何要求資料之前,請先替換以下項目:
- REGIONALIZED_ENDPOINT:端點可能包含與
LOCATION_ID相符的前置字串,例如europe-west4-。進一步瞭解 地區化端點。 - PROJECT_NUMBER:您的 Google Cloud專案編號。
- LOCATION_ID:您使用 Vertex AI Vision 的區域。例如:
us-central1、europe-west4。請參閱可用區域。 - CORPUS_ID:目標語料庫的 ID。
HTTP 方法和網址:
POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/dataSchemas
JSON 要求主體:
{
"key": "person",
"schema_details" : {
"type":"CUSTOMIZED_STRUCT",
"granularity":"GRANULARITY_ASSET_LEVEL",
"customized_struct_config": {
"field_schemas": {
"name": {
"type":"STRING",
"granularity":"GRANULARITY_ASSET_LEVEL",
"search_strategy": {
"search_strategy_type":"EXACT_SEARCH"
}
},
"age": {
"type":"FLOAT",
"granularity":"GRANULARITY_ASSET_LEVEL",
"search_strategy": {
"search_strategy_type":"EXACT_SEARCH"
}
}
}
}
}
}
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/dataSchemas"
PowerShell
將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/dataSchemas" | Select-Object -Expand Content
您應該會收到如下的 JSON 回應:
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/dataSchemas/DATASCHEMA_ID",
"key": "person",
"schemaDetails" : {
"type":"CUSTOMIZED_STRUCT",
"granularity":"GRANULARITY_ASSET_LEVEL",
"customized_struct_config": {
"field_schemas": {
"name": {
"type":"STRING",
"granularity":"GRANULARITY_ASSET_LEVEL",
"search_strategy": {
"search_strategy_type":"EXACT_SEARCH"
}
},
"age": {
"type":"FLOAT",
"granularity":"GRANULARITY_ASSET_LEVEL",
"search_strategy": {
"search_strategy_type":"EXACT_SEARCH"
}
}
}
}
}
}
之後即可插入註解
使用任何要求資料之前,請先替換以下項目:
- REGIONALIZED_ENDPOINT:端點可能包含與
LOCATION_ID相符的前置字串,例如europe-west4-。進一步瞭解 地區化端點。 - PROJECT_NUMBER:您的 Google Cloud專案編號。
- LOCATION_ID:您使用 Vertex AI Vision 的區域。例如:
us-central1、europe-west4。請參閱可用區域。 - CORPUS_ID:目標語料庫的 ID。
- ASSET_ID:目標資產的 ID。
HTTP 方法和網址:
POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/assets/ASSET_ID/annotations
JSON 要求主體:
{
"user_specified_annotation" : {
"key": "person",
"value": {
"customized_struct_value":{
"elements" : {
"name": {
"str_value":"John"
},
"age": {
"float_value":10.5
}
}
}
}
}
}
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/assets/ASSET_ID/annotations"
PowerShell
將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/assets/ASSET_ID/annotations" | Select-Object -Expand Content
您應該會收到如下的 JSON 回應:
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/assets/ASSET_ID/annotations/ANNOTATION_ID",
"userSpecifiedAnnotation": {
"key": "person",
"value": {
"customized_struct_value":{
"elements" : {
"name": {
"str_value":"John"
},
"age": {
"float_value":10.5
}
}
}
}
}
}
註解建立索引後,即可發出搜尋要求,如下所示:
使用任何要求資料之前,請先替換以下項目:
- REGIONALIZED_ENDPOINT:端點可能包含與
LOCATION_ID相符的前置字串,例如europe-west4-。進一步瞭解 地區化端點。 - PROJECT_NUMBER:您的 Google Cloud專案編號。
- LOCATION_ID:您使用 Vertex AI Vision 的區域。例如:
us-central1、europe-west4。請參閱可用區域。 - CORPUS_ID:目標語料庫的 ID。
HTTP 方法和網址:
POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets
JSON 要求主體:
{
"page_size": 10,
"criteria": {
"field": "person.name",
"text_array": {
"txt_values": "John"
},
},
}
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets"
PowerShell
將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets" | Select-Object -Expand Content
您應該會收到如下的 JSON 回應:
修改倉儲結構定義詳細資料 (主控台)
系統會透過應用程式,從模型產生結構定義欄位。您也可以新增自訂欄位。
修改可切面欄位後,您就能使用這些欄位搜尋倉庫。
控制台
開啟 Vertex AI Vision 資訊主頁的「倉庫」分頁。
找出所需倉庫,然後選取其名稱。 「倉庫詳細資料」頁面隨即顯示。
選取要啟用搜尋功能的欄位。
