Распознавание логотипа - как улучшить производительность - PullRequest
3 голосов
/ 16 марта 2012

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

Channel1 Channel2Channel3Channel4

Как работает мой алгоритм сопоставления шаблонов:
Имеются 4 шаблона размером 100x100, каждый из которых представляет отдельный телевизионный канал, каждый из которых имеет свой порог (вероятности). Пользователь захватывает логотип с телевизора, а затем алгоритм: - Запустите 4 независимых сопоставления шаблонов для каждого шаблона, чтобы получить вероятность того, что каждый шаблон соответствует захваченному изображению. - для вероятности каждого канала, если вероятность канала ниже порогового значения канала, вероятность изменяется на 0; - объявить признанный логотип наиболее вероятным. Если все вероятности равны 0, объявите «нет признания».

Например, если я получил один канал с вероятностью 0,85 и порогом 0,9, а второй канал с вероятностью 0,8 и порогом 0,75, то второй канал «выигрывает».

Когда я фотографирую один из логотипов, в 95% случаев он распознает фотографии.

Текущие результаты:

  • При попытке обнаружить первый (логотип «улыбающееся лицо») из 10 обнаруженных я получил 10 правильных обнаружений. Для совпадения шаблона между правильным шаблоном и изображением я получаю вероятности от 0,91 до 0,94. Для других логотипов я получаю вероятности от 0,77 до 0,91.
  • При попытке обнаружить второй («зеленый» логотип) из 10 обнаружений я получил 10 правильных обнаружений. Для соответствия шаблона правильному шаблону и изображению я получаю вероятности от 0,78 до 0,91. Для других логотипов я получаю вероятности от 0,71 до 0,83 (но из-за высокого порога обнаружение проходит успешно).
  • При попытке обнаружить третий («круглый» логотип) из 10 обнаружений я получил 9 правильных обнаружений. Для соответствия шаблона правильному шаблону и изображению я получаю вероятности от 0,83 до 0,92. Для других логотипов я получаю вероятности от 0,73 до 0,91.
  • При попытке обнаружить четвертый («черно-белый» логотип) из 10 обнаружений я получил 10 правильных обнаружений. Для совпадения шаблона между правильным шаблоном и изображением я получаю вероятности от 0,91 до 0,94. Для других логотипов я получаю вероятности от 0,78 до 0,92.
  • При попытке обнаружить «негативное» изображение, часто я получаю логотип обнаружения (что плохо). Если я возьму, например, изображение полного белого листа, он обнаружит первый, третий и четвертый логотипы с вероятностью более 0,9

Как я могу улучшить свой алгоритм или изменить его, чтобы получить лучшие результаты для "негативных" изображений?

Спасибо за помощь,

Эяль

1 Ответ

3 голосов
/ 18 марта 2012

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

Другой подход заключается в вычислении векторов объектов из тестовых изображений, таких как объединениегистограмма градиентов и гистограмма цвета.Затем вручную создайте учебную базу данных, в которой вы знаете метку (1, 2, 3 или 4 в зависимости от того, какая метка видна на изображении), и вы можете подавать жестко закодированные метки вместе с функциями гистограммы вподпрограмма классификатора.Я рекомендую LIBSVM для этого, а реализацию scikits.learn для этого легко использовать в Python.

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

Две хорошие книги для чтения, чтобы начать работу в этом типе машинного обучения: PatternКлассификация , Дуда, Харт и Сторк, и Распознавание образов и машинное обучение Бишопом.

Некоторый грязный код Python, который я написал для реализации Поселетов и Гистограммы Ориентированных Градиентов вPython можно найти по ссылке здесь ;может быть, вы можете взять некоторые разделы кода там, и он подойдет для вашей задачи.

...