В продолжение части 2 Создание бота для автоматической стрельбы из машинного обучения для CS: GO. Используя мою минималистичную адаптацию сети VGG, первоначально разработанную Visual Geometry Group в Оксфордском университете, мне удалось использовать автономное обучение, чтобы получить удовлетворительные результаты выстрелов в голову в игре Counter-Strike: Global Offensive.

На том месте, где мы остановились в последний раз, мне удалось использовать обучение в реальном времени, чтобы обучить сеть, которую я назвал TBVGG3, обнаруживать и стрелять в футбол на карте Dust II, практически без промахов. Хотя тренироваться было не так просто, как мне бы хотелось, особенно на таком простом и четком объекте, как в основном белый круглый футбольный мяч с черными пятиугольниками, пересекающими его поверхность.

Конечно, я знал, в чем проблема, при обучении в реальном времени было трудно получить случайную вариацию выборки, которая требовалась хорошей обучающей модели, в исходной статье, где я обучал небольшую нейронную сеть размером 3x3 пикселя, чтобы ориентироваться в основном на голубой цвет. моделей, сцена была намного менее сложной и ее легче было обучать, имея в основном черный или серый фон без реальных текстовых вариаций (потому что я отключил текстуры), но в CS: GO я тренировался против шумного текстурированные данные пикселей, поэтому для получения хорошо обученной модели мне нужно было сначала выбрать набор данных, а затем обучить сеть на этом наборе данных в автономном режиме.

Сначала я разработал адаптацию бота FPS [fps_dataset_logger.c], который будет делать небольшие снимки изображений того, на что я нацелен в поле сетки, и сохранять их в файл, когда я нажимаю определенные клавиши клавиатуры. У меня также был ключ, который показывал бы рамку кадра, чтобы я мог выровнять снимки перед взятием образцов. Эти образцы были сохранены в файл в различных форматах в порядке R, G, B; 8 бит / 1 байт на канал необработанных пиксельных данных, 3 числа с плавающей запятой на канал 0–1 нормализованных, 3 числа с плавающей запятой на канал с нулевым центрированием и, наконец, набор, который я использовал для обучения, 3 числа с плавающей запятой на канал со средним центрированием. Я использовал эту программу для сбора 300 образцов только контр-террористов для этой демонстрации и 300 образцов случайных образцов фоновой сцены.

Затем я разработал небольшую программу [fps_offline_training. c] для автономного обучения, тренированные веса были включены в исходную программу [fps_autoshoot_tbvgg3.c] для обнаружение и стрельба в реальном времени. Автономное обучение было очень простым, оно просто загрузило 300 образцов контртеррористов (в основном образцы головы и верхней части тела) и 300 образцов случайных фоновых сцен. Это было далеко не достаточно обучающих данных для безупречной модели, поскольку существует множество различных моделей игроков Counter Terrorist и множество различных карт и фонов. Я полагаю, что, возможно, выборка из 1000-4000 была бы более адекватной, но это очень трудоемкий процесс, враги не так часто стоят перед вами, и то, какие модели игрока вам дает игра для каждого матча, является совершенно случайным. Но набор из 300 образцов работал удовлетворительно, как вы можете видеть в следующем видеоролике;

Как видите, промахи минимальны, а обнаружение верхней части тела / головы дает хорошие результаты, может быть, недостаточно хороши для реальной онлайн-игры, но достаточно хороши, чтобы убить нескольких ботов.

У меня есть еще одно видео, которое демонстрирует обнаружение, хотя на YouTube канале их всего четыре.

Так будет ли четвертая часть? Я закончил и присыпан этим? Ну, отчасти потому, что обучение в реальном времени на таких данных просто нереально, никто не хочет тратить часы в игре, изменяя сканирование модели игрока со сканированием ландшафта, я мог бы сделать процесс автономного обучения более удобным для пользователя. конечный пользователь, который не привык компилировать исходный код, создавая трехступенчатую систему; сканировать набор данных в игре, обучать набор данных в автономном режиме и воспроизводить набор данных в игре. Но это связано с некоторыми моральными проблемами, такая модель с достаточной проработкой могла бы создать довольно хорошего бота для стрельбы в голову для любой игры FPS на рынке, и для меня, чтобы сделать этот процесс простым и удобным для пользователя, можно было бы сделать отрасль онлайн-шутеры от первого лица не одобряют, они могут использовать немного больше ресурсов процессора и немного замедлять частоту кадров в игре, но у них есть потенциал при достаточном обучении, чтобы нанести особый вред онлайн-играм. Это не то, чего я намеревался достичь, я не хочу рисковать, чтобы меня называли «парнем, который испортил онлайн-игры», поэтому я рад предоставить набор обучающих данных, который я продемонстрировал в видео выше, который лучше всего работает на map Вступайте в бой только с моделями игроков-контртеррористов, но исключительно в исследовательских целях, потому что я знаю, что это не создаст достаточно конкурентоспособного врага даже для начинающих игроков.

Вот где я его и оставляю, counter_terrorist_dataset_and_weights.zip.
(установите ACTIVATION_SENITIVITY на 0,7 при использовании на карте Engage)

Я думаю, что, возможно, можно было бы уменьшить количество фильтров на слой и, используя больший набор обучающих данных, по-прежнему достичь высокой точности в обнаружениях, но также снизить нагрузку на ЦП, что для этой небольшой сети было немного выше того, что я хотел бы был.

Мне понравилось снимать эту серию, и у меня была ностальгия по повторному посещению Counter-Strike, в последний раз я играл в нее до 2010 года в исходной версии (11 лет назад на сегодняшний день!) и я должен сказать, что это по-прежнему великолепная игра высокого качества, в которой смерть заставляет меня смеяться в стиле «черт возьми, нахальный, я не могу поверить, что ты меня достал».

Пожалуйста, простите меня, Гейб, прошло 15 лет с тех пор, как мы изменили электронную почту, касающуюся того, чтобы сделать игры более полезными, чем создание читов, и я до сих пор придумываю читы для игр Valve Software. Я чувствую, что подвел вас : '(, но также 2008 год был плохим для игровой индустрии. Я написал две модификации Half-Life 2 независимо друг от друга, так что все не так, как я этого не делал » Пытался, и с тех пор я сделал целую кучу игр, я просто полагаю, что странным образом мы вернулись к моим корням. Я никогда не был очень хорошим игровым дизайнером, но, говоря это, я тоже не был так хорош при создании читов.

С уважением,

Джеймс

Упс, я не так закончил, как думал, извини, Гейб!
Прочтите часть 4 здесь.