ГЕНЕТИЧЕСКИЕ ЗАБАВЫВозможно кто-то помнит тред, где я накидал простенький алгоритм для печатания строки текста генетическим алгоритмом.Все отлично работало, но был важный нюанс, который имеется в реальных живых организмах, но не имелся в моем алгоритме.А именно, ДНК-КОД НЕ ПРЕДСТАВЛЯЕТ ЦЕННОСТИ САМ ПО СЕБЕ. А у меня представлял.Мой "днк-код" был искомой строкой текста, каждый "ген" - буквой. Каждая буква, каждый ген были ценны сами по себе, потому что это и был ответ.Но ИРЛ все не так. ДНК ничего не значит без механизма сборки, использования. ДНК должен влиять на что-то, но сам по себе он ничто.Еще, когда-то давно я накидал крайне простой и тупой метод взлома капчи пикрелейтед по маскам символов. Процент распознавания был около 50% на всю капчу. То бишь, каждый символ распознавался с довольно высокой вероятностью, но из-за накопления ошибок на каждом символе вся капча отгадывалась верно лишь через раз.А код процентов встречаемости символов хранился в небольших файлах.Теперь же я хочу улучшить результат распознавания генетическим алгоритмом.Но я не буду вносить никаких изменений в сам код распознавания, я лишь запущу генетический алгоритм на файле "днк" кода распознавания.Честно говоря, я не уверен, что все получится. Возможно, прогресса вообще не будет. А может и получится имба. Я не знаю.Посмотрим, че.
Так, смог запустить древний скрипт распознавания.Процент 50%, время - 3 секунды.Это 1200 файлах.Для успешной эволюции надо прикрутить многопоток, чтобы сократить время распознавания. Ибо чем быстрее оно будет, тем быстрее будет эволюция.
>>133318543 (OP)>я лишь запущу генетический алгоритм на файле "днк" кода распознаванияне уверен что понял тебя
>>133319453Вот фрагмент кода. Я даже уже не помню что значат конкретные символы, но суть в том, что там запоминается вероятность того, что каждый пиксель картинки будет цветным для каждой цифры.Я просто запущу генетическое изменение этого файла, таким образом, попробую обучить алгоритм без наличия обучающих картинок.0|0|0|0.00149031296572280180|0|1|0.0074515648286140090|0|2|0.0380029806259314440|0|3|0.264530551415797340|0|4|0.6579731743666170|0|5|0.89344262295081970|0|6|0.97466467958271240|0|7|0.96944858420268250|0|8|0.8792846497764530|0|9|0.303278688524590170|0|10|0.096125186289120710|0|11|0.0126676602086438150|0|12|0.00223546944858420270|0|13|0.00|0|14|0.00|0|15|0.00|0|16|0.00|0|17|0.00|0|18|0.00|0|19|0.00|1|0|0.0044709388971684050|1|1|0.0417287630402384540|1|2|0.41505216095380030|1|3|0.82041728763040230|1|4|0.68852459016393440|1|5|0.324888226527570770|1|6|0.142324888226527560|1|7|0.118479880774962740|1|8|0.54098360655737710|1|9|0.90611028315946350|1|10|0.64008941877794330|1|11|0.105812220566318920|1|12|0.008941877794336810|1|13|0.00149031296572280180|1|14|0.00|1|15|0.00|1|16|0.00|1|17|0.00|1|18|0.00|1|19|0.00|2|0|0.02459016393442623
>>133319744А, все, вспомнил.0|1|11|0.10581222056631892Походу первое число - цифра.Потом 2 координаты x и y. Затем вероятность.Буду менять ген-алгоритмом только последнее.Вообщем, все норм.В файле 6000 строк.В принципе, небольшой объем ДНК.Но эволюция будет происходить значительно, в тысячи раз более медленно, чем при набирании текста, ибо фитнесс-функция теперь гораздо более тяжелая, надо будет прогонять распознавания тысячи капч на каждом шаге эволюции для каждой особи.
Епт, ананасы, у меня тут очень странное дерьмо
Объясни еще раз, по какому алгоритму ты написал ДНК код?
>>133320765Ну охуеть, лол.Я оказывается был полным дебилом, когда тестил свой же алгоритм в прошлый раз.Дело в том, что у меня всего есть 4176 уже распознанных капч, которые я могу использовать в алгоритме.В прошлый раз я разделил их на 2 части - обучающую выборку и тестовую.Но в моем разделении был очень неочевидный нюанс.А именно, имена у файлов вида "0000_405601770". Где первые 4 символа - текст на капче, а далее рандомное число, чтобы имена не совпадали.Так вот. Я в прошлый раз разделил капчи на 2 части, ОТСОРТИРОВАВ ИХ ПО ИМЕНИ.Какой же я эпический долбоеб.В итоге я получил, что алгоритм обучается на первых 5-и цифрах, а тестится на последних 5-и. В итоге ожидаемый рейт в 50% и получился.Когда я отсортировал их по дате и разделил так, что в обоих выборках были капчи со всеми возможными цифрами я получил гораздо более высокий рейт.В первом тесте (обучающая выборка 3к капч, тестовая 1к) - рейт аж 97%. Пиздос.Во втором наоборот (обучающая 1к, тестовая 3к) рейт 76%.Ну охуеть, оказывается 4 года назад я написал превосходный алгортим для обхода такого вида капчи, но даже не понял этого.Охуеть
Я один тут ощущаю себя дауном?
>>133321528Нет, просто ОП не хочет пояснять. Поясни, ОП!
>>133318543 (OP)Туалетный, когда на пд зайдёшь?
>>133321314>>133321528Есть капча, надо распознать.Капча очень простая, шум минимален и примитивен, шрифт один, искажений нет, положение цифр примерно одинаковое, наплывов нет. Из сложностей только наклон.Тут отлично подойдут маски символов.Для начала, разделяем капчу на 4 части, чтобы распознавать каждую цифру отдельно.Допустим, мы получим для каждой цифры рабочую картинку разрешением 20x30 пикселей, скажем. Всего 600 точек. Мы прогоним тысячу капч через алгоритм и узнаем СРЕДНЮЮ ВЕРОЯТНОСТЬ ТОГО, ЧТО ДЛЯ ДАННОЙ ЦИФРЫ В ЭТОЙ ТОЧКЕ БУДЕТ ЗАКРАШЕННЫЙ ПИКСЕЛЬ.Алгоритм обучился.Затем берем тестовую капчу, алгоритм берет первую цифру, смотрит где закрашенные пиксели и вычисляет, для какой цифры совпадают вероятности в точках.Для обучения алгоритма нужны капчи, чем больше, тем лучше.Фишка в том, что генетическим алгоритмом можно обучить алгоритм распознавания НЕ ИМЕЯ КАПЧ.В этом вся магия и должна быть.
>>133321897А в какой среде ты все это кодишь?
>>133322091>А в какой среде ты все это кодишь?Там же видно все, консольное Java-приложение.
оп, ты здесь ещё?буду мониторить ответ (ну, подписался всмысле)
>>133323091Я тут. Но сейчас возьму паузу на полчасика, есть пара дел, которые надо сделать. Потом попробую прикрутить генетический алгоритм к распознавалке капчи.Вообще, моя изначальная цель (улучшить качество) больше не имеет смысла. У меня итак очень высокий рейт, на 3к капч уже 97%, что просто ПИЗДЕЦ КАК ДОХУИЩА. Это вероятность на символ выше 99%. А я даже не нейтрализовывал наклоны.Теперь цель именно тестануть генетический алгоритм в новой ипостаси.
Поясните нафане,чтоэта за хуита у вас
>>133318543 (OP) Хуйня какаято, вон в соседнем треде мемасы постят, туда пойду
>>133323793Ну и пошел нахуй,нивидишь умные люди сидятъ
>>133323531так стой,объясни, я нихуя не понял за днк.>просто запущу генетическое изменение этого файлакак ты это пилить будешь? может ты имел ввиду не генетику (ибо я не понимаю где у тебя связь с понятиями генетики, что у тебя в качестве X а что Y, ну и т.п.), а эволюцию кода, мол самосовершенствование на основе удачной выборки?
Оп сраный шизоид
Оп в треде. Скоро вернусь
>>133323917
^
>СРЕДНЮЮ ВЕРОЯТНОСТЬ ТОГО, ЧТО ДЛЯ ДАННОЙ ЦИФРЫ В ЭТОЙ ТОЧКЕ БУДЕТ ЗАКРАШЕННЫЙ ПИКСЕЛЬ.>рейт аж 97%. Пиздос>Капча очень простая, шум минимален и примитивен, шрифт один, искажений нет, положение цифр примерно одинаковое, наплывов нет. Из сложностей только наклон.Наверняка этот алгоритм даже на хуекапче соснет.
>>133318543 (OP)>распознавание капчиА нейпросеть заюзать религия не позволяет?
ОП, ты где?
Мои дела оказались дольше, чем я думал, но вечером займусь тредом.
Ебанутый ОП, запили нейронную сеть, которая будет новой бордой.
>>133328793Ну вообще нет, лол. Шрифт одинаковый, искажений нет, шума нет.В хуекапче главная сложность - разделение символов, ибо есть наплывы и повороты.Но распознавание хуекапчи - не тема данного треда.Здесь стоит цель обучить распознавалку генетическим алгоритмом.
Можно и нейронку сделать, но это, опять же, не тема данного треда.
ОП серьёзно нужно погуглить терминологию которую он юзает.
Бамп
Где оп
Оооп
Да я тут
Распиши модель генетического алгоритма в контексте механизма подбора капчи, я не понимат
>>133337607Два чая.Как генетика в целом работает - понятно, а в контексте подбора капчи как-то не очень. Если ты собираешься просто несколько раз обучать прогоном одной и той же капчи, так и напиши.
Думали тред утонул? А вот и нихуя
Все распишу, аноны, ближе к ночи все будет
>>133337607Что непонятного? Все просто же.Конфиг алгоритма подбора хранится в файле, где для каждого пикселя задана вероятность его нахождения в черном цвете.Генетический алгоритм использует этот файл как ДНК, 1 пиксель - 1 ген. Мутацией значение вероятности меняется на некоторую величину.В итоге алгоритм обучается.
>>133337783>обучать прогоном одной и той же капчиЭто вообще как?
>>133341051>В итоге алгоритм будет подгоняться под значения тестирующей капчи.
>>133341243Но ведь я обучаю на одной выборке, а тестирую-то блядь на другой. Я по-твоему совсем тупой что ле?
>>133341243Ну в самом процессе эволюции ясен хуй алгоритм будет поддрачиваться под конкретную выборку.Но затем тестироваться будет на другой, про которую он ничего не знает.Ну а так-как алгоритм все же не отпизды написан, он должен будет хорошо отработать и на капчах, которых доселе не видел.
>>133342135>>133342433Итак, как я понял: у тебя есть 4к капч.Ты берешь 3к капч с заранее известными ответами.Натравливаешь свой алгоритм на эти капчи, допустим 500 раз(дабы получить усредненные значения процентов на каждый пиксель в каждой цифре каждой капчи).Эта информация - считается за родительскую.Далее генерируешь из родительской информации несколько новых потомков, с рандомными изменениями.Натравливаешь на (3к тренирующих капч|1к тестовых капч), выбираешь лучшего потомка.Повторяешь пока не заебешься\не достигнешь нужного улучшения с момента генерации.Я правильно расписал?Тогда вопрос про натравливание 3к тренирующих капч или 1к тестовых капч?
>>133344539Ну почти.Вопрос о том, брать ли за изначальную популяцию обученную классическим методом днк больше не стоит, т.к. я исправил свою прошлую ошибку и теперь получил высокий рейт и без генетического алгоритма.Короче.1. Генерю отпизды исходный файл со значениями вероятностей пикселей (или беру файл, где везде нули).2. Натравливаю на него ген-алгоритм, через N поколений получаю высокий рейт.Сейчас же у меня обучение классическое, без ген-алгоритма:1. Натравливаю алгоритм высчитывания вероятностей пикселей на 3к капч. Получаю файл "днк", "мозгов" и т.п. со значениями вероятностей пикселей.2. Тестю это говно на оставшихся 1к капчах, которые не участвовали в обучении (для них не высчитывались вероятности).
Вообще могу на гитхаб залить, если кому-то интересен сам код.
>>133347050>Натравливаю на него ген-алгоритмНо ген алгоритм должен с чем то сравнивать свои ответы (истина\ложь), т.е. юзаются те же 3к капч?>Сейчас же у меняВроде весь тред был о том, что ты пилишь ген-алгоритм...>на гитхаб залитьМного кода? Скок писал?
>>133347373И таки почему не заюзать уже готовые вероятности пикселей дабы приблизить начальную генерацию поколений к идеальной?
>>133347373>Но ген алгоритм должен с чем то сравнивать свои ответы (истина\ложь), т.е. юзаются те же 3к капч?Что блядь за "те же"?Ген-алгоритм будет ебать одну выборку, когда доебет и достигнет на ней высокого рейта, я тестану полученную днк на другой выборке.>Много кода? Скок писал?Когда много, писал давно, несколько лет назад. В основном там говнокод, но мне сейчас поебать, я взял этот проект капчей, ибо мне неохота писать с нуля нейронку, когда для теста ген-алгоритма на реальной задаче подходит и этот проект капчей.
>>133347699> почему не заюзать уже готовые вероятности пикселей дабы приблизить начальную генерацию поколений к идеальной?Изначально и был такой план, изначальный рейт был 50% успешных распознаваний.Но затем я обнаружил, что использовал для обучения и для теста некорректные выборки, где преобладали какие-то конкретные цифры в капчах и алгоритм хорошо обучался одним цифрам, но плохо другим.Затем я взял корректные выборки, где все цифры представлены равномерно и получил рейт 97% успешных распознаваний при обучении на 3к капчах и тесте на 1к.Если взять для обучения лишь 1к, а тестить на 3к, то рейт 76%Короче, при рейте 97% я не вижу смысла пихать на него ген-алгоритм, там итак все идеально. А пара лишних процентов роли не играют.Поэтому, я хочу скормить ген-алгоритму отпизды сгенеренный или пустой файл, чтобы увидеть, сможет ли ген-алгоритм, достигнуть хорошего рейта.
Что за заумную херню вы тут разгоняете? Есть адаптированная версия для тупых?
>>133347373>Вроде весь тред был о том, что ты пилишь ген-алгоритм...Сейчас прогон 1к капч через распознавалку занимает 3 секунды, это слишком много.Сейчас занят написанием многопоточного теста, чтобы уменьшить время до долей секунды.Затем уже прикручу ген-алгоритм и посмотрю, что получится.
>>133347702>будет ебать одну выборкуВот это я и хотел услышать.>Что блядь за "те же"?В том плане что если бы ты взял уже посчитанные вероятности(те что процент распознавания 97%) на половине капч, и потом, на той же выборке капч, ебал бы ген-алгоритмом.Что ты и расписал в последнем посте.К чему был и мой комментарий:>>133337783>собираешься просто несколько раз обучать прогоном одной и той же капчиимея ввиду выборку.
>>133348201В общем под>те жея имел ввиду случай, когда ты уже просчитанные проценты запихиваешь под ген-алгоритм. Но ты этого делать не хочешь. Я понял.Хотя можно было бы потыкаться с теми 50% данными.
>>133348086Есть капча.Оп программно её распознает.Оп сначала неправильно разделил обучение и тест, из-за чего всё пошло по пизде и только 50% капч распознавалось.Затем он исправил разделение и распознавание улучшилось до 97%.Из-за изначальных 50% оп думал пилить генетический алгоритм читай обучение пк как ребенка, но немного задвинул эту идею в связи с обнаружением своей ошибки и улучшением качества распознавания до 97%.
>>133348163>занимает 3 секундыНебось картинки грузишь какими-то йоба библиотеками?
>>133348446Я не задвинул эту идею, я лишь не хочу юзать в качестве начальной популяции файл с рейтом 97%, иначе это исказит смысл и суть эксперимента.
>>133348573>не хочу юзать в качестве начальной популяции файл с рейтом 97%А на 50% файл не думаешь натравить? Или ты хочешь именно с нуля начать?
>>133348567import java.awt.image.;import javax.imageio.;Больше ничего.Просто там дальше препроцессинг картинок идет каждый раз (а не 1 раз перед началом, как следовало бы), да и вообще код говнявый.Просто этот проект я писал несколько лет назад, до этого я вообще капчи не распознавал, поэтому на такие нюансы было похуй(да и тогда цель была в распознавании 1-й капчи на сайте и время распознавания 1-й капчи очень даже быстрое).Короче код хуевый и я сейчас пытаюсь это несколько исправить.
>>133348446Ага, понятно. А как именно машина распознает цифры? Считывает пиксели, а дальше что? Выстраивает их в фигуры, подгоняет их под фигуры чисел?Про генетический алгоритм погуглил. Нихрена себе, какие штуки, оказывается, бывают.
>>133348701Ну вообще можно и на непустой файл натравить, обучить, допустим, на 100-200-500 капчах, чтобы получить некоторый начальный рейт.Вообще посмотрим, зависит от скорости обучения, которую я пока не знаю.
>как именно машина распознает цифры?>>133348821 -> >>133321897
>>133348774>Просто там дальше препроцессинг картинок идет каждый раз (а не 1 раз перед началом, как следовало бы), да и вообще код говнявый.С этим то да, проблема... Это бы и исправлял, чем многопоточность пилить.>>133348821На сколько я понял выше по треду, оп грубо говоря берет все возможные изображения цифры (например нуля), накладывает друг на друга и записывает в каких местах чаще всего бывают закрашенные пиксели.Под словами берет все возможные изображения цифры я имею ввиду берет последовательно каждую капчу, разрезает на цифры и дальше уже 'накладывает'А при распознавании, смотрит какие пиксели закрашены, смотрит какова вероятность что это именно подходящая цифра(наибольшее совпадение) и отдает наиболее вероятный результат.
>>133349284>>133349202Ага, понятно. Спасибо.А можно ли проанализировать кучу известных картин, а затем создать универсальный шедевр, подставив на каждый пиксель цвет, который там чаще всего встречается?
>>133349610Отчего бы нет? Можно.
>>133349678Блин, вот же круто.Жаль, что я гуманитарий.
>>133349766Как будто гуманитарий не может осилить питон и написать нечто подобное.
>>133321897>Фишка в том, что генетическим алгоритмом можно обучить алгоритм распознавания НЕ ИМЕЯ КАПЧ.Где-то тут парадокс... Как же алгоритм будет узнавать приблизился он к ответу или нет?
>>133349813А я ведь пытался.
Оп ведь поехавший, да?
>>133349884Единственная ~проблема в этом, что размер (в пикселях) изображений наверняка будет различен. И как с этим быть...
>>133349996Уёбывай в вк
>>133349996Что хочет натравить ген алгоритм на пустой файл имея всего 1 жизнь в запасе и жаву как яп? Да.А в целом задача интересная.
>>133350030Хз. Разбивать картинку по секторам?
>>133350118Ну такое...Подумал о том, что можно ресайзить их под одно... хотя это будет слегка убого.А еще, цвет пикселя есть ни что иное как 3 канала по 256 оттенков т.е. всего цветов 256^3, таким образом определение наиболее частого цвета будет... немного странным ибо будет мало совпадений и будет тяжело определить наиболее частый цвет на малой выборке.
>>133350608А разве нельзя сократить число это? Я помню, на моей первой винде 2000 был режим, когда цветов оставалось всего, вроде, 256.
>>133349610Можно, но выйдет говнище, тупо бесформенное цветовое пятно.
>>133351963>универсальный шедевр>тупо бесформенное цветовое пятно.Ну он так и сказал.>>133350813Да наверн можно.
>>133349875>Как же алгоритм будет узнавать приблизился он к ответу или нет?Да, тут я уже понял, что обосрался.Но по идее, это должно выстрелить на нейронках со сложными топологиями, методов обучения которых не существует.Но до такого астрала я пока не дошел.Движусь постепенно.Первой версией ген-алгоритма вообще был простой набор текста, сейчас вон уже к капче прикручиваю. Нейронки будут потом.Вообще, ген-алгоритм идеально подходит туда, где проверить корректность ответа можно, но самих ответов нет.Как ирл проверяется, можешь ли ты выжить, но готового рецепта выживания нет.
>>133350081>1 жизнь в запасе и жаву как яп?Еще раз обращаю внимание, что не решаю конкретную прикладную задачу, я лишь обучаюсь, хочу наглядно все сам увидеть.Поэтому до идеала тут далеко и я это осознаю. И не вижу в этом проблемыТак-то понятно, что на реальных задачах надо на плюсах или сиське все писать, гонять на какой-нибудь куде, а препроцессинг должен быть произведен 1 раз в начале.
>>133350030>единственная ~проблема в этом, что размер (в пикселях) изображений наверняка будет различенТоже мне проблема. Подгонять под 1 размер и все.Так-то, насколько я помню, на конкретно этой капче нужды в этом нет, ибо размер символов всегда одинаков, даже учитывая наклоны.Я там режу пикчу по секторам, оставляя немного пустых пикселей по краям, вообщем, размер кусков совпадает всегда.
>>133352244>проверить корректность ответаЕще раз.Проверить корректность ответа, не сравнивая его с готовым ответом.Вообщем когда есть ситуация, когда я какой-то хуйне скармливаю образец и она говорит мне, хорош он или нет, но идеального образца она мне дать не может.
>>133352244>Но по идее, это должно выстрелить на нейронках со сложными топологиями, методов обучения которых не существует.Вот сейчас резко сложно стало.>Первой версией ген-алгоритма вообще был простой набор текстаВероятно я был в том треде, и даже загорелся идеей и написал сей алгоритм на следующий день, кстати на сях. Но вероятно я не совсем правильно реализовал его, поэтому у меня он работает очень долго, ибо я делал 10 детей, и у каждого по 3 мутации, однако не запоминал какие мутации ближе к решеню, поэтому мутации могли ухудшать итоговый результат. А еще отец всегда умирал, не зависимо от того был он ближе к решению или нет..>Вообще, ген-алгоритм идеально подходит туда, где проверить корректность ответа можно, но самих ответов нет.Как ирл проверяется, можешь ли ты выжить, но готового рецепта выживания нет.Вот это ты красиво сказал.>>133352497Одно дело подгонять под размер капчу (которая итак одного размера), другое дело картины.
>>133352764Таки проебался с разметкой.
Бамп. Пишу многопоток
>>133355942Эх, а вот в шарпике пишешь в функциональном стиле, а потом просто добавляешь asparallel и готово...
>>133355942Кстати, оп, напомни о себе: кто по жизни студент али работник, какой лвл, сколько лет прогаешь, какие языки?
Написал многопоток, но он чет почти не прибавил производительности. Хз что за хуйня.На 1 потоке 3к капч распознается за 7 секунд в среднем.На 10 потоках - за 4.5.На 50 - за 4.5Вот что за хуйня?Походу ограничение в чем-то другом.Или в скорости чтения файлов с диска (скорее всего)Или в том, что я гоняю по 100 килобайт инфы мозга туда-сюда при каждом распознавании.Но по идее, ява должна нормально с памятью работать и держать файл мозга в кэш.Думаю дело в диске.По-хорошему надо 1 раз все файлы в память загрузить и дальше дрочить.
>>133357399>Походу ограничение в чем-то другом.Так замерь время действий, будь то отдельно общее время на чтение с диска\гоняние 100кб.
>>13335639422 лвл, пидорнули из вуза, пока до осени сижу дома пинаю хуи, потом иду защищать сапоги.Прогаю лет с 16, языки - пхп, немного жс, ява.
>>133357935Блин, ты прав. Чет я сам не допер тупо померить, хотел уже переписывать.Так и сделаю.
>>133358015ммм... 21 лвл, планирую выкатится из вуза ибо заебался. Прогаю с ~15 курсы шарпа, могу писать на многих языках, не могу выбрать в какой углубится и вкатится на работу.>>133358143Я так и сделал в моей реализации, когда предполагал что вывод состояния каждые n итераций занимает много времени.практически все посты с сагой в этом треде-кун
Ну охуеть теперь.1 пик: 1 тред, 7 секунд распознавание, 5.5 чтение с диска.2 пик: 10 тредов, 5 секунд распознавание, 41 чтение с диска.3 пик: 2 треда, 5 секунд распознавание, 7.5 чтение с диска.Особенно интересует 2 случай. Это вообще как? Почему общее время чтения 41 секунда? Это что, 10 тредов мешают друг другу и ждать приходится тип еще дольше?Я нихуя не понял, если честно.Только то, что чтение с диска таки занимает львиную долю времени
>>133358336>вывод состояния каждые n итераций занимает много времениЛил, таки да, много консоль дрочить - тоже весьма затратно
Ну это вообще пиздец.540 секунд общего чтения. 150 тредов.Где я проебался?Плюсование времени находится в синхронизированном методе.Что-то тут нечисто.
>>133359402>много консоль дрочитьОбщее время вывода было примерно 1 к 600 от всего времени работы, так что я понял что дело не в нем.>>133359357Вполне возможно что треды мешают друг-другу, треды как таковые, я думаю, имеют свой доступ, но система обрабатывает их в одном потоке.... Можешь запилишь уже загрузку всего в память? Или хотя бы части...Да и может ты с расчетом времени проебался. Очень тонкий реквест кода.
>>133359907Держи: https://github.com/f77/capcha_1_remaster_width_genetic_algorithmТам же еще и реп с первой версией ген-алгоритма, печатающего текст.А я на сегодня, пожалуй, закруглюсь. Уже поздно, да и голова не варит уже.Завтра продолжу.Надо будет написать единоразовую загрузку в память всех капч, а дальше уже можно и, наконец-то, прикрутить ген-алгоритм.
>>133359907Конкретно код подсчета времени, да и само чтение (да еще и препроцессинг походу) в файле https://github.com/f77/capcha_1_remaster_width_genetic_algorithm/blob/master/src/bugaga/Decoder.java
>>133360899>>133360973Открыл я гитхаб и, как обычно со мной бывает, уронил челюсть.>curl, antigate, proxy...ух...Еще и все методы откоменчены, охуенно.
>>133360899В общем спокойной тебе анон, хорошего кода и поменьше багов.Боюсь с тобой мы больше не увидимся. Хотя как знать, мир то маленький.
>>133361183Это плохо или хорошо?Так-то там либа моя лежит еще, там перделки на все случаи жизни.
>>133361663Просто не ожидал увидеть там курлы, поддержку прокси...А про челюсть - так это всегда так, когда я общаюсь с человеком, а потом вижу его код больше чем в 5 файлах меня это пугает. Ага, не писал серьезных проектов.
Не вкурил почему днк не несет информации. Он несет инверсионную информацию для РНК. А потом уже преобразуя его в нормальный на его основе синтезиуются клетки (Даже люди! Лол да?) поясни мне оп, или ты хуй
>>133361811Да курлы и прокси не юзаются же в этом проекте.Так-то там 5 основных файлов и наберется.
>>133362169А что, на антигейте много за капчи платили?
>>133362466Да я не ебу, это я за них платил всегда.Распознавание 1к капч 1 доллар.Раньше збс сервис был.А сейчас его наводнили боты, в итоге качество распознавания упало с 99% до процентов 50 и 30 на сложных капчах.
>>133362632>1к капч 1 долларМда, даже напрямую работать не очень.Ну и черт с этими капчами.
>>133323595Гугли циклический ноль.
О чём вы тут говорите? Вишу слова прокси и многопоточность. Если пишете многопоточную вайпалку для двача, то скиньте потом в общий доступ. И сразу дайте ссылку куда потом скинете. Капчу уже разгадал.
Не тонем
>>133370149На ротан тебе могу только скинуть
>>133370397я и сам могу
Стратегический бамп
>150 потоковУ тебя что 150 процессоров?
мне кажется ОП пиздит рандомную хуйню чтоб все остальные чувствовали себя даунами)
ПРОТЕИНОВОЕ БЕССМЕРТИЕ.ВЫЧИСЛЯЙТЕ ГЕНЫ, ДЕВОНЬКИ...
Оп не разбирается в теме, термины невпопад, консоль пишет рандомную хуйню. Разбегаемся.
Дневной, содержание ракодетей с вк в треде увеличилось.
Лишний бамп никогда не повредит
>>133376015Процессор далеко не главный пожиратель времени в этом проекте.
Начал писать единоразовую загрузку в память всех капч.А дальше уже на каждом шаге эволюции буду скармливать рекогнайзеру уже загруженную обработанную капчу.И таки многопоток должен будет возыметь эффект.
>>133388016Да епта, смысл запускать 150 потоков, если у тебя максимум 8 физических ядер, куда больше-то
Прикрутил единовременную загрузку в память всех капч.Только утилиты подсчета времени нормальной нет, надо написать, чтобы точно все засечь
>>133394777Да ты какой-то тупой блядь, ты понимаешь, что в программе дохуя и других дел бывает, кроме как процессором шуршать?
>>133395354Каких например
>>133395456Чтение/запись на диск, перегон информации в оперативной памяти, работа с сетью.
>>133395755Все это требует процессорного времени. Память сама себя не перегонит
>>133395856>Все это требует процессорного времени.thisЗашел и ушел. Вернусь часов в 9 по мск, думаю тред утонет.сега-кун
>>133395856Загрузить файл - 10 секунд, чтобы инициировать операцию загрузки файла, надо несколько милисекунд процессорного времени.Какие-то дауны в треде, спорят с очевидным.
>>133396167>Да ты какой-то тупой блядь, ты понимаешь, что в программе дохуя и других дел бывает, кроме как процессором шуршать?>Все это требует процессорного времени. Память сама себя не перегонит
>>133396325А чтобы загрузить 3к файлов...
Что несете, смысл делать сотню потоков, если всего ядер 8.
>>133396504Т.к. файлы маленькие и их много, ресурсозатраты по их загрузке и процессорному времени на препроцессинг не значительно друг от друга отличаются.
Ну охуеть, лол. Кажись, я написал нормальную утилиту подсчета времени.Вот, теперь адекватные показания.Сделал как в дебаггере хрома:TimeTracker.start ("DECODER_TIME_ALL");TimeTracker.stop ("DECODER_TIME_ALL");Охуенно. Надо будет эту тулзу добавить в общую либу.
Отпрофилировал как бог
я всё ещё не увидел ссылки на гитхаб с кодом
>>133401615Просто ты слепой уебок
>>133401944да, действительно
Самой тяжелой частью оказалась загрузка файла капчи с диска и создание массива обесцвеченных точек.Самый тяжелый кусок пикрелейтед.Также, к моему удивлению, распарралеливание самого распознавания ничего не дает.При распознавании идет работа с массивами чистых данных в памяти, по сути, работа только процессора и памяти.Хоть она и занимает лишь 0.3 секунды (вообще норм даже), но никак почему-то не параллелится, хотя производительность должна увеличиваться соразмерно количеству ядер (4).Возможно, я где-то налажал и блокирую треды при распознавании, но вроде нет.Алсо, на гитхабе не всегда свежая версия.
Вообщем, можно наконец-то прикручивать ген-алгоритм.Я снизил время распознавания 3к капч до 0.3 секунды.Считай 0.1 сек на косарь примерно.Это уже норм для эволюционного алгоритма. 10к поколений 1 особь пройдет за 1000 секунд.Вообще я и расчитывал, что сейчас время будет измеряться часами, а не минутами.Фитнесс-функция-то тяжелая.Сейчас похаваю, и, если опять не возникнет других дел, прикручу таки генетический алгоритм.
Алсо, залил на гитхаб свежую версию этого высера.
Ап
>>133404301>Я снизил время распознавания 3к капч до 0.3 секунды.Таки ты оптимизировал>загрузка файла капчи с диска и создание массива обесцвеченных точек?сега-кун
>>133407041>загрузка файла капчи с диска и создание массива обесцвеченных точекНу да, загрузка списка файлов, самих файлов и препроцессинг происходят только 1 раз.А в самих поколениях будет только распознавание, которое занимает 0.1-0.3 секунды.
>>133407711Осознал.Как будет выглядеть твой ген-алгоритм?n-детей, у каждого m-рандомных изменений и лучший становится новым родителем?
>>133408002Сейчас уже скоро будет готов. Вообще сам алгоритм уже давно лежит на гитхабе в другом репе
>>133410033>Делаем ее особь основой последующего поколения, ТОЛЬКО ЕСЛИ ОНА ЛУЧШЕ, ЧЕМ ПРЕДЫДУЩАЯЗначит отец может не умереть... Ну ладно.
Сделал подсчет рейта мозга в 1 строку.Ну теперь точно можно вешать генетику.Бамп короче.>>133411100>Значит отец может не умеретьПо тестам на подборе букв, такой подход увеличивает сходимость.Хотя это уже вопросы тонкой настройки.
>>133411295>такой подход увеличивает сходимость.Естественно увеличивает, ведь выбирается лучшая особь.Да и у тебя если будет умирать отец - весь алгоритм считай будет просто рандомить каждую итерацию 1 букву потому что всего 1 потомок.В привычном генетическом алгоритме, как мне кажется, отец должен умирать каждую итерацию. Но в привычном и потомков должно быть больше 1.
это сборище нищебродов без пасскода?
>>133416336К чему бы это?
>>133416336Нет, это ракодебил посетил наш тред
Перезагрузочный бамп
Бампает ведь не оп?
Я хуею.На 10(!) капчах традиционный вероятностный алгоритм обучается до 72%.Я тут собрался сгенерить начальную популяцию и прихуел. Думал рейт будет процентов 5.
>>133420742Ну это действительно охуеть.На ТРЕХ ЕБАНЫХ КАПЧАХ, ТРЕХ КАРЛ вероятностный алгоритм смог верно распознать 73% из другой тысячи капч.Пиздец, пришел, увидел, победил.Как видите 3 капчи подобраны так, чтобы на них встречались все 10 цифр.И этого достаточно, чтобы машина научилась читать эту капчу с весьма неплохим рейтом.Придется для ген-алгоритма отпизды файл генерить.
>>133420742>вероятностный алгоритмВот это поясни.
>>133422086Я в ахуе. Этот ублюдок просто посмотрел на 3 картинки и обучился нахуй. Да даже битард справился бы хуже
Я тут даже придумал, как хуекапчу таким же методом разгадать.Для начала, надо будет обновлять капчу до тех пор, пока не получим капчу, где все цифры не будут наплывать друг на друга.Далее разделение и вероятностный алгоритм.
>>133422341А наплывшие цифры ты как разделять \распознаватьбудешь?
>>133422403>надо будет обновлять капчу до тех пор, пока не получим капчу, где все цифры не будут наплывать друг на другаНо вообще, цифры почти всегда наплывают.Но я слыхал в опенцв есть продвинутые методы разделения.Но это все потом.Надо уже ген-алгоритм ебаный допилить.
>>133422178Ну, подсчет вероятности пикселя быть закрашенным
https://en.wikipedia.org/wiki/Bayes_classifier/thread
>>133422947Да
Вот это по мне. Будет исходной популяцией
ОП, что можно почитать на тему машинного обучения? Имеет ли это какую-нибудь связь с нейросетями?Скинь, пожалуйста старые исходники распознавателя капчи.Спасибо.
Пиздос, лапша-код.Опять нахуярил какое-то говно, которое жрет почти все время.Да и вообще, обнаружил, что старый класс ген-алгоритма не подходит, надо переписывать.Может сегодня перепишу, а может нет, чет я уже заебался.
>>133426219>старый класс ген-алгоритма не подходитДобро пожаловать в реальность. Я весь тред жду как ты будешь 'мозг' рандомить, с его процентами на пиксель.
Знаю прекрасно что такое генетические алгоритмы, меня ОП не наебет, ОП ты создаешь распознавание капчи ?
>>133426608Нет, распознавание капчи уже есть. Он хочет именно генетический алгоритм.
>>133426685Надо обучение , ведь он сказал что распознает на 50 процентов, как алгоритм определит, где правильно распознало или неправильно? Надо кидать образцы и учить программу
>>133423865та это родственные алгоритмы, ты знаешь про нейронные сети много? Если знаешь, тебе запрограммировать генетический алгоритм будет очень просто
>>133427089Попробуй еще раз. Я нихуя не понял.
>>133427253Генетический алгоритм для чего имено, не хочется весь тред читать? Ты ему даешь входные и выходные данные?
>>133427253Какие у тебя входные данные в этот генетический алгоритм
>>133427676>у тебяНе у меня, у опа, я мимо крокодил который здесь почти с начала треда.>входные данные в этот генетический алгоритмВходные - выборка из 3к распознанных капч (человеком); вероятности появления пикселя в определенном месте для каждой цифры (изначально или рандом, т.к. не обучен)Выходные - вероятности появления пикселя в определенном месте для каждой цифрыЭто позволяет разгадывать капчи опираясь на эти данные.
Написал новый класс ген-алгоритма, но там где-то фейл, не пашет
>>133428781>Я весь тред жду как ты будешь 'мозг' рандомить, с его процентами на пиксель.
>>133428037он их черно белые делает?
>>133428992Да.
>>133428037только я не понял ну а причем здесь предыдущий алгоритм и 50 процентов? Он по новому начинает делать?
>>133429040А почему сажа?
>>133429071->>>133321362
>>1334291011 пост с сажей не делает ничего.1 пост без сажи поднимает тред в топ.Если я отпишусь в хуёвом треде - он сразу взлетит в топ и будет засирать нулевую.Если я отпишусь в годном треде... ничего не случится.
>>133428834Уже делаю. Скоро код запушу на гитахаб.Пока эволюция идет только в сторону деградации
>>133429262>Если я отпишусь в хуёвом треде без сажи>Если я отпишусь в годном треде с сажей
>>133429297Ну ты на словах то можешь пояснить как рандомишь?
В погроммиздиньи не силён, сам только-только начал, посему поясните: ОП таки сковал шин?
>>133429356Беру несколько рандомных строк с вероятностями, меняю их на заданное число.Если получилась хорошая особь, она становится основой для последующих мутаций.Если плохая - впизду ее.
>>133429467>заданное числоЧто-то намекает что это слабое место твоего способа.
>>133318543 (OP)Гриша, иди нахуй.
>>133429423Смотря что считать шином:С одной стороны создав тред он просмотрел свой код и исправил ошибку выборки, увеличив тем самым распознавание до 97%.С другой - 200 постов а ген-алгоритм только зарождается.
>>133428037подожди 3к а разных чисел 9999, это не будет ли мало если там цифры под разными углами, это бред какой-то
Да, таки продвинул эволюцию на пару процентов.Надо поиграться с мут-рейтом и объемом мутаций.>>133429592А ты хочешь вероятность сразу на 0.5 ебнуть? Тогда точно все по пизде пойдет.В том и фишка нарастающего отбора, что происходят небольшие изменения
>>1334296963к капч.Цифр всего 10 штук по крайней мере в десятичной системе счисления.На наклоны он положил.>>133429759Я хочу больше рандома, чтобы не фиксированное число а рандомное.
>>133430067>чтобы не фиксированное число а рандомноеЭто убьет смысл нарастающего отбора.Ирл мутации очень редки и очень малы за исключением крайне редких случаев дублирования целых кусков днк
>>133430067они расположены в определенных местах?Тогда это ваще примитивная капча...
>>133430242>Ирл>Отец может выжитьО чем ты вообще..
>>133430067ну то есть одна цифра расположена в определенном месте? Как это цифр 10 штук
Вы тут вновь пишите распознавалку капчи?Уже были подобные треды, и макакен отреагировал на них. В результате всё полетело в пизду.
>>133430319>>133430373Да, цифры расположены в определенных местах на каждой капче. И на каждой капче их 4 штуки. Да, это примитивная капча.Задача определения расположения это одна из подзадач распознавания капчи, которую оп опустил для упрощения.
>>133430529Все теперь суть понял, спасибо за разъяснение. В адекватных тредах, хорошие люди
>>133430522>В результате всё полетело в пизду. А вот про это поподробнее?Ну чего ты начинаешь, нормально же сидели, мы тут гены вычисляем...
>>133430614Эх было бы так всегда...
Странная ситуация. Похоже, я в локальном экстремуме.Слишком маленькая величина мутации и малый объем не способен обеспечить роста и все мутанты проигрывают отбор отцу.Но чтобы было похоже на реальное обучение, надо высокий мутрейт и рандомную велечину мутации.Но тогда отбор будет идти слишком долго.Как же быть?
>>133431588Есть два стула: смириться или ждать.
>>133430671Так а что вы спорите про вероятность появления мутации, она же строго определенная
>>133431893>она же строго определеннаяКакая? 50/50? Как встретить динозавтра на улице? Либо встретишь либо нет?
>>133432072та не она обычно не больше 1%, или если большая популяция то 1/размер популяции
>>133432405>размер популяции 1.
>>1334324841/1=1Теорема Эскобара прямо.
>>133432520->>>133411692
>>133432484а какой смысл в генетическом алгоритме, если там основная операция скрещивания... а там надо 2 родителя
>>133432847В генетике основа - мутации
>>133433057Бляха, это бред какой то народ. Я даю вам инфу соточку, что мутации хоть и нужны но оче редка. один раз на 100 скрещиваний
>>133433136А остальные 99 нам нахуя нужны?
>>133433169ну они все будут абсолютно разные же... Понятно что в итоге ты отберешь самого живучего, но самое главное сохранять гены эти
>>133433169ну или не абсолютно, но не такие
>>133433169ну мутация важна конечно, но должна быть очень редко, это инфа сотня
>>133430616Вычислять не здесь надо. Макак отреагирует. Надо скооперироваться и съебнуть, иначе всё опять коту под хвост.
Сделал настраиваемый размер популяции, все равно нихуя.
>>133436534Главная цель этого треда - обучение работы с ген-алгоритмом, а капча здесь потому что легко проверить ответ.
Сделал так, что все мутации популяции происходят в окрестности какой-то одной точки. Таким образом, улучшается распознавание цифры в этой зоне.Вроде прогресс получше, но все равно очень медленно
>>133437053>но все равно очень медленноВся суть ген-алгоритма же.
https://github.com/f77/capcha_1_remaster_width_genetic_algorithm/blob/master/src/bugaga/evolution/EvolutionBrain.javaЭволюционный алгоритм.
ОП, как же мне хочется тебя пнуть под сраку.Во-первых, препроцессь капчи и собери их в сериализованную загружаемую коллекцию (массив + значение капчи), вместо того чтоб загружать каждую картинку индивидуально и парсить каждый. Ёбаный. Раз. Отрежешь половину времени выполнения.Во вторых, схуя ли ты модифицируешь таблицу вероятностей линейно? Хули усредняешь? Есть шкалы, есть Баэзовский классификатор, который, блядь, именно такие проблемы и решает.В третьих, ты не охуел на каждый пиксель смотреть отдельно? Редуцировать батюшка запретил? Мог бы, блять, разбить картинку на октри, нормализовать, и тогда похуй будет на шум, повороты, макакины хуи и т.д. И какого результата ты ожидал? Давай разберём по частям тобою написанное. Наложи все образы цифр одна на другую в одном пространстве и посчитай, в скольких местах у них пересекаются пиксели. Даже лучше, ради визуализации: высчитай шкалу количества пересечений и вырежь из каждой капчи те части, где есть, скажем, более 50% пересечений между 3-4 цифрами. Посмотри, что осталось, и подумай, что не так.И самое главное - какой это, в пизду, генетический алгоритм? Генотип должен состоять из набора примитивных операций. У тебя не операции, а показатель. Ты изменяешь хуй знает что, хуй знает как. Вообще охуеть
>>133437956>Во-первых, препроцессь капчи и собери их в сериализованную загружаемую коллекцию (массив + значение капчи), вместо того чтоб загружать каждую картинку индивидуально и парсить каждый. Ёбаный. РазДа сделал я это уже.А вообще ты прав, я тут хуйни навернул знатно.Есть что исправлять.
>>133438083>в сериализованную загружаемую коллекциюУверен?
>>133437956>Во вторых, схуя ли ты модифицируешь таблицу вероятностей линейно? Хули усредняешь? Есть шкалы, есть Баэзовский классификатор, который, блядь, именно такие проблемы и решает.>В третьих, ты не охуел на каждый пиксель смотреть отдельно? Редуцировать батюшка запретил? Мог бы, блять, разбить картинку на октри, нормализовать, и тогда похуй будет на шум, повороты, макакины хуи и т.д. И какого результата ты ожидал? Давай разберём по частям тобою написанное. Наложи все образы цифр одна на другую в одном пространстве и посчитай, в скольких местах у них пересекаются пиксели. Даже лучше, ради визуализации: высчитай шкалу количества пересечений и вырежь из каждой капчи те части, где есть, скажем, более 50% пересечений между 3-4 цифрами. Посмотри, что осталось, и подумай, что не так.На реализацию этого я бы посмотрел.> Генотип должен состоять из набора примитивных операций. У тебя не операции, а показатель. Ты изменяешь хуй знает что, хуй знает как. А вот здесь чет сложно стало. Поясни пожалуйста?
>>133438156Ну типо того есть.
Ладно, я спать. Возможно, завтра продолжим.
Спасибо всем за участие в треде
>>133438517Реализацию чего? Вырезаешь ровно 10 цифр из капчи. Загружаешь их одна за другой. При загрузке каждой смотришь на каждый пиксель, проверяешь, есть ли он уже в канвасе, если да, увеличиваешь счётчик. Затем блит текущей цифры в канвас. И так до конца. На выходе список пикселей, у которых счётчик больше 0. Можешь ради лулза нагенерировать разные сеты символов с разными шрифтами, результаты теста по сету свести в гистограмму, а потом сравнить все гистограммы визуально. Охуеешь, насколько эффективность твоего алгоритма зависит от шрифта и размера.Далее берёшь тыщу капч. Для каждого пикселя из списка уменьшаешь на 10% цвет на каждую единицу счётчика. Потом листаешь результаты на глаз и охуеваешь от того, как твой алгоритм вероятности бессмысслен на конкретных участках капчи и зависим от их порядка. А это потому, что абсолютные позиции пикселей - самый хрупкий и наивный из возможных подходов. Добавь критерий: входные капчи могут быть разные по размеру и масштабу. Как только найдёшь решение для этой проблемы, сразу же станет очевидно, что пиксели не просто сами по себе, а связаны друг с другом, и анализировать их дискретно (да ещё и линейно утрамбовывать вероятности) глупо.> А вот здесь чет сложно стало. Поясни пожалуйста?Фундаментально, генетические алгоритмы (как их понимает сегодняшняя теория) - это алгоритмы поиска решений. Решения эти сами по себе алгоритм. Этот алгоритм каждый раз применяется к данным, результаты оцениваются, и производится модификация. Можешь думать об этом, как о виртуальной машине, в которой алгоритм - доступный набор инструкций, а любое решения - комбинация этих инструкций. У тебя же всё наоборот: сам алгоритм анализа не эволюционирует, а модифицируется (криво) набор данных, которым алгоритм пользуется (криво). Ты не применяешь развитый алгоритм к данным - ты применяешь один и тот же алгоритм к изменяющимся данным.
>>133439426Как ты предлагаешь закодировать изменение самого алгоритма?
>>133439814Любым методом, при котором возможно измерить связь между ДНК (который может быть простым набором переменных, а может быть буквальной последовательностью исполнения шагов) и результатом исполнения алгоритма на наборе данных. Это так и в решении ОПа - только набор переменных слишком большой и их взаимосвязи отрицаются, и в силу методологии самого алгоритма и перекоса его пользы на некоторых (запросто многих) участках данных, получается эффект перетекания переменных в исходные данные, тогда как должно происходить строго наоборот. Хотя это, скорее всего, тяжело продемонстрировать на практике и нельзя доказать формально. Грубо, я бы сделал так: картинки масштабировать и обрезать. Результат разбить на секции, каждая содержит символ. Пиксели считывать в октри или подобную структуру от центра или некого смещения (ДНК). Получившееся дерево (деревья) нормализовать по размеру, устанавливая минимум и максимум уровня (ДНК), вне которых элементы дерева обрезаются. На каждой связке между уровнями модифицировать соответствующую таблицу вероятностей, опять же баэзом. При сравнении для каждого уровня установить вес (ДНК), и само сравнение описывать как вероятность.Блять, теперь замому захотелось...
>>133439426> Вырезаешь ровно 10 цифр из капчиТ.е. отбираю цифры 0-9 и вырезаю их. Получаю 10 файлов.>при загрузке каждой смотришь на каждый пиксель, проверяешь, есть ли он уже в канвасеЗагружаю их на один и тот же канвас? 10 цифр?>Затем блит текущей цифры в канвас.>блит?>И так до конца.До какого конца? 10 цифр же всего?>пиксели не просто сами по себе, а связаны друг с другом, и анализировать их дискретно глупо.Это очевидно, но для данной капчи - достаточно.
>>133440483Брр. По порядку.В тех местах, где цифры пересекаются друг с другом, будет возникать аномалия: чем больше цифр имеют этот пиксель, тем меньше эффективность оценки вероятности в этом месте. Другими словами, на местах пересечения цифр (если их все поместить в одну плоскость), алгоритм "слепнет". Шума на входе нет - но он вырабатывается внутри благодаря этой конкретной методологии. Если бы у всех цифр не было пересечения, то алгоритм бы, естественно, работал феноменально. Оценка вероятности в таком случае - как раз проблема для Баэз-классификатора, поскольку он вырабатывает новую вероятность не линейно, а на основании всех предыдущих вероятностей.Кроме того, я подозреваю, что ОП смотрит на всю картинку целиком, а не на отдельные регионы цифр, и без учёта топографии - т.е. как на один большой вектор. Попробуй в голове представить цифру, которая порезана вертикально на строки, и эти куски сложены слева направо. Таблица вероятностей в большинстве будет забита бесполезными нолями.Блит - это пиксельное копирование региона. И да, 10 цифр всего.Я спать...
>>133440918>Кроме того, я подозреваю, что ОП смотрит на всю картинку целиком, а не на отдельные регионы цифр>>133321897>Для начала, разделяем капчу на 4 части, чтобы распознавать каждую цифру отдельно.