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

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

ภาพรวม

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ตัวกรองการเคลื่อนไหวเพื่อการปรับแต่งมีอยู่ 5 รูปแบบ

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

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

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

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

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

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

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

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

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

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

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

ระยะเวลาพัก

ใช้แฟล็ก 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 Loop: ไม่บังคับ ส่งข้อมูลไฟล์แบบวนซ้ำเพื่อจำลองการสตรีม
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 เพื่อสตรีมวิดีโอเอาต์พุตไปยัง Cloud Console ได้ เริ่มต้นด้วยการเปิดใช้งาน Vision AI API ใน Cloud Console

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

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

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

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

เพิ่ม 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 วินาทีระหว่างที่เริ่มดำเนินการนำเข้าข้อมูลส่วนวิดีโอกับวิดีโอที่ปรากฏในแดชบอร์ด

หลังจากการส่งผ่านข้อมูลสตรีมพร้อมใช้งานแล้ว คุณจะดูฟีดวิดีโอในแท็บสตรีมของแดชบอร์ด 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) โซนลบที่การตรวจจับการเคลื่อนไหวจะไม่เกิดการเคลื่อนที่ใดๆ ในพื้นที่ที่มีคำอธิบายประกอบ

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

ใช้แฟล็ก 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 - ขอพิกัดจากรูปภาพ

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

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

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

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

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

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

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

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

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

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

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

เครดิตวิดีโอ: N. กอยเอตต์ พี. เอ็ม. โจโดอิน เอฟ. Porikli, J. Konrad และ P. Ishwar, changedetection.net: ชุดข้อมูลการเปรียบเทียบการตรวจจับการเปลี่ยนแปลงใหม่ใน Proc IEEE Workshop on Change Detection (CDW-2012) ที่ CVPR-2012, พรอวิเดนซ์, รัฐโรดไอแลนด์, 16-21 มิ.ย., 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

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

ส่งสตรีมวิดีโอที่มีตัวกรองการเคลื่อนไหว

ส่งเหตุการณ์การเคลื่อนไหวไปยัง Cloud Console

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

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

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

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

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

เพิ่ม 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 วินาทีระหว่างที่เริ่มดำเนินการนำเข้าข้อมูลส่วนวิดีโอกับวิดีโอที่ปรากฏในแดชบอร์ด

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

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

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

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

เพิ่ม 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 VAT ผ่านบรรทัดคำสั่งด้วย 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 นี้มีประโยชน์มากน้อยเพียงใด

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