LINUX.ORG.RU

Зрение для бота

 


0

1

Привет! Появилась у меня идейка попробовать автоматизировать некоторые действия в одной игрушке. Нет, игрового бота я пока не собираюсь писать. Но стоит задача распознавать элементы игрового интерфейса. Он нарисован в 2D, ничего особенного. Но это для меня совсем новая область, поэтому прошу совета, куда смотреть, что искать?

Я не хочу искать точные совпадения (например, изображения кнопки в скриншоте игры). Ведь разработчик может поменять эффекты в интерфейсе, как-то менять рендеринг. Хочется и чтобы в разных разрешениях распознавало. Наверное нужна какая-то простенькая нейросетка, которую мне нужно дообучить на моём наборе кнопок, ползунков и других элементов интерфейса. Уверен, есть разные либы для этого с подробными инструкциями, но я не знаю, что конкретно нужно.

Разбей задачу на подзадачи. Самое первое, скриншот из игры ты уже умеешь доставать?

Имитировать клик по кнопке, зная координаты?

pihter ★★★★★
()
Ответ на: комментарий от tz4678_2

Можно более конкретно? В поисковике по запросу «извлечение 2D спрайтов» ничего подходящего не вижу. Или ты имеешь ввиду вытащить спрайты из файлов игры? Ну, допустим, вытащу, как их дальше распознавать то?

fingolfin
() автор топика
Ответ на: комментарий от pihter

Скриншот и клик — проблема техническая, как-нибудь разберусь (на самом деле кое-как уже умею делать).

А вот распознавание — концептуальная проблема. Я пока не знаю, как вообще это делается.

fingolfin
() автор топика

Вот тут делали бота с computer vision и нейронной сетью для Clash Royale, может сойдет за основу для вашего. Хорошо бы в топик дописать соответствующие теги.

mydibyje ★★★★
()
Последнее исправление: mydibyje (всего исправлений: 1)

Я не хочу искать точные совпадения (например, изображения кнопки в скриншоте игры).

Так и получаются лагающие помойки - вместо простого, очевидного и быстрого решения начинаются какие-то тяжёлые ненужные понты. Поменяют рендеринг - сменишь шаблоны для поиска.

firkax ★★★★★
()
Ответ на: комментарий от firkax

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

Так что верно, если разраб игры поменяет интерфейсы то даже не всякий геймер с ходу в них разберется, не говоря уже о боте.

mydibyje ★★★★
()
Ответ на: комментарий от mydibyje

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

Но я ведь делаю для себя, чтобы развлечься (игра ведь) и для образования — интересно попробовать в CV.

fingolfin
() автор топика
Ответ на: комментарий от tz4678_2

Это если туда сверху шумы не накладывают, чтобы красивее было

peregrine ★★★★★
()

Короче, чтобы обмазаться нейронками и не случайно, а понимая что и зачем ты делаешь, ты скорее всего должен быть кандидатом наук или около того в плане соображалки. Я не говорю что большинство ML разрабов такие, но то большинство и не занимается проектированием и разработкой моделек, они всякую обезьянью работу выполняют как то разметка данных (самые слабенькие, должны уметь пользоваться компом и, возможно, писать простые скрипты), очистка данных (те которые чуть посильнее и что-то знают про регулярки и сложные SQL запросы), анализ данных (эти уже математическую статистику знать должны ко всем предыдущим пунктам), ну а дальше идут те самые челики которые модельку выбирают и то как данные для неё закодировать надо, они всё должны знать + кучу матана, понимать что в кишках у машинного обучения происходит, уметь программировать (пусть и не так хорошо и правильно, как промышленные программисты), а потом ещё челики есть, которые параметры модели подтюнят, те тоже особо соображать не должны, им достаточно скрипты сделать которые с разными параметрами модельки покрутят и подберут лучшую комбинацию. Правда крутить надо не всё подряд, а немного думая (например варьируя параметр не от 1 до 1000 а скажем 1, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000 а дальше уже выбирать наиболее перспективные цифры и смотреть что там вокруг них и как это сочетается с остальными параметрами) и понимая что некоторые модели учить очень дорого.

Как челик, который делает всё вышеперечисленное в качестве основной рабочей деятельности, скажу начинай с CNN сетей, а дальше дообмазывай их чем-то ещё. У CNN есть проблема, что ей не важно где на картинке элемент изображения. Так что изобретай что-то что это учитывает. Вариантов много.

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 4)
Ответ на: комментарий от fingolfin

https://proceedings.neurips.cc/paper/2021/file/2bcab9d935d219641434683dd9d18a03-Paper.pdf

там богомЕрзкаЯ ересь в виде формул для шизофренников есть вместо примеров на каких-нибудь языках программирования

tz4678_2
()
Последнее исправление: tz4678_2 (всего исправлений: 1)
Ответ на: комментарий от tz4678_2

Не, там всё очень разжевано. Для детишек прямо. Вот я выкачу в скором времени ересь с формулами.

peregrine ★★★★★
()
Ответ на: комментарий от peregrine

Нейронки — это конечно очень круто и сложно, да. Но мне казалось, что такая вещь, как CV — уже давно изучена вдоль и поперёк, любой нуб может скачать готовую нейронку и натренировать на своём сете. Вон, чувак с хабра так и сделал, и у него даже что-то работает. Разве не так?

fingolfin
() автор топика
Ответ на: комментарий от fingolfin

Нифига не изучена. Изучены более-менее узкие задачи, вроде распознавания лиц, да и те, если в лоб делать будут распознавать лица у которых уши на подбородке, а нос на лбу.

peregrine ★★★★★
()
Ответ на: комментарий от fingolfin

Можно потренироваться на кошках.

Например, в донейросеточную эру, я читал, буквы и слова распознавали так: приводили изображение в черно белый вид (не оттенки серого, а именно бинарное чёрный или белый) выднляешь прямоугольник с буквой, это легко, потом проводишь воображаемую линию по экватор твоего прямоугольник и считаешь сколько раз цвет поменялся, потом такую же линию посередине только сверху вниз, потом из угла в угол и из другого угла в другой угол. У тебя получается 4 числа, сравниваешь их с заранее вычисленными значениями для каждой буквы и определяешь какая буква больше похожа.

Запросто может подойти для твоих кнопок с картинками

pihter ★★★★★
()
Ответ на: комментарий от pihter

Любопытный метод, спасибо за информацию.

В общем, буду пробовать, всё равно никуда не спешу. Спасибо всем за ответы!

fingolfin
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.