Your AI powered learning assistant

Я сделал ИИ для Counter Strike: Global Offensive :D | Часть 4

Окей летс гоу

00:00:00

Основное внимание уделяется созданию искусственного интеллекта, способного самостоятельно перемещаться по картам в Counter-Strike: Global Offensive. Несмотря на отсутствие финансовых стимулов со стороны Valve, проект продолжается благодаря огромной поддержке и вовлеченности зрителей, о чем свидетельствуют 30 тысяч лайков на предыдущее видео за два дня.

Переписал ужасный код

00:00:35

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

Улучшаю датасет (глаза нейросети)

00:01:20

Улучшение набора данных имеет решающее значение, поскольку он служит "глазами" нейронной сети. Набор данных более высокого качества обеспечивает более быстрое и точное распознавание целей с помощью модели искусственного интеллекта. Этот процесс включает в себя обработку данных для повышения их эффективности, что в шутку сравнивается с программированием продвинутого робота или созданием драматических кинематографических моментов.

Нашел готовый датасет

00:02:10

Готовый набор данных из 1500 изображений для CS:GO был найден в Интернете, но требовал проверки из-за возможных неточностей в маркировке. Использование непроверенного набора данных может привести к ошибкам обнаружения, если хотя бы один объект будет неправильно помечен или в нем не будет аннотаций. Надписи были неорганизованными, с несовпадающими категориями, например, головы были помечены как тела, и наоборот. Для решения этой проблемы была создана утилита Python, которая автоматически исправляла файлы надписей. После нескольких часов корректировок по всему набору данных эти усилия оправдались, обеспечив более высокую точность.

Аугментация и что это такое

00:03:15

Аугментация - это метод создания дополнительных данных из существующих наборов данных. Манипулируя изображением — поворачивая, перелистывая, искажая — можно получить множество вариаций (5-7 изображений) одного оригинала. Этот метод эффективно расширяет любой набор данных и улучшает его разнообразие, если все сделано правильно.

False Positive изображения

00:03:55

Нейронные сети иногда ошибочно идентифицируют такие объекты, как лампы, деревья или стулья, в качестве целей во время игры. Эта проблема возникает, когда сеть воспринимает неопасные предметы, такие как цветочные горшки или уличные фонари, как врагов, и реагирует соответствующим образом. Чтобы решить эту проблему, в набор данных добавляются ложноположительные изображения — изображения, на которых нейронная сеть неправильно идентифицировала объект или объект вообще не существует. В идеале эти изображения должны составлять 1-10% от общего набора данных, и их метки должны быть очищены для переподготовки.

Подготовка датасета перед обучением

00:05:00

Перед обучением нейронной сети важно правильно подготовить набор данных. Помимо сбора и маркировки данных, была разработана автоматизированная утилита для оптимизации этого процесса. По умолчанию инструмент делит изображения на 80% для обучения и 20% для проверки, а затем разбивает их на блоки по десять в определенных папках. Это обеспечивает эффективный охват как на этапах обучения, так и на этапах проверки, экономя время по сравнению с ручной подготовкой.

Мечтаю об RTX 2090 ...

00:06:10

Был запущен процесс переобучения нейронной сети на новом наборе данных, содержащем около 5000 уникальных изображений. Из-за аппаратных ограничений разрешение пришлось установить на уровне 640, поскольку даже RTX 2080 Ti с трудом справляется с такими задачами. Рассматривается возможность обновления графического процессора до более мощных моделей, таких как NVIDIA RTX 3090, или, возможно, будущей модели со значительно более высоким количеством ядер и объемом памяти.

Выход новой версии YOLOv8

00:06:45

Версия YOLOv8 значительно улучшена по сравнению со своим предшественником, YOLO-7. В то время как в предыдущей версии скорость вывода составляла около 20 кадров в секунду, в игровых сценариях она работала в режиме реального времени. Новая версия не только повышает скорость, но и упрощает удобство использования для разработчиков.

Сравнение времени на обучение

00:07:30

Благодаря значительным достижениям, обучение и использование нейронных сетей для обнаружения объектов стало проще, чем когда-либо. Ключевым моментом является экономия времени на обучение, о чем свидетельствует модель YOLO-7, которая была обучена всего за 10 часов.

Сравнение скорости детекции

00:07:50

Модель, обученная на YOLO 8 всего за три часа, продемонстрировала стабильную скорость вывода данных в 30 кадров в секунду, опередив более старую версию на базе Hill (YOLO 7), которая в среднем составляла около 20-23 кадров в секунду. Хотя некоторые функции, такие как рисование ограничивающих рамок, изначально отсутствовали в YOLO 8, они были адаптированы из предыдущих версий без проблем. Результаты, полученные в виде тензоров, также не вызвали существенных проблем при внедрении. Несмотря на то, что для тестирования YOLO 8 использовалась немного более легкая модель, ее производительность остается впечатляющей.

Передвижение по карте

00:08:40

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

Царская интеграция

00:09:10

Наука о данных - это не просто увлекательная деятельность, но и высокооплачиваемая профессия со значительным потенциалом заработка. Она стала одной из самых перспективных областей благодаря интеграции искусственного интеллекта (ИИ) и нейронных сетей в различные приложения, от чат-ботов и ассистентов до систем управления запасами и автономных транспортных средств. Для тех, кто заинтересован в обучении созданию систем искусственного интеллекта, специализированные курсы предлагают всестороннее обучение, начиная с нуля — инструменты анализа данных, основы математики, такие как линейная алгебра, основы статистики, — и переходя к более сложным темам, таким как модели машинного обучения и разработка данных. Эти программы предоставляют компаниям-партнерам практический опыт решения реальных задач, а также позволяют сформировать профессиональное портфолио во время обучения; центры карьеры также помогают с подготовкой резюме и трудоустройством.

Первый способ, плагин

00:10:45

Разработка плагина, позволяющего ботам автономно перемещаться по игровым картам, - инновационная, но знакомая концепция. Эта идея привлекла к себе внимание в январе 2021 года, когда кто-то создал подобный плагин для CS:GO после удаления ботов, фактически вернув их в игровой процесс в качестве эксперимента. Подход включал разработку пользовательских систем путевых точек в игре, разметку путей и выполнение определенных действий, таких как приседание или прыжки в определенных местах. Хотя этот метод дает ценную информацию о механике передвижения ботов, он требует изменения игровых файлов — шаг, который может не соответствовать предпочтениям каждого.

Второй вариант, принцип макроса

00:11:47

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

Третий вариант, алгоритм NavMesh

00:12:37

Алгоритм NavMesh предлагает решение для поиска путей в играх без непосредственного изменения игровых файлов или процессов. Воссоздавая необходимые карты, такие как Dust 2, на таких движках, как Unity, и обеспечивая связь между компонентами через сокеты или другими способами, система может автономно вычислять пути, используя данные об объектах, дверях, глубине поля и т.д. Местоположение союзников может быть определено с помощью мини-карт или методов обнаружения изображений. Однако этот подход требует много времени из-за сложности разработки и проблем с синхронизацией при управлении местоположением и обновлении карт.

Четвёртый вариант, вейпоинты через классификацию

00:13:50

Предлагаемое решение предполагает использование путевых точек, вдохновленных программой Google autonomous car mapping. При съемке 360-градусных изображений в определенных точках на карте и создании сетки из этих путевых точек становится возможным определить текущее местоположение с помощью классификации нейронной сети. Этот метод требует примерно четырех изображений на позицию из-за горизонтального соотношения сторон в таких играх, как CS:GO. Хотя этот подход эффективен для задач локализации с помощью быстрых нейронных сетей, он не решает проблемы управления товарищами по команде или более широкого контроля.

Пятый вариант, поведенческое клонирование

00:14:48

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

Проблемы внедрения поведенческого клонирования Основная задача заключается в создании всеобъемлющего набора данных, необходимого для эффективного обучения. Хотя в игровых контекстах, таких как CS:GO, можно объединить движение и стрельбу в единую сеть, это усложняет задачу и требует дополнительных ресурсов. Более практичным решением могло бы стать использование двух отдельных нейронных сетей — одна из которых отвечает за навигацию, а другая — за боевую механику - для упрощения реализации.

Итоги

00:16:52

Предлагается пять возможных методов автоматизации навигации по нейронной сети на карте Counter-Strike: Global Offensive, каждый из которых имеет свои преимущества и проблемы. Докладчик склоняется к тому, чтобы либо воспроизвести карту в движке, либо углубиться в алгоритмы поведенческого клонирования для достижения этой цели. Они поощряют обратную связь со зрителями, подчеркивая, что даже, казалось бы, простые идеи могут стать ценным вкладом в решение проблемы.