ตัวกรองการเคลื่อนไหว 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 Editor, 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. โซนการตรวจจับการเคลื่อนไหว: โซนที่ผู้ใช้กําหนดค่าเพื่อระบุตําแหน่งที่ควรทําการตรวจจับการเคลื่อนไหว (จะอธิบายอย่างละเอียดในส่วนถัดไป)

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

ใช้ Flag 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 วินาทีก่อนที่ระบบจะตรวจพบเหตุการณ์การเคลื่อนไหว

ระยะเวลาพัก

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

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

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

คู่มือ Vaictl SDK

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

vaictl send video-file applying motion-filter -h

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

  1. คุณคัดลอกวิดีโอตัวอย่างได้ด้วยคำสั่ง gsutil cp ต่อไปนี้ แทนที่ตัวแปรต่อไปนี้
  • แหล่งที่มา: ตำแหน่งของไฟล์วิดีโอที่จะใช้ คุณสามารถใช้แหล่งที่มาของไฟล์วิดีโอของคุณเอง (เช่น 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
  • –flag 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 เพื่อสตรีมข้อมูลวิดีโอเอาต์พุตไปยังคอนโซลระบบคลาวด์ได้ เริ่มต้นด้วยการเปิดใช้งาน 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 วินาทีระหว่างการเริ่มการนำเข้า 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

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

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

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

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

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

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

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

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

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

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

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

เครดิตวิดีโอ: N. โกเยตต์ พี. เอ็ม. 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. คลิก "ลงทะเบียน"

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

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

เพิ่ม 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 โดยเลือกสตรีมการจราจร

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

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

คำสั่งนี้จะสตรีมไฟล์วิดีโอไปยังสตรีม หากใช้ Flag –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. ขอแสดงความยินดี

ยินดีด้วย คุณใช้งานห้องทดลองเสร็จแล้ว

ล้างข้อมูล

โปรดสิ้นสุดการดำเนินการ Vaictl SDK ผ่านบรรทัดคำสั่งด้วย ctrl + z เพื่อเลี่ยงไม่ให้เกิดการเรียกเก็บเงินกับบัญชี Google Cloud สำหรับทรัพยากรที่ใช้ในบทแนะนำนี้

แหล่งข้อมูล

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 นี้มีประโยชน์มากน้อยเพียงใด

มีประโยชน์มาก มีประโยชน์ปานกลาง