참조 이미지는 상품의 다양한 보기를 포함하는 이미지입니다. 다음과 같은 권장사항이 적용됩니다.
- 파일 크기가 최대 크기(20MB)를 초과하지 않는지 확인하세요.
- 상품을 논리적으로 돋보이게 하고 적절한 시각 정보를 포함하는 시점을 고려하세요.
- 누락된 시점을 보충하는 참조 이미지를 만드세요. 예를 들어 오른쪽 신발의 이미지만 있다면 이 파일의 반전된 버전을 왼쪽 신발로 제공하세요.
- 사용 가능한 최고 해상도의 이미지를 업로드하세요.
- 제품을 흰색 배경으로 보여주세요.
- 투명한 배경의 PNG를 불투명한 배경으로 변환하세요.
이미지는 Cloud Storage 버킷에 저장되어야 합니다. 이미지 생성 호출을 API 키로 인증하는 경우에는 버킷이 공개 상태여야 합니다. 서비스 계정으로 인증하는 경우에는 서비스 계정에 버킷에 대한 읽기 액세스 권한이 있어야 합니다.
단일 참조 이미지 만들기
기존 제품에 참조 이미지를 추가할 수 있습니다. 이렇게 한 다음 이미지로 제품을 검색할 수 있습니다.
REST 및 명령줄
아래의 요청 데이터를 사용하기 전에 다음을 바꿉니다.
- project-id: GCP 프로젝트 ID입니다.
- location-id: 유효한 위치 식별자입니다. 유효한 위치 식별자는
us-west1
,us-east1
,europe-west1
,asia-east1
입니다. - product-id: 참조 이미지와 연결된 제품의 ID입니다. 이 ID는 제품 생성 시 무작위로 설정되거나 사용자가 지정합니다.
- cloud-storage-image-uri: Cloud Storage 버킷에 있는 유효한 이미지 파일의 경로입니다. 적어도 파일에 대한 읽기 권한이 있어야 합니다.
예를 들면 다음과 같습니다.
gs://storage-bucket/filename.jpg
HTTP 메서드 및 URL:
POST https://vision.googleapis.com/v1/projects/project-id/locations/location-id/products/product-id/referenceImages
JSON 요청 본문:
{ "uri": "cloud-storage-image-uri", "boundingPolys": [ { "vertices": [ { "x": X_MIN, "y": Y_MIN }, { "x": X_MAX, "y": Y_MIN }, { "x": X_MAX, "y": Y_MAX }, { "x": X_MIN, "y": Y_MAX } ] } ] }
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
요청 본문을 request.json
파일에 저장하고 다음 명령어를 실행합니다.
curl -X POST \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
https://vision.googleapis.com/v1/projects/project-id/locations/location-id/products/product-id/referenceImages
PowerShell
요청 본문을 request.json
파일에 저장하고 다음 명령어를 실행합니다.
$cred = gcloud auth application-default print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://vision.googleapis.com/v1/projects/project-id/locations/location-id/products/product-id/referenceImages" | Select-Object -Expand Content
요청이 성공하면 서버가 200 OK
HTTP 상태 코드와 응답을 JSON 형식으로 반환합니다.
다음과 비슷한 출력이 표시됩니다. 예시 요청은 이미지에서 단일 boundingPoly
를 지정했습니다. 경계 상자의 꼭짓점은 정규화되지 않습니다. 꼭짓점 값은 실제 픽셀 값이며 원본 이미지에 상대적이지 않고 0에서 1까지 조정됩니다. 이러한 꼭짓점의 값은 [(33,22),(282,22),(282,278),(33,278)]입니다.
{ "name": "projects/project-id/locations/location-id/products/product-id/referenceImages/image-id", "uri": "gs://storage-bucket/filename.jpg", "boundingPolys": [ { "vertices": [ { "x": 33, "y": 22 }, { "x": 282, "y": 22 }, { "x": 282, "y": 278 }, { "x": 33, "y": 278 } ] } ] }
C#
Go
자바
Node.js
PHP
Python
Ruby
일괄 가져오기로 여러 참조 이미지 만들기
또한 제품 세트와 여러 제품을 만드는 동시에 참조 이미지를 만들 수 있습니다.
CSV 파일의 Cloud Storage 위치를 import
메서드로 전달하여 참조 이미지를 대량으로 만듭니다. 따라서 CSV 파일 그리고 이 파일이 가리키는 이미지가 모두 Cloud Storage 버킷에 있어야 합니다.
일괄 가져오기 호출을 API 키로 인증하는 경우에는 CSV 소스 파일이 공개 상태여야 합니다.
서비스 계정으로 인증하는 경우에는 서비스 계정에 CSV 소스 파일에 대한 읽기 액세스 권한이 있어야 합니다.
CSV 형식
image-uri,[image-id],product-set-id,product-id,product-category,[product-display-name],[label(s)],[bounding-poly]
CSV 형식 지정에 대한 자세한 내용은 CSV 형식 방법 항목을 참조하세요.
일괄 생성 요청
REST 및 명령줄
아래의 요청 데이터를 사용하기 전에 다음을 바꿉니다.
- project-id: GCP 프로젝트 ID입니다.
- location-id: 유효한 위치 식별자입니다. 유효한 위치 식별자는
us-west1
,us-east1
,europe-west1
,asia-east1
입니다. - storage-path: 입력 CSV 파일이 저장된 Cloud Storage 버킷/디렉터리입니다. 요청하는 사용자에게 적어도 버킷에 대한 읽기 권한이 있어야 합니다.
HTTP 메서드 및 URL:
POST https://vision.googleapis.com/v1/projects/project-id/locations/location-id/productSets:import
JSON 요청 본문:
{ "inputConfig": { "gcsSource": { "csvFileUri": "storage-path" } } }
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
요청 본문을 request.json
파일에 저장하고 다음 명령어를 실행합니다.
curl -X POST \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
https://vision.googleapis.com/v1/projects/project-id/locations/location-id/productSets:import
PowerShell
요청 본문을 request.json
파일에 저장하고 다음 명령어를 실행합니다.
$cred = gcloud auth application-default print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://vision.googleapis.com/v1/projects/project-id/locations/location-id/productSets:import" | Select-Object -Expand Content
다음과 비슷한 출력이 표시됩니다. 작업 ID(이 경우 f10f34e32c40a710
)를 사용하여 작업 상태를 가져올 수 있습니다. 예를 들어 작업 상태 가져오기를 살펴보면 다음과 같습니다.
{ "name": "projects/project-id/locations/location-id/operations/f10f34e32c40a710" }
장기 실행 작업이 완료되면 가져오기 작업의 세부정보를 가져올 수 있습니다. 응답은 다음과 비슷하게 표시됩니다.
{ "name": "locations/location-id/operations/f10f34e32c40a710", "metadata": { "@type": "type.googleapis.com/google.cloud.vision.v1.BatchOperationMetadata", "state": "SUCCESSFUL", "submitTime": "2019-12-06T21:16:04.476466873Z", "endTime": "2019-12-06T21:16:40.594258084Z" }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.vision.v1.ImportProductSetsResponse", "referenceImages": [ { "name": "projects/project-id/locations/location-id/products/product_id0/referenceImages/image0", "uri": "gs://my-storage-bucket/img_039.jpg" }, { "name": "projects/project-id/locations/location-id/products/product_id1/referenceImages/image1", "uri": "gs://my-storage-bucket/img_105.jpg" }, { "name": "projects/project-id/locations/location-id/products/product_id2/referenceImages/image2", "uri": "gs://my-storage-bucket/img_224.jpg" }, { "name": "projects/project-id/locations/location-id/products/product_id3/referenceImages/image3", "uri": "gs://my-storage-bucket/img_385.jpg" } ], "statuses": [ {}, {}, {}, {} ] } }
C#
Go
자바
Node.js
PHP
Python
Ruby
일반적인 가져오기 오류 메시지는 다음과 같습니다.
The number of columns in the csv line should be 8
: 경계 상자를 제공하지 않은 경우 줄이 쉼표로 끝나야 합니다. 예를 들면 다음과 같습니다."gs://example-reference-images/10002-002/10002-002_B.jpg","sample-set","sample-product-123","apparel",,
Image not found
: Cloud Storage URI가 이미지 파일로 해석되지 않습니다.Access denied
: 이미지 또는 CSV 파일에 적절한 권한이 없습니다. 요청에 사용한 인증 방법을 통해 이미지 파일에 액세스할 수 있어야 합니다. API 키로 인증하는 경우 CSV 파일이 공개 상태여야 합니다.
색인 생성
제품의 제품 검색 색인은 약 30분마다 업데이트됩니다. 이미지가 추가되거나 삭제되어도 다음 번에 색인이 업데이트될 때까지 제품검색 응답에 변경사항이 반영되지 않습니다.
색인 생성이 성공적으로 완료되었는지 확인하려면 제품 세트의 indexTime
필드를 확인하세요.