์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋นŒ๋“œ

์ด ํŽ˜์ด์ง€์—์„œ๋Š” Vertex AI Vision์˜ ์•ฑ ํ”Œ๋žซํผ์—์„œ ์‚ฌ์šฉํ•  ์•ฑ์„ ๋งŒ๋“ค๊ณ  ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ, ๋ถ„์„์šฉ ๋ชจ๋ธ, ์Šคํ† ๋ฆฌ์ง€์šฉ ์›จ์–ดํ•˜์šฐ์Šค์™€ ๊ฐ™์€ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ๊ฒฐํ•ฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

์•ฑ์„ ๋นŒ๋“œํ•˜๋ ค๋ฉด ๋ฐ์ดํ„ฐ ์†Œ์Šค, ์‹คํ–‰ํ•  ๋ถ„์„, ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•  ๋ฐฉ๋ฒ•์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—”๋“œ ํˆฌ ์—”๋“œ ์•ฑ์€ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•œ ํ˜•ํƒœ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์•ฑ์„ ๋นŒ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ชฉํ‘œ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ์ฑ…์ž„๊ฐ ์žˆ๋Š” AI ๊ด€์ ์—์„œ ์‚ฌ์šฉ ์‚ฌ๋ก€์™€ ๋ชฉํ‘œ๋ฅผ ํ‰๊ฐ€ํ•˜๊ณ , ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ๋ชจ๋ธ๊ณผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ตœ์ข… ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฏธ์น  ์ˆ˜ ์žˆ๋Š” ์˜ํ–ฅ์„ ๊ณ ๋ คํ•˜์„ธ์š”. ๊ณต์ •์„ฑ์„ ์œ„ํ•ด ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ํ‰๊ฐ€ํ•˜๋Š” ์ฒซ ๋‹จ๊ณ„์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด์„ธ์š”. ๋˜ํ•œ Vertex AI Vision ์‚ฌ์šฉ์ด Google Cloud์˜ ์„œ๋น„์Šค ์•ฝ๊ด€ ๋˜๋Š” ์˜คํ”„๋ผ์ธ ๋ณ€ํ˜•, Google Cloud์˜ ํ—ˆ์šฉ๋˜๋Š” ์‚ฌ์šฉ ์ •์ฑ…๊ณผ ๊ฐ™์€ ํ†ตํ•ฉ URL ์•ฝ๊ด€์„ ์ค€์ˆ˜ํ•˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค ๋•Œ AI ์‹œ๊ฐ ๊ธฐ์ˆ ์€ ๋ถˆ๊ณต์ •ํ•œ ํŽธ๊ฒฌ์„ ๊ฐ•ํ™”ํ•˜๊ฑฐ๋‚˜ ๋„์ž…ํ•˜๊ณ  ๊ธฐ๋ณธ์ ์ธ ์ธ๊ถŒ์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ์—ผ๋‘์— ๋‘์„ธ์š”. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์—๋Š” ํšŒ์‚ฌ์˜ ๊ฐ€์น˜์— ๊ธฐ๋ฐ˜ํ•œ ์œค๋ฆฌ์  ์„ฑ์ฐฐ๊ณผ ๊ณ ์œ„ํ—˜ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ํฌํ•จํ•œ ํŠน์ • ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•œ ๋ฒ•์  ์‹ค์‚ฌ๊ฐ€ ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ธฐ์ˆ ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ธฐ์ˆ ์„ ๊ตฌํ˜„ํ•˜๋Š” ์ง€์—ญ์—์„œ AI/ML ๊ธฐ์ˆ  ์‚ฌ์šฉ์„ ๊ทœ์ œํ•˜๋Š” ๋ชจ๋“  ๊ด€๋ จ ๋ฒ•๊ทœ๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ณ ๊ฐ์€ ํŠน์ • ์ง€์—ญ์—์„œ ์œ„ํ—˜๋„๊ฐ€ ๋†’์€ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜๋Š” ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์‹ค์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ƒˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋งŒ๋“ค๊ธฐ

์ŠคํŠธ๋ฆผ์ด๋‚˜ ๋ชจ๋ธ๊ณผ ๊ฐ™์€ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์•ฑ์— ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๋จผ์ € ์•ฑ ์ž์ฒด๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์•ฑ์—๋Š” ๋‹ค์Œ์ด ํฌํ•จ๋˜์–ด์•ผ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ŠคํŠธ๋ฆผ ์ž…๋ ฅ ๋…ธ๋“œ (๋ฐ์ดํ„ฐ ์†Œ์Šค)์ž…๋‹ˆ๋‹ค.
  • ๋ชจ๋ธ ๋˜๋Š” ์›จ์–ดํ•˜์šฐ์Šค์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ๊ตฌ์„ฑ์š”์†Œ ๋…ธ๋“œ๊ฐ€ ํ•˜๋‚˜ ์ด์ƒ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ƒˆ ๋งž์ถค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋งŒ๋“ค๊ธฐ

์ฝ˜์†”

Google Cloud ์ฝ˜์†”์—์„œ ์•ฑ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

  1. Vertex AI Vision ๋Œ€์‹œ๋ณด๋“œ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํƒญ์„ ์—ฝ๋‹ˆ๋‹ค.

    ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํƒญ์œผ๋กœ ์ด๋™

  2. ๋งŒ๋“ค๊ธฐ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. ์•ฑ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜๊ณ  ์ง€์—ญ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ง€์›๋˜๋Š” ์ง€์—ญ

  4. ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

ํ…œํ”Œ๋ฆฟ์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋งŒ๋“ค๊ธฐ

์ฝ˜์†”

Google Cloud ์ฝ˜์†”์—์„œ ์•ฑ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

  1. Vertex AI Vision ๋Œ€์‹œ๋ณด๋“œ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํƒญ์„ ์—ฝ๋‹ˆ๋‹ค.

    ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํƒญ์œผ๋กœ ์ด๋™

  2. ๋งŒ๋“ค๊ธฐ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. ์•ฑ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜๊ณ  ์ง€์—ญ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ง€์›๋˜๋Š” ์ง€์—ญ

  4. ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  5. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋นŒ๋” ํŽ˜์ด์ง€์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ…œํ”Œ๋ฆฟ ๋…ธ๋“œ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  6. ์ธก๋ฉด ์„ค์ • ํŒจ๋„์—์„œ ๋ชจ๋ธ ์„ ํƒ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  7. ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด์—์„œ ๋ชจ๋ธ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

์ŠคํŠธ๋ฆผ ์ž…๋ ฅ ์ถ”๊ฐ€

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—๋Š” ๋™์˜์ƒ ์ŠคํŠธ๋ฆผ ๋…ธ๋“œ๊ฐ€ ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ŠคํŠธ๋ฆผ ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์œผ๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ฐฐํฌ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ŠคํŠธ๋ฆผ ์ž…๋ ฅ ์—…๋ฐ์ดํŠธ๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ž๋™์œผ๋กœ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์•ฑ์ด ์ด๋ฏธ ๋ฐฐํฌ๋œ ๊ฒฝ์šฐ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ ์šฉํ•˜๋ ค๋ฉด ์•ฑ์„ ๋ฐฐํฌ ํ•ด์ œํ•˜๊ณ  ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•ฑ ์—…๋ฐ์ดํŠธ ์„น์…˜์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

์ฝ˜์†”

Google Cloud ์ฝ˜์†”์—์„œ ์•ฑ์— ์ŠคํŠธ๋ฆผ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

  1. Vertex AI Vision ๋Œ€์‹œ๋ณด๋“œ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํƒญ์„ ์—ฝ๋‹ˆ๋‹ค.

    ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํƒญ์œผ๋กœ ์ด๋™

  2. ์•ฑ์˜ ์•ฑ ๋ณด๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. ๊ตฌ์„ฑ์š”์†Œ์˜ ์ธก๋ฉด ๋ชฉ๋ก์—์„œ ์ปค๋„ฅํ„ฐ ๋ชฉ๋ก์˜ ๋™์˜์ƒ ์ŠคํŠธ๋ฆผ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ŠคํŠธ๋ฆผ ๋…ธ๋“œ๊ฐ€ ์•ฑ ๊ทธ๋ž˜ํ”„์— ์ถ”๊ฐ€๋˜๊ณ  ์ธก๋ฉด ๋™์˜์ƒ ์ŠคํŠธ๋ฆผ ๋ฉ”๋‰ด๊ฐ€ ์—ด๋ฆฝ๋‹ˆ๋‹ค.

  4. ๋™์˜์ƒ ์ŠคํŠธ๋ฆผ ์ถ”๊ฐ€๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  5. ๊ธฐ์กด ์ŠคํŠธ๋ฆผ์—์„œ ์„ ํƒ์„ ์„ ํƒํ•œ ๊ฒฝ์šฐ ๊ธฐ์กด ์ŠคํŠธ๋ฆผ์„ ์„ ํƒํ•˜๊ณ  ์ŠคํŠธ๋ฆผ ์ถ”๊ฐ€๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    ์ƒˆ ์ŠคํŠธ๋ฆผ ๋“ฑ๋ก์„ ์„ ํƒํ•œ ๊ฒฝ์šฐ ์ƒˆ ์ŠคํŠธ๋ฆผ์˜ ์ด๋ฆ„์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์ŠคํŠธ๋ฆผ ์ถ”๊ฐ€๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

REST

์•ฑ์— ์ŠคํŠธ๋ฆผ์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด projects.locations.applications.addStreamInput ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ POST ์š”์ฒญ์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

HTTP ๋ฉ”์„œ๋“œ ๋ฐ URL:

POST https://visionai.googleapis.com/v1/projects/PROJECT/locations/LOCATION_ID/applications/APPLICATION_ID:addStreamInput

JSON ์š”์ฒญ ๋ณธ๋ฌธ:

{
  "applicationStreamInputs": [
     {
       "streamWithAnnotation": {
         "stream": "projects/PROJECT/locations/LOCATION_ID/clusters/application-cluster-0/streams/STREAM_ID"
       }
     },
     {
       "streamWithAnnotation": {
         "stream": "projects/PROJECT/locations/LOCATION_ID/clusters/application-cluster-0/streams/STREAM_ID"
       }
     }
   ]
}

์š”์ฒญ์„ ๋ณด๋‚ด๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

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://visionai.googleapis.com/v1/projects/PROJECT/locations/LOCATION_ID/applications/APPLICATION_ID:addStreamInput"

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://visionai.googleapis.com/v1/projects/PROJECT/locations/LOCATION_ID/applications/APPLICATION_ID:addStreamInput" | Select-Object -Expand Content

์„ฑ๊ณต ์ƒํƒœ ์ฝ”๋“œ(2xx)์™€ ๋นˆ ์‘๋‹ต์„ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋…ธ๋“œ ์ฃผ์„์ด ์žˆ๋Š” ์ŠคํŠธ๋ฆผ ์ž…๋ ฅ ์ถ”๊ฐ€

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ์„ ๋งŒ๋“ค ๋•Œ Vertex AI Vision API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ŠคํŠธ๋ฆผ์— ์ฃผ์„์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.Google Cloud ์ฝ˜์†”์—์„œ ๋…ธ๋“œ์— ์ฃผ์„์„ ์ถ”๊ฐ€ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ˜์†”

๋‹ค์Œ ์ƒ˜ํ”Œ์€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฃผ์„(STREAM_ANNOTATION_TYPE_ACTIVE_ZONE ๋ฐ STREAM_ANNOTATION_TYPE_CROSSING_LINE)์„ ์ ์œ ์œจ ๋ชจ๋ธ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

  1. Vertex AI Vision ๋Œ€์‹œ๋ณด๋“œ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํƒญ์„ ์—ฝ๋‹ˆ๋‹ค.

    ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํƒญ์œผ๋กœ ์ด๋™

  2. ๋ชฉ๋ก์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ด๋ฆ„ ์˜†์— ์žˆ๋Š” ์•ฑ ๋ณด๊ธฐ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  3. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋นŒ๋” ํŽ˜์ด์ง€์—์„œ ์ฃผ์„์„ ์ถ”๊ฐ€ํ•  ์ŠคํŠธ๋ฆผ ์ž…๋ ฅ์ด ์žˆ๋Š” ๋ชจ๋ธ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  4. ์ธก๋ฉด ๋ชจ๋ธ ์„ค์ • ํŒจ๋„์—์„œ '๊ณ ๊ธ‰ ์„ค์ •' ์„น์…˜์„ ํŽผ์นฉ๋‹ˆ๋‹ค. ์„น์…˜์„ ํŽผ์นœ ํ›„ ํ™œ์„ฑ ์˜์—ญ/์„  ๋งŒ๋“ค๊ธฐ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  5. ์ŠคํŠธ๋ฆผ ๊ฐค๋Ÿฌ๋ฆฌ ๋ทฐ์—์„œ ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ์„ ์„ ํƒํ•˜์—ฌ ํ™œ์„ฑ ์˜์—ญ ๋˜๋Š” ์„ ์„ ๊ทธ๋ฆฝ๋‹ˆ๋‹ค.

  6. ํŽธ์ง‘๊ธฐ ๋ทฐ์—์„œ ๋‹ค์ค‘ ์  ์„  ์ถ”๊ฐ€ ๋˜๋Š” ๊ฐ„๋‹จํ•œ ๋‹ค๊ฐํ˜• ์ถ”๊ฐ€๋ฅผ ์„ ํƒํ•˜์—ฌ ์ฃผ์„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ธก๋ฉด ํŒจ๋„์„ ์‚ฌ์šฉํ•˜์—ฌ ์˜์—ญ ๋˜๋Š” ์„  ์ด๋ฆ„์„ ๋ฐ”๊พธ๊ฑฐ๋‚˜, ๊ธฐ์กด ์˜์—ญ/์„ ์„ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜, ์„  ๋ฐฉํ–ฅ์„ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

REST ๋ฐ ๋ช…๋ น์ค„

๋‹ค์Œ ์ฝ”๋“œ๋Š” ์ŠคํŠธ๋ฆผ ์ฃผ์„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • PROJECT: Google Cloud ํ”„๋กœ์ ํŠธ ID ๋˜๋Š” ํ”„๋กœ์ ํŠธ ๋ฒˆํ˜ธ
  • LOCATION_ID: Vertex AI Vision์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฆฌ์ „์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด us-central1, europe-west4์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฆฌ์ „์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.
  • APPLICATION_ID: ํƒ€๊ฒŸ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ID์ž…๋‹ˆ๋‹ค.
  • STREAM_ID: ๋Œ€์ƒ ์ŠคํŠธ๋ฆผ์˜ ID์ž…๋‹ˆ๋‹ค.
  • NODE_NAME: ์•ฑ ๊ทธ๋ž˜ํ”„์˜ ํƒ€๊ฒŸ ๋…ธ๋“œ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด builtin-occupancy-count์ž…๋‹ˆ๋‹ค.
  • ANNOTATION_ID: ํƒ€๊ฒŸ ์ฃผ์„์˜ ID์ž…๋‹ˆ๋‹ค.
  • ANNOTATION_DISPLAYNAME: ํƒ€๊ฒŸ ์ฃผ์„์˜ ์‚ฌ์šฉ์ž ์ง€์ • ํ‘œ์‹œ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
  • ANNOTATION_TYPE: ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์—ด๊ฑฐํ˜• ๊ฐ’ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์ด ์œ ํ˜•์€ annotation_payload ๊ฐ์ฒด(activeZone ๋˜๋Š” crossingLine)์™€ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
    • STREAM_ANNOTATION_TYPE_UNSPECIFIED
    • STREAM_ANNOTATION_TYPE_ACTIVE_ZONE
    • STREAM_ANNOTATION_TYPE_CROSSING_LINE
  • normalizedVertices: ๊ฐ ๊ผญ์ง“์ ์€ x, y ์ขŒํ‘œ ๊ฐ’์œผ๋กœ ์ง€์ •๋ฉ๋‹ˆ๋‹ค. ์ขŒํ‘œ๋Š” ์›๋ณธ ์ด๋ฏธ์ง€์— ์ƒ๋Œ€์ ์ธ ์ •๊ทœํ™”๋œ float ๊ฐ’ [0,1] ์ž…๋‹ˆ๋‹ค. 0.0์€ X_MIN ๋˜๋Š” Y_MIN์ด๊ณ  1.0์€ X_MAX ๋˜๋Š” Y_MAX์ž…๋‹ˆ๋‹ค.

HTTP ๋ฉ”์„œ๋“œ ๋ฐ URL:

POST https://visionai.googleapis.com/v1/projects/PROJECT/locations/LOCATION_ID/applications/APPLICATION_ID:addStreamInput

JSON ์š”์ฒญ ๋ณธ๋ฌธ:

{
  "applicationStreamInputs": [
    {
      "streamWithAnnotation": {
        "stream": "projects/PROJECT/locations/LOCATION_ID/clusters/application-cluster-0/streams/STREAM_ID",
        "nodeAnnotations": [
          {
            "node": "NODE_NAME",
            "annotations": [
              {
                "id": "ANNOTATION_ID",
                "displayName": "ANNOTATION_DISPLAYNAME",
                "sourceStream": "projects/PROJECT/locations/LOCATION_ID/clusters/application-cluster-0/streams/STREAM_ID",
                "type": ANNOTATION_TYPE,
                "activeZone": {
                  "normalizedVertices": {
                    "x": 0.07434944,
                    "y": 0.18061674
                  },
                  "normalizedVertices": {
                    "x": 0.64684016,
                    "y": 0.16079295
                  },
                  "normalizedVertices": {
                    "x": 0.6047088,
                    "y": 0.92070484
                  },
                  "normalizedVertices": {
                    "x": 0.1251549,
                    "y": 0.76651984
                  }
                }
              }
            ]
          }
        ]
      }
    }
  ]
}

์š”์ฒญ์„ ๋ณด๋‚ด๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

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://visionai.googleapis.com/v1/projects/PROJECT/locations/LOCATION_ID/applications/APPLICATION_ID:addStreamInput"

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://visionai.googleapis.com/v1/projects/PROJECT/locations/LOCATION_ID/applications/APPLICATION_ID:addStreamInput" | Select-Object -Expand Content

์„ฑ๊ณต ์ƒํƒœ ์ฝ”๋“œ(2xx)์™€ ๋นˆ ์‘๋‹ต์„ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ŠคํŠธ๋ฆผ ์ž…๋ ฅ ์‚ญ์ œ

REST

์•ฑ์—์„œ ์ŠคํŠธ๋ฆผ์„ ์‚ญ์ œํ•˜๋ ค๋ฉด projects.locations.applications.removeStreamInput ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ POST ์š”์ฒญ์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

HTTP ๋ฉ”์„œ๋“œ ๋ฐ URL:

POST https://visionai.googleapis.com/v1/projects/PROJECT/locations/LOCATION_ID/applications/APPLICATION_ID:removeStreamInput

JSON ์š”์ฒญ ๋ณธ๋ฌธ:

{
  "targetStreamInputs": [
     {
       "stream": "projects/PROJECT/locations/LOCATION_ID/clusters/application-cluster-0/streams/STREAM_ID"
     },
     {
       "stream": "projects/PROJECT/locations/LOCATION_ID/clusters/application-cluster-0/streams/STREAM_ID"
     }
   ]
}

์š”์ฒญ์„ ๋ณด๋‚ด๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

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://visionai.googleapis.com/v1/projects/PROJECT/locations/LOCATION_ID/applications/APPLICATION_ID:removeStreamInput"

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://visionai.googleapis.com/v1/projects/PROJECT/locations/LOCATION_ID/applications/APPLICATION_ID:removeStreamInput" | Select-Object -Expand Content

์„ฑ๊ณต ์ƒํƒœ ์ฝ”๋“œ(2xx)์™€ ๋นˆ ์‘๋‹ต์„ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์‚ฌ์ „ ํ•™์Šต๋œ Vertex AI Vision ๋ชจ๋ธ ์ถ”๊ฐ€

์•ฑ์„ ๋งŒ๋“  ํ›„ ๋ชจ๋ธ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์ŠคํŠธ๋ฆผ, ๋‹ค๋ฅธ ๋ชจ๋ธ ๋˜๋Š” ๋ฏธ๋””์–ด ์ฐฝ๊ณ ์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋ธ์—๋Š” ์‚ฌ์ „ ํ•™์Šต๋œ ๋ชจ๋ธ๊ณผ ์‚ฌ์šฉ์ž ํ•™์Šต ๋ชจ๋ธ์˜ ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์‚ฌ์šฉ์ž ํ•™์Šต ๋ชจ๋ธ๋„ AutoML ๋˜๋Š” ์ปค์Šคํ…€ ํ•™์Šต์˜ ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์‚ฌ์ „ ํ•™์Šต๋œ ๋ชจ๋ธ์€ ํŠน์ • ๋ชฉํ‘œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ์ผ๋ฐ˜ํ™”๋œ ๋ฐ์ดํ„ฐ๋กœ ํ•™์Šต๋˜๋ฉฐ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž ํ•™์Šต AutoML ๋˜๋Š” ์ปค์Šคํ…€ ํ•™์Šต ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ๋ฅผ ์‹๋ณ„ํ•˜๊ณ  ์ œ๊ณตํ•œ ๋‹ค์Œ ๊ณ ์œ ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋” ์ ํ•ฉํ•œ ๋ชจ๋ธ์„ ํ•™์Šต์‹œ์ผœ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ชจ๋ธ์€ Vertex AI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•™์Šต์‹œํ‚ต๋‹ˆ๋‹ค. Vertex AI๋Š” AutoML ํ•™์Šต ๋ชจ๋ธ๊ณผ ์ปค์Šคํ…€ ํ•™์Šต ๋ชจ๋ธ์ด๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ํ•™์Šต ์˜ต์…˜์„ ์ œ๊ณตํ•˜๋Š” ์ œํ’ˆ์ž…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ•™์Šต ๋ฐฉ๋ฒ• ์„ ํƒ์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

๋‹ค์Œ ์•ˆ๋‚ด์— ๋”ฐ๋ผ ์‚ฌ์ „ ํ•™์Šต๋œ Vertex AI Vision ๋ชจ๋ธ์„ ์•ฑ ๊ทธ๋ž˜ํ”„์— ์ถ”๊ฐ€ํ•˜์„ธ์š”.

์ฝ˜์†”

  1. Vertex AI Vision ๋Œ€์‹œ๋ณด๋“œ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํƒญ์„ ์—ฝ๋‹ˆ๋‹ค.

    ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํƒญ์œผ๋กœ ์ด๋™

  2. ๋ชฉ๋ก์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ด๋ฆ„ ์˜†์— ์žˆ๋Š” ์•ฑ ๋ณด๊ธฐ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  3. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋นŒ๋” ํŽ˜์ด์ง€์˜ AI ๋ชจ๋ธ ๋ชฉ๋ก์—์„œ ์ถ”๊ฐ€ํ•  ๋ชจ๋ธ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๋ชจ๋ธ์—๋Š” ๊ฐœ๋ณ„ ๊ตฌ์„ฑ ์„ค์ •์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  4. ์ด ๋ชจ๋ธ์„ ์ž…๋ ฅ ์†Œ์Šค ๋…ธ๋“œ์— ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด ์†Œ์Šค ๋…ธ๋“œ๋ฅผ ์„ ํƒํ•˜๊ณ  ์ถœ๋ ฅ ์ถ”๊ฐ€๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  5. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋…ธ๋“œ ๋ชฉ๋ก์—์„œ ์ƒˆ๋กœ ๋งŒ๋“  AI ๋ชจ๋ธ ๋…ธ๋“œ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ํ•™์Šต Vertex AI ๋ชจ๋ธ ์ถ”๊ฐ€

์•ฑ์„ ๋งŒ๋“  ํ›„ ๋ชจ๋ธ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์ŠคํŠธ๋ฆผ, ๋‹ค๋ฅธ ๋ชจ๋ธ ๋˜๋Š” ๋ฏธ๋””์–ด ์ฐฝ๊ณ ์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋ธ์—๋Š” ์‚ฌ์ „ ํ•™์Šต๋œ ๋ชจ๋ธ๊ณผ ์‚ฌ์šฉ์ž ํ•™์Šต ๋ชจ๋ธ์˜ ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์‚ฌ์šฉ์ž ํ•™์Šต ๋ชจ๋ธ๋„ AutoML ๋˜๋Š” ์ปค์Šคํ…€ ํ•™์Šต์˜ ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์‚ฌ์ „ ํ•™์Šต๋œ ๋ชจ๋ธ์€ ํŠน์ • ๋ชฉํ‘œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ์ผ๋ฐ˜ํ™”๋œ ๋ฐ์ดํ„ฐ๋กœ ํ•™์Šต๋˜๋ฉฐ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž ํ•™์Šต AutoML ๋˜๋Š” ์ปค์Šคํ…€ ํ•™์Šต ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ๋ฅผ ์‹๋ณ„ํ•˜๊ณ  ์ œ๊ณตํ•œ ๋‹ค์Œ ๊ณ ์œ ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋” ์ ํ•ฉํ•œ ๋ชจ๋ธ์„ ํ•™์Šต์‹œ์ผœ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ชจ๋ธ์€ Vertex AI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•™์Šต์‹œํ‚ต๋‹ˆ๋‹ค. Vertex AI๋Š” AutoML ํ•™์Šต ๋ชจ๋ธ๊ณผ ์ปค์Šคํ…€ ํ•™์Šต ๋ชจ๋ธ์ด๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ํ•™์Šต ์˜ต์…˜์„ ์ œ๊ณตํ•˜๋Š” ์ œํ’ˆ์ž…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ•™์Šต ๋ฐฉ๋ฒ• ์„ ํƒ์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

Vertex AI AutoML ๊ฐ์ฒด ๊ฐ์ง€ ์ŠคํŠธ๋ฆฌ๋ฐ ๋ชจ๋ธ ์ถ”๊ฐ€

๋‹ค์Œ ์•ˆ๋‚ด์— ๋”ฐ๋ผ ํ•™์Šต์‹œํ‚จ Vertex AI AutoML ๊ฐ์ฒด ๊ฐ์ง€ ์ŠคํŠธ๋ฆฌ๋ฐ ๋ชจ๋ธ์„ ์•ฑ ๊ทธ๋ž˜ํ”„์— ์ถ”๊ฐ€ํ•˜์„ธ์š”.

Vertex AI AutoML ๋ชจ๋ธ์„ ํ•™์Šต์‹œํ‚ค๋ ค๋ฉด ๋จผ์ € ๊ฐ์ฒด ๊ฐ์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ์ค€๋น„ํ•˜๊ณ  ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Vertex AI Vision์—์„œ ์‚ฌ์šฉํ•  ๋ชจ๋ธ ํ•™์Šต

Vertex AI์—์„œ ๋Œ€ํ‘œ์ ์ธ ๋ฐ์ดํ„ฐ ๋ชจ์Œ์œผ๋กœ ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ๋งŒ๋“  ํ›„ Vertex AI Vision์—์„œ ์‚ฌ์šฉํ•  ๋ชจ๋ธ์„ ํ•™์Šต์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์˜ Vertex AI ๋Œ€์‹œ๋ณด๋“œ์—์„œ ๋ฐ์ดํ„ฐ ์„ธํŠธ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    ๋ฐ์ดํ„ฐ ์„ธํŠธ ํŽ˜์ด์ง€๋กœ ์ด๋™

  2. ๋ชจ๋ธ์„ ํ•™์Šต์‹œํ‚ค๋Š” ๋ฐ ์‚ฌ์šฉํ•  ๋ฐ์ดํ„ฐ ์„ธํŠธ์˜ ์ด๋ฆ„์„ ํด๋ฆญํ•˜์—ฌ ์„ธ๋ถ€์ •๋ณด ํŽ˜์ด์ง€๋ฅผ ์—ฝ๋‹ˆ๋‹ค.

  3. ๋ฐ์ดํ„ฐ ์œ ํ˜•์ด ์ฃผ์„ ์„ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ด ๋ชจ๋ธ์— ์‚ฌ์šฉํ•  ์ฃผ์„ ์„ธํŠธ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  4. ์ƒˆ ๋ชจ๋ธ ํ•™์Šต์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  5. ์ƒˆ ๋ชจ๋ธ ํ•™์Šต ํŽ˜์ด์ง€์—์„œ AutoML ์ด๋ฏธ์ง€ ๊ฐ์ฒด ๊ฐ์ง€ ๋ชจ๋ธ์— ๋Œ€ํ•ด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์™„๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

    1. ๋ชจ๋ธ ํ•™์Šต ๋ฐฉ๋ฒ• ์„น์…˜์—์„œ AutoML์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    2. ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•  ์œ„์น˜ ์„ ํƒ ์„น์…˜์—์„œ Vertex AI Vision์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    3. ๊ณ„์†์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    4. ๋ชจ๋ธ ์„ธ๋ถ€์ •๋ณด, ํ•™์Šต ์˜ต์…˜, ์ปดํ“จํŒ… ๋ฐ ๊ฐ€๊ฒฉ ์ฑ…์ • ์„น์…˜์˜ ๊ฐ’์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ AutoML ๋ชจ๋ธ ํ•™์Šต (Google Cloud ์ฝ˜์†”)์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

    5. ํ•™์Šต ์‹œ์ž‘์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

      ๋ฐ์ดํ„ฐ์˜ ๊ทœ๋ชจ ๋ฐ ๋ณต์žก์„ฑ๊ณผ ํ•™์Šต ์˜ˆ์‚ฐ(์ง€์ •ํ•œ ๊ฒฝ์šฐ)์— ๋”ฐ๋ผ ๋ชจ๋ธ ํ•™์Šต์— ๋งŽ์€ ์‹œ๊ฐ„์ด ์†Œ์š”๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํƒญ์„ ๋‹ซ์•˜๋‹ค๊ฐ€ ๋‚˜์ค‘์— ๋‹ค์‹œ ๋Œ์•„์™€๋„ ๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋ธ ํ•™์Šต์ด ์™„๋ฃŒ๋˜๋ฉด ์ด๋ฉ”์ผ์ด ์ „์†ก๋ฉ๋‹ˆ๋‹ค.

ํ•™์Šต๋œ ๋ชจ๋ธ์„ ์•ฑ์— ์ถ”๊ฐ€

๋ชจ๋ธ ํ•™์Šต์ด ์™„๋ฃŒ๋˜๋ฉด Vertex AI Vision ์•ฑ์— ๋ชจ๋ธ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ˜์†”

  1. Vertex AI Vision ๋Œ€์‹œ๋ณด๋“œ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํƒญ์„ ์—ฝ๋‹ˆ๋‹ค.

    ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํƒญ์œผ๋กœ ์ด๋™

  2. ๋ชฉ๋ก์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ด๋ฆ„ ์˜†์— ์žˆ๋Š” ์•ฑ ๋ณด๊ธฐ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  3. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋นŒ๋” ํŽ˜์ด์ง€์˜ ์ธก๋ฉด ๊ตฌ์„ฑ์š”์†Œ ๋ชฉ๋ก์—์„œ Vertex AI ๋ชจ๋ธ ์ถ”๊ฐ€๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์„ ์„ ํƒํ•˜๋ฉด ์ธก๋ฉด ๋ฉ”๋‰ด๊ฐ€ ์—ด๋ฆฝ๋‹ˆ๋‹ค.

  4. 'Vertex AI ๋ชจ๋ธ ์ถ”๊ฐ€' ๋ฉ”๋‰ด์—์„œ Vertex AI์—์„œ ํ•™์Šต๋œ ๋ชจ๋ธ ๊ฐ€์ ธ์˜ค๊ธฐ ์˜ต์…˜์„ ์„ ํƒํ•œ ์ƒํƒœ๋กœ ๋‘๊ณ  ๊ธฐ์กด Vertex AI AutoML ๋ชจ๋ธ ๋ชฉ๋ก์—์„œ ๋ชจ๋ธ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  5. ๊ฐ€์ ธ์˜ฌ ๋ชจ๋ธ์„ ์„ ํƒํ•œ ํ›„ ๋ชจ๋ธ ์ถ”๊ฐ€๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    ๋ชจ๋ธ ์ถ”๊ฐ€ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ๊ทธ๋ž˜ํ”„ ๋นŒ๋” ํŽ˜์ด์ง€ ์ธก๋ฉด์— ๋Œ€๊ธฐ ์ค‘์ธ ๋ชจ๋ธ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๋ช‡ ์ดˆ ํ›„ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Vertex AI ์ปค์Šคํ…€ ๋ชจ๋ธ ์ถ”๊ฐ€

Vertex AI ์ปค์Šคํ…€ ํ•™์Šต ๋ชจ๋ธ์„ Vertex AI Vision์œผ๋กœ ๊ฐ€์ ธ์™€ ๋ฐ์ดํ„ฐ ๋ถ„์„์— ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋งž์ถค ํ•™์Šต ๋ชจ๋ธ์—๋Š” ๋‹ค์Œ ์†์„ฑ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ๋ชจ๋ธ ์ž…๋ ฅ์€ ์„œ๋กœ ๋‹ค๋ฅธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ธ์Šคํ„ด์Šค (์ŠคํŠธ๋ฆผ)์—์„œ ๊ฐ€์ ธ์˜จ ์ด๋ฏธ์ง€์ด๋ฉฐ ์ˆœ์„œ๊ฐ€ ์ž˜๋ชป๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ชจ๋ธ์€ ์Šคํ…Œ์ดํŠธ๋ฆฌ์Šค์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ƒํƒœ ์ €์žฅ ์ŠคํŠธ๋ฆฌ๋ฐ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ž์ฒด ์ปจํ…Œ์ด๋„ˆ ๋‚ด์— ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ชจ๋ธ์˜ ์ž…๋ ฅ ํฌ๊ธฐ๋Š” 1.5MB๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Vertex AI Vision์€ ์›๋ณธ RGB ์ด๋ฏธ์ง€๋ฅผ JPG์™€ ๊ฐ™์€ ์†์‹ค ํ˜•์‹์œผ๋กœ ์••์ถ•ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ์•ˆ๋‚ด์— ๋”ฐ๋ผ ํ•™์Šตํ•œ ๊ธฐ์กด Vertex AI ๋งž์ถค ํ•™์Šต ๋™์˜์ƒ ๋ชจ๋ธ์„ ์•ฑ ๊ทธ๋ž˜ํ”„์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

์ปค์Šคํ…€ ์ปจํ…Œ์ด๋„ˆ๋กœ Vertex AI ์ปค์Šคํ…€ ํ•™์Šต ๋ชจ๋ธ์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ ์˜ˆ์ธก์— ์ปค์Šคํ…€ ์ปจํ…Œ์ด๋„ˆ ์‚ฌ์šฉ์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

์ธ์Šคํ„ด์Šค YAML ํŒŒ์ผ ์ง€์ •

Vertex AI ๋งž์ถค ํ•™์Šต ๋ชจ๋ธ์„ ์ถ”๊ฐ€ํ•  ๋•Œ๋Š” Cloud Storage์— ์ €์žฅ๋œ ์ธ์Šคํ„ด์Šค YAML ํŒŒ์ผ (instances.yaml)์„ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์€ ๋ชจ๋ธ ์ปจํ…Œ์ด๋„ˆ์— ํ•„์š”ํ•œ ์ž…๋ ฅ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

Vertex AI๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ์˜ˆ์ธก ์š”์ฒญ์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

{
  "instances": [
    <value>|<simple/nested list>|<object>,
    ...
  ]
}

์—ฌ๊ธฐ์„œ instances.yaml๋Š” ํŽ˜์ด๋กœ๋“œ์˜ ์Šคํ‚ค๋งˆ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ปค์Šคํ…€ ํ•™์Šต ๋ชจ๋ธ์—์„œ ์˜จ๋ผ์ธ ์˜ˆ์ธก ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

Vertex AI Vision์€ ์ •ํ™•ํžˆ ํ•˜๋‚˜์˜ ์ด๋ฆ„์ด ์ง€์ •๋œ ์˜ˆ์ธก ์ž…๋ ฅ์ด ์žˆ๋Š” ์ปค์Šคํ…€ ํ•™์Šต ๋ชจ๋ธ๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ž…๋ ฅ ์œ ํ˜•์€ ์ธ์ฝ”๋”ฉ๋œ JPEG ๋ฌธ์ž์—ด์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์ธก ์ž…๋ ฅ์˜ ์Šคํ‚ค๋งˆ๋Š” ์ธ์Šคํ„ด์Šค ์Šคํ‚ค๋งˆ YAML ํŒŒ์ผ๋กœ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์Šคํ‚ค๋งˆ YAML ํŒŒ์ผ์€ OpenAPI ์Šคํ‚ค๋งˆ ๊ฐ์ฒด ํ˜•์‹์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ ์Šคํ‚ค๋งˆ๋Š” image_bytes๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ํ•„๋“œ์— ์ธ์ฝ”๋”ฉ๋œ ์ด๋ฏธ์ง€๊ฐ€ ํฌํ•จ๋œ ์š”์ฒญ์„ ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค.

properties:
  image_bytes:
    type: string

๋งž์ถค ๋ชจ๋ธ์€ ๋‹ค์Œ ํ˜•์‹์œผ๋กœ ์˜ˆ์ธก ์ž…๋ ฅ์„ ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค.

{
  "instances": [
    {
      "image_bytes" : {
        "b64": "BASE64_ENCODED_IMAGE_BYTES"
      }
    }
  ]
}

๋ชจ๋ธ์„ Vertex AI Vision์œผ๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ ์ „์— ๋ชจ๋ธ์ด ์ด ์ž…๋ ฅ์œผ๋กœ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

์˜ˆ์ธก YAML ํŒŒ์ผ ์ง€์ •

Vertex AI ๋งž์ถค ํ•™์Šต ๋ชจ๋ธ์„ ์ถ”๊ฐ€ํ•  ๋•Œ Cloud Storage์— ์ €์žฅ๋œ ์˜ˆ์ธก YAML ํŒŒ์ผ (predictions.yaml)์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์€ ๋ชจ๋ธ ์ปจํ…Œ์ด๋„ˆ์˜ ์ถœ๋ ฅ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

์ด ํŒŒ์ผ์€ ์„ ํƒ์‚ฌํ•ญ์ด์ง€๋งŒ Vertex AI Vision์— ๋ชจ๋ธ์˜ ์ถœ๋ ฅ ๊ตฌ์กฐ๋ฅผ ์•Œ๋ฆฌ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ classification_1.0.0.yaml ํŒŒ์ผ์€ ์ด๋ฏธ์ง€ ๋ถ„๋ฅ˜ ๋ชจ๋ธ์˜ ๋ชจ๋ธ ์ถœ๋ ฅ ์ •๋ณด๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

title: Classification
type: object
description: >
  The predicted AnnotationSpecs.
properties:
  ids:
    type: array
    description: >
      The resource IDs of the AnnotationSpecs that had been identified.
    items:
      type: integer
      format: int64
      enum: [0]  # As values of this enum all AnnotationSpec IDs the Model
      # was trained on will be populated.
  displayNames:
    type: array
    description: >
      The display names of the AnnotationSpecs that had been identified,
      order matches the IDs.
    items:
      type: string
      enum: [""]  # As values of this enum all AnnotationSpec display_names
      # the Model was trained on will be populated.
  confidences:
    type: array
    description: >
      The Model's confidences in correctness of the predicted IDs, higher
      value means higher confidence. Order matches the Ids.
    items:
      type: number
      format: float
      minimum: 0.0
      maximum: 1.0

์ปค์Šคํ…€ ํ•™์Šต ๋ชจ๋ธ ์ถ”๊ฐ€

๋‹ค์Œ ์ƒ˜ํ”Œ์„ ์‚ฌ์šฉํ•˜์—ฌ Vertex AI ์ปค์Šคํ…€ ํ•™์Šต ๋ชจ๋ธ์„ ์•ฑ์— ์ถ”๊ฐ€ํ•˜์„ธ์š”.

์ฝ˜์†”

  1. Vertex AI Vision ๋Œ€์‹œ๋ณด๋“œ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํƒญ์„ ์—ฝ๋‹ˆ๋‹ค.

    ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํƒญ์œผ๋กœ ์ด๋™

  2. ๋ชฉ๋ก์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ด๋ฆ„ ์˜†์— ์žˆ๋Š” ์•ฑ ๋ณด๊ธฐ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  3. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋นŒ๋” ํŽ˜์ด์ง€์˜ ์ธก๋ฉด ๊ตฌ์„ฑ์š”์†Œ ๋ชฉ๋ก์—์„œ Vertex AI ๋ชจ๋ธ ์ถ”๊ฐ€๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์„ ์„ ํƒํ•˜๋ฉด ์ธก๋ฉด ๋ฉ”๋‰ด๊ฐ€ ์—ด๋ฆฝ๋‹ˆ๋‹ค.

  4. 'Vertex AI ๋ชจ๋ธ ์ถ”๊ฐ€' ๋ฉ”๋‰ด์—์„œ Vertex AI์—์„œ ํ•™์Šต๋œ ๋ชจ๋ธ ๊ฐ€์ ธ์˜ค๊ธฐ ์˜ต์…˜์„ ์„ ํƒํ•œ ์ƒํƒœ๋กœ ๋‘๊ณ  ๊ธฐ์กด Vertex AI AutoML ๋ชจ๋ธ ๋ชฉ๋ก์—์„œ ๋ชจ๋ธ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  5. ๋ชจ๋ธ ์ด๋ฆ„์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

  6. ์˜ˆ์ธก ๋ฐ ์„ค๋ช… ์š”์ฒญ์— ์‚ฌ์šฉ๋˜๋Š” ๋‹จ์ผ ์ธ์Šคํ„ด์Šค์˜ ํ˜•์‹์„ ์ •์˜ํ•˜๋Š” Cloud Storage์˜ ์ธ์Šคํ„ด์Šค YAML ํŒŒ์ผ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

  7. ์„ ํƒ์‚ฌํ•ญ: ๋‹จ์ผ ์˜ˆ์ธก ๋˜๋Š” ์„ค๋ช…์˜ ํ˜•์‹์„ ์ •์˜ํ•˜๋Š” Cloud Storage์˜ ์˜ˆ์ธก ์Šคํ‚ค๋งˆ YAML ํŒŒ์ผ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

  8. ๋ชจ๋ธ ์ด๋ฆ„, ์ธ์Šคํ„ด์Šค, ์˜ˆ์ธก ์ •๋ณด๋ฅผ ์ œ๊ณตํ•œ ํ›„ ๋ชจ๋ธ ์ถ”๊ฐ€๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  9. ๋ชจ๋ธ ์ถ”๊ฐ€ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ๊ทธ๋ž˜ํ”„ ๋นŒ๋” ํŽ˜์ด์ง€ ์ธก๋ฉด์— ๋Œ€๊ธฐ ์ค‘์ธ ๋ชจ๋ธ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๋ช‡ ์ดˆ ํ›„ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

(์„ ํƒ์‚ฌํ•ญ) ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ฒจ๋ถ€

์ด๋ฏธ์ง€ ๋ฐ”์ดํŠธ ์™ธ์—๋„ attach_application_metadata๋ฅผ ์„ค์ •ํ•˜์—ฌ Vertex AI Vision ์•ฑ ํ”Œ๋žซํผ์— ์ปค์Šคํ…€ ์ปจํ…Œ์ด๋„ˆ๋กœ ์ „์†กํ•  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜๋„๋ก ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์—๋Š” ๋‹ค์Œ ์Šคํ‚ค๋งˆ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

'appPlatformMetadata': {
     'application': STRING;
     'instanceId': STRING;
     'node': STRING;
     'processor': STRING;
   }

(์„ ํƒ์‚ฌํ•ญ) ๋™์  ๊ตฌ์„ฑ Pub/Sub ์ฃผ์ œ ์ถ”๊ฐ€

Vertex ๋งž์ถค ์—ฐ์‚ฐ์ž๊ฐ€ Vertex ๋งž์ถค ์ปจํ…Œ์ด๋„ˆ์— ๋™์˜์ƒ ํ”„๋ ˆ์ž„์„ ์ „์†กํ•˜๋Š” ํ”„๋ ˆ์ž„ ์†๋„๋ฅผ ๋™์ ์œผ๋กœ ์ œ์–ดํ•˜๋ ค๋ฉด Pub/Sub ์ฃผ์ œ๋ฅผ ๋งŒ๋“ค๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋…ธ๋“œ ์„ค์ •์˜ Dynamic Configuration ์„น์…˜์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

๋™์  ๊ตฌ์„ฑ

Pub/Sub ์ฃผ์ œ๊ฐ€ ๊ตฌ์„ฑ๋œ ๊ฒฝ์šฐ ์ดˆ๊ธฐ ํ”„๋ ˆ์ž„ ์†๋„๋Š” 0์ž…๋‹ˆ๋‹ค. ๋™์˜์ƒ ์ฒ˜๋ฆฌ ์ค‘์— ๋‹ค์Œ ํ˜•์‹์œผ๋กœ Pub/Sub ์ฃผ์ œ์— Pub/Sub ๋ฉ”์‹œ์ง€๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ „์†กํ•˜์—ฌ ํ”„๋ ˆ์ž„ ์†๋„๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

{
  "stream_id": "input-stream-id",
  "fps": 5,
}

stream_id ํ•„๋“œ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ ID์™€ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์„œ๋น„์Šค ๊ณ„์ • ๋ฐ ๊ถŒํ•œ

์ปค์Šคํ…€ ์ปจํ…Œ์ด๋„ˆ์˜ ๊ธฐ๋ณธ ์„œ๋น„์Šค ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๊ฐ€ Vertex AI Vision ์•ฑ ํ”Œ๋žซํผ์˜ Google ์†Œ์œ  ์„œ๋น„์Šค ๊ณ„์ •์œผ๋กœ ๊ตฌ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋‹ค๋ฅธ Google Cloud์„œ๋น„์Šค์— ์•ก์„ธ์Šคํ•˜๋ ค๋ฉด ๋‹ค์Œ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ ์ ˆํ•œ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜์„ธ์š”. service-<var>PROJECT_NUMBER</var>@gcp-sa-visionai.iam.gserviceaccount.com

(์„ ํƒ์‚ฌํ•ญ) Cloud Run ํ•จ์ˆ˜ ๋ฐ Pub/Sub๋กœ ์ด๋ฒคํŠธ ์•Œ๋ฆผ ๋ชจ๋ธ๋ง

Vertex AI Vision์—์„œ ๋ชจ๋ธ์€ ์นด๋ฉ”๋ผ์™€ ๊ฐ™์€ ๊ธฐ๊ธฐ์—์„œ ๋ฏธ๋””์–ด ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ , ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด AI ์˜ˆ์ธก์„ ์‹คํ–‰ํ•˜๊ณ , ์ฃผ์„์„ ์ง€์†์ ์œผ๋กœ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ฒ˜๋ฆฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฏธ๋””์–ด ์›จ์–ดํ•˜์šฐ์Šค๋‚˜ BigQuery์™€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ ๋Œ€์ƒ ('๋ฐ์ดํ„ฐ ์‹ฑํฌ')์œผ๋กœ ์ „์†กํ•˜์—ฌ ์ถ”๊ฐ€ ๋ถ„์„ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ผ๋ถ€ ์ฃผ์„์„ ๋‹ค๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๊ฑฐ๋‚˜ ์ฃผ์„ ์š”๊ตฌ์‚ฌํ•ญ์ด ์‹œ๊ฐ„์— ๋ฏผ๊ฐํ•œ ๊ฒฝ์šฐ๋„ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Cloud Run Functions ๋ฐ Pub/Sub์™€์˜ ํ†ตํ•ฉ์„ ํ†ตํ•ด ์ด๋Ÿฌํ•œ ์š”๊ตฌ์‚ฌํ•ญ์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ง€์›๋˜๋Š” ๋ชจ๋ธ

๋‹ค์Œ ๋ชจ๋ธ์€ Cloud Run Functions ์ด๋ฒคํŠธ ์ƒ์„ฑ ๋ฐ Pub/Sub ์ด๋ฒคํŠธ ์•Œ๋ฆผ ํ†ตํ•ฉ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋ธ ์ถœ๋ ฅ์„ ์ฒ˜๋ฆฌํ•˜๋„๋ก Cloud Run ํ•จ์ˆ˜ ๊ตฌ์„ฑ

์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์•Œ๋ฆผ์„ ํŠธ๋ฆฌ๊ฑฐํ•˜๋ ค๋ฉด ๋จผ์ € ๋ชจ๋ธ ์ถœ๋ ฅ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์ด๋ฒคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋„๋ก Cloud Run Functions๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Cloud Run ํ•จ์ˆ˜๋Š” ๋ชจ๋ธ์— ์—ฐ๊ฒฐ๋˜๊ณ  ํ›„์ฒ˜๋ฆฌ ์ž‘์—…์œผ๋กœ ์ถœ๋ ฅ์„ ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค. Cloud Run ํ•จ์ˆ˜๋Š” AppPlatformCloudFunctionResponse๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒคํŠธ(appplatformeventbody)๋Š” ๋‹ค์Œ ๋‹จ๊ณ„์—์„œ ๊ตฌ์„ฑํ•˜๋Š” Pub/Sub ์ฃผ์ œ๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค.

์ƒ˜ํ”Œ Cloud Run ํ•จ์ˆ˜๋ฅผ ๋ณด๋ ค๋ฉด Cloud Functions ๋ฐ Pub/Sub๋กœ ๋ชจ๋ธ ์ด๋ฒคํŠธ ์•Œ๋ฆผ ์‚ฌ์šฉ ์„ค์ •์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

๋‹ค์Œ ์•ˆ๋‚ด์— ๋”ฐ๋ผ ๋ชจ๋ธ ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์„ Cloud Run ํ•จ์ˆ˜๋กœ ์ „์†กํ•˜์„ธ์š”.

์ฝ˜์†”

  1. Vertex AI Vision ๋Œ€์‹œ๋ณด๋“œ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํƒญ์„ ์—ฝ๋‹ˆ๋‹ค.

    ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํƒญ์œผ๋กœ ์ด๋™

  2. ๋ชฉ๋ก์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ด๋ฆ„ ์˜†์— ์žˆ๋Š” ์•ฑ ๋ณด๊ธฐ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  3. ์ง€์›๋˜๋Š” ๋ชจ๋ธ์„ ํด๋ฆญํ•˜์—ฌ ๋ชจ๋ธ ์„ธ๋ถ€์ •๋ณด ์ธก๋ฉด ํŒจ๋„์„ ์—ฝ๋‹ˆ๋‹ค.

  4. ์ด๋ฒคํŠธ ์•Œ๋ฆผ ์„น์…˜์˜ ํ›„์ฒ˜๋ฆฌ ๋ชฉ๋ก์—์„œ ๊ธฐ์กด Cloud Run ํ•จ์ˆ˜๋ฅผ ์„ ํƒํ•˜๊ฑฐ๋‚˜ ์ƒˆ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    Cloud ์ฝ˜์†”์—์„œ ํ›„์ฒ˜๋ฆฌ Cloud ํ•จ์ˆ˜ ์ด๋ฏธ์ง€ ์„ ํƒ

Pub/Sub๋กœ ๋ชจ๋ธ ์ด๋ฒคํŠธ ์•Œ๋ฆผ ์‚ฌ์šฉ ์„ค์ •

๋ชจ๋ธ ์ถœ๋ ฅ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์ด๋ฒคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋„๋ก Cloud Run ํ•จ์ˆ˜๋ฅผ ์„ค์ •ํ•œ ํ›„ Pub/Sub๋กœ ์ด๋ฒคํŠธ ์•Œ๋ฆผ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃผ์ œ์—์„œ ๋ฉ”์‹œ์ง€๋ฅผ ์ฝ์œผ๋ ค๋ฉด Pub/Sub ๊ตฌ๋…์„ ์„ ํƒํ•˜๊ณ  ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฝ˜์†”

  1. Vertex AI Vision ๋Œ€์‹œ๋ณด๋“œ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํƒญ์„ ์—ฝ๋‹ˆ๋‹ค.

    ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํƒญ์œผ๋กœ ์ด๋™

  2. ๋ชฉ๋ก์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ด๋ฆ„ ์˜†์— ์žˆ๋Š” ์•ฑ ๋ณด๊ธฐ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  3. ์ง€์›๋˜๋Š” ๋ชจ๋ธ์„ ํด๋ฆญํ•˜์—ฌ ๋ชจ๋ธ ์„ธ๋ถ€์ •๋ณด ์ธก๋ฉด ํŒจ๋„์„ ์—ฝ๋‹ˆ๋‹ค.

  4. ์ด๋ฒคํŠธ ์•Œ๋ฆผ ์„น์…˜์—์„œ ์ด๋ฒคํŠธ ์•Œ๋ฆผ ์„ค์ •์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  5. ์—ด๋ฆฌ๋Š” ์ด๋ฒคํŠธ ์•Œ๋ฆผ์„ ์œ„ํ•œ Pub/Sub ์„ค์ • ์˜ต์…˜ ์ฐฝ์—์„œ ๊ธฐ์กด Pub/Sub ์ฃผ์ œ๋ฅผ ์„ ํƒํ•˜๊ฑฐ๋‚˜ ์ƒˆ ์ฃผ์ œ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

  6. ๋นˆ๋„ ํ•„๋“œ์—์„œ ๋™์ผํ•œ ์œ ํ˜•์˜ ์ด๋ฒคํŠธ์— ๋Œ€ํ•œ ์•Œ๋ฆผ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” ๋นˆ๋„ ๊ฐ’์„ ์ดˆ ๋‹จ์œ„๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    Cloud ์ฝ˜์†”์—์„œ ์ด๋ฒคํŠธ ์•Œ๋ฆผ ์ด๋ฏธ์ง€ ์„ค์ •

  7. ์„ค์ •์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋ธ ์ถœ๋ ฅ์„ ๋‹ค์šด์ŠคํŠธ๋ฆผ ๋…ธ๋“œ์™€ ์—ฐ๊ฒฐ

๋ชจ๋ธ ๋…ธ๋“œ๋ฅผ ๋งŒ๋“  ํ›„์—๋Š” ์ถœ๋ ฅ์„ ๋‹ค๋ฅธ ๋…ธ๋“œ์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ˜์†”

  1. Vertex AI Vision ๋Œ€์‹œ๋ณด๋“œ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํƒญ์„ ์—ฝ๋‹ˆ๋‹ค.

    ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํƒญ์œผ๋กœ ์ด๋™

  2. ๋ชฉ๋ก์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ด๋ฆ„ ์˜†์— ์žˆ๋Š” ์•ฑ ๋ณด๊ธฐ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  3. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ทธ๋ž˜ํ”„ ๋นŒ๋”์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๋ชจ๋ธ ๋…ธ๋“œ (์˜ˆ: Occupancy Count ๋ชจ๋ธ ๋…ธ๋“œ)๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  4. ์ธก๋ฉด ์„ค์ • ํŒจ๋„์—์„œ ์ถœ๋ ฅ ์ถ”๊ฐ€ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  5. ์ƒˆ ์ถœ๋ ฅ ์ถ”๊ฐ€๋ฅผ ์„ ํƒํ•˜๊ณ  ์ถ”๊ฐ€ํ•  ์ƒˆ ์ถœ๋ ฅ ๋…ธ๋“œ๋ฅผ ์„ ํƒํ•˜๊ฑฐ๋‚˜ ๊ธฐ์กด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋…ธ๋“œ๋ฅผ ์„ ํƒํ•˜์—ฌ ์ถœ๋ ฅ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

์ถœ๋ ฅ์„ ๋ฐ์ดํ„ฐ ๋Œ€์ƒ์œผ๋กœ ์—ฐ๊ฒฐ

๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ์ŠคํŠธ๋ฆผ์„ ๋งŒ๋“ค๊ณ  ์ฒ˜๋ฆฌ ๋…ธ๋“œ๋ฅผ ์•ฑ์— ์ถ”๊ฐ€ํ•œ ํ›„์—๋Š” ์ฒ˜๋ฆฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ์œ„์น˜๋ฅผ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฐ์ดํ„ฐ ๋Œ€์ƒ์€ ์ŠคํŠธ๋ฆผ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ์ŠคํŠธ๋ฆผ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜๋ฝํ•˜๋Š” ์•ฑ ๊ทธ๋ž˜ํ”„์˜ ์—”๋“œํฌ์ธํŠธ์ž…๋‹ˆ๋‹ค. ์„ ํƒํ•˜๋Š” ๋Œ€์ƒ์€ ์•ฑ ์ถœ๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

์ปค๋„ฅํ„ฐ ๋…ธ๋“œ ์ด๋ฏธ์ง€
Google Cloud ์ฝ˜์†”์˜ ์•ฑ ๊ทธ๋ž˜ํ”„ ํŽ˜์ด์ง€์— ์žˆ๋Š” ์ปค๋„ฅํ„ฐ ์„น์…˜์—์„œ ๋ฐ์ดํ„ฐ ๋Œ€์ƒ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•ฑ ์ถœ๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์Œ ๋ฐ์ดํ„ฐ ๋Œ€์ƒ์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. Vision Warehouse: ๋ณด๊ณ  ์ฟผ๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์›๋ณธ ๋˜๋Š” ๋ถ„์„๋œ ๋™์˜์ƒ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

    ์•ฑ ์ถœ๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ Vision Warehouse๋กœ ์ „์†กํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๊ด€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์›จ์–ดํ•˜์šฐ์Šค์— ์—ฐ๊ฒฐํ•˜๊ณ  ์ €์žฅํ•˜๊ธฐ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

  2. BigQuery: BigQuery์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜์—ฌ ์˜คํ”„๋ผ์ธ ๋ถ„์„ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    ์•ฑ ์ถœ๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ BigQuery๋กœ ์ „์†กํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ BigQuery์— ๋ฐ์ดํ„ฐ ์—ฐ๊ฒฐ ๋ฐ ์ €์žฅ์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

  3. ๋ผ์ด๋ธŒ ์ŠคํŠธ๋ฆผ ๋ฐ์ดํ„ฐ: ์‹ค์‹œ๊ฐ„ ๋ถ„์„์— ๋”ฐ๋ผ ์กฐ์น˜๋ฅผ ์ทจํ•˜๊ธฐ ์œ„ํ•ด ๋” ์„ธ๋ถ€์ ์ธ ์ œ์–ด๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์•ฑ์—์„œ ๋ผ์ด๋ธŒ ์ถœ๋ ฅ์„ ์ˆ˜์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์•ฑ ์ถœ๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ์ŠคํŠธ๋ฆฌ๋ฐํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๊ด€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ผ์ด๋ธŒ ์ŠคํŠธ๋ฆผ ์ถœ๋ ฅ ์‚ฌ์šฉ ์„ค์ •์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

์•ฑ ์—…๋ฐ์ดํŠธ

๋ฐฐํฌ๋˜์ง€ ์•Š์€ ์•ฑ

๊ตฌ์„ฑ์š”์†Œ ๋…ธ๋“œ ์ถ”๊ฐ€ ๋˜๋Š” ์‚ญ์ œ์™€ ๊ฐ™์ด ์•ฑ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. Vertex AI Vision์—์„œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ž๋™์œผ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ๋‹จ๊ณ„