웨어하우스 저장소로 얼굴 흐리게 처리 앱 만들기

Vertex AI Vision은 동영상 데이터를 수집, 분석, 저장하는 데 사용할 수 있는 AI 기반 플랫폼입니다. Vertex AI Vision을 사용하면 AI 애플리케이션을 빌드하고 배포할 수 있습니다. 다른 제품 구성요소와의 Vertex AI Vision 통합을 활용하여 엔드 투 엔드 Vertex AI Vision 솔루션을 빌드할 수 있습니다.

Vertex AI Vision 플랫폼을 사용하여 솔루션을 구현하려면 다음 Vertex AI Vision 개념과 구성요소를 검토하세요.

  • 스트림: 솔루션의 동영상 스트리밍 레이어를 나타냅니다. 스트림 소스는 라이브 동영상 (예: IP 카메라) 또는 동영상 파일(예: MP4 파일)일 수 있습니다.

  • 애플리케이션: 스트림과 AI 프로세서 간의 연결을 사용 설정하여 동영상에 머신러닝 작업을 실행합니다. 예를 들어 카메라 스트림을 카메라 앞을 지나가는 사람 수를 세는 AI 모델에 연결할 수 있습니다.

  • 미디어 웨어하우스: 스트림에서 수집한 동영상을Google Cloud 스토리지에 저장합니다. 이 대상에 데이터를 저장하면 수집된 스트림의 데이터에 사용된 AI 프로세서의 분석 출력과 메타데이터를 쿼리할 수 있습니다.

스트림 만들기

스트리밍 동영상 분석 앱을 만들려면 먼저 스트림 리소스를 만들고 등록해야 합니다. 사용자로부터 동영상 데이터를 수신하는 리소스이므로 Vertex AI Vision을 사용하여 빌드하는 모든 시나리오에서 스트림이 필요합니다.

콘솔

Google Cloud 콘솔에서 새 스트림을 만들려면 다음 단계를 따르세요.

  1. Vertex AI Vision 대시보드의 스트림 탭을 엽니다.

    스트림 탭으로 이동

  2. 등록을 클릭합니다.

  3. 스트림 이름으로 input-stream을 입력하고 스트림을 만들 리전을 선택합니다.

  4. 등록을 클릭하여 스트림을 하나 이상 만듭니다.

    UI의 스트림 등록 옵션

스트림에 동영상 처리

스트림 리소스를 만든 후 vaictl 명령줄 도구를 사용하여 스트림에 동영상 데이터를 전송할 수 있습니다.

IP 카메라

실제 IP 카메라를 사용하여 테스트하는 경우 카메라의 IP 주소를 가져와야 합니다. 이 정보는 다른 변수 대체와 함께 요청에 제공해야 합니다.

  • PROJECT_ID: Google Cloud 프로젝트 ID입니다.
  • LOCATION_ID: 위치 ID입니다. 예를 들면 us-central1입니다. 자세한 내용은 클라우드 위치를 참고하세요.
  • RTSP_ADDRESS: 실시간 스트리밍 프로토콜 (RTSP) 피드의 주소입니다. 예를 들면 rtsp://192.168.1.180:540입니다.

이 명령어는 RTSP 피드를 스트림으로 전송합니다. RTSP 피드에 직접 액세스할 수 있는 네트워크에서 이 명령어를 실행해야 합니다.

vaictl -p PROJECT_ID \
       -l LOCATION_ID \
       -c application-cluster-0 \
       --service-endpoint visionai.googleapis.com \
send rtsp to streams input-stream --rtsp-uri RTSP_ADDRESS
      

명령어가 성공적으로 실행되면 다음과 같은 출력이 표시됩니다.

[...]
Waiting for long running operation projects/your-project/locations/us-central1/operations/operation-1651364156981-5dde82db7e4a9-dfb17ca5-1051eb20 ⠙
I20220430 21:16:28.024988 211449 gstvaisink.cc:417] cluster-id=application-cluster-0
I20220430 21:16:28.025032 211449 gstvaisink.cc:418] cluster-endpoint=c8khq35ftg78mn61ef50.us-central1.visionai.goog
I20220430 21:16:28.025040 211449 gstvaisink.cc:419] event-id=ev-1651364114183255223
I20220430 21:16:28.025048 211449 gstvaisink.cc:420] stream-id=input-stream
I20220430 21:16:28.025053 211449 gstvaisink.cc:421] series-id=ev-1651364114183255223--input-stream
I20220430 21:16:28.025060 211449 gstvaisink.cc:422] Sending data

로컬 동영상 파일

라이브 동영상 피드 대신 스트림에 동영상 파일 데이터를 전송할 수도 있습니다. 이 옵션은 IP 카메라에 액세스할 수 없는 경우에 유용합니다.

이 옵션의 유일한 차이점은 vaictl 명령어 매개변수입니다. IP 카메라 정보를 전달하는 대신 로컬 동영상 파일의 경로를 전달합니다. 다음 변수를 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트 ID입니다.
  • LOCATION_ID: 위치 ID입니다. 예를 들면 us-central1입니다. 자세히 알아보기
  • LOCAL_FILE.EXT: 로컬 동영상 파일의 파일 이름입니다. 예를 들면 my-video.mp4입니다.
  • --loop 플래그: 선택사항. 스트리밍을 시뮬레이션하기 위해 파일 데이터를 루프합니다.

이 명령어는 동영상 파일을 스트림으로 스트리밍합니다. --loop 플래그를 사용하는 경우 명령어를 중지할 때까지 동영상이 스트림으로 반복됩니다.

vaictl -p PROJECT_ID \
       -l LOCATION_ID \
       -c application-cluster-0 \
       --service-endpoint visionai.googleapis.com \
send video-file to streams 'input-stream' --file-path LOCAL_FILE.EXT --loop

vaictl 수집 작업을 시작한 후 동영상이 대시보드에 표시되기까지 약 100초가 걸릴 수 있습니다.

스트림 수집이 완료되면 input-stream 스트림을 선택하여 Vertex AI Vision 대시보드의 스트림 탭에서 동영상 피드를 확인할 수 있습니다.

스트림 탭으로 이동

UI에서 스트리밍되는 라이브 동영상 보기
Google Cloud 콘솔에서 스트림으로 인제스트되는 동영상의 라이브 뷰 동영상 출처: Pexels티마 미로시니첸코(모자이크 추가됨)

얼굴 흐림 처리 애플리케이션 만들기

스트림을 만들고 스트림에 데이터를 처리한 후에는 데이터를 처리할 Vertex AI Vision 앱을 만들 차례입니다. 앱은 다음을 연결하는 자동화된 파이프라인으로 생각할 수 있습니다.

  • 데이터 수집: 동영상 피드가 스트림으로 수집됩니다.
  • 데이터 분석: 수집 후 AI 모델을 추가할 수 있습니다. 수집된 동영상 정보에 모든 컴퓨터 비전 작업을 실행할 수 있습니다.
  • 데이터 스토리지: 두 버전의 동영상 피드 (원본 스트림과 AI 모델에서 처리한 스트림)를 미디어 웨어하우스에 저장할 수 있습니다.

Google Cloud 콘솔에서 앱은 그래프로 표시됩니다. 또한 Vertex AI Vision에서 앱 그래프에는 동영상 소스 노드 (스트림)와 하나 이상의 추가 노드 (처리 모델 또는 출력 대상) 등 최소 두 개의 노드가 있어야 합니다.

빈 애플리케이션 만들기

앱 그래프를 채우려면 먼저 빈 앱을 만들어야 합니다.

콘솔

Google Cloud 콘솔에서 앱을 만듭니다.

  1. Vertex AI Vision 대시보드의 애플리케이션 탭을 엽니다.

    애플리케이션 탭으로 이동

  2. 만들기 버튼을 클릭합니다.

  3. 앱 이름으로 person-blur-app를 입력하고 지역을 선택합니다.

  4. 만들기를 클릭합니다.

    UI에서 새 앱 만들기 대화상자

앱 구성요소 노드 추가

빈 애플리케이션을 만든 후에는 앱 그래프에 다음 세 노드를 추가할 수 있습니다.

  1. 수집 노드: 이미 데이터를 수집하고 있는 스트림 리소스입니다.
  2. 처리 노드: 수집된 데이터에 따라 작동하는 사람 흐림 효과 모델입니다.
  3. 스토리지 노드: 처리된 동영상을 저장하고 메타데이터 저장소 역할도 하는 미디어 웨어하우스입니다. 웨어하우스를 사용하면 수집된 동영상 데이터에 관한 분석 정보를 생성할 수 있으며, AI 모델에서 데이터에 관해 추론한 정보를 저장할 수 있습니다.

콘솔

콘솔에서 앱에 구성요소 노드를 추가합니다.

  1. Vertex AI Vision 대시보드의 애플리케이션 탭을 엽니다.

    애플리케이션 탭으로 이동

  2. person-blur-app 줄에서 그래프 보기를 선택합니다. 그러면 처리 파이프라인의 그래프 시각화로 이동합니다.

데이터 수집 노드 추가

  1. 입력 스트림 노드를 추가하려면 사이드 메뉴의 커넥터 섹션에서 스트림 옵션을 선택합니다.

  2. 열리는 스트림 메뉴의 소스 섹션에서 스트림 추가를 선택합니다.

  3. 스트림 추가 메뉴에서 기존 스트림에서 선택을 선택하고 스트림 리소스 목록에서 person-blur-app을 선택합니다.

    UI에 스트림 메뉴 추가

  4. 앱 그래프에 스트림을 추가하려면 스트림 추가를 클릭합니다.

데이터 처리 노드 추가

  1. 사람 흐림 효과 모델 노드를 추가하려면 사이드 메뉴의 일반 프로세서 섹션에서 사람 흐림 효과 옵션을 선택합니다.

  2. 열리는 '인물 흐리게 처리' 옵션 메뉴에서 완전한 가림을 선택한 상태로 두고 얼굴만 흐리게 처리 옵션을 사용 설정합니다.

    UI에 얼굴 흐리게 처리 모델 추가

데이터 스토리지 노드 추가

  1. 출력 대상 (스토리지) 노드를 추가하려면 사이드 메뉴의 커넥터 섹션에서 Vertex AI Vision의 미디어 웨어하우스 옵션을 선택합니다.

  2. Vertex AI Vision의 미디어 웨어하우스 메뉴에서 웨어하우스 연결을 클릭합니다.

  3. 웨어하우스 연결 메뉴에서 새 웨어하우스 만들기를 선택합니다. 웨어하우스 이름을 person-blur-app로 지정하고 TTL 기간을 14일로 둡니다.

  4. 웨어하우스를 추가하려면 만들기를 클릭합니다.

    UI에 창고 노드 추가

애플리케이션 배포

필요한 모든 구성요소로 엔드 투 엔드 앱을 빌드한 후 앱을 사용하는 마지막 단계는 앱을 배포하는 것입니다.

콘솔

  1. Vertex AI Vision 대시보드의 애플리케이션 탭을 엽니다.

    애플리케이션 탭으로 이동

  2. 목록에서 person-blur-app 앱 옆에 있는 그래프 보기를 선택합니다.

  3. 애플리케이션 그래프 빌더 페이지에서 배포 버튼을 클릭합니다.

  4. 다음 확인 대화상자에서 배포를 선택합니다.

    배포 작업을 완료하는 데 몇 분 정도 걸릴 수 있습니다. 배포가 완료되면 노드 옆에 녹색 체크표시가 나타납니다.

    UI에 배포된 앱

처리된 출력 데이터 보기

콘솔

  1. Vertex AI Vision 대시보드의 창고 탭을 엽니다.

    웨어하우스 탭으로 이동

  2. 목록에서 person-blur-output-storage 창고를 찾아 애셋 보기를 클릭합니다.

    UI에서 앱 출력 보기