У меня есть хобби-проект, который я собираюсь посвятить как способ увеличить свой пока ограниченный опыт машинного обучения. Я взял и закончил Coursera MOOC по этой теме. Мой вопрос касается осуществимости проекта.
Задача следующая:
Соседние кошки время от времени посещают мой сад, что мне не нравится, поскольку они имеют тенденцию испражняться на моем газоне. Я хотел бы иметь систему предупреждения, которая предупреждает меня, когда есть кошка, чтобы я мог отогнать ее, используя мой супер soaker. Ради простоты, скажите, что я забочусь только о кошке с черно-белой окраской.
Я установил Raspberry Pi с модулем камеры, который может захватывать видео и / или фотографии части сада.
Образец изображения:
Моя первая идея состояла в том, чтобы обучить классификатор идентифицировать кошачьи или похожие на кошку объекты, но, поняв, что я не смогу получить достаточно большое количество положительных образцов, я отказался от этого в пользу обнаружения аномалий.
По моим оценкам, если бы я снимал фотографию каждую секунду дня, у меня получалось бы пять фотографий с кошками (из примерно 60 000 при солнечном свете) в день.
Возможно ли это с помощью обнаружения аномалий? Если да, какие функции вы бы предложили? Мои идеи до сих пор заключаются в том, чтобы просто посчитать количество пикселей с определенными цветами; выполнить какое-либо обнаружение блоба / сегментацию изображения (чего я не знаю, как, и, следовательно, хотел бы избежать), и выполнить такой же анализ цвета на них.
источник
Ответы:
Вы можете значительно упростить вашу проблему, используя подход обнаружения движения / изменения. Например, вы можете сравнить каждое изображение / кадр с одним из ранних времен (например, минуту назад), а затем рассматривать только те пиксели, которые изменились с более раннего времени. Затем вы можете извлечь прямоугольную область изменений и использовать ее в качестве основы для вашей классификации или обнаружения аномалий.
Использование этого типа подхода может значительно упростить ваш классификатор и снизить уровень ложных целей, потому что вы можете игнорировать все, что не примерно соответствует размеру кошки (например, человек или птица). Затем вы будете использовать извлеченные области изменений, которые не были отфильтрованы, чтобы сформировать обучающий набор для вашего классификатора (или детектора аномалий).
Просто убедитесь, что уровень ложных целей достаточно низок, прежде чем устанавливать лазерную револьверную головку в систему обнаружения вторжений кошек.
источник
Это интересный и достаточно амбициозный проект :)
Я не уверен, что обнаружение аномалий (по крайней мере, в том смысле, как описано в курсе, которому вы следовали) было бы очень подходящим алгоритмом в этом случае.
Я бы посчитал, что более жизнеспособным подходом будет то, что обсуждалось в конце того курса, где был продемонстрирован рабочий процесс Photo OCR.
Подход будет состоять в том, чтобы сегментировать ваше изображение на более мелкие «блоки» и проходить их один за другим, используя контролируемый алгоритм обучения, и пытаться классифицировать каждый блок в зависимости от того, содержит он кошку или нет. Если один блок содержит кошку, сигнал тревоги отключается. В качестве бонуса вы также получаете положение кота, так что вы можете подумать о включении некоторого «автоматического» ответа в качестве будущего шага в вашем проекте.
Преимущество здесь в том, что вам не придется тренировать свой алгоритм с использованием набора данных, характерного для вашего сада (который, как вы упомянули, сложно создать), но вы можете использовать изображения кошек, снятых с сети (например, вы можете искать "кошка на траве" или что-то в этом роде) и, возможно, участки с фотографиями из ваших (или других) садов. Поэтому вам не нужно тратить время на сбор фотографий с вашей камеры, и вы избегаете риска иметь очень маленький (сопоставимый) образец позитива (например, кошек).
Теперь, конечно, как легко построить точный детектор кошек, это другая тема ..
источник
Стратегия обнаружения движения / изменения, безусловно, адекватна, но я бы добавил дополнительную операцию. Я бы обнаружил те области, которые с большей вероятностью могут быть изменены, например, лестница кажется местом, где люди могут быть (также кошками), и травой, где могут быть собаки, кошки или люди.
Я бы захватил карту с размером объекта и траекторией, и с помощью этого я бы создал кластер с целью обнаружения объекта (с определенным размером на изображении в пикселях), который движется с определенной скоростью и траекторией.
Вы можете достичь этого с помощью R или я бы предложил OpenCV для обнаружения движения и отслеживания различных объектов.
источник
Вычитание фона в OpenCV позволяет находить объекты, движущиеся вокруг вашего объекта. После этого вы можете использовать классификатор или анализ формы, чтобы различать кошек, людей, деревья и т. Д.
источник
Это птица? Это кот? У нас черно-белая кошка размером! Сороки здесь. так что не получится.
Первым делом следует исключить все зеленые области, кошки редко зеленые.
Затем сравните остальное с эталонным изображением, чтобы удалить статические вещи, такие как камни и лестницы.
Обнаружение объектов минимального размера должно быть возможным, но для классификации разрешение слишком низкое. Может быть, ваш сосед тестирует свой новый беспилотник с дистанционным управлением.
С двумя камерами вы можете сделать трехмерное отображение объектов и устранить летающие объекты.
источник