Pavel Mochalov

HeadShoter: Deep neural network playing GTA V Нейронная сеть играет в GTA 5

Описание проекта

Всем привет! Meня зовут Павел. Позвольте мне представить наш проект. HeadShoter - это нейронная сеть, основанная на TensorFlow API и играющая в GTA V. Она может находить голову персонажа в игре и делать выстрел в этом направлении. Этот проект разрабатывался в исследовательских и образовательных целях. Миссия HeadShoter'a - сделать работу с глубокими нейронными сетями легкой для понимания. Он поможет новичкам узнать, как пользоваться глубокими нейронными сетями. Ну, и получить МНОГО УДОВОЛЬСТВИЯ, конечно!

Hello, Guys! My name is Pavel. Let me introduse our project called HeadShoter. Our mission is making process of learning deep neural networks easy to understand. HeadShoter is TensorFlow API - based nueral network playing GTA V. It can find head of game character and take shot in his head. This project was made for purpose of education and research. It can help beginners to know how to work with deep neural network. Also it can give them a LOT OF FUN too! 

Как это работает:

Проект HeadShoter использует TensorFlow API для того, чтобы найти голову персонажа игры GTA V и поразить его с первого раза.

So, how does it work? Project  based TensorFlow API and used to locate head of game character to shot it from the first time.

Окно игры и окно вывода результатов детектирования объектов

Используется предобученная сеть faster_rcnn_inception_v2_coco_2018_01_28 для детектирования персонажа внутри сцены игры, а затем производится выстрел в этом направлении. Координаты головы выстчитываются из пропорций тела персонажа.

Headshoter uses faster_rcnn_inception_v2_coco_2018_01_28 to detecting person in scene of the game. Than HeadShoter finds position of head to shoot. Heads coordinates counted by porportion of characte's body.

Определение позиции головы распознанного объекта

Детали проекта:

Основой проекта был открытый код разработчика sentdex (https://github.com/sentdex/pygta5). Этот парень управляет машиной в игре с помощью нейронной сети. HeadShoter пока не умеет перемещаться в пространстве игры самостоятельно. На данный момент всё работает превосходно, когда в сцене игры не слишком много персонажей. Сейчас мы работаем над обучением сети, которая будет детектировать голову как отдельный объект, и сможет переходить от одного персонажа к другому последовательным перебором, а также перемещаться в игровом пространстве.

As base for project I used project of Sentdex (https://github.com/sentdex/pygta5). This guy made it for self-driving car. Now network is working good only if there isn't many characters in the scene and position of head is approximate. Wel are working for teaching network detecting heads like separate objects to find exact position of head in the future. Network will change direction from character to character one by one soon, and also It will have moving in game environment.

 

Пишите мне на pavelmochalov@bk.ru если хотите поучаствовать в проектe и сделать Headshoter'a ещё проворнее!

Let's join us! We can make this animat much clever together, just mail me on pavelmochalov@bk.ru

Состав команды:

  • Alyona Neyroli, Marking images for neural network training, video editing
  • Pavel Mochalov, Developer

Комментарии

Иван Бондаренко

Ребят, вы написали, что ваш проект преследует образовательные цели для будущих исследователей в области Deep Learning. Мне кажется, что будет очень круто, если вы как-нибудь потом еще докинете какой-нибудь туториал, например, в формате ноутбука, чтобы дополнить образовательный процесс :-)

Pavel Mochalov

Иван, думаю, что за эти выходные получится сделать туториал в виде ноутбука и видео.

Ivan Panin

А можно прикрутить распознавание конкретного лица перед выстрелом?

Pavel Mochalov

Думаю, что да. Сейчас обучаем отдельно детектировать голову на любом расстоянии. Соответственно, распознавание лица вполне можно прикрутить после локализации головы. А вообще такой задачи не стояло, но было бы интересно покрутить всё это, да.

Яков Филин

Не изучали, как в Counter Strike работают программы для стрельбы "точно в голову"?

Pavel Mochalov

Яков, пока не изучал. Если есть интересные ссылки, поделитесь. Сейчас изучаю вопрос, как перемещаться в игровом пространстве. Есть неплохая книга Шампандара "Искусственный интеллект в компьютерных играх" по созданию аниматов в Quake, хочется описанное там реализовать.

Pavel Mochalov

Погуглил по теме. Различные программы для стрельбы "точно в голову", т.н. Aimbots ,работают с файлами игры. Они точно знают, где находится голова даже если вы стоите за стеной. С другой стороны такой читинг можно выявить по понятным причинам. Программу, которая детектирует и стреляет, ориентируясь по изображению, выявить невозможно. Поэтому sentdex, у которого я перенял всю эту тему с аниматом в GTA V, не стал выкладывать свои наработки в открытый доступ.

Pavel Mochalov

Ахахахаха)) Их оказывается продают, никогда бы не подумал. https://ultrabot.win/ 69 долларов за это удовольствие.

Pavel Mochalov

Что требуется, чтобы запустить HeadShoter у себя на компьютере:

Скачать и установить TensorFlowl 1.8 https://www.tensorflow.org/install/
Нужен GPU с поддержкой CUDA 9 и установленный CUDA Toolkit https://developer.nvidia.com/cuda-90-download-archive
Нужно установить: https://github.com/tensorflow/models/tree/master/research/object_detection запустив setup.py
Добавить в папку object_detection файлы из репозитория: https://github.com/headshoter1/HeadShoter Нам нужны вот эти два файла: head_detection_gta_v.013.py and grabscreen.py
Вот такая кухня.

Иван Федоров

Эх, надо было тестировать на миссии от фсб, где нужно было убить мужика с бородой, там же как раз только в голову надо было стрелять:)

Pavel Mochalov

Иван, обязательно запишу демо стрельбы по бородатым. Ненавижу их:))

Edukov Mikhail

Нет модели, нет программы, нет иструкции как это можно запустить у себя, ну разве что ссылка на репозиторий sentdex'a, но вряд ли это можно считать проектом.

Pavel Mochalov

Да, сложно за три минуты минуты рассказать, как устроены часы и как их собрать. Можно только продемонстрировать, что ходят стрелки и рассказать, где лежит инструкция.  Инструкция лежит на Github ;)