Разница между 1.84
и текущей версией
КаскадХаара.
@@ -1,8 +1,23 @@
-- Каскад Хаара
+= Каскад Хаара
+
+
+- Гильза
+
+ * Допустим, у нас есть один миллион изображений: полмиллиона изборажений мотоциклов и полмиллиона изображений не-мотоциклов (это называется ''обучающая выборка''). В реальности, кстати, такая чудная ситуация (доля мотоциклов равно доле не-мотоциклов) бывает чрезвычайно редко.
+ * Мы хотим научить компьютер отличать изображения мотоциклов от изображений не-мотоциклов. Для этого мы проводим обучение. Сначала мы «рассказываем» компьютеру, что является мотоциклом, а что не является. Это называется ''обучение с учителем'', если компьютер неким образом сам смог бы научиться распознавать мотоциклы от не-мотоциклов без внешней помощи, то это было бы ''обучение без учителя'': подробнее смотри статью: ...
+ * После обучения бы даём компьютеру миллионпервое изображение, а компьютер выдаёт 1 («ДА», «ИСТИНА», «это мотоцикл»), если это изображение мотоцикла, и -1 («НЕТ», «ЛОЖЬ», «это не-мотоцикл»), если это изображение не-мотоцикла. В реальной практике мы даём не одно изображение, а, допустим, сто тысяч (эти сто тысяч называются ''тестовой выборкой''). По тому, как компьютер научился разделять мотоциклы от не-мотоциклов, мы судим о качестве нашего обучения. Для этого чаще всего используются следующие показатели:
+ * доля верно определённых мотоциклов (на изображении мотоцикл, компьютер определил его как мотоцикл: TP — True Positive),
+ * доля верно определённых не-мотциклов (на изображении не-мотоцикл, компьютер определел его не-мотоцикл: TN — True Negative),
+ * доля неверно определённых не-мотоциклов (на изображении не-мотоцикл, но компьютер ошибся и определил его как мотоцикл: FP — False Positive): например, мы не научили различать мотоциклы и велосипеды,
+ * доля неверно определённых мотоциклов (на изображении мотоцикл, компьютер его определил как не-мотоцикл: FN — False Negative): например, мы не научили различать мотоциклы с человеком на нём, обучали только по мотоциклам без водителя.
+ * Таким образом, компьютер проводит разделение поступающего множество на два класса, или, говоря иначе, выполняет задачу ''классификации''.
+ * В данной статье рассматривается метод обучения с учителем, называемый «каскады Хаара».
+ * Потом, в режиме понимания слушателем, проводится описание алгоритма.
+----
Формально говоря, каскад Хаара выполняет задачу
''классификации'' ‒ разделения множества объектов на классы. В нашем случае
-объекты - это входные изображения. А класса всего два: искомый объект и все
+объекты — это входные изображения. А класса всего два: искомый объект и все
остальное. Говоря проще, каскад Хаара принимает на вход изображение и выдает
один из двух ответов: "да" и "нет".
@@ -15,12 +30,16 @@
времени: иногда даже по несколько дней.
----
- * «В данном случае используется обучение с учителем»: читатель вообще может не понимать, что такое обучение с учителем (и не знать, чем оно отличается от обучения без учителя). В одном научном журнале по точных наукам мне на фразу «это алгоритм обучения без учителя» мне ответили: «Мы не публикуем статьи по педагогике». -- АтрашкевичАндрей.
+ * «В данном случае используется обучение с учителем»: читатель вообще может не понимать, что такое обучение с учителем (и не знать, чем оно отличается от обучения без учителя). В одном научном журнале по точных наукам на фразу «Это алгоритм обучения без учителя» мне ответили: «Мы не публикуем статьи по педагогике». -- АтрашкевичАндрей
----
Правильно обученный каскад Хаара может достаточно быстро классифицировать
изображения и имеет неплохую устойчивость к шумам и другим отклонениям.
+----
+ * «имеет неплохую устойчивость к шумам и другим отклонениям»: неплохую по отношению к чему? что есть шум? что за отклонения? -- АтрашкевичАндрей
+----
+
-- Признаки Хаара.
Признак Хаара является набором прямоугольных областей изображения, примыкающих
друг к другу и разделенных на две группы. Возможных признаков Хаара огромное
@@ -176,7 +195,7 @@
пикселей в прямоугольниках $$A$$, $$B$$, $$C$$ и $$D$$. Тогда сумма значений пикселей
в прямоугольнике $$D$$ будет равна $$d - c - b + a$$.
--- ''''''Алгоритм AdaBoost''''''.
+- ''''''Алгоритм AdaBoost''''''.
Для выбора признаков, лучше всего классифицирующих изображения используется
алгоритм ''''''''AdaBoost'''''''' (adaptive boosting). Этот алгоритм построен на идее,
@@ -184,6 +203,10 @@
классификаторами'') можно составить, новый способ, выполняющий эту задачу
намного эффективнее.
+----
+ * Основная идея данного алгоритма состоит в следующем: из большого числа простых способов классификации (т. н. ''слабых классификаторов'') можно составить новый способ, более эффективный чем каждая из его составляющих по отдельности.
+----
+
В данном случае слабый классификатор ‒ это функция, которая принимает на вход
изображение, вычисляет значение соответствующего ей признака Хаара для этого
изображения и сравнивет это значение с порогом, возвращая либо $$0$$, либо $$1$$.
@@ -220,13 +243,13 @@
классифицированные изображения начинают сильнее влиять на значение ошибки.
Ниже приведен полный алгоритм:
---- Входные данные:
+-- Входные данные:
* $$h sub i$$ ‒ $$i$$-й слабый классификатор
* $$E sub i$$ ‒ $$i$$-й обучающий пример.
* $$y sub i$$ ‒ $$0$$, если $$i$$-й обучающий пример отрицательный, и $$1$$, если $$i$$-й обучающий пример положительный.
* $$n$$ ‒ количество обучающих примеров.
---- Переменные:
+-- Переменные:
* $$w sub i$$ ‒ вес, соответствующий $$i$$-му обучающему примеру.
* $$m$$ ‒ число отрицательных примеров.
* $$l$$ ‒ число положительных примеров.
@@ -235,7 +258,7 @@
* $$epsilon dot$$ ‒ минимальное значение ошибки слабого классификатора на текущей итерации.
* $$beta sub i$$ ‒ минимальное значение ошибки слабого классификатора на $$i$$-й итерации, представленное в другой форме (для оптимизации вычислений и экономии места).
---- Алгоритм:
+-- Алгоритм:
* Инициализировать веса обучающих примеров:
%EQ
left {
@@ -278,6 +301,6 @@
right ""
%EN
--- Каскад классификаторов.
+- Каскад классификаторов.
# КатегорияМашинноеОбучение