#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:
Я бы попробовал алгоритм искусственного интеллекта, заполненный пользовательским вводом.