อัลกอริทึมการนับคนเดินเท้า


12

ขณะนี้ฉันกำลังพัฒนาโครงการเคาน์เตอร์คนเดินเท้า (ใช้ OpenCV + QT บน Linux) ความคิดของฉันเกี่ยวกับวิธีการคือ:

  1. เฟรมจับภาพ
  2. ทำการลบพื้นหลัง
  3. เสียงที่ชัดเจน (กร่อนขยาย)
  4. ค้นหา blobs (cvBlobslib) - วัตถุเบื้องหน้า
  5. สำหรับแต่ละหยดตั้งค่า ROI และค้นหาคนเดินเท้า (LBP ด้วย detectMultiScale) ใน blobs เหล่านี้ (เพื่อประสิทธิภาพที่ดีขึ้น)
  6. สำหรับคนเดินถนนที่พบแต่ละคนทำการค้นหาร่างกายส่วนบนที่ซ้อนกัน (ไม่แน่ใจ) (ความน่าเชื่อถือที่ดีขึ้น)
  7. หากพบคนเดินถนนเดียวกันบนเฟรมต่อเนื่อง (อาจมี 3-4 เฟรม) - เพิ่มพื้นที่นั้นไปที่เพลาลูกเบี้ยวและแทร็ก - ทำเครื่องหมายว่าเป็นคนเดินเท้า
  8. ยกเว้นพื้นที่การติดตามเพลาลูกเบี้ยวจากการตรวจจับหยดน้ำสำหรับเฟรมถัดไป
  9. หากคนเดินเท้าข้ามหมายเลขที่เพิ่มขึ้นบรรทัด

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


5
คุณอาจต้องการใช้ถ้อยคำใหม่เพื่อถามคำถามและปล่อยส่วน OpenCV ออก ใช้วลีมากกว่าคำถามที่เป็นแนวคิด (อัลกอริทึมสำหรับการนับและการติดตามคนเดินเท้า)
Geerten

2
วิธีการของคุณฟังดูสมเหตุสมผลคุณค้นหาวรรณกรรมทางวิชาการที่เกี่ยวข้องหรือไม่? ที่ควรให้ความคิดเกี่ยวกับสถานะของศิลปะ การลบพื้นหลังอาจเป็นเรื่องยากผลกระทบต่อสิ่งแวดล้อมและเงาอาจเป็นปัญหาได้
geometrikal

คำตอบ:


8

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

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

ระวังในการตั้งสมมุติฐานว่าหนึ่งหยด = หนึ่งคนแม้ว่าคุณจะคิดว่าสภาพแวดล้อมของคุณควบคุมได้ดี มันเกิดขึ้นบ่อยครั้งที่ blobs ที่สอดคล้องกับผู้คนไม่ได้ตรวจจับเพราะพวกเขาไม่ได้เคลื่อนไหวหรือพวกมันเล็กเกินไปดังนั้นพวกเขาจึงถูกลบโดยการกัดเซาะหรือตามเกณฑ์การกำหนดเกณฑ์ขั้นต่ำ (และเชื่อฉันคุณไม่ต้องการเข้าไป " ปรับแต่งเกณฑ์จนกว่าทุกอย่างจะทำงานกับ "กับดักไม่ทำงาน;)) นอกจากนี้ยังสามารถเกิดขึ้นได้ว่าหยดเดียวนั้นสอดคล้องกับคนสองคนที่เดินไปด้วยกันหรือเป็นคนเดียวที่ถือกระเป๋าเดินทางบางประเภท หรือสุนัข ดังนั้นอย่าตั้งสมมติฐานอย่างชาญฉลาดเกี่ยวกับ blobs

โชคดีที่เมื่อคุณพูดถึงว่าคุณกำลังใช้ LBP สำหรับการตรวจจับบุคคลฉันคิดว่าคุณกำลังอยู่ในแนวทางที่ถูกต้องที่จะไม่ทำผิดพลาดในย่อหน้าข้างต้น ฉันไม่สามารถแสดงความคิดเห็นเกี่ยวกับประสิทธิภาพของ LBP โดยเฉพาะอย่างยิ่งแม้ว่า ผมเคยอ่านว่า HOG (histogram ของการไล่ระดับสี) เป็นรัฐของวิธีการที่ทันสมัยในการตรวจสอบคนดูHistograms ของการไล่ระดับสี Oriented สำหรับการตรวจสอบความมั่นคงของมนุษย์

จับครั้งล่าสุดของฉันเป็นเรื่องที่เกี่ยวข้องกับการใช้Camshift มันขึ้นอยู่กับฮิสโทแกรมสีดังนั้นโดยตัวมันเองมันทำงานได้ดีเมื่อติดตามวัตถุเดี่ยวที่แยกแยะสีได้ง่ายตราบใดที่หน้าต่างการติดตามมีขนาดใหญ่พอและไม่มีการปิดบังหรือการเปลี่ยนแปลงอย่างฉับพลัน แต่ทันทีที่คุณต้องติดตามเป้าหมายหลาย ๆ อันซึ่งอาจมีคำอธิบายสีที่คล้ายกันมากและจะย้ายไปใกล้กันมากคุณไม่สามารถทำได้โดยไม่ต้องใช้อัลกอริทึมที่ช่วยให้คุณรักษาสมมติฐานหลายอย่างได้ นี่อาจเป็นตัวกรองอนุภาคหรือกรอบงานเช่น MCMCDA (Markov Chain Monte Carlo Data Association ดูที่Markov Chain Monte Carlo Data Association สำหรับการติดตามหลายเป้าหมาย) ประสบการณ์ของฉันในการใช้ Meanshift เพียงอย่างเดียวเมื่อติดตามวัตถุหลายรายการเป็นทุกสิ่งที่ไม่ควรเกิดขึ้นกับการติดตาม: การสูญเสียการติดตามการสับสนเป้าหมายการแก้ไขในพื้นหลัง ฯลฯ อ่านบิตเกี่ยวกับการติดตามวัตถุหลายรายการและปัญหาการเชื่อมโยงข้อมูล หัวใจของการนับคนหลายคนหลังจากทั้งหมด (ฉันพูดว่า "อาจเป็น" เพราะเป้าหมายของคุณกำลังนับไม่ได้ติดตามดังนั้นฉันจึงไม่ละทิ้งความเป็นไปได้ของวิธีการที่ชาญฉลาดบางอย่างที่นับได้โดยไม่ต้องติดตาม ... )

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

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


9

ฉันคิดว่าสิ่งที่คุณถามเกี่ยวกับความเป็นไปได้ของอัลกอริทึมของคนเดินเท้า

มีกลยุทธ์ทั่วไปสองข้อสำหรับปัญหาประเภทนี้:

  1. (จากล่างขึ้นบน) พิจารณาว่าเป็นปัญหาการตรวจจับที่บริสุทธิ์ซึ่งในแต่ละเฟรมที่คุณตรวจพบคนเดินเท้าเท่านั้น เมื่อคุณตรวจพบพวกเขาก) การนับจำนวนของพวกเขาในเฟรมนั้นค่อนข้างง่าย และ b) การติดตามใด ๆ ของพวกเขาในเฟรมที่ต่อเนื่องก็เป็นเรื่องง่ายเช่นกัน ดังนั้นคุณแก้ปัญหาทุกอย่าง

  2. (จากบนลงล่าง) พิจารณาว่าเป็นปัญหาการจดจำการกระทำโดยที่คุณตรวจพบว่า ROI ในเฟรมที่ต่อเนื่องกันเป็นทางเท้าหรือไม่เป็นไปตามการกระทำของมัน เมื่อคุณแก้ปัญหานี้แล้วคุณจะแก้ปัญหาการตรวจจับและการติดตามพร้อมกัน

อัลกอริทึมแบบฮิวริสติกของคุณอยู่ในหมวดหมู่แรก ฉันไม่ต้องการกีดกันคุณ แต่คุณอาจพลาดจุดสำคัญที่ว่าจะตรวจจับคนเดินถนนได้อย่างไร. เพราะข้อมูลจริงอาจซับซ้อนกว่าที่คุณคิด ตัวอย่างเช่นหากนี่คือกล้องรถไฟใต้ดินที่มีเฟรมอาจเต็มไปด้วยคนเดินเท้าและทำให้การลบพื้นหลังหรือการตรวจจับ blobs ไม่ได้ช่วยอะไรเลย ในกรณีนี้อาจเหมาะสมกว่าที่จะใช้การตรวจจับใบหน้าและอัลกอริธึมการจดจำใบหน้าเพื่อแก้ไขปัญหาเพราะหากคุณพบใบหน้าที่คุณพบคนเดินเท้า ในอีกทางหนึ่งขึ้นอยู่กับคำจำกัดความของคนเดินถนนอาจเป็นความจริงที่ทุกคนที่ปรากฏในเฟรมไม่ควรได้รับการปฏิบัติเหมือนเป็นคนเดินเท้า ในกรณีนี้อาจมีเหตุผลที่จะใช้อัลกอริธึมการจดจำการกระทำ (ประเภทที่สอง) ซึ่งคุณสามารถกำหนดคนเดินถนนได้อย่างชัดเจนตามพฤติกรรมของเขาหรือเธอ

นี่คือเคล็ดลับตามประสบการณ์ของฉัน:

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

  2. เรียนรู้เพิ่มเติมเกี่ยวกับข้อมูลของคุณแล้วกำหนดวิธีการของคุณ คำอธิบายทั่วไปเกี่ยวกับปัญหาไม่เพียงพอในหลายกรณี

  3. ถ้าคุณต้องการที่จะแสดงความคิดของคุณมันจะดีกว่าที่จะใช้ MATLAB และสร้างต้นแบบ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.