l06 detection

58
Обнаружение объектов Сайт курса: http://cvbeginner.blogspot.com/ 1

Upload: victor-kulikov

Post on 05-Dec-2014

3.808 views

Category:

Technology


4 download

DESCRIPTION

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

TRANSCRIPT

Page 1: L06 detection

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

Сайт курса:http://cvbeginner.blogspot.com/

1

Page 2: L06 detection

Из прошлой лекции…

• Локальные особенности• Дескрипторы• Гистограмма градиентов• Инвариантность

2

Page 3: L06 detection

Задача: найти положение объекта по описанию

3

Slide credit: Виктор Лемпицкий

Page 4: L06 detection

Поиск пешеходов

4

Slide credit: Виктор Лемпицкий

Page 5: L06 detection

Поиск лиц

5

Page 6: L06 detection

Схожие задачи• Нахождение

конкретных объектов

• Семантическая сегментация

• Оценка конфигурации

6

Sadeghi и др. CVPR 2011

Page 7: L06 detection

План лекции

• Сопоставление по особенностям гомография и RANSAC

• SVM• Мешки слов, распознавание

объекта• Метод Виола-Джонс, Бустинг• Метод Далала-Тригса

7

Page 8: L06 detection

План лекции

• Общие идеи и принципы• Минимум математики• Пропущено очень много

интересных и важных направлений

8

Page 9: L06 detection

Поиск плоских объектов

9

Page 10: L06 detection

Проблема• Много выбросов• Точек не соответствующих модели

10

Page 11: L06 detection

RANSAC

11

Page 12: L06 detection

RANSACНа вход алгоритма поступает:• набор исходных данных X• функция M, позволяющая вычислить

параметры θ модели P по набору данных из n точек

• функция оценки E соответствия точек полученной модели

• порог t для функции оценки• Количество итерация k

12

Page 13: L06 detection

RANSAC• Первый этап — выбор точек и подсчёт модели.

– Из множества исходных точек X случайным образом выбираются n различных точек.

– На основе выбранных точек вычисляются параметры θ модели P с помощью функции M, построенную модель принято называть гипотезой.

• Второй этап — проверка гипотезы. – Для каждой точки проверяется её соответствие данной

гипотезе с помощью функции оценки E и порога t– Каждая точка помечается инлаером или выбросом– После проверки всех точек, проверяется, является ли

гипотеза лучшей на данный момент, и если является, то она замещает предыдущую лучшую гипотезу.

• В конце работы цикла оставляется последняя лучшая гипотеза.

13

Page 14: L06 detection

Пример

14

Page 15: L06 detection

Параметры RANSACРазмер выборки s• Обычно, минимальное количество, достаточное дляоценки параметровПорог T• Выбираем T так, чтобы вероятность инлаера (inlier) былаp (пр. 0.95)• Обычно гауссова модель шума с нулевым матожиданием иσ: t2=3.84σ2Количество выборок N• Выбираем N так, чтобы вероятность выбрать хотя бы одну

выборку без выбросов была не ниже заданной (например,0.99)

• Зависит от доли выбросов в данных (доля выбросов: e)

15

Page 16: L06 detection

Гомография

16

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

Page 17: L06 detection

Гомография

17

Page 18: L06 detection

Гомография

18

Вопрос: сколько точек надо чтобы оценить гомографию?

Page 19: L06 detection

RANSAC + модель гомографии

19

Mat H = cv::findHomography( obj, scene, CV_RANSAC );

Page 20: L06 detection

Пример использования гомографии

20

Page 21: L06 detection

Машинное обучение• Имеется участок изображения• Мы хотим ответить на вопрос есть

ли там объект или нет

21

Page 22: L06 detection

Линейная SVM

22

http://opencv.itseez.com/doc/tutorials/ml/table_of_content_ml/table_of_content_ml.html

Page 23: L06 detection

Линейная SVM

23

Page 24: L06 detection

Линейная SVM (реализация)// Set up training data float labels[4] = {1.0, -1.0, -1.0, -1.0}; Mat labelsMat(3, 1, CV_32FC1, labels); float trainingData[4][2] = { {501, 10}, {255, 10}, {501, 255}, {10, 501} };Mat trainingDataMat(3, 2, CV_32FC1, trainingData); // Set up SVM's parameters CvSVMParams params; params.svm_type = CvSVM::C_SVC; params.kernel_type = CvSVM::LINEAR; params.term_crit = cvTermCriteria(CV_TERMCRIT_ITER, 100, 1e-6); // Train the SVM CvSVM SVM; SVM.train(trainingDataMat, labelsMat, Mat(), Mat(), params); float response = SVM.predict(sampleMat); Вопрос: как должна выглядеть sampleMat?

24

Page 25: L06 detection

Линейно не разделимые данные

25

Cortes&Vapnik, ML’93

Page 26: L06 detection

Линейно не разделимые данные

26

Page 27: L06 detection

Линейно не разделимые данные

27

Page 28: L06 detection

Обобщенная схема классификации изображений

28

Page 29: L06 detection

Визуальные слова (Visual Words)• Что в нашем случае «слово» и «словарь»?• «Визуальное слово» – часто повторяющийся фрагмент

изображения («visual word»)• В изображении визуальное слово может встречаться

только один раз, может ни разу, может много раз

29

Slide credit: Антон Конушин

Page 30: L06 detection

Словарь• Словарь – набор фрагментов, частоповторяющихся в коллекции изображений

30

Page 31: L06 detection

Построение словаря

31

Page 32: L06 detection

Пример словаря

32

Page 33: L06 detection

Мешок слов (Bag of words)

33

Page 34: L06 detection

«Скормив» мешок слов SVM на какой вопрос мы смоем ответить?

34

Slide credit: Виктор Лемпицкий

Page 35: L06 detection

Поиск расположения

35

Page 36: L06 detection

Перерыв• Вопросы?

36

Page 37: L06 detection

Детектор Viola-Jones• P. Viola and M. Jones. Robust real-time face detection. IJCV

57(2), 2004

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

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

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

отбраковки окон без лица

37

Page 38: L06 detection

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

38

Value =Σ (pixels in white area) –Σ (pixels in black area)

Page 39: L06 detection

Пример

39

Slide credit: Антон Конушин

Page 40: L06 detection

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

• Как быстро считать прямоугольные суммы?

40

Slide credit: Антон Конушин

Page 41: L06 detection

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

41

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

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

Slide credit: Антон Конушин

Page 42: L06 detection

Бустинг• Y. Freund and R. Schapire, A short introduction to boosting, Journal of

Japanese Society for Artificial Intelligence, 14(5):771-780, September, 1999.

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

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

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

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

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

42

Page 43: L06 detection

AdaBoost

43

Демо по презентации

Начальные условия

Строим линейный классификатор минимизирующий ошибку

Обновляем веса у всех образцов, таким образом, чтобы у Правильно классифицированных веса уменьшались, у неправильноКлассифицированных увеличивались

Page 44: L06 detection

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

44

Slide credit: Антон Конушин

Page 45: L06 detection

Каскадное представление

45

Slide credit: Виктор Лемпицкий

Page 46: L06 detection

Каскадное представление

46

Slide credit: Виктор Лемпицкий

Page 47: L06 detection

Тренировочная выборка5000 лиц• Все фронтальные,

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

• Все нормированы300М отрицательных примеров• 9500 изображений без лиц• Большая изменчивость• Разные люди• Освещение• Поза лица

47

Slide credit: Антон Конушин

Page 48: L06 detection

РеализацияCascadeClassifier face_cascade; face_cascade.load(“haarcascade_frontalface_alt.xml”);cvtColor( frame, frame_gray, CV_BGR2GRAY ); equalizeHist( frame_gray, frame_gray ); face_cascade.detectMultiScale( frame_gray, faces, 1.1, 2, 0|

CV_HAAR_SCALE_IMAGE, Size(30, 30) );

48

Page 49: L06 detection

Примеры

49

Page 50: L06 detection

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

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

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

50

Page 51: L06 detection

Гистограммы Ориентированных Градиентов (HOG)

51

Slide credit: Виктор Лемпицкий

Page 52: L06 detection

Метод Далала-Тригса

52

Линейный SVM + HOG Slide credit: Виктор Лемпицкий

Page 53: L06 detection

HOG-фильтр

53

Slide credit: Виктор Лемпицкий

Page 54: L06 detection

Реализация OpenCVHOGDescriptor hog;hog.setSVMDetector(HOGDescriptor::getDefaultPeopleDetector());// run the detector with default parameters. to get a higher hit-rate // (and more false alarms, respectively), decrease the hitThreshold andvector<Rect> found;hog.detectMultiScale(img, found, 0, Size(8,8), Size(32,32), 1.05, 2);

54

Page 55: L06 detection

Далал-Тригс vs. Виола-Джонс• Для лиц Виола-Джонс работает почти идеально• Для пешеходов Далал-Тригс аккуратнее (но медленнее)• [Dollar et al. BMVC’09]: Виола-Джонс на правильных

каналах не хуже Далала-Тригса

55

Slide credit: Виктор Лемпицкий

Page 56: L06 detection

Проверить свои силы• PASCAL Visual Object Classes (VOC)

Dataset and Challenge

56

Page 57: L06 detection

Что осталось «за бортом»• Локализация объектов и Хаф-леса [Juergen Gall & Victor Lempitsky,

Class-Specific Hough Forests for Object Detection, CVPR 2009]

• Неявная модель формы [Leibe, Leonardis & Schiele IJCV’08]

• Обобщенное преобразование Хафа

57

Page 58: L06 detection

Вопросы

58