ตัวกรองการเคลื่อนไหว Vertex AI Vision

1. วัตถุประสงค์

ภาพรวม

Codelab นี้มุ่งเน้นการสร้างแอปพลิเคชัน Vertex AI Vision แบบครบวงจรเพื่อสาธิตการส่งวิดีโอที่มีฟีเจอร์การกรองการเคลื่อนไหว ในบทแนะนำนี้ เราจะดูพารามิเตอร์ต่างๆ ในการกำหนดค่าตัวกรองการเคลื่อนไหว

  • ความไวในการตรวจจับการเคลื่อนไหว
  • ระยะเวลาขั้นต่ำของเหตุการณ์
  • กรอบเวลามองย้อนกลับ
  • ระยะเวลาพัก
  • โซนตรวจจับการเคลื่อนไหว

สิ่งที่คุณจะได้เรียนรู้

  • วิธีส่งผ่านข้อมูลวิดีโอสำหรับการสตรีม
  • ฟีเจอร์ต่างๆ ที่มีในฟิลเตอร์การเคลื่อนไหวและวิธีใช้
  • ตำแหน่งในการตรวจสอบสถิติของฟิลเตอร์การเคลื่อนไหว
  • วิธีปรับการตั้งค่าตามวิดีโอ

2. ก่อนที่คุณจะเริ่มต้น

  1. ในคอนโซล Google Cloud ให้เลือกหรือสร้างโปรเจ็กต์ Google Cloud ในหน้าตัวเลือกโปรเจ็กต์ หมายเหตุ: หากไม่ต้องการเก็บทรัพยากรที่สร้างขึ้นในขั้นตอนนี้ ให้สร้างโปรเจ็กต์แทนการเลือกโปรเจ็กต์ที่มีอยู่ หลังจากทำตามขั้นตอนเหล่านี้แล้ว คุณจะลบโปรเจ็กต์ซึ่งเป็นการนำทรัพยากรทั้งหมดที่เชื่อมโยงกับโปรเจ็กต์นี้ออกได้ ไปที่เครื่องมือเลือกโปรเจ็กต์
  2. ตรวจสอบว่าได้เปิดใช้การเรียกเก็บเงินสำหรับโปรเจ็กต์ Cloud แล้ว ดูวิธีตรวจสอบว่าได้เปิดใช้การเรียกเก็บเงินในโปรเจ็กต์แล้วหรือไม่
  3. เปิดใช้ Compute Engine และ Vision AI API เปิดใช้ API

สร้างบัญชีบริการ

  1. ในคอนโซล Google Cloud ให้ไปที่หน้าสร้างบัญชีบริการ ไปที่สร้างบัญชีบริการ
  2. เลือกโปรเจ็กต์
  3. ป้อนชื่อในช่องชื่อบัญชีบริการ คอนโซล Google Cloud จะกรอกข้อมูลในช่องรหัสบัญชีบริการตามชื่อนี้ ป้อนคำอธิบายในช่องคำอธิบายบัญชีบริการ เช่น บัญชีบริการสำหรับ Quickstart
  4. คลิกสร้างและต่อไป
  5. หากต้องการให้สิทธิ์เข้าถึงโปรเจ็กต์ ให้มอบบทบาทต่อไปนี้ให้กับบัญชีบริการ Vision AI > ผู้แก้ไข Vision AI, Compute Engine > ผู้ดูแลอินสแตนซ์ Compute (เบต้า), พื้นที่เก็บข้อมูล > ผู้ดูออบเจ็กต์พื้นที่เก็บข้อมูล † เลือกบทบาทในรายการเลือกบทบาท หากต้องการเพิ่มบทบาทอื่น ให้คลิกเพิ่มบทบาทอื่น แล้วเพิ่มบทบาทเพิ่มเติมแต่ละบทบาท หมายเหตุ: ช่องบทบาทจะส่งผลต่อทรัพยากรที่บัญชีบริการเข้าถึงได้ในโปรเจ็กต์ คุณเพิกถอนบทบาทเหล่านี้หรือให้บทบาทเพิ่มเติมได้ในภายหลัง ดังนั้นในสภาพแวดล้อมการใช้งานจริง อย่าให้บทบาทเจ้าของ ผู้แก้ไข หรือผู้ดู แต่ให้มอบบทบาทที่กำหนดไว้ล่วงหน้าหรือบทบาทที่กำหนดเองที่ตรงกับความต้องการแทน
  6. คลิกต่อไป
  7. คลิกเสร็จสิ้นเพื่อสร้างบัญชีบริการให้เสร็จสมบูรณ์ อย่าปิดหน้าต่างเบราว์เซอร์ คุณจะต้องใช้รหัสนี้ในขั้นตอนถัดไป

สร้างคีย์บัญชีบริการ

  1. ในคอนโซล Google Cloud ให้คลิกอีเมลของบัญชีบริการที่คุณสร้างขึ้น
  2. คลิกคีย์
  3. คลิกเพิ่มคีย์ แล้วคลิกสร้างคีย์ใหม่
  4. คลิกสร้าง ระบบจะดาวน์โหลดไฟล์คีย์ JSON ลงในคอมพิวเตอร์
  5. คลิกปิด
  6. ติดตั้งและเริ่มต้นใช้งาน Google Cloud CLI

† คุณต้องมีบทบาทนี้ก็ต่อเมื่อคัดลอกไฟล์วิดีโอตัวอย่างจากที่เก็บข้อมูล Cloud Storage

3. ฟิลเตอร์การเคลื่อนไหว

ฟิลเตอร์การเคลื่อนไหวจะจับภาพการเคลื่อนไหวและส่วนวิดีโอผลิตภัณฑ์ที่มีเหตุการณ์การเคลื่อนไหว การปรับความไวต่อการเคลื่อนไหว ความยาวเหตุการณ์ขั้นต่ำ ระยะเวลาพิจารณา ย้อนหลัง ระยะพัก และโซนตรวจจับความเคลื่อนไหวช่วยให้ผู้ใช้กำหนดค่าตัวกรองตามความต้องการของตนเองได้

การกำหนดค่าตัวกรองการเคลื่อนไหว

ตัวกรองการเคลื่อนไหวมีการกำหนดค่า 5 แบบให้คุณปรับแต่ง

  1. ความไวในการตรวจจับการเคลื่อนไหว: ควรตั้งค่าความไวในการตรวจจับการเคลื่อนไหวไว้ที่ระดับใด
  2. ระยะเวลาขั้นต่ำของเหตุการณ์: ระยะเวลาขั้นต่ำที่ระบบจะบันทึกเหตุการณ์การเคลื่อนไหว
  3. กรอบเวลามองย้อนกลับ: วิดีโอควรเริ่มบันทึกนานเท่าใดก่อนที่จะตรวจพบเหตุการณ์การเคลื่อนไหว
  4. ระยะเวลาพัก: หลังจากเหตุการณ์การเคลื่อนไหวสิ้นสุดลง ระบบจะพักตามระยะเวลาที่ระบุ ในช่วงระยะเวลาพัก ระบบจะไม่ทริกเกอร์เหตุการณ์การเคลื่อนไหว
  5. โซนตรวจจับการเคลื่อนไหว: โซนที่ผู้ใช้กำหนดค่าเพื่อระบุตำแหน่งที่ควรเรียกใช้การตรวจจับการเคลื่อนไหว (จะอธิบายในส่วนถัดไป)

ความไวในการตรวจจับการเคลื่อนไหว

ใช้ Flag motion_detection_sensitivity ในคำสั่ง vaictl
สตริง สื่อเริ่มต้น เลือกได้จากต่ำ ปานกลาง หรือสูง

ยิ่งความไวในการตรวจจับการเคลื่อนไหวสูงมากเท่าใด ก็ยิ่งไวต่อเสียงรบกวนและการเคลื่อนไหวที่เล็กน้อยมากขึ้นเท่านั้น เราขอแนะนำให้ใช้การตั้งค่านี้ในสภาพแวดล้อมที่มีวัตถุเคลื่อนไหวขนาดเล็ก (เช่น ผู้คนจากระยะไกล) และแสงสว่างที่คงที่

ในทางกลับกัน ความไวต่ำจะไวต่อการรบกวนจากแสงน้อยกว่า การตั้งค่านี้เหมาะสำหรับกรณีที่มีการรบกวนจากแสงมากขึ้น เช่น สภาพแวดล้อมภายนอก และสำหรับวิดีโอคุณภาพต่ำซึ่งอาจมีเสียงรบกวนมากกว่า เนื่องจากการตั้งค่านี้เป็นการกรองที่เข้มงวดที่สุดในบรรดาการกรองทั้งหมด จึงอาจไม่สนใจการเคลื่อนไหวจากวัตถุขนาดเล็ก

ระยะเวลาขั้นต่ำของเหตุการณ์

ใช้ Flag min_event_length_in_seconds ในคำสั่ง vaictl
จำนวนเต็ม ค่าเริ่มต้นคือ 10 วินาที ช่วงตั้งแต่ 0 วินาทีถึง 3,600 วินาที

ระยะเวลาขั้นต่ำของวิดีโอเหตุการณ์การเคลื่อนไหวที่จะได้รับการแยกวิเคราะห์เมื่อตรวจพบส่วนเหตุการณ์การเคลื่อนไหวในเฟรม

กรอบเวลามองย้อนกลับ

ใช้ Flag look_back_window_in_seconds ในคำสั่ง vaictl
จำนวนเต็ม ค่าเริ่มต้นคือ 3 วินาที ช่วงตั้งแต่ 0 วินาทีถึง 3,600 วินาที

กรอบเวลามองย้อนกลับคือระยะเวลาที่แคชไว้ก่อนที่จะตรวจพบเหตุการณ์การเคลื่อนไหว ซึ่งมีประโยชน์เมื่อเราต้องการดูสิ่งที่เกิดขึ้นในเฟรม 2-3 วินาทีก่อนที่จะตรวจพบเหตุการณ์การเคลื่อนไหว

ระยะเวลาพัก

ใช้ Flag cool_down_period_in_seconds ในคำสั่ง vaictl
จำนวนเต็ม ค่าเริ่มต้นคือ 300 วินาที ช่วงตั้งแต่ 0 วินาทีถึง 3,600 วินาที

ระยะเวลาพักคือระยะเวลาที่ระบบจะหยุดการตรวจจับความเคลื่อนไหวชั่วคราวหลังจากจับภาพเหตุการณ์การเคลื่อนไหวได้ ในระหว่างระยะเวลาพัก ระบบจะไม่ทำการคำนวณเพื่อตรวจหาการเคลื่อนไหว

4. ตัวอย่างตัวกรองการเคลื่อนไหวพื้นฐาน

คู่มือ SDK ของ Vaictl

หากต้องการตรวจสอบvaictl คู่มือสำหรับสตรีมอินพุตที่มีตัวกรองการเคลื่อนไหว ให้ใช้คำสั่งด้านล่าง

vaictl send video-file applying motion-filter -h

เตรียมวิดีโอตัวอย่าง

  1. คุณสามารถคัดลอกวิดีโอตัวอย่างได้ด้วยคำสั่ง gsutil cp ต่อไปนี้ แทนที่ตัวแปรต่อไปนี้
  • SOURCE: ตำแหน่งของไฟล์วิดีโอที่จะใช้ คุณสามารถใช้แหล่งที่มาของไฟล์วิดีโอของคุณเอง (เช่น gs://BUCKET_NAME/FILENAME.mp4) หรือใช้วิดีโอตัวอย่าง (gs://cloud-samples-data/vertex-ai-vision/street_vehicles_people.mp4)(วิดีโอที่มีผู้คนและยานพาหนะ แหล่งที่มา)
export SOURCE=gs://cloud-samples-data/vertex-ai-vision/street_vehicles_people.mp4
gsutil cp $SOURCE .

เตรียมตัวแปรสภาพแวดล้อม

ตั้งค่าตัวแปรสภาพแวดล้อมด้านล่างเพื่อใช้เทมเพลตคำสั่งที่ระบุ

ตัวแปร vaictl

  • PROJECT_ID: รหัสโปรเจ็กต์ Google Cloud
  • LOCATION_ID: รหัสสถานที่ตั้งของคุณ เช่น us-central1 ดูข้อมูลเพิ่มเติมได้ที่สถานที่ตั้งของระบบคลาวด์
  • LOCAL_FILE: ชื่อไฟล์ของไฟล์วิดีโอในเครื่อง เช่น street_vehicles_people.mp4
  • -loop flag: ไม่บังคับ วนซ้ำข้อมูลไฟล์เพื่อจำลองการสตรีม
export PROJECT_ID=<Your Google Cloud project ID>
export LOCATION_ID=us-central1

ตัวแปรตัวกรองการเคลื่อนไหว

  • MOTION_SENSITIVITY: ความไวของการตรวจจับการเคลื่อนไหว
  • MIN_EVENT_LENGTH: ระยะเวลาขั้นต่ำของเหตุการณ์การเคลื่อนไหว
  • LOOK_BACK_WINDOW: ระยะเวลาที่จะบันทึกก่อนความเคลื่อนไหวแรกในเหตุการณ์การเคลื่อนไหว
  • COOL_DOWN_PERIOD: ระยะเวลาที่การตรวจจับการเคลื่อนไหวจะหยุดชั่วคราวหลังจากจับภาพเหตุการณ์การเคลื่อนไหวได้
export MOTION_SENSITIVITY=<low or medium or high>
export MIN_EVENT_LENGTH=<0-3600>
export LOOK_BACK_WINDOW=<0-3600>
export COOL_DOWN_PERIOD=<0-3600>

เตรียมคำสั่งตัวกรองการเคลื่อนไหว

คุณใช้ฟิลเตอร์การเคลื่อนไหวกับสตรีมอินพุตได้ 2 วิธี ตัวเลือกแรกคือการส่งเหตุการณ์การเคลื่อนไหวไปยังสตรีมในคอนโซลระบบคลาวด์ ตัวเลือกที่ 2 คือการส่งเหตุการณ์การเคลื่อนไหวไปยังพื้นที่เก็บข้อมูลในเครื่อง

การส่งผลลัพธ์ไปยัง Cloud Console

คุณใช้ vaictl เพื่อสตรีมข้อมูลวิดีโอเอาต์พุตไปยังคอนโซลระบบคลาวด์ได้ เริ่มต้นด้วยการเปิดใช้งาน Vision AI API ใน Cloud Console

ลงทะเบียนสตรีมใหม่

  1. คลิกแท็บสตรีมในแผงด้านซ้ายของ Vertex AI Vision
  2. คลิกลงทะเบียน
  3. ป้อน motion-detection-stream ในชื่อสตรีม
  4. ในภูมิภาค ให้ป้อน us-central1
  5. คลิกลงทะเบียน

การส่งผลลัพธ์ไปยังสตรีม

คำสั่งนี้จะสตรีมไฟล์วิดีโอไปยังสตรีม หากใช้แฟล็ก –loop วิดีโอจะเล่นซ้ำในสตรีมจนกว่าคุณจะหยุดคำสั่ง เราจะเรียกใช้คำสั่งนี้เป็นงานเบื้องหลังเพื่อให้สตรีมทำงานต่อไป

เพิ่ม nohup ที่จุดเริ่มต้นและ & ที่จุดสิ้นสุดเพื่อให้เป็นงานที่ทำงานเบื้องหลัง

INPUT_VIDEO=street_vehicles_people.mp4

vaictl -p $PROJECT \
       -l $LOCATION_ID \
       -c application-cluster-0 \
       --service-endpoint visionai.googleapis.com \
  send video-file  --file-path $INPUT_VIDEO \
  applying motion-filter
         --motion-sensitivity=$MOTION_SENSITIVITY \
         --min-event-length=$MIN_EVENT_LENGTH \
         --lookback-length=$LOOK_BACK_WINDOW \
         --cooldown-length=$COOL_DOWN_PERIOD \
  to streams motion-detection-stream --loop

โดยอาจใช้เวลาประมาณ 100 วินาทีระหว่างการเริ่มการดำเนินการส่งผ่านข้อมูล vaictl กับการปรากฏของวิดีโอในแดชบอร์ด

หลังจากที่การส่งผ่านข้อมูลไลฟ์สดพร้อมใช้งานแล้ว คุณจะดูฟีดวิดีโอได้ในแท็บไลฟ์สดของแดชบอร์ด Vertex AI Vision โดยเลือกไลฟ์สดการจราจร

ไปที่แท็บสตรีม

การส่งผลลัพธ์ไปยังที่เก็บข้อมูลในเครื่อง

คำสั่งนี้จะสตรีมไฟล์วิดีโอไปยังสตรีม

เพิ่ม nohup ที่จุดเริ่มต้นและ & ที่จุดสิ้นสุดเพื่อให้เป็นงานที่ทำงานเบื้องหลัง

INPUT_VIDEO=street_vehicles_people.mp4
OUTPUT_PATH=<path_to_store_motion_events_on_local_disk>

nohup vaictl -p $PROJECT \
             -l $LOCATION_ID \
             -c application-cluster-0 \
             --service-endpoint visionai.googleapis.com \
  send video-file  --file-path $INPUT_VIDEO \
  applying motion-filter
         --motion-sensitivity=$MOTION_SENSITIVITY \
         --min-event-length=$MIN_EVENT_LENGTH \
         --lookback-length=$LOOK_BACK_WINDOW \
         --cooldown-length=$COOL_DOWN_PERIOD \
  to mp4file --mp4-file-path=$OUTPUT_PATH --loop

5. โซนตรวจจับการเคลื่อนไหว

ในส่วนนี้ เราจะเจาะลึกการใช้งานโซนตรวจจับความเคลื่อนไหวและวิธีกำหนดค่า โซนนี้มีไว้เพื่อปรับปรุงการตรวจจับการเคลื่อนไหวโดยการมาสก์การเคลื่อนไหวที่มาจากพื้นที่ที่คุณไม่สนใจ

โซนตรวจจับการเคลื่อนไหวมี 2 ประเภท ได้แก่ (1) โซนบวกซึ่งการตรวจจับการเคลื่อนไหวจะทำงานในพื้นที่ที่ทำเครื่องหมายไว้เท่านั้น และ (2) โซนลบซึ่งการตรวจจับการเคลื่อนไหวจะไม่สนใจการเคลื่อนไหวใดๆ ในพื้นที่ที่ทำเครื่องหมายไว้

คำอธิบายประกอบโซน

ใช้ Flag zone_annotation ในคำสั่ง vaictl เพื่อป้อนพิกัดสำหรับรูปหลายเหลี่ยมของโซน
สตริง ค่าเริ่มต้นเป็นว่างเปล่าสำหรับการอธิบายประกอบโซน

คำอธิบายประกอบโซนจะเป็นสตริงที่ผู้ใช้ป้อน ซึ่งระบุโซนในเฟรมที่ผู้ใช้ต้องการซ่อนหรือโฟกัส หากต้องการใส่คำอธิบายประกอบโซน ผู้ใช้จะต้องระบุพิกัดรูปภาพของแกน x และแกน y สำหรับแต่ละโหนดในโซน โซนต้องมีโหนดอย่างน้อย 3 โหนดเพื่อสร้างรูปหลายเหลี่ยม โดยในเฟรมหนึ่งๆ อาจมีหลายโซน หากโซนทับซ้อนกัน พื้นที่ที่ครอบคลุมโดยทั้ง 2 โซนจะยังคงครอบคลุมอยู่

คำอธิบายประกอบโซนมีไวยากรณ์อินพุตที่เฉพาะเจาะจงซึ่งต้องปฏิบัติตาม

  • หากต้องการระบุโหนดเดียว ให้ใช้ : เพื่อเชื่อมต่อแกน x และแกน y ของการประสานงานรูปภาพ เช่น โหนดของ (0,0) ที่มุมซ้ายบนจะแสดงเป็น 0:0
  • หากต้องการระบุโหนดทั้งหมดในโซนเดียว ให้ใช้ ; เพื่อเชื่อมต่อโหนด เช่น สำหรับโซนที่มีโหนด (0,0), (100,0), (100,100) และ (0, 100) ระบบจะระบุโซนเป็น 0:0;100:0;100:100;0:100 ป้อนโหนดเป็นโหนดที่เชื่อมต่อกันซึ่งอยู่ข้างกันเสมอ โดยลำดับอาจเป็นตามเข็มนาฬิกาหรือทวนเข็มนาฬิกาก็ได้

โซนตรวจจับการเคลื่อนไหว - สี่เหลี่ยมจัตุรัส*โซนสี่เหลี่ยมจัตุรัสที่มี 4 โหนด

โซนตรวจจับการเคลื่อนไหว - สามเหลี่ยม*โซนสามเหลี่ยมที่มี 3 โหนด

  • หากต้องการระบุหลายโซนในเฟรมเดียว ให้ใช้ - เพื่อเชื่อมต่อโซนต่างๆ เช่น หากต้องการป้อนทั้ง (0,0), (100,0), (100,100), (0,100) และ (120,120), (110,150), (200,160) คำอธิบายประกอบโซนอินพุตจะเป็น 0:0;100:0;100:100;0:100-120:120;110:150;200:160

โซนตรวจจับความเคลื่อนไหว - เฟรมที่มี 2 โซน*2 โซนภายในเฟรม

หากต้องการรับพิกัดจากรูปภาพ คุณสามารถใช้เครื่องมือบางอย่างทางออนไลน์เพื่อช่วยรับพิกัดได้ เช่น ดู Wolfram - Get Coordinates from Image

ยกเว้นโซนที่มีคำอธิบายประกอบ

ใช้แฟล็ก exclude_annotated_zone ในคำสั่ง vaictl เพื่อกำหนดค่าการตรวจหาการเคลื่อนไหวในโซนหรือนอกโซน
บูลีน ค่าเริ่มต้นคือ False

ยกเว้นโซนที่มีคำอธิบายประกอบคืออินพุตบูลีนจากผู้ใช้ ซึ่งระบุว่าผู้ใช้ต้องการยกเว้นโซนที่มีคำอธิบายประกอบในการตรวจจับความเคลื่อนไหวหรือไม่

  • หากตั้งค่าเป็น true โซนที่มีคำอธิบายประกอบจะทำหน้าที่เป็นโซนเชิงลบ ระบบจะไม่ตรวจจับการเคลื่อนไหวในโซนที่มีคำอธิบายประกอบ

โซนตรวจจับการเคลื่อนไหว - ตัวเลือกยกเว้น *เรียกใช้การตรวจจับความเคลื่อนไหวนอกโซนอินพุตเท่านั้น

  • หากตั้งค่าเป็น "false" โซนจะทําหน้าที่เป็นโซนบวก ซึ่งการตรวจจับการเคลื่อนไหวจะมุ่งเน้นไปที่โซนนี้

โซนตรวจจับการเคลื่อนไหว - ตัวเลือก &quot;รวม&quot; *เรียกใช้การตรวจจับการเคลื่อนไหวในโซนอินพุตเท่านั้น

6. ตัวอย่างฟิลเตอร์การเคลื่อนไหวที่มีโซนตรวจจับการเคลื่อนไหว

ในตัวอย่างนี้ เราจะใช้วิดีโอที่มีต้นไม้เคลื่อนไหวอยู่ตลอดเวลาในเบื้องหน้าเป็นตัวอย่าง ในการตั้งค่าตัวกรองการเคลื่อนไหวปกติ วิดีโอจะสร้างเหตุการณ์การเคลื่อนไหวเพียงรายการเดียวที่มีระยะเวลาเท่ากับวิดีโอต้นฉบับ เนื่องจากตัวกรองการเคลื่อนไหวจะลงทะเบียนต้นไม้ที่เคลื่อนไหวเป็น "เคลื่อนไหวตลอดทั้งวิดีโอ" แต่ด้วยความช่วยเหลือของโซนตรวจจับการเคลื่อนไหว เราจึงสามารถมาสก์การเคลื่อนไหวจากต้นไม้ได้อย่างเหมาะสม และมุ่งเน้นไปที่การเคลื่อนไหวจากรถยนต์และคนเดินเท้า

การเตรียมวิดีโอ

วิดีโอตัวอย่าง (gs://cloud-samples-data/vertex-ai-vision/dynamic-background-fall.mp4 ) มีต้นไม้ รถยนต์ และคนเดินเท้าจาก www.changedetection.net

เครดิตวิดีโอ: N. Goyette, P.-M. Jodoin, F. Porikli, J. Konrad และ P. Ishwar, changedetection.net: A new change detection benchmark dataset, in Proc. IEEE Workshop on Change Detection (CDW-2012) at CVPR-2012, Providence, RI, 16-21 Jun., 2012

การเตรียมตัวแปรสภาพแวดล้อม

ตัวแปรโปรเจ็กต์ Google Cloud

export PROJECT_ID=<Your Google Cloud project ID>
export LOCATION_ID=us-central1
export LOCAL_FILE=street_vehicles_people.mp4

การกำหนดค่าตัวกรองการเคลื่อนไหวพื้นฐาน

export MOTION_SENSITIVITY=<low or medium or high>
export MIN_EVENT_LENGTH=<0-3600>
export LOOK_BACK_WINDOW=<0-3600>
export COOL_DOWN_PERIOD=<0-3600>

การกำหนดค่าโซนตรวจจับการเคลื่อนไหว

เลือกจากด้านล่างเพื่อดูการใช้งานโซนตรวจจับการเคลื่อนไหวประเภทต่างๆ

ยกเว้นต้นไม้สำหรับการตรวจจับการเคลื่อนไหว

export ZONE_ANNOTATION="0:0;680:0;660:70;380:320;100:150"
export EXCLUDE_ANNOTATED_ZONE=true

โซนตรวจจับการเคลื่อนไหว - ยกเว้นการตรวจจับการเคลื่อนไหวจากโซนที่มีคำอธิบายประกอบในวิดีโอตัวอย่าง *เรียกใช้การตรวจจับความเคลื่อนไหวนอกโซนอินพุตเท่านั้น

มุ่งเน้นการตรวจจับการเคลื่อนไหวบนถนน

export ZONE_ANNOTATION="0:300;780:300;780:480;0:480"
export EXCLUDE_ANNOTATED_ZONE=false

โซนตรวจจับการเคลื่อนไหว - เรียกใช้การตรวจจับการเคลื่อนไหวจากโซนที่มีคำอธิบายประกอบในวิดีโอตัวอย่าง *เรียกใช้การตรวจจับความเคลื่อนไหวนอกโซนอินพุตเท่านั้น

ส่งวิดีโอสตรีมพร้อมฟิลเตอร์การเคลื่อนไหว

ส่งเหตุการณ์การเคลื่อนไหวไปยังคอนโซลระบบคลาวด์

คุณใช้ vaictl เพื่อสตรีมข้อมูลวิดีโอเอาต์พุตไปยังคอนโซลระบบคลาวด์ได้ เริ่มต้นด้วยการเปิดใช้งาน Vision AI API ใน Cloud Console

ลงทะเบียนสตรีมใหม่

  1. คลิกแท็บสตรีมในแผงด้านซ้ายของ Vertex AI Vision
  2. คลิกลงทะเบียน
  3. ป้อน motion-detection-stream ในชื่อสตรีม
  4. ในภูมิภาค ให้ป้อน us-central1
  5. คลิกลงทะเบียน

การส่งผลลัพธ์ไปยังสตรีม

คำสั่งนี้จะสตรีมไฟล์วิดีโอไปยังสตรีม หากใช้แฟล็ก –loop วิดีโอจะเล่นซ้ำในสตรีมจนกว่าคุณจะหยุดคำสั่ง เราจะเรียกใช้คำสั่งนี้เป็นงานเบื้องหลังเพื่อให้สตรีมทำงานต่อไป

เพิ่ม nohup ที่จุดเริ่มต้นและ & ที่จุดสิ้นสุดเพื่อให้เป็นงานที่ทำงานเบื้องหลัง

vaictl -p $PROJECT \
       -l $LOCATION_ID \
       -c application-cluster-0 \
       --service-endpoint visionai.googleapis.com \
  send video-file  --file-path $INPUT_VIDEO \
  applying motion-filter
         --motion-sensitivity=$MOTION_SENSITIVITY \
         --min-event-length=$MIN_EVENT_LENGTH \
         --lookback-length=$LOOK_BACK_WINDOW \
         --cooldown-length=$COOL_DOWN_PERIOD \
         --zone_annotation=ZONE_ANNOTATION \
         --exclude_annotated_zone=$EXCLUDE_ANNOTATED_ZONE \
  to streams motion-detection-stream --loop

โดยอาจใช้เวลาประมาณ 100 วินาทีระหว่างการเริ่มการดำเนินการส่งผ่านข้อมูล vaictl กับการปรากฏของวิดีโอในแดชบอร์ด

หลังจากที่การส่งผ่านข้อมูลไลฟ์สดพร้อมใช้งานแล้ว คุณจะดูฟีดวิดีโอได้ในแท็บไลฟ์สดของแดชบอร์ด Vertex AI Vision โดยเลือกไลฟ์สดการจราจร

ไปที่แท็บสตรีม

การส่งผลลัพธ์ไปยังที่เก็บข้อมูลในเครื่อง

คำสั่งนี้จะสตรีมไฟล์วิดีโอไปยังสตรีม หากใช้แฟล็ก –loop วิดีโอจะเล่นซ้ำในสตรีมจนกว่าคุณจะหยุดคำสั่ง เราจะเรียกใช้คำสั่งนี้เป็นงานเบื้องหลังเพื่อให้สตรีมทำงานต่อไป

เพิ่ม nohup ที่จุดเริ่มต้นและ & ที่จุดสิ้นสุดเพื่อให้เป็นงานที่ทำงานเบื้องหลัง

OUTPUT_PATH=<path_to_store_motion_events>

vaictl -p $PROJECT \
       -l $LOCATION_ID \
       -c application-cluster-0 \
       --service-endpoint visionai.googleapis.com \
  send video-file  --file-path $INPUT_VIDEO \
  applying motion-filter
         --motion-sensitivity=$MOTION_SENSITIVITY \
         --min-event-length=$MIN_EVENT_LENGTH \
         --lookback-length=$LOOK_BACK_WINDOW \
         --cooldown-length=$COOL_DOWN_PERIOD \
         --zone_annotation=$ZONE_ANNOTATION \
         --exclude_annotated_zone=$EXCLUDE_ANNOTATED_ZONE \
  to mp4file --mp4-file-path=$OUTPUT_PATH --loop

7. ขอแสดงความยินดี

ยินดีด้วย คุณทำแล็บเสร็จแล้ว

ล้างข้อมูล

หากต้องการหลีกเลี่ยงการเรียกเก็บเงินจากบัญชี Google Cloud สำหรับทรัพยากรที่ใช้ในบทแนะนำนี้ ให้สิ้นสุดการดำเนินการ SDK ของ vaictl ผ่านบรรทัดคำสั่งด้วย ctrl + z

แหล่งข้อมูล

https://cloud.google.com/vision-ai/docs/overview

https://cloud.google.com/vision-ai/docs/motion-filtering-model

https://cloud.google.com/vision-ai/docs/create-manage-streams

ความคิดเห็น

คลิกที่นี่เพื่อแสดงความคิดเห็น

แบบสำรวจ

คุณจะใช้บทแนะนำนี้อย่างไร

อ่านอย่างเดียว อ่านและทำแบบฝึกหัด

Codelab นี้มีประโยชน์มากน้อยเพียงใด

มีประโยชน์มาก มีประโยชน์พอสมควร