Поиск объектов

2,867 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,867
On SlideShare
0
From Embeds
0
Number of Embeds
587
Actions
Shares
0
Downloads
58
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Сравниваются все варианты. Оказывается, что centered вариант самый лучший Цветовые разные модели
  • Поиск объектов

    1. 1. Поиск объектов на изображении Many slides adapted from P. Viola and S.Lazebnik CSEDays-2010
    2. 2. Вспоминаем - «Мешок слов» <ul><li>Извлечение особенностей </li></ul><ul><li>Обучить “ визуальный словарь ” </li></ul><ul><li>Квантуем особенности по словарю </li></ul><ul><li>Описываем картинку частотами «визуальных слов» </li></ul><ul><li>Варианты: </li></ul><ul><ul><li>Поиск ближайшего </li></ul></ul><ul><ul><li>Многоклассовая классификация </li></ul></ul>
    3. 3. Найти интересные объекты (людей)
    4. 4. <ul><li>Подход на основе скользящего окна ( sliding window) . </li></ul><ul><li>Сканируем изображение окном поиска и применяем классификатор к каждому положению </li></ul>Поиск лиц
    5. 5. Требования к детектору лиц <ul><li>Скользящим окно необходимо оценить десятки тысяч возможных комбинаций масштаба / положения </li></ul><ul><li>Лица же достаточно редкий объект – 0-10 лиц на картинке </li></ul><ul><ul><li>Для достижения вычислительной эффективности отрицательные примеры нужно отбрасывать как можно быстрее </li></ul></ul><ul><ul><li>На изображении в 1МП сопоставимое с количеством пикселей число возможных положений лица </li></ul></ul><ul><ul><li>Чтобы избежать ложных обнаружений ( false positives) ошибка 2го рода должна быть ниже 10 -6 </li></ul></ul>
    6. 6. Детектор Violo-Jones <ul><li>Основополагающий метод для поиска объектов на изображении в реальном времени </li></ul><ul><li>Обучение очень медленное, но поиск очень быстр </li></ul><ul><li>Основные идеи: </li></ul><ul><ul><li>Интегральные изображения для быстрого вычисления признаков </li></ul></ul><ul><ul><li>Бустинг для выбора признаков </li></ul></ul><ul><ul><li>Каскад ( Attentional cascade ) для быстрой отбраковки окон без лица </li></ul></ul>P. Viola and M. Jones. Rapid object detection using a boosted cascade of simple features. CVPR 2001. P. Viola and M. Jones. Robust real-time face detection. IJCV 57(2), 2004.
    7. 7. Признаки “ Прямоугольные фильтры ” Value = ∑ (pixels in white area) – ∑ (pixels in black area)
    8. 8. Пример Source Result
    9. 9. Интегральные изображения <ul><li>Значение каждого пиксела ( x , y ) равно сумме значений всех пикселов левее и выше пикселя ( x , y ) включительно </li></ul><ul><li>Интегральное изображение рассчитывается за один проход </li></ul>(x,y)
    10. 10. Вычисление интегрального изображения
    11. 11. Вычисление интегрального изображения <ul><li>Сумма по строке : s(x, y) = s(x–1, y) + i(x, y) </li></ul><ul><li>Интегральное изображение : ii(x, y) = ii(x, y−1) + s(x, y) </li></ul>ii(x, y-1) s(x-1, y) i(x, y) MATLAB: ii = cumsum(cumsum(double(i)), 2);
    12. 12. Вычисление суммы в прямоугольнике <ul><li>Пусть A,B,C,D – значения интегрального изображения в углах прямоугольника </li></ul><ul><li>Тогда сумма значений пикселов в исходном изображении вычисляется по формуле: </li></ul><ul><ul><li>sum = A – B – C + D </li></ul></ul><ul><li>3 операции сложения для любого прямоугольника </li></ul>D B C A
    13. 13. Пример -1 +1 +2 -1 -2 +1 Integral Image
    14. 14. Выбор признаков <ul><li>Для окна поиска 24x24 пиксела , число возможных прямоугольных признаков достигает ~160,000! </li></ul>
    15. 15. Выбор признаков <ul><li>Для окна поиска 24x24 пиксела , число возможных прямоугольных признаков достигает ~160,000! </li></ul><ul><li>В процессе поиска вычислять все признаки нереально </li></ul><ul><li>Хороший классификатор должен использовать лишь маленькое подмножество всевозможных признаков </li></ul><ul><li>Вопрос - как выбрать такое подмножество? </li></ul>
    16. 16. Бустинг <ul><li>Бустинг – схема классификации, основанная на комбинировании слабых классификаторов в более точный комитетный </li></ul><ul><ul><li>Слабый классификатор должен быть лучше монетки </li></ul></ul><ul><li>Обучение состоит из нескольких этапов усиления ( boosting rounds ) </li></ul><ul><ul><li>На каждом этапе выбираем слабый классификатор, который лучше всех сработал на примерах, оказавшихся трудными для предыдущих классификаторов </li></ul></ul><ul><ul><li>«Трудность» записывается с помощью весов, приписанных примерам из обучающей выборки </li></ul></ul><ul><ul><li>Составляем общий классификатор как линейную комбинацию слабых классификаторов </li></ul></ul>Y. Freund and R. Schapire, A short introduction to boosting , Journal of Japanese Society for Artificial Intelligence , 14(5):771-780, September, 1999.
    17. 17. Слабые классификаторы <ul><li>Определяем слабые классификаторы на основе прямоугольных признаков </li></ul>окно Значение признака порог
    18. 18. <ul><li>Определяем слабые классификаторы на основе прямоугольных признаков </li></ul><ul><li>Для каждого этапа бустинга: </li></ul><ul><ul><li>Вычисляем каждый прямоугольный признак на каждом примере </li></ul></ul><ul><ul><li>Выбираем наилучший порог для каждого признака </li></ul></ul><ul><ul><li>Выбираем наилучший признак / порог </li></ul></ul><ul><ul><li>Перевзвешиваем выборку </li></ul></ul><ul><li>Вычислительная сложность обучения : O ( MNK ) </li></ul><ul><ul><li>M этапов , N примеров , K признаков </li></ul></ul>Бустинг для поиска лиц
    19. 19. Бустинг для поиска лиц <ul><li>Первые два признака, выбранные бустингом : </li></ul><ul><li>Эта комбинация признаков дает 100% detection rate и 50% false positive rate </li></ul>
    20. 20. Бустинг для поиска лиц <ul><li>Классификатор из 200 признаков дает 95% detection rate и a false positive rate of 1 in 14084 </li></ul>Недостаточно хорошо ! Receiver operating characteristic (ROC) curve
    21. 21. Каскад ( Attentional cascade ) <ul><li>Начинаем с простых классификаторов, которые отбрасывают часть отрицательных окон, при этом принимая почти все положительные окна </li></ul><ul><li>Положительный отклик первого классификатора запускает вычисление второго, более сложного, классификатора, и т.д. </li></ul><ul><li>Отрицательный отклик на любом этапе приводит к немедленной отбраковке окна </li></ul>FACE IMAGE SUB-WINDOW Classifier 1 T Classifier 3 T F NON-FACE T Classifier 2 T F NON-FACE F NON-FACE
    22. 22. Каскад <ul><li>Цепочка классификаторов с каждым уровнем становится более сложной, ошибка второго рода постоянно снижается </li></ul>FACE IMAGE SUB-WINDOW Classifier 1 T Classifier 3 T F NON-FACE T Classifier 2 T F NON-FACE F NON-FACE Receiver operating characteristic vs false neg determined by % False Pos % Detection 0 50 0 100
    23. 23. Каскад <ul><li>detection rate и false positive rate каскада вычисляются как произведение соответствующих уровней ошибок каждого этапа </li></ul><ul><li>A detection rate 0.9 и false positive rate порядка 10 -6 достигается с помощью каскада из 10 этапов, если на каждом этапе detection rate примерно равен 0.99 (0.99 10 ≈ 0.9) и false positive rate примерно 0.30 (0.3 10 ≈ 6×10 -6 ) </li></ul>FACE IMAGE SUB-WINDOW Classifier 1 T Classifier 3 T F NON-FACE T Classifier 2 T F NON-FACE F NON-FACE
    24. 24. Обучение каскада <ul><li>Задаем требуемые значения detection and false positive rates для каждого этапа </li></ul><ul><li>Добавляем признаки до тех пор, пока параметры текущего этапа не достигнут заданного уровня </li></ul><ul><ul><li>Приходится понижать порог AdaBoost для максимизации обнаружения ( в противоположенность минимизации общей ошибки классификации ) </li></ul></ul><ul><ul><li>Тестирование на отдельном наборе ( validation set ) </li></ul></ul><ul><li>Если общий уровень false positive rate недостаточно низок, добавляем очередной этап </li></ul><ul><li>Ложные обнаружения на текущем этапе используются как отрицательные примеры на следующем этапе </li></ul>
    25. 25. Тренировочная выборка <ul><li>5000 лиц </li></ul><ul><ul><li>Все фронтальные, уменьшенные до 24x24 пикселов </li></ul></ul><ul><ul><li>Все нормированы </li></ul></ul><ul><li>300 М отрицательных примеров </li></ul><ul><ul><li>9500 изображений без лиц </li></ul></ul><ul><li>Большая изменчивость </li></ul><ul><ul><li>Разные люди </li></ul></ul><ul><ul><li>Освещение </li></ul></ul><ul><ul><li>Поза лица </li></ul></ul>
    26. 26. Производительность системы <ul><li>Обучение : “ недели ” на 466 MHz Sun рабочей станции </li></ul><ul><li>38 этапов , всего 6061 признаков </li></ul><ul><li>В среднем 10 признаков оцениваются для каждого окна на тестовой выборке </li></ul><ul><li>“ На 700 Mhz Pentium III, детектор лиц обрабатывает одно изображение 384x288 пикселов за 0 .067 секунды ” </li></ul><ul><ul><li>15 Hz </li></ul></ul><ul><ul><li>В 15 раз быстрее сравнимого по точности предшествующего метода (Rowley et al., 1998) </li></ul></ul>
    27. 27. Пример работы
    28. 28. Другие задачи поиска объектов Локализация черт лица Определение пола Поиск профилей
    29. 29. Поиск профилей
    30. 30. Признаки для поиска профилей
    31. 31. Резюме: детектор Violo-Jones <ul><li>Прямоугольные признаки </li></ul><ul><li>Интегральные изображения для быстрого вычисления признаков </li></ul><ul><li>Бустинг для выбора признаков </li></ul><ul><li>Каскад классификаторов для быстрого выбраковки отрицательных окон </li></ul>
    32. 32. Дескриптор HOG и поиск пешеходов <ul><li>HOG = Histogram of Oriented Gradients </li></ul>Navneet Dalal, Bill Triggs,Histograms of Oriented Gradients for Human Detection, CVPR-2005 Основа работы – эксперименты с разными параметрами системы
    33. 33. uncentered centered cubic-corrected Sobel Slides by Pete Barnum <ul><li>Вычисляем карту градиентов </li></ul><ul><li>В RGB (цвете) </li></ul><ul><ul><li>берем максимум по каналам </li></ul></ul><ul><li>Рамка больше объекта! </li></ul><ul><ul><li>Иначе качество падает </li></ul></ul>
    34. 34. <ul><li>«Ячейки» ( Cells) </li></ul><ul><ul><li>Лучший 8*8 пикселов </li></ul></ul><ul><li>Гистограмма ориентаций </li></ul><ul><li>«Взвешенные гистограммы» </li></ul><ul><li>Тестирование разного количества ячеек </li></ul><ul><ul><li>Идеально около 9, без ориентаций </li></ul></ul>Slides by Pete Barnum
    35. 35. <ul><li>Нормализация по блокам </li></ul><ul><ul><li>2*2, 3*3 блоки из ячеек </li></ul></ul><ul><li>Блоки пересекаются по ячейкам, каждая ячейка участвует в нескольких блоках </li></ul><ul><li>Нормализуем вектора-дескрипторы </li></ul><ul><li>Несколько вариантов нормализации </li></ul>Slides by Pete Barnum
    36. 36. <ul><li>Параметры </li></ul><ul><ul><li>64*128 окно поиска </li></ul></ul><ul><ul><li>7*15 блоков = 105 блоков </li></ul></ul><ul><ul><li>Каждый блок – 4 ячейки с гистограммой из 9 корзин </li></ul></ul><ul><ul><li>38*7*15 = 3780 признаков </li></ul></ul><ul><li>Классификация с помощью SVM </li></ul><ul><li>- (Support Vector Machine) </li></ul><ul><li>Машина опорных векторов </li></ul>Slides by Pete Barnum
    37. 37. Линейные классификаторы <ul><li>Найти линейную функцию (гиперплоскость) которые разделяет положительные и отрицательные примеры </li></ul>Какая гиперплоскость лучше?
    38. 38. Машина опорных векторов <ul><li>Найти гиперплоскость, которая максимизирует отступ ( margin ) между положительными и отрицательными примерами </li></ul>Margin Support vectors C. Burges, A Tutorial on Support Vector Machines for Pattern Recognition , Data Mining and Knowledge Discovery, 1998 Расстояние от вектора до плоскости : Опорные вектора , Отступ равен 2 / || w ||
    39. 39. Машина опорных векторов <ul><li>Найти гиперплоскость, которая максимизирует отступ ( margin ) между положительными и отрицательными примерами </li></ul>Граница Опорные вектора C. Burges, A Tutorial on Support Vector Machines for Pattern Recognition , Data Mining and Knowledge Discovery, 1998 Оптимизационная задача : Минимизируем При условии y i ( w · x i + b ) ≥ 1 Опорный вектор веса
    40. 40. HOG: резюме <ul><li>Вклад авторов </li></ul><ul><ul><li>HOG по ячейкам </li></ul></ul><ul><ul><li>Плотная сетка ячеек </li></ul></ul><ul><ul><li>Локальная нормализация каждого блока, причем блоки пересекаются </li></ul></ul><ul><li>Фиксированное окно и ячейки </li></ul><ul><li>1 кадр в секунду </li></ul><ul><ul><li>Разреженный перебор </li></ul></ul><ul><ul><li>~800 окон на кадр </li></ul></ul>
    41. 41. Violo-Jones + HOG = Cascade HOG <ul><li>Ускорение поиска людей за счет объединения идей </li></ul><ul><ul><li>HOG блоки разного размера как признаки </li></ul></ul><ul><ul><ul><li>Нужно для каскада </li></ul></ul></ul><ul><ul><ul><li>Маленькие блоки не репрезентативны на первых стадиях </li></ul></ul></ul><ul><ul><ul><li>От 12*12 до 64*128 пикселей </li></ul></ul></ul><ul><ul><ul><li>Всего 5031 блок </li></ul></ul></ul><ul><ul><li>Интегральные изображения для расчета гистограмм переменного размера </li></ul></ul><ul><ul><li>Линейный SVM в качестве слабого классификатора </li></ul></ul><ul><ul><li>Бустинг для выбора признаков (слабых классификаторов) </li></ul></ul>Qiang Zhu et. al. Fast human detection using a cascade of Histograms of Oriented Gradients , CVPR 2006
    42. 42. Параметры каскада <ul><li>(а) – признаки с наименьшей ошибкой </li></ul><ul><li>( b ) – уровень 1 (с) – уровень 2, ( d) – уровень 8 </li></ul>
    43. 43. Cascaded HOG <ul><li>HOG + integral images + SVM + boosting </li></ul><ul><li>12800 окон на изображение </li></ul><ul><li>4-5 кадров в секунду </li></ul><ul><ul><li>70-80 X ускорение при том же качестве </li></ul></ul><ul><li>Behold the power of cascade and boosting! </li></ul>
    44. 46. Схемы голосования для поиска объектов Juergen Gall, Victor Lempitsky: Class-specific Hough Forests for Object Detection. CVPR 2009 <ul><li>Пусть «визуальные слова» будут голосовать за положение объекта! </li></ul>
    45. 47. Идея <ul><li>Для каждого «слова» запоминаем: </li></ul><ul><ul><li>Принадлежит ли оно объекту </li></ul></ul><ul><ul><li>Вектор-смещения от слова к центру объекта </li></ul></ul>Тренировочное изображение Визуальное слово с векторами смещения
    46. 48. Случайные окна + решающий лес
    47. 49. Решающий лес На выходе: вероятность принадлежности объекту + распределение положений относительно центра
    48. 50. Признаки и бинарные тесты <ul><li>16 признаков на каждый пиксель окна </li></ul><ul><ul><li>3 канала LAB </li></ul></ul><ul><ul><li>Первые производные по x и y </li></ul></ul><ul><ul><li>Вторые производные по x и y </li></ul></ul><ul><ul><li>HOG ( 9 ориентаций) </li></ul></ul><ul><ul><ul><li>По окрестности 5 x5 </li></ul></ul></ul><ul><li>32 признака всего </li></ul><ul><ul><li>Min и мах значение каждого признака по 5x5 окрестности </li></ul></ul><ul><ul><li>а - № канала </li></ul></ul>
    49. 51. Применение леса
    50. 52. Обнаружение объектов
    51. 53. Обнаружение объектов Обнаружение объектов разных размеров
    52. 54. Обнаружение объектов На данный момент, около 2-6 секунд на изображение
    53. 55. Построение решения <ul><li>Выбор признаков </li></ul><ul><ul><li>Должны считаться быстро (пр. интегральные изображения) </li></ul></ul><ul><li>Метод сканирования изображения </li></ul><ul><ul><li>Сканирующее окно (быстро) </li></ul></ul><ul><ul><li>Особые точки (медленно) </li></ul></ul><ul><ul><li>Случайные области (медленно) </li></ul></ul><ul><li>Каскад </li></ul><ul><ul><li>Единственный метод достижения скорости работы в реальном времени </li></ul></ul>
    54. 56. Методы классификации <ul><li>Бустинг </li></ul><ul><ul><li>Объединяет классификацию и выбор признаков </li></ul></ul><ul><ul><li>Требуется большая обучающая выборка </li></ul></ul><ul><ul><li>Долго обучается </li></ul></ul><ul><li>SVM </li></ul><ul><ul><li>На практике часто работает лучше бустинга </li></ul></ul><ul><li>Решающий лес </li></ul><ul><ul><li>Быстрое обучение </li></ul></ul><ul><ul><li>Простая реализация </li></ul></ul><ul><ul><li>Хорошо работает при больших размерностях векторов </li></ul></ul><ul><ul><li>Вероятностное распределение на выходе </li></ul></ul>

    ×