NAIMbot — помощник по прицеливанию на основе машинного обучения

По сути, я создал помощника по прицеливанию для игры, используя машинное обучение, которое я позже назову NAIMbot.
Чисто с помощью визуального ввода скриншота NAIMbot способен обнаружить врага на экране и рассчитать расстояние от центра экрана до врага и точно нацелиться на цель.

▬▬▬▬ Начало ▬▬▬▬
Моим первым препятствием было то, как перемещать игрока и мышь извне. После долгих исследований выяснилось, что приложения DirectX требуют особого ввода, и было важно сделать этот шаг правильно, поскольку все построено на этом.
Следующим шагом была попытка сделать вычисляемый ввод похожим на человека. Для этого мне нужно было создать функцию для восстановления парабол, чтобы начало движения мыши было медленнее, чем середина, так как человеку нужно ускорить физическую мышь.

Доведя это до совершенства, я продолжил создавать компенсацию отдачи для каждого оружия, используя компьютерное зрение и GIF-файл, содержащий все местоположения пуль.
Это приводит к первой интересной части проекта.

▬▬▬▬ Компьютерное зрение ▬▬▬▬
Чтобы распознать текущее оружие или на какой стороне оно в данный момент находится, NAIMbot должен прочитать его откуда-то на экране, как это сделал бы человек.
Я использовал cv2 для решения этой проблемы. cv2 — это библиотека Python, ориентированная на компьютерное зрение. С его помощью я смог автоматизировать сбор данных и их обработку.

▬▬▬▬ Сбор данных ▬▬▬▬
Хотя обычно данные должны быть помечены вручную, я нашел много способов автоматизировать сбор данных.
К сожалению, я не могу раскрывать слишком много деталей, так как это мое конкурентное преимущество, но в случае с этим проектом я использовал смесь внутриигровых данных и данных из внешней памяти для сбора данных. Конечно, эти данные нуждались в обработке, которая была сделана с использованием cv2 и знаний нейронных сетей.

▬▬▬▬ Машинное обучение ▬▬▬▬
Часть машинного обучения сводится к части классификации и части локализации. Для локализации я использовал региональную свёрточную нейронную сеть. Поскольку меня не устраивала точность и скорость, я переключился на обнаружение объектов Google, поскольку за этим стоят целые исследовательские группы.
Наконец-то скорость и точность стали разумными. Но для дальнейшего улучшения я настроил гиперпараметры и изменил размер входного изображения.
Сложной частью было сбалансировать скорость и точность, так как это очень зависит от используемого оборудования.

▬▬▬▬ Другое ▬▬▬▬
У этого проекта есть еще несколько аспектов, поскольку мой первоначальный план состоял в том, чтобы сделать NAIMbot коммерчески доступным, например, подключить базу данных к веб-сайту и писать в нее каждый раз, когда совершается покупка (чтобы обойти проблемы с использованием лицензий на программное обеспечение). или создание графического пользовательского интерфейса. Эти вещи были более простыми, поэтому нет необходимости погружаться глубже, но если вы хотите узнать о чем-то больше, не стесняйтесь спрашивать!

Заключить:
Это означает, что я создал ненавязчивого помощника по прицеливанию, чего раньше никто не делал. Это открывает много дверей для соревновательной сцены, где помощь в прицеливании очень популярна.
Вот почему я остановил проект. Я не хочу нести ответственность за нарушение всей соревновательной сцены, которая мне нравится.
Вместо этого я хотел бы использовать этот проект как опыт. Тот факт, что я получил неизмеримое количество знаний от этого проекта, будет использован, чтобы помочь другим с их проблемами и идеями.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *