Dataflow 및 Cloud Vision API를 사용한 ML 비전 분석 솔루션 빌드

Last reviewed 2024-05-23 UTC

이 참조 아키텍처에서는 Cloud Vision으로 이미지 파일을 처리하고 처리된 결과를 BigQuery에 저장하는 Dataflow 파이프라인을 배포하는 사용 사례, 설계 대안, 설계 고려사항에 대해 알아봅니다. 저장된 결과를 대규모 데이터 분석과 BigQuery ML 기본 제공 모델 학습에 사용할 수 있습니다.

이 참조 아키텍처 문서는 데이터 엔지니어와 데이터 과학자를 대상으로 합니다.

아키텍처

다음 다이어그램은 이 참조 아키텍처의 시스템 흐름을 보여줍니다.

수집 및 트리거, 처리, 저장, 분석 프로세스를 위한 정보 흐름을 보여주는 아키텍처

앞의 다이어그램에 표시된 것처럼 정보는 다음과 같이 전달됩니다.

  1. 수집 및 트리거: 이미지가 먼저 시스템에 들어오는 시스템 흐름의 첫 번째 단계입니다. 이 단계에서 다음 작업이 수행됩니다.

    1. 클라이언트가 이미지 파일을 Cloud Storage 버킷에 업로드합니다.
    2. 파일이 업로드될 때마다 Cloud Storage는 메시지를 Pub/Sub에 게시하여 입력 알림을 자동으로 보냅니다.
  2. 처리: 이 단계는 수집 및 트리거 단계 바로 뒤에 옵니다. 새 입력 알림마다 다음 작업이 수행됩니다.

    1. Dataflow 파이프라인은 이러한 파일 입력 알림을 리슨하고 Pub/Sub 메시지에서 파일 메타데이터를 추출하며 처리를 위해 Vision API로 파일 참조를 보냅니다.
    2. Vision API가 이미지를 읽고 주석을 만듭니다.
    3. Dataflow 파이프라인은 Vision API에서 생성된 주석을 BigQuery 테이블에 저장합니다.
  3. 저장 및 분석: 흐름의 마지막 단계입니다. 이 단계에서는 저장된 결과를 사용하여 다음을 수행할 수 있습니다.

    1. BigQuery 테이블을 쿼리하고 저장된 주석을 분석합니다.
    2. BigQuery ML 또는 Vertex AI를 사용하여 저장된 주석을 기반으로 모델을 빌드하고 예측을 실행합니다.
    3. Dataflow 파이프라인에서 추가 분석을 수행합니다 (이 다이어그램에 표시되지 않음).

사용 제품

이 참조 아키텍처에는 다음과 같은 Google Cloud 제품이 사용됩니다.

사용 사례

Vision API는 이미지 라벨링, 얼굴 및 랜드마크 인식, 광학 문자 인식, 선정적인 콘텐츠 태그 지정 등 여러 가지 처리 기능을 지원합니다. 이러한 각 기능은 서로 다른 업계에 적용할 수 있는 여러 가지 사용 사례를 지원합니다. 이 문서에는 Vision API를 사용해 가능한 작업에 대한 몇 가지 간단한 예시가 포함되어 있지만, 가능한 응용 분야는 매우 광범위합니다.

Vision API는 REST API와 RPC API를 통해 선행 학습된 강력한 머신러닝 모델을 제공합니다. 이미지에 라벨을 할당하고 사전 정의된 수백만 개의 카테고리로 분류할 수 있습니다. 객체를 감지하고 인쇄 및 필기 텍스트를 읽고 이미지 카탈로그에 유용한 메타데이터를 구축하도록 도와줍니다.

이 아키텍처는 사용하기 전 모델 학습이 필요하지 않습니다. 특정 데이터로 학습된 커스텀 모델이 필요한 경우 Vertex AI를 사용하면 이미지 분류 및 객체 감지와 같은 컴퓨터 비전 목표에 맞게 AutoML 또는 커스텀 모델을 학습시킬 수 있습니다. 또는 컴퓨터 비전 애플리케이션을 빌드, 배포, 관리할 수 있는 엔드 투 엔드 애플리케이션 개발 환경에 Vertex AI Vision을 사용할 수 있습니다.

설계 대안

Google Cloud Storage 버킷에 이미지를 저장하는 대신 이미지를 생성하는 프로세스에서 Pub/Sub와 같은 메시징 시스템에 직접 이미지를 게시할 수 있으며 Dataflow 파이프라인으로 이미지를 직접 Vision API에 전송할 수 있습니다.

이러한 설계 대안은 비교적 작은 크기의 이미지를 분석해야 하는 지연 시간에 민감한 사용 사례에 적합한 솔루션이 될 수 있습니다. Pub/Sub는 메시지의 최대 크기를 10Mb로 제한합니다.

많은 수의 이미지를 일괄 처리해야 하는 경우 특별히 설계된 asyncBatchAnnotate API를 사용할 수 있습니다.

설계 고려사항

이 섹션에서는 이 참조 아키텍처의 설계 고려사항을 설명합니다.

보안, 개인정보 보호, 규정 준수

신뢰할 수 없는 출처에서 수신된 이미지에는 멀웨어가 포함될 수 있습니다. Vision API는 분석하는 이미지를 기반으로 어떤 작업도 실행하지 않으므로 이미지 기반 멀웨어는 API에 영향을 미치지 않습니다. 이미지를 스캔해야 하는 경우 Dataflow 파이프라인을 변경하여 스캔 단계를 추가합니다. 동일한 결과를 얻기 위해 Pub/Sub 주제에 대해 별도의 구독을 사용하고 별도의 프로세스에서 이미지를 스캔할 수도 있습니다.

자세한 내용은 Cloud Storage에 업로드된 파일의 멀웨어 검사 자동화를 참조하세요.

Vision API는 인증에 Identity and Access Management(IAM)를 사용합니다. Vision API에 액세스하려면 보안 주체에게 사용자가 분석하려는 파일이 포함된 버킷에 대한 Cloud Storage > 스토리지 객체 뷰어(roles/storage.objectViewer) 액세스 권한이 필요합니다.

비용 최적화

짧은 지연 시간 처리 및 비동기 일괄 처리와 같은 설명된 다른 옵션과 비교할 때 이 참조 아키텍처는 API 요청을 일괄 처리하여 스트리밍 파이프라인에서 이미지를 처리하는 데 비용 효율적인 방법을 사용합니다. 설계 대안 섹션에 언급된 지연 시간이 짧은 직접 이미지 스트리밍은 추가적인 Pub/Sub 및 Dataflow 비용으로 인해 비용이 더 들 수 있습니다. 몇 초 또는 몇 분 내에 수행할 필요가 없는 이미지 처리의 경우 Dataflow 파이프라인을 일괄 모드로 실행할 수 있습니다. 배치 모드에서 파이프라인을 실행하면 스트리밍 파이프라인을 실행하는 데 드는 비용과 비교할 때 약간의 절감 효과를 얻을 수 있습니다.

Vision API는 모든 기능에 오프라인 비동기 일괄 이미지 주석을 지원합니다. 비동기식 요청은 배치당 최대 2,000개의 이미지를 지원합니다. 이에 대한 응답으로 Vision API는 Cloud Storage 버킷에 저장된 JSON 파일을 반환합니다.

또한 Vision API는 이미지를 분석하기 위한 여러 기능을 제공합니다. 가격은 기능별로 이미지 기준으로 책정됩니다. 비용을 줄이려면 솔루션에 필요한 특정 기능만 요청하세요.

프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용하세요.

성능 최적화

Vision API는 리소스를 많이 사용하는 API입니다. 따라서 이미지를 대규모로 처리하는 경우 API 호출을 신중하게 조정해야 합니다. Dataflow 파이프라인은 API 요청을 일괄 처리하고, 할당량 도달과 관련된 예외를 적절하게 처리하며, API 사용량의 커스텀 측정항목을 생성합니다. 이러한 측정항목은 API 할당량 증가가 보장되는지 또는 요청 빈도를 줄이기 위해 Dataflow 파이프라인 매개변수를 조정해야 하는지 여부를 결정하는 데 도움이 될 수 있습니다. Vision API의 할당량 요청을 늘리는 방법에 대한 자세한 내용은 할당량 및 한도를 참조하세요.

Dataflow 파이프라인에는 처리 지연 시간에 영향을 줄 수 있는 여러 매개변수가 있습니다. 이러한 매개변수에 대한 자세한 내용은 Dataflow 및 Vision API를 사용한 ML 비전 분석 솔루션 배포를 참조하세요.

Deployment

이 아키텍처를 배포하려면 Dataflow 및 Vision API를 사용한 ML 비전 분석 솔루션 배포를 참조하세요.

다음 단계

참여자

저자:

기타 참여자:

비공개 LinkedIn 프로필을 보려면 LinkedIn에 로그인하세요.