Инструменты пользователя

Инструменты сайта


ru:addons:capmonster:learning:module-teach

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Both sides previous revision Предыдущая версия
Следущая версия
Предыдущая версия
ru:addons:capmonster:learning:module-teach [2014/08/25 12:31]
adminsama
ru:addons:capmonster:learning:module-teach [2017/09/20 14:16] (текущий)
copper12
Строка 1: Строка 1:
 +====== 5. Создание и тестирование модуля ======
  
-==== Настройки ядра ​====+После того как все предыдущие шаги выполнены, мы можем приступить ​к обучению нашего модуля ​распознавания.\\
  
 +{{youtube>​FeWbKhkw9dw?​medium}}
  
-**Мощность ​ядра**+** Общая концепция ​обучения ** 
  
 +В начале рекомендуется выбрать ядро по-проще и сделать быстрое обучение с большим количеством (треть) символов для теста. Быстренько провести пару десятков итераций обучения и посмотреть что получилось. Скорректировать параметры и обучить еще раз. Если все хорошо,​ можно обучать сеть более мощной структуры и более качественно.\\
  
 +** Три типа ошибок распознавания символа **
  
-==== Настройки обучения ==== +1) Неправильное распознавание - это когда символ, действительно есть, но распознается он не правильно. Например мы показываем модулю символ "​а",​ а он находит там символ "​с"​.\\ 
-**Скорость обучения** - чем медленнее обучение тем оно более качественно. ​Не стоит сразу ​учить долго и качественно, попробуйте сначала +2) Пропуск символа - это ​когда символ ​есть, но модуль ​вообще не видит ​никакого символа. Т. мы показываем ему символ "​а",​ а модуль выдает, что тут ничего нет.\\ 
 +3) Ложное срабатывание - это ​когда символа нет, например между двумя символамино модуль там что-то находит.\\
  
-**Разброс центров символов**+====  Настройки ядра ==== 
  
-**Интенсивность обучения на ложных данных** +{{:​ru:​addons:​6c123421f6208dc73d61bad8a95fd190.png|}}
-**Доля обучающих символов**+
  
 +**Мощность ядра** - чем больше мощность ядра, тем лучше качество распознавания символа. Но меньше скорость работы ядра и, в итоге, больше процессорного времени тратится на распознавание каптчи. Не стоит сразу делать очень мощное ядро, попробуйте с самого слабого,​ возможно полученного результата распознавания вам будет вполне достаточно. При изменении этого параметра рядом вы можете увидеть оценку сложности ядра. Сложность ядра отражает количество процессорного времени,​ требуемое на отработку ядра в одной точке. Нет каких-то единиц измерения,​ просто число, которое поможет вам сравнить два ядра. Если у одного ядра сложность в два раза больше чем у другого,​ это значит,​ что и работать оно будет в два раза дольше при прочих равных условиях ). На сложность ядра, кроме мощности,​ также очень сильно влияет размер окна распознавания символа. В итоге, управляя этими двумя параметрами вы сможете создать ядро, которое устроит вас и по качеству распознавания и по скорости.\\
  
-==== Настройки ​распознавания ==== +==== Настройки обучения ==== 
-**Порог распознавания** +
-**Минимальное расстояние между символами в каптче** +
-**Каптч для теста** +
-**Частота тестирования** +
-***быстрое распознавание*+
  
 +{{:​ru:​addons:​2a240142a7649f35823baf33854a0d9f.png|}}
  
 +**Скорость обучения** - чем медленнее обучение тем оно более качественно. Но не стоит сразу учить долго и качественно. Попробуйте сначала обучить по-быстрому,​ вполне возможно,​ всплывут какие-то ошибки,​ вы их исправите и тогда можно будет обучить модуль более качественно. А, возможно,​ полученного результата будет вполне достаточно.\\
  
 +**Стартовый параметр обучения** - параметр,​ который отвечает за стартовую скорость обучения. Изменять его нужно только в том случае,​ если встретится одна из ошибок обучения,​ о которых речь пойдет ниже.\\
  
 +**Разброс центров символов** - при обучении собранные вами символы предъявляются ядру и их центр находится в той точке, которую вы указали. Но можно немного можно увеличить разброс этой точки. Это может привести к улучшению распознавания,​ а может и к ухудшению. Ниже, в разделе "​Тестирования модуля"​ написано когда этот параметр может быть полезен.\\
  
 +**Интенсивность обучения на ложных данных** - рекомендуется увеличить,​ если при распознавании или обучении ошибка распознавания символа (3) - ложное срабатывание встречается намного чаще других ошибок. Начинать обучение рекомендуется с параметра по-умолчанию:​ 10.\\
  
 +**Доля обучающих символов** - собранные вами символы будут участвовать ​ в обучении ядра, но не все. Часть из них пойдет на тест ядра во время обучения (первый график). Тест тоже очень важен, он помогает понять как проходит обучение и какие параметры можно исправить,​ чтобы более качественно переобучить ядро. В тесте должно быть хотя бы 30-50 символов чтобы понять как идет обучение.Отдавать большую часть символов на тест тоже не стоит, ведь чем больше символов участвует в обучении ядра тем лучше. Можно сделать так: первый раз обучить с большим количеством тестовых символов,​ а потом, когда все параметры будут подобраны,​ переобучить ядро почти на всех собранных символов,​ оставив на тест минимум из возможного.\\
  
 +==== Настройки распознавания ====
  
 +{{:​ru:​addons:​112bb6b24a396133780c7cb800d66a19.png|}}
  
-==== Три типа ​ошибок ​распознавания ​символа ==== +**Порог распознавания** - Когда ядру показывают область на капче (или при обучении), ​он выдает ​для ​каждого известного ему символа число в отрезке от 0 - если он не видит ​никаких ​признаков этого символа ​и до 1 - если он абсолютно уверен,​ что здесь в этой точке ​находится этот символ. ​Но нам нужно не число, а точный ответ, есть тут ​символ ​или нет. Для ​этого и нужен порог распознавания. Все ​ответы ядрагде он выдает для ​какого-то символа ​число больше,​ чем порог распознавания ​мы считаем за "да, тут есть этот ​символ"​. Если ядро ​выдает число меньшето мы символ не принимаем. Чуть ниже, ​в разборе ошибок обучения вы прочитаете как нужно манипулировать этим параметром, чтобы решить ​некоторые проблемы обучения.
-Есть три основных ​типа ​ошибок при распознавании символа:​\\ +
-1) Неправильное распознавание - это когда символ, действительно есть, но распознается он не правильно. Например мы показываем модулю ​символ ​"а", ​а он находит там символ ​"​с"​.\\ +
-2) Пропуск символа - это ​когда символ естьно модуль вообще ​не видит никакого символа. Т.емы показываем ему символ "а", а модуль выдаетчто тут ничего нет.\\ +
-3) Ложное срабатывание- это когда ​символа нет, например между двумя символамино модуль там ​что-то находит.\\+
  
 +**Минимальное расстояние между символами в каптче** - это очень полезный параметр,​ который не позволяет находить в районе уже найденного символа другие символы,​ тем самым сильно уменьшая ошибки распознавания символа (3). Откройте в Paint каптчу,​ отмасштабируйте ее  согласно вашим фильтрам и посчитайте минимальное расстояние (в пикселах) между двумя символами. Примерно посчитайте минимально возможное такое расстояние среди всех каптч. Полученное числом инициализируйте этот параметр. Если вы ошибетесь,​ то в тесте модуля распознавания вы узнаете как правильно скорректировать этот параметр. Переобучение при этом не требуется.\\
  
 +**Каптч для теста** - во время обучения постоянно будет проводится тест распознавания каптч, чтобы узнать текущий процент распознавания модуля. Много каптч - долгие тесты, но правильно подсчитанный процент,​ мало каптч - быстрые тесты, но не очень хорошая оценка модуля. Проведя пару-тройку обучений вы поймете,​ как вам ставить этот параметр,​ до того момента его можно не трогать.\\
  
-==== Интерфейс обучения ​==== +**Частота тестирования** - чтобы не тратить время зря тестирование процента проводится не каждый цикл обучения,​ а  раз в несколько таких циклов. Через сколько циклов ​обучения ​проводить тестирование устанавливается этим параметром. 
 +  
 +**Быстрое распознавание** - у очень сложных каптч (символы записаны вместе в одну строку без пробелов,​ сильно искажены,​ много помех, много видов символов) приходится выбирать большой масштаб,​ делать очень сложное ядро, выбирать большой разброс центов масс. Все это приводит к тому, что модуль распознавания работает очень долго. Этот парамтр включает некоторые механизмы оптимизации и помогает ускорить распознавание таких каптч в 5-10 раз. Но может немного пострадать % распознавания. Этот параметр можно установить сразу перед обучением - это ускорит тесты распознавания каптч, но может не совсем правильно показывать % распознавания. Можно попробовать эту оптимизацию уже на стадии тестирования модуля. Для исправления % распознавания,​ возможно,​ придется немного изменить настройки поиска центра масс. Вообще,​ советуем не включать эту оптимизацию на стадии обучения модуля,​ без нее вы узнаете максимальный возможный % распознавания,​ который можно получить на каптче. \\
  
 ==== Ход обучения ==== ==== Ход обучения ====
 +После установки всех параметров можно запустить само обучение,​ в этом случае откроется окно с графиками и прогресс барами отражающими текущий ход обучения. Графиков всего три.\\
  
 +{{:​ru:​addons:​69096bba1b9da843b9244390ec1df43d.png?​400|http://​wiki.zennolab.com/​lib/​exe/​fetch.php?​media=ru:​addons:​69096bba1b9da843b9244390ec1df43d.png}}
  
 +1) На первом отображаются результаты тестирования модуля на ваших собранных символах.\\
 +Зеленая линия графика показывает сколько всего символов было распознано верно.\\
 +Желтая - на скольких символах ядро не нашло ничего (вторая ошибка распознавания символов).\\
 +Красная - сколько символов было распознано не правильно (первая ошибка распознавания символов)\\
 +2) Второй график показывает результаты теста на ложное срабатывание\\
 +Зеленая линия показывает количество правильных ответов (в этих случаях ядро не нашло ничего и это правильно)\\
 +Желтая линия показывает,​ сколько раз ядро проявило подозрительную активность :)\\
 +Красная линия показывает,​ сколько раз ядро ошиблось (третья ошибка распознавания символа). \\
 +3) Третий график показывает примерный предварительный процент распознавания модуля. \\
 +
 +==== Остановка обучения ====
 +
 +{{:​ru:​addons:​c7e7430a4d021bc9a0e864beb1169579.png|}}
 +
 +Обучение можно прервать в любой момент,​ когда вы поняли,​ что ничего лучше уже не получится.\\
 +После прерывания обучения или его естественной остановки (после 300 циклов) нужно выбрать какое ядро вы собираетесь использовать в модуле:​\\
 +1) С лучшим % распознавания - в этом случае будет взято не последнее ядро, а то, на котором % распознавания был максимальным.\\
 +2) Последнее - если у вас в тесте распознавания использовалось мало каптч для теста (меньше 50) а % распознавания у последних ядер не намного меньше чем у ядра с максимальным %, то лучше взять последнее ядро.\\
 +3) Оставить ядро от прошлого обучения,​ если с прошлыми настройками вы получали больший процент распознавания. \\
 +
 +
 +==== Как должно быть ====
 +
 +{{:​ru:​addons:​4f5f8964ce8cdbc92994eafa7bbd07e7.png?​400|http://​wiki.zennolab.com/​lib/​exe/​fetch.php?​media=ru:​addons:​4f5f8964ce8cdbc92994eafa7bbd07e7.png}}
 +
 +При хорошем обучении графики должны выглядеть так:\\
 +На первом графике (распознавание символов) зеленая линия поднимается к максимуму,​ а желтая и красная опускаются к 0.\\
 +На втором графике (Ложные срабатывания) зеленая линия всегда на верху, красная чуть выше 0, а желтая раз в 5-10 выше красной. В редких случаях желтая линия может превышать зеленую,​ главное,​ чтобы красная была близко к 0.\\
 +На третьем графике постепенно растет % распознавания. Сначала он вырастет быстро,​ потом будет расти все медленнее.\\
 +Скриншот сделан на простой капче с правильно подобранными параметрами,​ имейте ввиду что графики у вас могут быть другими,​ начальный процент может быть меньше,​ подъем зеленой линии, снижение желтой и красной на первом графике может быть медленнее. Это все зависит от настроек обучения,​ сложности каптчи. Главное - тенденция. ​
 ==== Проблемы обучения и их исправление ==== ==== Проблемы обучения и их исправление ====
 +
 +__Самое первое правило - если что-то долго не получается и советы,​ написанные ниже, не особо помогают,​ просто спросите на форуме в разделе программы. Не тратьте свое время впустую!__
 +
 +Есть несколько проблем,​ которые вы можете встретить при обучении. Диагностировать их можно по графикам,​ отражающим текущий ход обучения:​\\
 +
 +1) **После начала обучения прошло уже с десяток-другой циклов,​ а зеленая и красная линии на первом графике не поднимаются**\\
 +Ядро не учится. Слишком маленький стартовый параметр обучения,​ запустите обучение заново,​ увеличив этот параметр в 10 раз. Повторите пока линии на графиках не начнут расти.\\
 +2) **При обучении красная полоса поднялась над зеленой и доминирует на первом графике**\\
 +* Возможно вы поставили слишком большой стартовый параметр. Уменьшайте в 10 раз, и начинайте обучение снова и так несколько раз пока положение не улучшится или не появится предыдущая ошибка. Если появилась предыдущая ошибка значит проблема не только в стартовом параметре или вообще,​ он тут ни при чем. \\
 +* Возможно слишком мало символов для обучения или фильтры для символов настроены не правильно. Перенастройте.\\
 +* Может вы что-то напутали при вырезании символов и указывали им не правильные названия. Проверьте коллекцию в разделе фильтров (там есть кнопка "​показывать текст",​ нажав ее вы сможете проверить соответствует ли нарисованный символ символу под ним написанному текстом)\\
 +3) **Красная линяя на первом графике довольно далеко от 0**\\
 +Слишком много ошибок распознавания символа типа (1)\\
 +Причин может быть много:​\\
 +* Собрано мало символов.\\
 +* Очень сложная каптча.\\
 +* Сеть слишком простая.\\
 +* Слишком быстрый режим обучения.\\
 +* Слишком большой разброс центра при обучении.\\
 +* Очень много видов символов (надеюсь,​ вы не китайскую каптчу с иероглифами распознаете :)\\
 +4) **Самая ​ первая проверка еще перед первым циклом обучения показывает слишком большое число Bad результатов (красная линия)** \\
 +Ничего страшного в этом нет, просто вы установили порог распознавания 0,5 или ниже. Положение должно исправиться уже после первого цикла обучения.\\
 +5) **Количество циклов перевалило за 100, а желтая линяя на первом графике все еще не падает к нулю**\\ ​
 +Ядро не видит слишком много символов - ошибка распознавания символов (2)\\
 +Возможные причины\\
 +* Слишком большой порог обучения. Нормальный порог обучения 0,5-0,6.\\
 +* Слишком маленький стартовый параметр обучения. Попробуйте увеличить в 3-5 раз\\
 +* Мало символов обучения,​ при том, что они сильно искажены.\\
 +* Слишком сложная сеть.\\
 +* Слишком быстрый режим обучения.\\
 +6) **На втором графике красная линяя поднялась слишком высоко**\\
 +Ядро слишком часто видит символы там где их нет - третья ошибка распознавания символов.\\
 +Увеличьте интенсивность обучения на ложных данных.\\
 +7) **На третьем графике процент распознавания 0 и не растет,​ причем все остальные графики в порядке**\\
 +Обучение идет хорошо,​ но каптча почему-то не распознается. Нужно смотреть что выдает модуль распознавания при тесте.\\
 +Доучите модуль так, чтобы графики 1 и 2 начали колебаться примерно у одних и тех же значений.\\
 +Остановите обучение,​ перейдите на вкладку тестирования модуля и запустите тест. Смотрите какие ошибки распознавания возникают и в разделе справки по тестирования модуля читайте как эти ошибки исправить.\\
 +
 +==== Настройки теста модуля ==== 
 +{{:​ru:​addons:​capmonster:​learning:​настройка_1.png|}}
 +
 +**Потоков** - количество потоков,​ в которых происходит тестирование капч.
 +
 +**Дистанция** - минимальное расстояние между символами в капче.
 +
 +**Тип сравнения** - если в тесте совпадает несколько слов, то тест считается успешным.
 +
 +**Минимальное расстояние между словами** - минимальное расстояние между словами в капче.
 +
 +**Многострочная капча** - параметр,​ необходимый для таких популярных капч как Solvemedia. В этом случае капча будет обрабатываться как многострочная.
 +
 +**Минимальное расстояние** - расстояние между левым нижним и правым верхним углом символов разных строк.
 +
 +**Ограничение длины ответа** - в зависимости от длины ответа некоторые ответы будут отбрасываться. Данное ограничение устанавливается только в Тесте модулей. После каждого изменения данного параметра необходимо заново делать подбор параметров.
 +
 +
 +
 +
 +
ru/addons/capmonster/learning/module-teach.1408969872.txt.gz · Последние изменения: 2015/07/14 15:50 (внешнее изменение)