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

Post on 22-May-2015

2.632 views 1 download

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

Поиск объектов на изображении

Many slides adapted from P. Viola and S.Lazebnik

CSEDays-2010

Вспоминаем - «Мешок слов»

1. Извлечение особенностей

2. Обучить “визуальный словарь”

3. Квантуем особенности по словарю

4. Описываем картинку частотами «визуальных слов»

5. Варианты:• Поиск ближайшего• Многоклассовая

классификация

Найти интересные объекты (людей)

• Подход на основе скользящего окна (sliding window). • Сканируем изображение окном поиска и применяем классификатор к каждому положению

Поиск лиц

Требования к детектору лиц

• Скользящим окно необходимо оценить десятки тысяч возможных комбинаций масштаба / положения

• Лица же достаточно редкий объект – 0-10 лиц на картинке• Для достижения вычислительной эффективности

отрицательные примеры нужно отбрасывать как можно быстрее

• На изображении в 1МП сопоставимое с количеством пикселей число возможных положений лица

• Чтобы избежать ложных обнаружений (false positives) ошибка 2го рода должна быть ниже 10-6

Детектор Violo-Jones

• Основополагающий метод для поиска объектов на изображении в реальном времени

• Обучение очень медленное, но поиск очень быстр• Основные идеи:

• Интегральные изображения для быстрого вычисления признаков

• Бустинг для выбора признаков• Каскад (Attentional cascade) для быстрой отбраковки

окон без лица

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.

Признаки

“Прямоугольные фильтры”

Value =

∑ (pixels in white area) – ∑ (pixels in black area)

Пример

Source

Result

Интегральные изображения

• Значение каждого пиксела (x,y) равно сумме значений всех пикселов левее и выше пикселя (x,y) включительно

• Интегральное изображение рассчитывается за один проход

(x,y)

Вычисление интегрального изображения

Вычисление интегрального изображения

• Сумма по строке: s(x, y) = s(x–1, y) + i(x, y) • Интегральное изображение: ii(x, y) = ii(x, y−1) +

s(x, y)

ii(x, y-1)

s(x-1, y)

i(x, y)

MATLAB: ii = cumsum(cumsum(double(i)), 2);

Вычисление суммы в прямоугольнике

• Пусть A,B,C,D – значения интегрального изображения в углах прямоугольника

• Тогда сумма значений пикселов в исходном изображении вычисляется по формуле: sum = A – B – C + D

• 3 операции сложения для любого прямоугольника

D B

C A

Пример

-1 +1+2

-1

-2

+1

Integral Image

Выбор признаков

• Для окна поиска 24x24 пиксела, число возможных прямоугольных признаков достигает ~160,000!

Выбор признаков

• Для окна поиска 24x24 пиксела, число возможных прямоугольных признаков достигает ~160,000!

• В процессе поиска вычислять все признаки нереально

• Хороший классификатор должен использовать лишь маленькое подмножество всевозможных признаков

• Вопрос - как выбрать такое подмножество?

Бустинг

• Бустинг – схема классификации, основанная на комбинировании слабых классификаторов в более точный комитетный• Слабый классификатор должен быть лучше монетки

• Обучение состоит из нескольких этапов усиления (boosting rounds)• На каждом этапе выбираем слабый классификатор,

который лучше всех сработал на примерах, оказавшихся трудными для предыдущих классификаторов

• «Трудность» записывается с помощью весов, приписанных примерам из обучающей выборки

• Составляем общий классификатор как линейную комбинацию слабых классификаторов

Y. Freund and R. Schapire, A short introduction to boosting, Journal of Japanese Society for Artificial Intelligence, 14(5):771-780, September, 1999.

Слабые классификаторы

• Определяем слабые классификаторы на основе прямоугольных признаков

0

)( if 1)( tt

t

xfxh

окно

Значение признака

порог

• Определяем слабые классификаторы на основе прямоугольных признаков

• Для каждого этапа бустинга:• Вычисляем каждый прямоугольный признак на каждом

примере• Выбираем наилучший порог для каждого признака• Выбираем наилучший признак / порог• Перевзвешиваем выборку

• Вычислительная сложность обучения: O(MNK)• M этапов, N примеров, K признаков

Бустинг для поиска лиц

Бустинг для поиска лиц

• Первые два признака, выбранные бустингом:

Эта комбинация признаков дает 100% detection rate и 50% false positive rate

Бустинг для поиска лиц

• Классификатор из 200 признаков дает 95% detection rate и a false positive rate of 1 in 14084

Недостаточно хорошо!

Receiver operating characteristic (ROC) curve

Каскад (Attentional cascade)

• Начинаем с простых классификаторов, которые отбрасывают часть отрицательных окон, при этом принимая почти все положительные окна

• Положительный отклик первого классификатора запускает вычисление второго, более сложного, классификатора, и т.д.

• Отрицательный отклик на любом этапе приводит к немедленной отбраковке окна

FACEIMAGESUB-WINDOW

Classifier 1T

Classifier 3T

F

NON-FACE

TClassifier 2

T

F

NON-FACE

F

NON-FACE

Каскад

• Цепочка классификаторов с каждым уровнем становится более сложной, ошибка второго рода постоянно снижается

vs false neg determined by

% False Pos

% D

etec

tion

0 50

0

100

FACEIMAGESUB-WINDOW

Classifier 1T

Classifier 3T

F

NON-FACE

TClassifier 2

T

F

NON-FACE

F

NON-FACE

Receiver operating characteristic

Каскад

• detection rate и false positive rate каскада вычисляются как произведение соответствующих уровней ошибок каждого этапа

• A detection rate 0.9 и false positive rate порядка 10-6 достигается с помощью каскада из 10 этапов, если на каждом этапе detection rate примерно равен 0.99 (0.9910 ≈ 0.9) и false positive rate примерно 0.30 (0.310 ≈ 6×10-6)

FACEIMAGESUB-WINDOW

Classifier 1T

Classifier 3T

F

NON-FACE

TClassifier 2

T

F

NON-FACE

F

NON-FACE

Обучение каскада

• Задаем требуемые значения detection and false positive rates для каждого этапа

• Добавляем признаки до тех пор, пока параметры текущего этапа не достигнут заданного уровня• Приходится понижать порог AdaBoost для максимизации

обнаружения (в противоположенность минимизации общей ошибки классификации)

• Тестирование на отдельном наборе (validation set)

• Если общий уровень false positive rate недостаточно низок, добавляем очередной этап

• Ложные обнаружения на текущем этапе используются как отрицательные примеры на следующем этапе

Тренировочная выборка

• 5000 лиц• Все фронтальные,

уменьшенные до 24x24 пикселов

• Все нормированы

• 300М отрицательных примеров• 9500 изображений без лиц

• Большая изменчивость• Разные люди• Освещение• Поза лица

Производительность системы

• Обучение: “недели” на 466 MHz Sun рабочей станции

• 38 этапов, всего 6061 признаков• В среднем 10 признаков оцениваются для каждого

окна на тестовой выборке• “На 700 Mhz Pentium III, детектор лиц

обрабатывает одно изображение 384x288 пикселов за 0.067 секунды” • 15 Hz• В 15 раз быстрее сравнимого по точности

предшествующего метода (Rowley et al., 1998)

Пример работы

Другие задачи поиска объектов

Локализация черт лица

Определение пола

Поиск профилей

Поиск профилей

Признаки для поиска профилей

Резюме: детектор Violo-Jones

• Прямоугольные признаки• Интегральные изображения для быстрого

вычисления признаков• Бустинг для выбора признаков• Каскад классификаторов для быстрого

выбраковки отрицательных окон

Дескриптор HOG и поиск пешеходов

• HOG = Histogram of Oriented Gradients

Navneet Dalal, Bill Triggs,Histograms of Oriented Gradients for Human Detection, CVPR-2005

Основа работы – эксперименты с разными параметрами системы

uncentered

centered

cubic-corrected

Sobel

Slides by Pete Barnum

• Вычисляем карту градиентов

• В RGB (цвете)• берем максимум по каналам

• Рамка больше объекта!

• Иначе качество падает

• «Ячейки» (Cells)• Лучший 8*8 пикселов

• Гистограмма ориентаций

• «Взвешенные гистограммы»• Тестирование разного количества

ячеек• Идеально около 9, без ориентаций

Slides by Pete Barnum

•Нормализация по блокам• 2*2, 3*3 блоки из ячеек

• Блоки пересекаются по ячейкам, каждая ячейка участвует в нескольких блоках• Нормализуем вектора-дескрипторы• Несколько вариантов нормализации

Slides by Pete Barnum

•Параметры• 64*128 окно поиска• 7*15 блоков = 105 блоков• Каждый блок – 4 ячейки с гистограммой из 9 корзин• 38*7*15 = 3780 признаков

• Классификация с помощью SVM - (Support Vector Machine)• Машина опорных векторов

Slides by Pete Barnum

Линейные классификаторы• Найти линейную функцию (гиперплоскость) которые разделяет

положительные и отрицательные примеры

0:negative

0:positive

b

b

ii

ii

wxx

wxx

Какая гиперплоскость

лучше?

Машина опорных векторов• Найти гиперплоскость, которая максимизирует отступ

(margin) между положительными и отрицательными примерами

1:1)(negative

1:1)( positive

by

by

iii

iii

wxx

wxx

MarginSupport vectors

C. Burges, A Tutorial on Support Vector Machines for Pattern Recognition, Data Mining and Knowledge Discovery, 1998

Расстояние от векторадо плоскости: ||||

||

w

wx bi

Опорные вектора, 1 bi wx

Отступ равен 2 / ||w||

Машина опорных векторов• Найти гиперплоскость, которая максимизирует отступ

(margin) между положительными и отрицательными примерами

ГраницаОпорныевектора

C. Burges, A Tutorial on Support Vector Machines for Pattern Recognition, Data Mining and Knowledge Discovery, 1998

Оптимизационная задача:

Минимизируем

При условии yi(w·xi+b) ≥ 1

wwT

2

1

i iii y xw

Опорный вектор

веса

HOG: резюме

• Вклад авторов• HOG по ячейкам• Плотная сетка ячеек • Локальная нормализация

каждого блока, причем блоки пересекаются

• Фиксированное окно и ячейки • 1 кадр в секунду

• Разреженный перебор• ~800 окон на кадр

Violo-Jones + HOG = Cascade HOG

• Ускорение поиска людей за счет объединения идей• HOG блоки разного размера как признаки

– Нужно для каскада

– Маленькие блоки не репрезентативны на первых стадиях

– От 12*12 до 64*128 пикселей

– Всего 5031 блок

• Интегральные изображения для расчета гистограмм переменного размера

• Линейный SVM в качестве слабого классификатора• Бустинг для выбора признаков (слабых

классификаторов)

Qiang Zhu et. al. Fast human detection using a cascade of Histograms of Oriented Gradients, CVPR 2006

Параметры каскада

• (а) – признаки с наименьшей ошибкой• (b) – уровень 1 (с) – уровень 2, (d) – уровень 8

Cascaded HOG

• HOG + integral images + SVM + boosting• 12800 окон на изображение• 4-5 кадров в секунду

• 70-80X ускорение при том же качестве

• Behold the power of cascade and boosting!

Схемы голосования для поиска объектов

Juergen Gall, Victor Lempitsky: Class-specific Hough Forests for Object Detection. CVPR 2009

• Пусть «визуальные слова» будут голосовать за положение объекта!

Идея• Для каждого «слова» запоминаем:

• Принадлежит ли оно объекту• Вектор-смещения от слова к центру объекта

Тренировочное изображение

Визуальное слово с векторами смещения

Случайные окна + решающий лес

Решающий лес

На выходе: вероятность принадлежности объекту + распределение положений относительно центра

Признаки и бинарные тесты

• 16 признаков на каждый пиксель окна• 3 канала LAB• Первые производные по x и y• Вторые производные по x и y• HOG (9 ориентаций)

– По окрестности 5x5• 32 признака всего

• Min и мах значение каждого признака по 5x5 окрестности

а - № канала

Применение леса

Обнаружение объектов

52

Обнаружение объектов

Обнаружение объектов разных размеров

53

Обнаружение объектов

На данный момент, около 2-6 секунд на изображение

54

Построение решения

• Выбор признаков• Должны считаться быстро (пр. интегральные

изображения)

• Метод сканирования изображения• Сканирующее окно (быстро)• Особые точки (медленно)• Случайные области (медленно)

• Каскад• Единственный метод достижения скорости работы в

реальном времени

Методы классификации

• Бустинг• Объединяет классификацию и выбор признаков• Требуется большая обучающая выборка• Долго обучается

• SVM• На практике часто работает лучше бустинга

• Решающий лес• Быстрое обучение• Простая реализация• Хорошо работает при больших размерностях векторов• Вероятностное распределение на выходе