LINUX.ORG.RU

[PHP] «Обучаемая» распозновалка предметов на картинке

 


0

1

Есть куча картинок с «нормальным» фоном (сплошной цвет).
На картинках имеем допустим фены и телефоны.
Нужно что-то что умеет отличать фен от телефона.

Те скормить ему 10 пикч телефонов и заставить понимать его очертание. Телефоны почти все однообразные. Фены тоже.

Представляю себе решение на основе цветов но это надо быдлокодить слишком много.

Нужно что-то типа маска-распознаем очертания-заливаем все внутри контура-делаем слой-делаем слой-храним до след сравнения-сравниваем если больше 80% совпадает возвращаем 1 если нет 0

Но наверняка где-то есть готовое решение.
Реквестирую :3

Готовых решений не встречал..

Есть решение с п/ю нейронных сетей. Для начала самое то: Уоссермен нейрокомпьютерная техника, 1992

P.S. Если получится найти решение, поделись:)

Noisee
()

в целом тема нетривиальная. я б прототип на opencv запилил

VladimirMalyk ★★★★★
()
Ответ на: комментарий от VictimOfLoveToLinux

кстати и зря
тут как раз задача классификации по заданным образцам, самое то для нейросети

TERRANZ ★★★★
()

Насчет пхп хз, а вот п питоне можно заюзать PIL, или как там его, для картинок который, там вроде можно распознавалку сделать. И на джаве тоже вполне реально, но она не веб вроде.

Zhbert ★★★★★
()

Строим скелет изображения, нормируем размер (чтобы от размера изображения не зависеть), выделяем характеристики скелета (это - самый интересный пункт, вменяемого алгоритма я так и не нашел), затем находим корреляцию этих характеристик для одного и того же объекта, далее пытаемся распознавать с использованием наиболее явных характеристик.

Можно, кстати, попытаться нагуглить алгоритм работы какого-нибудь imgSeek.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от stevejobs

Алгоритмическая реализация этой «простенькой нейросети» такая, что проще другой способ выдумать :)

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Так наверняка же есть готовые либы. (Главное туда не заглядывать, чтобы не захотелось застрелить автора :)

Справится ли у ТСа сервер с нагрузкой...

stevejobs ★★★★☆
()

поковыряйте исходники типа этого http://www.delphisources.ru/pages/sources/graph/2005_year/neuro_40.html

попробуйте перепилить на нужный вам язык. картинки, естественно, предварительно надо нормализовать: фиксированный фон, заливка собственно предмета сплошным цветом. это же автоматизируется, наверное? ImageMagick или ещё что там можно использовать.

taker
()

когда-то распознавалку капч «живых картинок» на kyivstar.net/sms делал, через цвета (вернее, сравнивались некоторые «суммы» цветов в контрольных точках) :) Тупой быдлокод, но работало, на php-gd, кстати

OramahMaalhur
()
Ответ на: комментарий от VictimOfLoveToLinux

Нанять полюбому кого-то придется когда найдется решение.
Тк там почти все бытовые приборы на свете. И чтобы научить отличать машинку от тостера всё равно придется прогон с десяток картинок сделать.

VictimOfLoveToLinux
() автор топика

И вообще, слова «распознОть» нету, хотя это проверочное слово для названия треда.. Даже тупой опенофис знает как правильно писать это слово, а вот умный ЖертваОтАнал^WЛюбвиКЛинусу не знает.. Бррр

minakov ★★★★★
()

Если фон действительной сплошной цвет, то почему его просто не заливать цветом маски обычной заливкой, как в пейнте?

Tark ★★
()
Ответ на: комментарий от VictimOfLoveToLinux

Это то же что и обычное ИИ, но имеющее глаза и систему обработки сигнала с них, да еще и с возможностью логически мыслить, отличая новую модель телефона по характерным признакам от новой модели телеграфа по тем же признакам

minakov ★★★★★
()
Ответ на: комментарий от VictimOfLoveToLinux

Вообщем решение найдено. Правда на питоне но всё же.
Если оправдает себя выложу. Его допилить чуть чуть надо но прямо то что я хотел. Работа в два слоя с маской.

VictimOfLoveToLinux
() автор топика
Ответ на: комментарий от VictimOfLoveToLinux

Интересно, а здесь ввобще кто-то сможет, рассматривая маску (контур) объекта, в точности определить, контур чего именно представлен?

Ну там... отличить контур калькулятора от контура электрической бритвы или что-то в этом роде?

Serg_HIS
()
Ответ на: комментарий от Serg_HIS

>Ну там... отличить контур калькулятора от контура электрической бритвы или что-то в этом роде?

Блин, ну так ТС и просит какую-то технологию, которая бы это могла сделать.

Или чукча научился пока только писать?

Stahl ★★☆
()

1) Обучение
Изображение делается монохромным, вычленяются контуры предмета, затем изображение квантуется.
После того, как учитель указывает, какой категории принадлежит изображение, сеть либо считает его образцом, если это первое изображение в категории, либо «склеивает» с имеющимся образцом.

2) Распознавание
Изображение, которое требуется распознать, подвергается тем же операциям, что для создания образцов, затем в лоб сравнивается с образцом каждой категории. Если близость изображения к одному из образцов гораздо ближе, чем к остальным, то оно принадлежит этой категории. Иначе вывести пользователю n наиболее подходящих категорий вместе с распознаваемым изображением и попросить указать, к какой из них оно относится. После указания категории также склеить ее с образцом.

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

Yasenfire
()
Ответ на: комментарий от Yasenfire

> Изображение делается монохромным
Зачем?

вычленяются контуры предмета

каким образом?

изображение квантуется

Как?

Т.е. ты, любезный, опустил всё самое интересное и написал буквально следующее: «Если объект А больше похож на тип_1, чем на тип_2, то он принадлежит к тип_1».

А это уныло и бесполезно.

Stahl ★★☆
()
Ответ на: комментарий от Stahl

>Зачем?
Неправильно написал. Не монохромным, а бинарным. Собственно, этот шаг должен быть включен в поиск границ.

каким образом?

Я быдло без математического образования, поэтому могу только дать ссылку на быдлоресурсы с готовыми алгоритмами:
http://habrahabr.ru/blogs/image_processing/128803/
http://ru.wikipedia.org/wiki/Оператор_Собеля

Конечно, ужасно подходить к инженерной задаче с позиции «Что-нибудь сработает», но меня преследует подозрение, что в случае «отличить телефон от фена» любой алгоритм даст сильно отличающиеся друг от друга контуры.

Как?

Если изображение меньше заданных размеров для образца - интерполировать методом ближайшего соседа. Больше - разделить на квадратные сектора и присваивать ему белый цвет, если количество попавших в сектор пикселей белого цвета превышает определенный порог. Затем добавление полей/тримминг изображения.

Yasenfire
()
Ответ на: комментарий от Stahl

Сначала изображение надо сделать «черно-белым» (т.е. цветное перевести в градации серого, чтобы от цвета не зависеть). Если необходимо еще анализировать цвет (фрукты/овощи и т.п.), придется изображение представить в каком-нибудь HSV.

Контуры определяются по черно-белому изображению. Например, можно использовать оператор модуля градиента, композицию «собелей» (вертикального и горизонтального) и т.п.

Только после этого изображение квантуется.

Короче, смотрите исходники imgSeek.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Yasenfire

>Неправильно написал. Не монохромным, а бинарным. Собственно, этот шаг должен быть включен в поиск границ.

1) Даже на этом шаге уже есть проблема порога яркости, от которого вычислять к какому тону (цвету) относить каждый пиксель.

2) Зачем использовать Собеля для двухтонового изображения?

Для начала хватит и пары этих пунктов ;)

Serg_HIS
()
Ответ на: комментарий от Eddy_Em

>Короче, смотрите исходники imgSeek.

И что он реально что-то может найти, кроме идентичных изображений или изображений с похожей цветовой гаммой?

Serg_HIS
()
Ответ на: комментарий от Eddy_Em

>Можно использовать идеи классификации изображений оттуда.

А нужно ли?

Если идеи не работоспособны для задачи, зачем на них тратить время?

Serg_HIS
()
Ответ на: комментарий от Serg_HIS

Гуглите тогда методики однозначной классификации изображений.

Eddy_Em ☆☆☆☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.