Это четвертая часть моей серии «автоматизация игр с помощью python».
Часть 1: Как я сделал бота на питоне для автоматизации тактической мморпг. Это объясняет мою мотивацию и игру, которую я автоматизирую.
Часть 2: Как управлять мышью и клавиатурой с помощью Python для автоматизации. В этой части рассматриваются основные функции, необходимые для автоматизации.
Часть 3: Оболочка, которую я сделал для простой реализации поиска изображений в вашей программе на Python и как ее использовать: Простое распознавание изображений для автоматизации с помощью Python
Итак, зачем нужно распознавание изображений с помощью нейронной сети, когда у нас уже есть библиотека, которая может это сделать?
Я имею в виду, если подумать, машинное обучение — это действительно сверхмощный механизм:
- Вам нужно большое количество образцов изображений
- Обучение может занять много времени
- Использование машинного обучения вовсе не тривиально
Ну, это просто: точность на труднодоступных изображениях
Под трудно поддающимися классификации я подразумеваю изображения, которые могут двигаться.
Например, как вы обнаружите персонажа, который постоянно движется в своем неактивном положении (например, персонаж уличного бойца) или изображения, которые меняют цвет. Если вы пытаетесь найти это, используя типичное распознавание изображений, вам нужно найти изображение, которое постоянно меняется, поэтому у вас есть 2 варианта:
- Сделайте много разных изображений различных состояний движущегося изображения и наложите поиск изображений на поиск изображений, чтобы попытаться обнаружить его. Но это очень медленно и все еще довольно неточно.
- Сделайте один снимок и установите высокий допуск на изменение пикселей, это может привести к большому количеству ложных срабатываний, так что это все еще плохо.
Таким образом, это можно довольно легко решить с помощью машинного обучения, когда вы просто вводите множество изображений, а алгоритм сам учится правильно обнаруживать изображения с почти идеальной точностью в большинстве случаев.
Вернемся к нашей проблеме:
Что нам нужно для классификации?
Если вы помните мой первый пост, то вы помните про защиту от ботов, если нет вот оригинальный текст:
Представляем, капчат:
Перед вами ваш персонаж и кот, вокруг кота вы видите три квадрата с цифрами (от 1 до 8). Вокруг вас есть 8 квадратов с каждым числом.
Вам нужно нажимать на квадраты вокруг вас, которые соответствуют квадратам вокруг кота. И обратите внимание, что точки, из которых состоит число внутри квадрата, постоянно перемещаются:
Это 2:
Это также 2, снятое через несколько секунд после :
А это 3:
Видишь, куда я иду? поскольку числа постоянно меняются, а разница очень тонкая, почти невозможно классифицировать их с помощью традиционных алгоритмов.
Прежде чем прибегнуть к машинному обучению, я попробовал несколько вещей:
- Подсчет точек: я взял изображение одной точки и попытался сопоставить, сколько их было в квадрате. Это не сработало, потому что они иногда смешивались, и поэтому это не достигло хорошей точности.
- Другие методы, описанные в этом посте (каскад и высокая толерантность), не работают, потому что неточны.
Так что я был прижат к стене. Единственное решение, которое мне подошло: машинное обучение.
Прошу прощения за то, что задержал еще один пост, посвященный реальным вещам машинного обучения, но этот пост должен был быть вступлением, а он уже слишком длинный. И я не хочу, чтобы мои статьи были слишком длинными, поэтому предобработку данных мы увидим в следующей статье!
Спасибо за чтение
Если вам понравилась моя статья, заходите в мой блог, чтобы увидеть больше на https://brokencode.io/ :)