Определение идентификаций объектов с использованием распознавания изображений

#probability #image-recognition #object-recognition

#вероятность #распознавание изображений #распознавание объектов

Вопрос:

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

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

 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 разных цветов и более широкого диапазона размеров, в отличие от рюкзака, который может быть только черным)?

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

Ответ №1:

Прошу прощения за довольно высокоуровневое описание без особого обоснования того, почему это работает, но вы можете легко заполнить книги, отвечающие на этот вопрос, и уже 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 на самом деле является рюкзаком / коробкой.

Комментарии:

1. Примерно за последнюю неделю с тех пор, как я задал вопрос, я склонялся к выполнению рассылки. Вы подтвердили некоторые вещи, которые я рассматривал, и дали мне новые зацепки для чтения материала. Спасибо!

Ответ №2:

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

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

Ответ №3:

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