Алгоритм підрахунку пішоходів


12

В даний час я розробляю проект лічильника пішоходів (використовуючи OpenCV + QT в Linux). Моя ідея щодо підходу:

  1. Захоплення кадрів
  2. Зробіть віднімання фону
  3. чіткі шуми (стирання, розширення)
  4. знайти краплі (cvBlobslib) - предмети переднього плану
  5. Для кожної краплі встановіть рентабельність інвестицій та шукайте пішоходів (LBP with detectMultiScale) у цих краплі (для кращої роботи)
  6. Для кожного знайденого пішохода зробіть вкладений пошук верхньої частини тіла (Не впевнений) (краща надійність)
  7. Якщо той самий пішохід знайдеться на продовжуваних кадрах (можливо, 3-4 кадри) - додайте цю область до перемикання та доріжки - позначте як пішохода
  8. Виключіть відстежувані ділянки зрушення з розпізнавання крапок для наступних кадрів
  9. Якщо пішохід перетинає рядковий приріст номера

Я хочу перевірити, чи я на правильному шляху. Чи є у вас якісь пропозиції щодо вдосконалення мого підходу? Якщо хтось працював над чимось подібним, я буду вдячний за будь-які корисні поради, ресурси (та критику) щодо цієї проблеми.


5
Ви можете перефразувати своє запитання та залишити частини OpenCV. Сформулюйте це більше як концептуальне запитання, яке воно є насправді (Алгоритм підрахунку та відстеження пішоходів).
Geerten

2
Ваш підхід звучить розумно, ви шукали відповідну академічну літературу? Це повинно дати вам уявлення про сучасний стан. Віднімання фону може бути складним, вплив на навколишнє середовище, а також тіні можуть бути проблемою.
геометрікал

Відповіді:


8

Я бачу низку можливих проблем із цим підходом. Я говорю з власного досвіду, коли вдосконалюю систему підрахунку пішоходів з дуже подібним підходом, тому я не маю думки. Навпаки, я хотів би попередити вас про можливі перешкоди, які, можливо, доведеться подолати, щоб створити точну та надійну систему.

По-перше, субстракція фону передбачає, що об’єкти, що цікавлять, завжди будуть рухатися, а об’єкти, які вам не цікаві рахувати, залишаться повністю нерухомими. Звичайно, це може бути у вашому сценарії, але це все-таки дуже обмежує припущення. Також я виявив, що субстракція фону дуже чутлива до змін освітленості (я згоден з геометрикою).

Будьте обережні, щоб зробити припущення, що одна крапка = одна людина , навіть якщо ви думаєте, що ваше оточення добре контролюється. Занадто часто траплялося, що краплі, що відповідають людям, не помічалися, тому що вони не рухалися або вони були занадто маленькими, тому їх видалили ерозією або якимись пороговими критеріями (і повірте, ви не хочете потрапляти в " налаштування порогів, поки все не працює "пастка. Це не працює;)). Також може трапитися так, що за одну краплинку відповідають двоє людей, що йдуть разом, або одна людина, яка перевозить якийсь багаж. Або собаку. Тому не робіть розумних припущень щодо крапель.

На щастя, оскільки ви згадуєте, що використовуєте LBP для виявлення людей , я думаю, ви знаходитесь на правильному шляху, щоб не робити помилок у параграфі вище. Я, зокрема, не можу коментувати ефективність ЛБП. Я також читав, що HOG (гістограма градієнтів) - це найсучасніший метод виявлення людей, дивіться гістограми орієнтованих градієнтів для виявлення людини .

Моя остання хватка пов’язана з використанням Camshift . Він заснований на кольорових гістограмах, тому сам по собі він добре працює при відстеженні одного об’єкта, який легко відрізнити за кольором, якщо вікно відстеження досить велике і немає оклюзій і різких змін. Але як тільки вам доведеться відслідковувати декілька цілей, які можуть мати дуже схожі кольорові описи і які будуть рухатися дуже близько один до одного, ви просто не зможете обійтися без алгоритму, який якимось чином дозволяє підтримувати кілька гіпотез. Це може бути фільтр частинок або структура, така як MCMCDA (Асоціація даних Монте-Карло Ланцюгового ланцюга Маркова , див. Асоціація даних Ланцюга Маркова Монте-Карло для відстеження кількох цілей). Мій досвід використання Meanshift поодинці під час відстеження кількох об’єктів - це все, що не повинно трапитися з відстеженням: втрата доріжки, заплутаність цілей, фіксація у фоновому режимі тощо. Прочитайте трохи про відстеження декількох об'єктів та проблеми асоціації даних. серце рахувати кількох людей (я кажу "може бути", тому що ваша мета - підрахунок не відстеження, тому я не відкидаю повністю можливості розумного підходу, який рахується без відстеження ...)

Мій останній рада є: є тільки так багато ви можете зробити до даного підходу , і ви будете потребувати любитель матеріалом для досягнення більш високої продуктивності (так що я НЕ згоден з user36624 в цьому відношенні). Це може означати зміну фрагмента вашого алгоритму чимось більш потужним або взагалі змінити архітектуру. Звичайно, ви повинні знати, які модні речі справді корисні для вас. Є публікації, які намагаються вирішити проблему принциповим способом, а інші просто придумують алгоритм для заданого набору даних і очікують, що ви підготуєте класифікатор, який насправді не підходить до проблеми, і вимагає від вас також регулюйте кілька порогів. Люди рахують - цеПостійні дослідження, тому не сподівайтеся, що все стане легко. Докладайте зусиль, щоб вивчити речі, які трохи перевищують ваші здібності, а потім робіть це знову і знову ...

Я визнаю, що я не запропонував жодних рішень і натомість лише вказав на недоліки у вашому підході (які випливають із власного досвіду). Для натхнення рекомендую прочитати кілька останніх досліджень, наприклад стабільне багатоцільове відстеження у відеоспостереженні в режимі реального часу . Удачі!


9

Я думаю, що ви запитуєте про доцільність вашого алгоритму пішоходів.

Існує дві загальні стратегії вирішення подібних проблем:

  1. (знизу вгору) Розгляньте це як чисту проблему виявлення, де в кожному кадрі ви виявляєте лише пішоходів. Після того, як ви їх виявите, а) підрахувати їх кількість у кадрі досить просто; і b) відстеження будь-якого з них у послідовних кадрах також легко. Тому ти все вирішуєш.

  2. (зверху вниз) Розгляньте це як проблему розпізнавання дій, коли ви визначаєте, чи рентабельність інвестицій у послідовних кадрах є пішохідною чи ні відповідно до її дій. Після того як ви вирішите цю проблему, ви вирішите проблеми виявлення та відстеження одночасно.

Ваш евристичний алгоритм знаходиться в першій категорії. Я не хочу перешкоджати вам, але ви можете пропустити ключовий момент, як виявити пішохода. Тому що реальні дані можуть бути складнішими, ніж те, що ви думали. Наприклад, якщо це камера метро, ​​у кадрів якої, можливо, повно пішоходів і, таким чином, видалення фону або виявлення крапель зовсім не допомагає. У цьому випадку може бути більш розумним використовувати алгоритми розпізнавання облич та розпізнавання обличчя для вирішення проблеми, адже якщо ви знайдете обличчя, ви знайдете пішохода. З іншого боку, залежно від вашого визначення пішохода, можливо, правда, що не кожен, хто опинився в кадрі, повинен трактуватися як пішохід. У цьому випадку може бути доцільним використання алгоритмів розпізнавання дій (друга категорія), де ви можете чітко визначити пішохода на основі його поведінки.

Ось кілька порад на основі мого досвіду:

  1. Дотримуйтесь того, що ви знаєте, і що ви можете легко взяти. Не вкладайте свій час на щось, але це вимагає багатьох фонів, яких у вас немає. Повірте, всі ці алгоритми будуть хорошими в деяких випадках, але поганими в інших. Тому перше - змусити щось працювати, незалежно від того, наскільки це добре чи погано.

  2. Дізнайтеся більше про свої дані, а потім визначте свій метод. Загальний опис проблеми у багатьох випадках недостатній.

  3. Якщо ви хочете продемонструвати свою ідею, краще скористатися MATLAB і побудувати прототип.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.