Виявлення котів візуально за допомогою виявлення аномалії


17

У мене є проект хобі, котрий я збираюся зробити як спосіб підвищення мого поки що обмеженого досвіду машинного навчання. Я взяв і закінчив MOOC Coursera з цієї теми. Моє запитання щодо можливості здійснення проекту.

Завдання полягає в наступному:

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

У мене встановлено малиновий пі з модулем камери, який може знімати відео та / або фотографії частини саду.

Зразок зображення:

Зразок садового зображення

Моя перша ідея полягала в тому, щоб навчити класифікатора для ідентифікації котячих або котячих предметів, але, зрозумівши, що мені не вдасться отримати достатньо великої кількості позитивних зразків, я відмовився від цього на користь виявлення аномалії.

Я підрахував, що якби я фотографував фотографію щосекунди дня, я б закінчив, мабуть, п’ять фотографій, що містять котів (із приблизно 60 000 із сонячним світлом) на день.

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


1
Можливо, це питання краще підходить для крос-валідаційного веб-сайту SE, тепер, коли я думаю про це. Відмінність для мене дещо незрозуміла ...
Мороз

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

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

2
Начебто очевидний наступний крок (після того, як ви змусите функціонування котів працювати) - це супермокальник, що контролюється малиною пі :-)
Критен

Відповіді:


8

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

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

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


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

@insys - Я бачу вашу думку, але я не згоден - я вважаю, що це робить детектор більш стійким до змін. Різниця в часі між відносними кадрами повинна бути невеликою (~ секунди до хвилини), тому сонце, сезон, погода повинні бути незначними. Я погоджуюся, що вітер змусить рослини рухатися, але крок класифікації може уникнути таких, оскільки їх розміри / форма / колір відрізняються від котячих. Крім того, використання двох кадрів у подібний час дозволяє нормалізувати інтенсивність пікселів, щоб краще обробляти різні умови освітлення (наприклад, кішка у сонячний та похмурий день).
богатрон

Насправді я більше розгублений у вашій відповіді зараз, коли я прочитав ваш коментар :) Можливо, я неправильно зрозумів, але якщо ви насправді використовуєте "видобуті регіони змін" для формування ваших позитивних зразків, як згадувалося у вашому запитанні, як ви це взагалі робите впевнені, що це коти? Вони можуть бути чим завгодно. Таким чином, ваш крок класифікації не зможе виявити нічого, крім того, чого вчать виявляти - тобто будь-яких змін. Отже, це фактично повторення роботи детектора "зміни".
insys

Крім того, умови освітлення, безумовно, викликають занепокоєння, але, якщо я правильно зрозумів, незрозуміло, що два подібні зображення, зроблені з різницею в 1 хвилину, запропонують для нормалізації інтенсивності пікселів?
insys

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

4

Це цікавий, а також досить амбітний проект :)

Я не впевнений, що виявлення аномалії (принаймні, у тому сенсі, який описаний у курсі, який ви слідували) було б дуже придатним алгоритмом у цьому випадку.

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

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

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

Тепер, звичайно, як легко створити точний детектор котів - це інша тема ..


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

@adesantos - Те, що ви говорите, цілком може бути правдою, і для прогнозування розрізнення рухомих та нерухливих частин має свої переваги. Але що стосується тренувань, як це описується богатроном, незрозуміло, яку користь він приносить на стіл. В цілому, на мою думку, це додає складності, яка значно подовжує час налагодження. Перевага рухомого вікна полягає в його простоті.
insys

Btw, щодо розколу, який ви згадуєте, очевидною стратегією є дозволити вашим вікнам перекриватися, щоб ця розділена позиція не впливала на ваш класифікатор.
insys

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

3

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

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

Ви можете досягти цього, використовуючи R або я б запропонував OpenCV, щоб виявити рух та слідувати за різними об'єктами.


2

Віднімання фону OpenCV знайде об’єкти, що рухаються навколо вашого твердіння. Після цього ви можете використовувати класифікатор або аналіз фігури для розмежування кішок, людей, дерев тощо.


1

Це птах? Це кішка? У нас чорно-білі котячі розміри! сороки тут. так що це не вдасться.

Першим ділом було б виключити всі ділянки зеленого кольору, коти рідко зелені.

Потім порівняйте решту з еталонним зображенням, щоб видалити статичні речі, такі як каміння та сходи.

Виявлення об'єктів мінімального розміру повинно бути можливим, але для класифікації роздільна здатність занадто низька. Може також ваш сусід випробовує свій новий безпілотний безпілотник.

За допомогою двох камер ви могли б зробити 3D-відображення об’єктів та усунути літаючі об’єкти.

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