cg2014_04_recognition (1124478), страница 2
Текст из файла (страница 2)
77%• Точность – 10 из 12, т.е. 83%Регулировка балансаПочти все алгоритмыклассификации допускаютрегулировку соотношения ошибкиI и II рода за счет варьированиянекоторого параметраПараметр b в линейномклассификаторе y = wx+bROC-криваяM. Mathias. et. al.Face detectionwithout bells andwhistles. ECCV2014ROC-кривая - зависимость между видамиошибок в зависимости от параметровROC кривая - Построение•Для различных значенийпараметра строится таблицаошибок•••Сам параметр в таблице неучаствует!Классификатор строится иоценивается на разных выборках!По таблице строиться наборточек в плоскости параметр1x параметр 2– Например, precision/recall– Каждая строка таблицы – точка•По точкам строиться криваяPrecisionRecall100%0%90%15%83%20%……0%100%Анализ ROC кривой• Площадь под графиком – AUC• Дает некоторый объективный показатель качестваклассификатора• Позволяет сравнивать разные кривые• Другой параметр аP – average precision• Средняя точность для всех значений полноты• По ROC-кривой мы можем выбрать параметр соптимальным для наших целей соотношениемошибокПримерM.
Mathias. et. al.Face detectionwithout bells andwhistles. ECCV2014По ROC-кривой мы можем выбрать параметр соптимальным для наших целей соотношением ошибокПоиск пешеходов••Нужно найти «пешеходов» (если есть) и выделить ихпрямоугольной рамкойПешеход (pedestrian) – это «категория», а не «объект»• Люди все похожи, но все разные• По простым признакам (цвету, площади) выделитьпешехода нельзяКлассификация изображения• Простая бинарная классификация может ответитьна вопрос «да» / «нет»• Например: «есть» пешеход на изображении или«нет» пешехода на изображении«Картинка ли это пешехода»?Обучающая выборка• А нам нужно знать, где ещё на картинке пешеход!Скользящее окно (sliding window)••••Возьмём «окно», пусть размером 64*128 пикселовСканируем изображение «окном»Применяем классификатор «пешеход?» к каждому окнуСкользящее окно – форма сегментации изображения!«Простые клетки» V1Вспомним, что первичная зрительная кора восновном занимается анализом краёв иградиентов в изображении«Ретинотопическая» организацияДля каждой области визуальногополя есть клетки, чувствительныек краям разной ориентации(отображены на рисунке цветом)Построим признаки,организованные по похожейсхеме!Оценка градиентов•Градиент изображения –направление максимальногоизменения яркости изображенияСила края:Направление градиента: -10 12021 0 1 -1 2 1000121 СобеляВычисление разностнойпроизводной через свёрткуВычисление градиента сосглаживаниемПризнаки через градиенты•Вычислим градиенты в каждом пикселе• Направление градиента• Силу градиента•Как использовать градиенты в качествепризнаков?• Можем использовать напрямую(слишком много, слишком шумные иизменчивые)• Статистика распределения по областиГистограмма ориентаций градиентов02p• Вычислим направление градиента в каждом пикселе• Квантуем ориентации градиентов на 8 ячеек(направлений)• Пометим каждый пиксель номером ячейки• Посчитаем гистограмму направлений градиентов• Для каждой ячейки посчитаем количество пикселов сномером этой ячейки• Можем нормализовать гистограммуГистограмма ориентаций градиентов02p• Histogram of oriented gradients (HOG)• Мощный класс признаков• Очень широко используется при анализеизображений• Устойчив к изменениям освещенности изображения• Т.к.
считаем только направления градиентовАлгоритм поиска пешеходов• Алгоритм поиска:• Скользящее окно поиска• Признаки «гистограммы ориентаций градиентов»• Бинарный классификатор «пешеход?» SVM• Хотя схема HOG + SVM изначально былапредложена для пешеходов, она успешноприменялась в дальнейшем к разнымкатегориями объектовNavneet Dalal, Bill Triggs,Histograms of Oriented Gradients for Human Detection, CVPR 2005Вычисление признаков0•••••Возьмём окно 64 x 128 пикселейРазобъём его на блоки 8 x 8 пикселейВсего будет 8 * 16 = 128 блоковВ каждом блоке посчитаем гистограмму ориентацийградиентов с 8 ячейками (8 параметров)Всего у нас получится 128 x 8 = 1024 признака2pОбучение классификатора• Соберём обучающую выборку фрагментомизображения с пешеходами и без• Для каждого фрагмента посчитаем вектор признакx и метку y• На полученной обучающей выборке обучимлинейный классификатор SVMSVM• Обучаем линейную SVM:f ( x ) wT x bw i i yi x i• Опорные вектора сположительными иотрицательными весами• Чем фактически в нашемслучае являются x ?Опорные вектораОтступSVM• Каждый опорный вектор –это вектор-признак одного изпримеров• Опорные вектора сположительными иотрицательными весами• Положительный вес –пример фрагмента,содержащего пешехода• Отрицательный вес –пример фрагмента,содержащего фонОпорные вектораОтступSVM• Разделяющая гиперплоскость задается как wx – линейнаякомбинация положительных и отрицательных примеров• Каждый признак – «мягкий шаблон» краёв, мы берём не чёткиекрая, а распределение ориентаций краёв в небольших областях• Похоже на многократную линейную фильтрацию изображенийSource: Deva Ramanan«Детектор пешеходов»• Получили работающий «детектор пешеходов»• Базовый алгоритм:• Сканирующее окно• Вычисление признаков (гистограмм ориентацийградиентов)• Классификация с помощью SVM• Базовый алгоритм можно существенно улучшитьпростыми способамиУсложнение схемы• Добавляем второй уровень:• Выделяем блоки 2x2 с перекрытием• Нормализуем гистограммы в каждом блоке• Это дает большую пространственную поддержку• Размер вектора = 16 x 8 (сетка) x 8 (ориентаций) x 4(блоки с перекрытием) = 4096Обучение детектора•Сколько на изображении объектов «пешеход» и сколькофрагментов фона?•Выделение объектов ассиметричная задача: объектов гораздоменьше, чем «не-объектов»Вдобавок, класс «не объект» очень сложный – нужно многоразных данных для обученияДля SVM желательно одинаковое количество и фона, и объекта••Обучение детектораКакие нам нужны примеры фона для получениянаилучшего детектора?Самые трудные!Как их найти?Опорные вектораОтступБутстраппинг (Bootstrapping)• Выбираем отрицательныепримеры случайнымобразом• Обучаем классификатор• Применяем к данным• Добавляем ложныеобнаружение к выборке• Повторяем• Смысл:• Ложные обнаружения для первого детектора – сложные (hardnegative)• Пусть наша выборка фона будет маленькой, но сложной ипредставительнойI.
Laptev "Improvements of Object Detection Using Boosted Histograms« ВMVC 2006Пример – поиск «торса»• Хотим построить детектор «верхней части тела иголовы»• Воспользуемся схемой HOG + линейный SVM сбустраппингом• Данные• 33 фрагмента фильмов из базы Hollywood2• 1122 кадров с размеченным объектами• На каждом кадре отмечены 1-3 человека, всего1607 людей, это маловатоПоложительные окнаПосмотрим, что отметили люди при разметке:Внимание: похожие положение и ориентация!Искаженные примерыДавайте «размножим» данные, «пошевелив» их:Небольшие сдвиги, отображения, повороты,изменения масштабаИскаженные примерыИз 1607 эталонных примеровполучили ~32000 искаженных(jittered) примеровСколько отрицательных примеровможно набрать из 1100 кадров?•Гораздо больше 32k.Воспользуемся схемойбутстраппинга для поиска«трудных примеров» фонаПервая итерацияСоберём случайные фрагменты фона:Первая стадияТрудныйотрицательныйпример•••••Обучим детектор по случайной выборке фонаПрименим его к исходным изображениямИщем ложные обнаружения с высоким рейтингомИспользуем их как трудные отрицательные примерыЗатраты: # количество изображений x поиск в каждомТрудные примерыТрудные примерыИзмерение качестваПосле перетренировкиСравнениеСравнениеСравнениеСравнениеРезюме алгоритма• Используем скользящее окно• Вычисляем вектор-признак на основе HOG• Разбиваем окно на ячейки• В каждой ячейке считаем гистограмму ориентацииградиентов• Обучаемый линейный SVM• Для обучения:• Размножаем (шевелим) эталонные примеры объектов• Используем схему bootstrapping для выбора примеровфона– На первой стадии берём случайные окна для фона– На следующих стадиях выбираем ложные срабатываниядетектора как «трудные» примерыРезюме лекции• Машинное обучение позволяет использоватьбольшое количество неинтуитивных простыхпризнаков• Методы и понятия••••SVM (Метод опорных векторов)HOG (Гистограммы градиентов)Скользящее окноБутстраппинг и размножение выборки.