1. วัตถุประสงค์
ภาพรวม
Codelab นี้มุ่งเน้นการสร้างแอปพลิเคชัน Vertex AI Vision แบบครบวงจรเพื่อสาธิตการส่งวิดีโอที่มีฟีเจอร์การกรองการเคลื่อนไหว ในบทแนะนำนี้ เราจะดูพารามิเตอร์ต่างๆ ในการกำหนดค่าตัวกรองการเคลื่อนไหว
- ความไวในการตรวจจับการเคลื่อนไหว
- ระยะเวลาขั้นต่ำของเหตุการณ์
- กรอบเวลามองย้อนกลับ
- ระยะเวลาพัก
- โซนตรวจจับการเคลื่อนไหว
สิ่งที่คุณจะได้เรียนรู้
- วิธีส่งผ่านข้อมูลวิดีโอสำหรับการสตรีม
- ฟีเจอร์ต่างๆ ที่มีในฟิลเตอร์การเคลื่อนไหวและวิธีใช้
- ตำแหน่งในการตรวจสอบสถิติของฟิลเตอร์การเคลื่อนไหว
- วิธีปรับการตั้งค่าตามวิดีโอ
2. ก่อนที่คุณจะเริ่มต้น
- ในคอนโซล Google Cloud ให้เลือกหรือสร้างโปรเจ็กต์ Google Cloud ในหน้าตัวเลือกโปรเจ็กต์ หมายเหตุ: หากไม่ต้องการเก็บทรัพยากรที่สร้างขึ้นในขั้นตอนนี้ ให้สร้างโปรเจ็กต์แทนการเลือกโปรเจ็กต์ที่มีอยู่ หลังจากทำตามขั้นตอนเหล่านี้แล้ว คุณจะลบโปรเจ็กต์ซึ่งเป็นการนำทรัพยากรทั้งหมดที่เชื่อมโยงกับโปรเจ็กต์นี้ออกได้ ไปที่เครื่องมือเลือกโปรเจ็กต์
- ตรวจสอบว่าได้เปิดใช้การเรียกเก็บเงินสำหรับโปรเจ็กต์ Cloud แล้ว ดูวิธีตรวจสอบว่าได้เปิดใช้การเรียกเก็บเงินในโปรเจ็กต์แล้วหรือไม่
- เปิดใช้ Compute Engine และ Vision AI API เปิดใช้ API
สร้างบัญชีบริการ
- ในคอนโซล Google Cloud ให้ไปที่หน้าสร้างบัญชีบริการ ไปที่สร้างบัญชีบริการ
- เลือกโปรเจ็กต์
- ป้อนชื่อในช่องชื่อบัญชีบริการ คอนโซล Google Cloud จะกรอกข้อมูลในช่องรหัสบัญชีบริการตามชื่อนี้ ป้อนคำอธิบายในช่องคำอธิบายบัญชีบริการ เช่น บัญชีบริการสำหรับ Quickstart
- คลิกสร้างและต่อไป
- หากต้องการให้สิทธิ์เข้าถึงโปรเจ็กต์ ให้มอบบทบาทต่อไปนี้ให้กับบัญชีบริการ Vision AI > ผู้แก้ไข Vision AI, Compute Engine > ผู้ดูแลอินสแตนซ์ Compute (เบต้า), พื้นที่เก็บข้อมูล > ผู้ดูออบเจ็กต์พื้นที่เก็บข้อมูล † เลือกบทบาทในรายการเลือกบทบาท หากต้องการเพิ่มบทบาทอื่น ให้คลิกเพิ่มบทบาทอื่น แล้วเพิ่มบทบาทเพิ่มเติมแต่ละบทบาท หมายเหตุ: ช่องบทบาทจะส่งผลต่อทรัพยากรที่บัญชีบริการเข้าถึงได้ในโปรเจ็กต์ คุณเพิกถอนบทบาทเหล่านี้หรือให้บทบาทเพิ่มเติมได้ในภายหลัง ดังนั้นในสภาพแวดล้อมการใช้งานจริง อย่าให้บทบาทเจ้าของ ผู้แก้ไข หรือผู้ดู แต่ให้มอบบทบาทที่กำหนดไว้ล่วงหน้าหรือบทบาทที่กำหนดเองที่ตรงกับความต้องการแทน
- คลิกต่อไป
- คลิกเสร็จสิ้นเพื่อสร้างบัญชีบริการให้เสร็จสมบูรณ์ อย่าปิดหน้าต่างเบราว์เซอร์ คุณจะต้องใช้รหัสนี้ในขั้นตอนถัดไป
สร้างคีย์บัญชีบริการ
- ในคอนโซล Google Cloud ให้คลิกอีเมลของบัญชีบริการที่คุณสร้างขึ้น
- คลิกคีย์
- คลิกเพิ่มคีย์ แล้วคลิกสร้างคีย์ใหม่
- คลิกสร้าง ระบบจะดาวน์โหลดไฟล์คีย์ JSON ลงในคอมพิวเตอร์
- คลิกปิด
- ติดตั้งและเริ่มต้นใช้งาน Google Cloud CLI
† คุณต้องมีบทบาทนี้ก็ต่อเมื่อคัดลอกไฟล์วิดีโอตัวอย่างจากที่เก็บข้อมูล Cloud Storage
3. ฟิลเตอร์การเคลื่อนไหว
ฟิลเตอร์การเคลื่อนไหวจะจับภาพการเคลื่อนไหวและส่วนวิดีโอผลิตภัณฑ์ที่มีเหตุการณ์การเคลื่อนไหว การปรับความไวต่อการเคลื่อนไหว ความยาวเหตุการณ์ขั้นต่ำ ระยะเวลาพิจารณา ย้อนหลัง ระยะพัก และโซนตรวจจับความเคลื่อนไหวช่วยให้ผู้ใช้กำหนดค่าตัวกรองตามความต้องการของตนเองได้
การกำหนดค่าตัวกรองการเคลื่อนไหว
ตัวกรองการเคลื่อนไหวมีการกำหนดค่า 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
เตรียมวิดีโอตัวอย่าง
- คุณสามารถคัดลอกวิดีโอตัวอย่างได้ด้วยคำสั่ง 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
ลงทะเบียนสตรีมใหม่
- คลิกแท็บสตรีมในแผงด้านซ้ายของ Vertex AI Vision
- คลิกลงทะเบียน
- ป้อน
motion-detection-streamในชื่อสตรีม - ในภูมิภาค ให้ป้อน
us-central1 - คลิกลงทะเบียน
การส่งผลลัพธ์ไปยังสตรีม
คำสั่งนี้จะสตรีมไฟล์วิดีโอไปยังสตรีม หากใช้แฟล็ก –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 โซนภายในเฟรม
หากต้องการรับพิกัดจากรูปภาพ คุณสามารถใช้เครื่องมือบางอย่างทางออนไลน์เพื่อช่วยรับพิกัดได้ เช่น ดู Wolfram - Get Coordinates from Image
ยกเว้นโซนที่มีคำอธิบายประกอบ
ใช้แฟล็ก exclude_annotated_zone ในคำสั่ง vaictl เพื่อกำหนดค่าการตรวจหาการเคลื่อนไหวในโซนหรือนอกโซน
บูลีน ค่าเริ่มต้นคือ False
ยกเว้นโซนที่มีคำอธิบายประกอบคืออินพุตบูลีนจากผู้ใช้ ซึ่งระบุว่าผู้ใช้ต้องการยกเว้นโซนที่มีคำอธิบายประกอบในการตรวจจับความเคลื่อนไหวหรือไม่
- หากตั้งค่าเป็น
trueโซนที่มีคำอธิบายประกอบจะทำหน้าที่เป็นโซนเชิงลบ ระบบจะไม่ตรวจจับการเคลื่อนไหวในโซนที่มีคำอธิบายประกอบ
*เรียกใช้การตรวจจับความเคลื่อนไหวนอกโซนอินพุตเท่านั้น
- หากตั้งค่าเป็น "false" โซนจะทําหน้าที่เป็นโซนบวก ซึ่งการตรวจจับการเคลื่อนไหวจะมุ่งเน้นไปที่โซนนี้
*เรียกใช้การตรวจจับการเคลื่อนไหวในโซนอินพุตเท่านั้น
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
ลงทะเบียนสตรีมใหม่
- คลิกแท็บสตรีมในแผงด้านซ้ายของ Vertex AI Vision
- คลิกลงทะเบียน
- ป้อน
motion-detection-streamในชื่อสตรีม - ในภูมิภาค ให้ป้อน
us-central1 - คลิกลงทะเบียน
การส่งผลลัพธ์ไปยังสตรีม
คำสั่งนี้จะสตรีมไฟล์วิดีโอไปยังสตรีม หากใช้แฟล็ก –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
ความคิดเห็น
คลิกที่นี่เพื่อแสดงความคิดเห็น