Технический форум по робототехнике.
EDV » 21 янв 2009, 11:51
Виталий писал(а):Лучше бы описание алгоритма расширили.
Добавлено спустя 40 минут 7 секунд:
И демонстрашка не качается.
Кстати недавно про ваш метод вспоминал в связи с решением задачи по взлому одной капчи. Интересно было бы узнать подробности работы метода, очень уж он мне приглянулся своей простотой. Думаю там есть куда его развивать, только вот описание получить бы.
Описание алгоритма здесь (на английском):
http://edv-detail.narod.ru/AVM_main.htmlПосмотрите демонстрационную версию, прикиньте, подходит ли алгоритм AVM для вашей задачи. Если подходит, то я подготовлю новые AVM SDK v0.5 и подробное описание к их использованию (на русском).
Выложил
AVM Win32 Demo на обменный сервер, можете попробовать
скачать отсюда
Виталий » 21 янв 2009, 13:40
В принципе использовать ваш SDK не имеет особого смысла, т.к. у меня реализован примерно такой же метод как и у вас.
Единственное что интересно это алгоритм генерации ключа для ассоциативной памяти и функция расстояния между ключами.
Если у вас есть желание обсудить данные вопрос (у меня вот такое желание есть), то я готов во-первых обменяться знаниями, а во-вторых поучаствовать в поиске интересной задачи для такого алгоритма (возможно даже оплачиваемой).
Можно писать на vkle на маил ру, ну или здесь.
EDV » 21 янв 2009, 15:02
Виталий писал(а):В принципе использовать ваш SDK не имеет особого смысла, т.к. у меня реализован примерно такой же метод как и у вас.
Единственное что интересно это алгоритм генерации ключа для ассоциативной памяти и функция расстояния между ключами.
Хотелось бы взглянуть на результаты, есть какие-нибудь демо-версии, или AVI с результатами обработки?
Виталий » 21 янв 2009, 15:50
Единственное что осталось от проекта со зрением - золотая медаль ВДНХ за робота следующего за человеком. Может конечно удастся найти AVI но не факт.
Кстати задача уже найдена - поиск порнографии в базах изображений.
EDV » 21 янв 2009, 16:13
С поиском порнографии всё гораздо проще, там не обязательно распознавать изображение, достаточно найти «цвет» кожи, используя для этого гистограмму цвета, потом выяснить, сколько процентов изображения этот цвет занимает, и по превышению порогового значения (ну очень много голого тела в кадре) определить что это - порнография.
Короче, к AVM это никакого отношения не имеет
Виталий » 21 янв 2009, 16:19
Вы неправы. Есть коллекции фотографий где очень много голого тела (фотосессии моделей), но порнографии там нет.
Виталий » 21 янв 2009, 17:11
Посмотрел демо. Куча ложных срабатываний, а с неконтрастными объектами не работает вообще. Зато быстро =)
Добавлено спустя 8 минут 9 секунд:
Помоему предыдущая версия была лучше.
EDV » 21 янв 2009, 18:02
Да, это недостаток, метод хорошо работает только с контрастными изображениями. Но вы не забывайте, что на вход AVM подаются полутоновые изображения (не цветные), так что контраст - это всё что у него есть, для того что бы правильно распознать объект (попробуйте освещение получше поставить, что бы камера более контрастное изображение видела).
В прошлой версии вы могли обучить AVM к примеру на своё лицо, но по истечении какого то времени, за счёт самообучения, AVM могла обучиться «лишнему» и начать распознавать всё что угодно, но только не лицо. В этой версии основной упор делался на стабильную работу AVM в течении продолжительного времени.
Добавлено спустя 9 минут 59 секунд:
Вот что мне нравится в AVM, так это то, что быстродействие (время поиска) при увеличении разрешения входного изображения, ухудшается, но не катастрофически. У меня дома Web-камера Logitech Fusion, она обеспечивает захват достаточно больших разрешений (типа 900x700 и дальше), и что интересно, на моём процессоре Core 2 Duo E6600, с большими разрешениями можно всё ещё комфортно работать в real-time.
Так вот, я заметил, что AVM может достаточно точно определять положение лица (особенно при большом размере ключевого изображения, тип 160x160), лицом, буквально можно рисовать по экрану (траектория движения).
Потом я пробовал обучать AVM на "рот", типа рот закрыт, рот открыт. Определяло очень успешно, если приделать это к манипулятору мыши, то можно будет буквально перемещать ярлыки рабочего стола, перемещая голову и открывая/закрывая рот (прикольно но не удобно).
Ещё один вариант применения в этом направлении, обучить AVM на открытую ладонь, потом, перемещая ладонь перед web-камерой, рисовать символы (росчерки). За каждым таким "росчерком" можно закрепить определённую реакцию компьютера, и таким образом компьютером можно будет управлять буквально "голыми руками".
Дело в том, что я недавно закончил улучшение алгоритма AVM (я тестировал его на одной и той же видеопоследовательности и оценивал эффективность), и пока ещё и сам не выяснил до конца его возможностей.
Виталий » 21 янв 2009, 18:53
Управление рукой уже было давно реализовано. Это же кожа =)
Мне например нравится ваш алгоритм, я вижу что у него есть перспективы, я вижу что вы обошлись без нормировок и почти везде используете целочисленную арифметику и мне это нравится. Поэтому я и предлагаю обсудить варианты улучшения.
Пожалуйста не думайте, что моя цель выторговать алгоритм - я думаю он не очень сложен, судя по результатам.
Виталий » 22 янв 2009, 09:19
Забыл приложить результат.
Вот с чем это связано? Маловато перепадов на изображении? Нет по чему сгенерировать ключ?
Вы пробовали тестировать свой алгоритм на коллекциях?
EDV » 22 янв 2009, 10:18
Я тестировал эффективность AVM на видеопоследовательности RcgTraining4s.avi, она есть в SDK
http://edv-detail.narod.ru/AVM_SDK_v0-4.zip.
Спасибо за участие, я постараюсь проверить работу AVM на подобных примерах в ближайшее время. О результатах обязательно сообщу.
Ну а если на «лицо» обучить, находит?
Что бы обнулить AVM (установить исходное состояние), выберите из главного меню: Recognition\Set key image size
Виталий » 22 янв 2009, 11:07
Не очень. Находит, потом сбивается, а потом вовсе теряет.
EDV » 22 янв 2009, 18:35
Виталий писал(а):Забыл приложить результат.
Вот с чем это связано? Маловато перепадов на изображении? Нет по чему сгенерировать ключ?
Вы пробовали тестировать свой алгоритм на коллекциях?
А вот что получилось у меня:
1)
2)
3)
4)
5)
Согласен, изображения 1, 2, 3 дают сбой, если выставлять границы области обучения чётко по размерам изображений. Но стоит только немного увеличить границы области обучения, и всё начинает работать.
Почему так?
Думаю эти рисунки, просто не достаточно «пестрые» для матричного распознавания, маловато перепадов яркости на единицу площади. Увеличиваем размеры области обучения, и получаем больше перепадов яркости на изучаемой картинке.
Виталий » 22 янв 2009, 23:38
Так как вы ключи генерируете-то? В вашем алгоритме есть уязвимое место и оно, как мне кажется в том, что в угоду скорости сильно упрощен алгоритм генерации и распознавания ключа. Необходимо его заменить на адаптивный, зависящий от глубины дерева.