Определение идентичности объекта с помощью распознавания изображений - PullRequest
3 голосов
/ 27 апреля 2011

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

Я также создал базу данных объектов для алгоритма на выбор:

Item | Shape | Colors | Width range | Height range

Box | rectangle | brown, black, white | 20-50 cm | 10-30 cm
Basketball | circle | orange | 20-25cm | 20-25 cm
Backpack | rectangle | black | 40-50 cm | 20-30 cm
.
.
.
etc.

Примером может служить ситуация, когда система обнаруживает черный прямоугольник шириной 42 см и высотой 26 см. В этом случае и «коробка», и «рюкзак» будут рассматриваться как правильные ответы. Есть ли хорошие способы сделать обоснованное предположение о том, какой из двух предметов это может быть, например, 75% вероятность, что это рюкзак, 25% вероятность, что это коробка (возможно, на основе того факта, что коробки имеют шанс быть 3 разные цвета и более широкий диапазон размеров, в отличие от рюкзака, который может быть только черного цвета)?

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

Ответы [ 3 ]

3 голосов
/ 02 мая 2011

Прошу прощения за довольно высокоуровневое описание без особого обоснования того, почему оно работает, но вы можете легко заполнить книги, отвечающие на этот вопрос, и уже 13:00, поэтому я должен сделать его кратким:


В дополнение к записи диапазона допустимых размеров для коробок и рюкзаков необходимо определить распределение вероятностей. Скорее всего, вы просто использовали бы (2D) нормальное распределение, а затем записали бы среднее значение и изменение вместо диапазона. Сделайте то же самое для переменных формы, цвета и т. Д. С подходящим распределением вероятности.

Затем сгенерируйте два набора данных с несколькими сотнями точек данных, таких как:

p_1 = (shape=rectangle, color=black, width=12, height=34)
p_2 = (shape=circle, color=red, width=34, height=11)
...

Для одного из наборов вручную классифицируйте их как объект, который лучше всего соответствует описанию. Это станет вашим набором проверки.

Возьмите другой набор данных и обучите алгоритм классификации, такой как Линейный дискриминант Фишера , использующий эти данные. Вы получаете преобразование T, которое максимизирует «расстояние» между классами (группами точек данных, представляющих объект) и минимизирует «расстояние» между точками, принадлежащими к одной группе.

Когда ваша программа обнаруживает новый объект со свойствами

o = (shape=rectangle, color=black, width=42, height=26)

вы применяете преобразование, полученное из LD Фишера, и измеряете корреляцию (скалярное векторное произведение) для преобразований точек данных, которые вы классифицировали как, то есть вычисляете (T*o)*(T*p_backpack)' и (T*o)*(T*p_box)', которые относятся к вероятности того, что объект o является собственно рюкзак / коробка.

2 голосов
/ 02 мая 2011

Если вы рассматриваете ИИ, взгляните на http://pybrain.org/

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

1 голос
/ 02 мая 2011

Я бы попробовал алгоритм ИИ, заполненный пользовательским вводом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...