스트리밍 처리 외에도 데이터에서 정보를 가져오는 방법으로 일괄 처리를 선택할 수 있습니다. 이 스트리밍이 아닌 처리 모드를 사용하면 다른 미디어 유형을 지원하는 애플리케이션을 빌드할 수 있습니다.
Cloud Storage에 저장된 이미지 파일을 일부 모델로 일괄 처리할 수 있습니다. 출력은 Cloud Storage에 저장됩니다.
지원되는 모델
다음 모델은 일괄 처리를 지원합니다.
- 태그 인식기
- 제품 인식기
지원되는 데이터 유형
이 페이지에서는 다음 유형의 데이터를 일괄 처리하는 방법을 설명합니다.
- 이미지 데이터
시작하기 전에
- 이 페이지에 설명된 일괄 처리의 지원되는 모델 및 지원되는 데이터 유형을 검토합니다.
- 제품 인식기 모델을 사용하는 경우 일괄 처리를 위한 제품 인식기 모델을 만들 때 사용할
Catalog
및ProductRecognitionIndex
를 만듭니다. 또는 사용할 기존 제품 인식기 색인 또는 제품 인식기 모델을 식별합니다. - 태그 인식기 모델을 사용하는 경우 태그 인식기 모델 가이드를 사용하여 모델을 만듭니다.
- 제품 인식기 모델을 사용하는 경우 일괄 처리를 위한 제품 인식기 모델을 만들 때 사용할
- 입력 및 출력을 일괄 처리하기 위해 Cloud Storage 버킷을 하나 이상 만듭니다.
- 지원되는 파일을 찾아 처리할 수 있도록 Cloud Storage 입력 버킷에 업로드합니다.
사용자 경험
이미지 데이터를 일괄 처리하려면 다음과 같은 일반적인 단계를 완료하세요.
Vertex AI Vision API를 사용 설정합니다.
지원되는 프로세서 (제품 인식기 또는 태그 인식기)를 만듭니다.
애플리케이션을 만듭니다.
입력: Cloud Storage에서 처리할 파일을 지정하는 범용 입력 노드를 추가합니다.
처리: 모델 노드를 추가합니다.
출력: 처리된 데이터가 Cloud Storage에 저장되는 위치를 지정하는 출력 저장소 노드를 추가합니다.
각 인스턴스가 Cloud Storage 버킷 입력 위치에 해당하는 앱의 일괄 인스턴스를 만듭니다.
앱 및 앱 인스턴스를 배포합니다.
일괄 처리 인스턴스가 완료되면 Cloud Storage에 저장된 출력을 검사합니다.
이미지 일괄 처리
일괄 처리 요청을 전송하는 단계는 모델마다 다릅니다. 타겟 모델의 안내에 따라 이미지를 일괄 처리합니다.
제품 인식기 모델
이 샘플을 사용하여 제품 인식기 모델로 이미지를 일괄 처리합니다.
콘솔
Google Cloud 콘솔에서 이미지 일괄 처리 요청을 만듭니다.
새 애플리케이션 만들기
Vertex AI Vision 대시보드의 애플리케이션 탭을 엽니다.
만들기 버튼을 클릭합니다.
앱 이름을 입력하고 지역을 선택합니다.
계속을 클릭합니다.
결제 수단을 선택합니다. 선불 결제와 월별 결제에 관한 자세한 내용은 가격 책정 페이지를 참고하세요.
만들기를 클릭합니다.
일괄 처리 입력 지정
그래프 앱 빌더 페이지에서 범용 입력 노드를 클릭합니다.
측면 범용 입력 창에서 입력 소스 선택을 클릭합니다.
입력 소스 선택 페이지에서
일괄 예측을 선택합니다.계속을 클릭합니다.
소스 창의 위치 선택 도구 필드에서 찾아보기를 클릭하여 Cloud Storage의 파일 위치를 표시합니다.
선택사항입니다. 소스를 더 지정하려면 항목 추가를 클릭하고 이전 단계를 반복합니다.
제출을 클릭합니다.
모델 추가
그래프 앱 빌더 페이지에서 전문 모델 섹션의 제품 인식기 모델 노드를 클릭합니다.
제품 인식기 창에서 모델 선택을 클릭합니다.
기존 제품 인식기 모델 선택을 선택합니다.
새 모델 또는 색인을 만들어야 하는 경우 해당 옵션을 선택하여 리소스를 만듭니다.
목록에서 모델을 선택합니다.
선택을 클릭합니다.
선택사항입니다. 신뢰도 기준을 수정합니다.
설정 적용을 클릭합니다.
출력 대상 추가
그래프 앱 빌더 페이지의 출력 섹션에서 Cloud Storage 모델 노드를 클릭합니다.
Cloud Storage 창에서 찾아보기를 클릭하여 Cloud Storage에서 일괄 예측 출력 대상을 선택합니다.
애플리케이션 배포
- 그래프 앱 빌더 페이지에서 배포를 클릭합니다.
REST 및 명령줄
이미지 일괄 처리 요청을 전송하려면 다음 단계를 완료하세요.
projects.locations.processors.create
메서드로 제품 인식기 모델을 만듭니다.이 요청에는
Catalog
및ProductRecognitionIndex
리소스에 대한 참조가 포함됩니다.Catalog
및ProductRecognitionIndex
리소스 만들기에 관한 자세한 내용은 제품 인식기 모델 가이드를 참고하세요.curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://visionai.googleapis.com/v1alpha1/projects/PROJECT_ID/locations/LOCATION_ID/processors?processor_id=product-recognition-model1 \ -d '{ "display_name": "DISPLAY_NAME", "model_type": PRODUCT_RECOGNIZER, "custom_processor_source_info": { "source_type": PRODUCT_RECOGNIZER, "product_recognizer_artifact": { "retail_product_recognition_index":"projects/PROJECT_ID/locations/LOCATION_ID/retailCatalogs/CATALOG_ID/retailProductRecognitionIndexes/INDEX_ID", } } }'
새로 만든 제품 인식기 모델로 애플리케이션을 만듭니다. 이 요청에는
projects.locations.applications.create
메서드가 사용됩니다.요청 본문 (
app.json
):{ "applicationConfigs": { "nodes": [ { "displayName": "Universal Input", "name": "universal-input-0", "processor": "builtin:universal-input" }, { "displayName": "Product Recognition", "name": "product-recognition", "nodeConfig": { "product_recognizer_config": { "recognition_confidence_threshold": 0.75 } }, "parents": [ { "parentNode": "universal-input-0" } ], "processor": "projects/PROJECT_ID/locations/LOCATION_ID/processors/product-recognition-model1" }, { "displayName": "Storage output", "name": "gcs-output", "nodeConfig": { "gcs_output_config": { "gcs_path":"gs://product_recognizer_app_output" } }, "parents": [ { "parentNode": "product-recognition" } ], "processor": "builtin:gcs-output" } ] } }
요청:
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d @app.json \ 'https://visionai.googleapis.com/v1alpha1/projects/PROJECT_ID/locations/LOCATION_ID/applications?application_id=product-recognition-app'
projects.locations.applications.createApplicationInstances
메서드를 사용하여 애플리케이션 인스턴스를 만듭니다.요청 본문 (
instances.json
):{ "applicationInstances": [ { "instance": { "instanceType": "BATCH_PREDICTION", "inputResources": [ { "consumerNode": "universal-input-0", "dataType": "IMAGE", "inputResource": "gs://product_recognition_input" } ] }, "instanceId": "instance1" }, { "instance": { "instanceType":"BATCH_PREDICTION", "inputResources": [ { "consumerNode": "universal-input-0", "dataType": "IMAGE", "inputResource": "gs://product_recognition_input2" } ] }, "instanceId": "instance2" } ] }
요청:
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d @instances.json \ 'https://visionai.googleapis.com/v1alpha1/projects/PROJECT_ID/locations/LOCATION_ID/applications/product-recognition-app:createApplicationInstances'
애플리케이션을 배포합니다.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d '{}' \ 'https://visionai.googleapis.com/v1alpha1/projects/PROJECT_ID/locations/LOCATION_ID/applications/product-recognition-app:deploy'
앱 인스턴스를 가져옵니다. 이 정보는 일괄 처리가 완료되었음을 나타냅니다.
특히
state
필드는 처리가 완료된 시점("state": "FINISHED"
)을 나타냅니다. 인스턴스가 완료된 후에는 인스턴스를 수정할 수 없습니다.projects.locations.applications.instances.list
메서드를 사용하여 인스턴스를 추적할 수 있습니다. 마찬가지로 이 목록에서 인스턴스를 삭제하려면projects.locations.applications.deleteApplicationInstances
메서드를 사용합니다.요청:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ 'https://visionai.googleapis.com/v1alpha1/projects/PROJECT_ID/locations/LOCATION_ID/applications/product-recognition-app/instances'
샘플 응답:
{ "instances": [ { "name": "projects/PROJECT_ID/locations/LOCATION_ID/applications/product-recognition-app/instances/instance1", "createTime": "2023-03-30T18:30:51.991004265Z", "inputResources": [ { "inputResource": "gs://product_recognition_input", "consumerNode": "universal-input-0", "dataType": "IMAGE" } ], "outputResources": [ { "outputResource": "gs://product_recognition_output/instance1", "producerNode": "product-recognition", "autogen": true } ], "updateTime": "2023-04-18T04:58:18.592092259Z", "state": "FINISHED", "instanceType": "BATCH_PREDICTION" } }
태그 인식기 모델
이 샘플을 사용하여 태그 인식기 모델로 이미지를 일괄 처리합니다.
REST 및 명령줄
이미지 일괄 처리 요청을 전송하려면 다음 단계를 완료하세요.
projects.locations.processors.create
메서드를 사용하여 태그 인식기 모델을 만듭니다.이렇게 하려면 Vertex AI 플랫폼 (
vertex_model
)에 호스팅된 원본 모델의 리소스 이름을 지정해야 합니다.curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://visionai.googleapis.com/v1alpha1/projects/PROJECT_ID/locations/LOCATION_ID/processors?processor_id=tag-recognition-model1 \ -d '{ "display_name": "DISPLAY_NAME", "model_type": TAG_RECOGNIZER, "custom_processor_source_info": { "source_type": VERTEX_AUTOML, "vertex_model": "projects/PROJECT_ID/locations/LOCATION_ID/models/MODEL_ID" } }'
새로 만든 태그 인식기 모델로 애플리케이션을 만듭니다. 이 요청에는
projects.locations.applications.create
메서드가 사용됩니다.요청 본문 (
app.json
):{ "applicationConfigs": { "nodes": [ { "displayName": "Universal Input", "name": "universal-input-0", "processor": "builtin:universal-input" }, { "displayName": "Tag Recognition", "name": "tag-recognition", "nodeConfig": { "tag_recognizer_config": { "tag_parsing_config": { "entity_parsing_configs": [ { "entity_class": "price", "regex": "\\$\\d+\\.\\d{2}", "entity_matching_strategy": "MAX_OVERLAP_AREA" } ] }, "entity_detection_confidence_threshold": 0.0 } }, "parents": [ { "parentNode": "universal-input-0" } ], "processor": "projects/PROJECT_ID/locations/LOCATION_ID/processors/tag-recognition-model1" }, { "displayName": "Storage output", "name": "gcs-output", "nodeConfig": { "gcs_output_config": { "gcs_path": "gs://tag_recognizer_app_output" } }, "parents": [ { "parentNode": "tag-recognition" } ], "processor": "builtin:gcs-output" } ] } }
요청:
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d @app.json \ 'https://visionai.googleapis.com/v1alpha1/projects/PROJECT_ID/locations/LOCATION_ID/applications?application_id=tag-recognition-app'
projects.locations.applications.createApplicationInstances
메서드를 사용하여 애플리케이션 인스턴스를 만듭니다.요청 본문 (
instances.json
):{ "applicationInstances": [ { "instance": { "instanceType": "BATCH_PREDICTION", "inputResources": [ { "consumerNode": "universal-input-0", "dataType": "IMAGE", "inputResource": "gs://tag_recognition_input" } ] }, "instanceId": "instance1" }, { "instance": { "instanceType":"BATCH_PREDICTION", "inputResources": [ { "consumerNode": "universal-input-0", "dataType": "IMAGE", "inputResource": "gs://tag_recognition_input2" } ] }, "instanceId": "instance2" } ] }
요청:
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d @instances.json \ 'https://visionai.googleapis.com/v1alpha1/projects/PROJECT_ID/locations/LOCATION_ID/applications/tag-recognition-app:createApplicationInstances'
애플리케이션을 배포합니다.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d '{}' \ 'https://visionai.googleapis.com/v1alpha1/projects/PROJECT_ID/locations/LOCATION_ID/applications/tag-recognition-app:deploy'
앱 인스턴스를 가져옵니다. 이 정보는 일괄 처리가 완료되었음을 나타냅니다.
특히
state
필드는 처리가 완료된 시점("state": "FINISHED"
)을 나타냅니다. 인스턴스가 완료된 후에는 인스턴스를 수정할 수 없습니다.projects.locations.applications.instances.list
메서드를 사용하여 인스턴스를 추적할 수 있습니다. 마찬가지로 이 목록에서 인스턴스를 삭제하려면projects.locations.applications.deleteApplicationInstances
메서드를 사용합니다.요청:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ 'https://visionai.googleapis.com/v1alpha1/projects/PROJECT_ID/locations/LOCATION_ID/applications/tag-recognition-app/instances'
샘플 응답:
{ "instances": [ { "name": "projects/PROJECT_ID/locations/LOCATION_ID/applications/tag-recognition-app/instances/instance1", "createTime": "2023-03-30T18:30:51.991004265Z", "inputResources": [ { "inputResource": "gs://tag_recognition_input", "consumerNode": "universal-input-0", "dataType": "IMAGE" } ], "outputResources": [ { "outputResource": "gs://tag_recognition_output/instance1", "producerNode": "tag-recognition", "autogen": true } ], "updateTime": "2023-04-18T04:58:18.592092259Z", "state": "FINISHED", "instanceType": "BATCH_PREDICTION" } }