Задать вопрос

Питон,нейросеть, алгоритм выхода из лабиринта?

У меня есть скрипт на питоне, который обрабатывает видео и создает коллекцию изображений. Если обучить нейронку распознавать фигуры, размещенные на изображениях, то этого будет достаточно для написания программы, которая будет строить прохождение лабиринта (состоит из фигур на изображениях, метод обхода любой)?
  • Вопрос задан
  • 316 просмотров
Подписаться 3 Средний 7 комментариев
Решения вопроса 2
Vindicar
@Vindicar
RTFM!
Общая идея задачи. как я её понял: дрон с воздуха снимает лабиринт, затем алгоритм сшивает кадры в одно изображение, извлекает форму лабиринта и строит путь по нему. Так? Если так, это должно было быть в вопросе.

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

Они обычно не позволяют работать в реальном времени, но это для задачи и не требуется. Затем, зная позиции особенностей на каждом изображении, сравниваем их с "соседними" изображениями.
Вопрос 2
Тут будет большой вопрос, касающийся определения соседних изображений. Простой ответ: считаем соседними N последних кадров, но тут могут быть проблемы с длинной цепочкой кадров. Например, если дрон сделает круг, не факт, что на карте этот круг сомкнётся. Может потребоваться какая-то оценка позиции снимка.

По итогам сравнения мы получим проективное преобразование, описывающее, как надо повернуть/наклонить/растянуть/etc один кадр, чтобы совпали общие с соседним кадром части. Подвергнув кадр такому преобразованию, мы сможем все кадры привести к одной плоскости.
Вопрос 3
Скорее всего, возможные преобразования будут на нескольких кадрах, так что придётся их как-то ранжировать, и "усреднять" несколько наилучших преобразований с ближайшими соседями

Тогда постепенно построите одно изображение-карту, а уж дальше его можно будет обрабатывать обычными средствами. Там, пороговое преобразование или что для выделения "стен", определение границ лабиринта, и дальше уже тупой flood-fill для поиска пути.
Ответ написан
mayton2019
@mayton2019
Bigdata Engineer
Автор ищет функцию следующего вида.
def (pointA : point, pointB : point, figures : list) -> list

На вход приходит например точка А. Это где мы стоим. И точка Б - это выход из лабиринта.
Это впрочем мое видение задачи. Можно и изменить. И список фигур (полигоны) третьим
аргументом. И результат - список координат - траектория движения. Как выбежать из лабиринта.
Если решения не существует (например мы огородили точку А кольцом камней) то функция
должна вернуть например None.

В классическом варианте движение из точки А в точку Б в лабиринте реализуется на клеточном
поле алгоримом Волны или Волновым алгоримом.
https://habr.com/en/search/?target_type=posts&orde...]

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

По поводу нейросетей. Тема модная и не сходит с топ обсуждений.

Я предлагаю вместо нейросетевого решения обсудить кейсы когда решения не существует
а НС об этом не знает или не умеет такое детектировать. Если мы будем подмахивать нейросети
и подсовывать ей заведомо легкие решение (нет сплошной стены из фигур вокруг точки А например).
то это решение будет туфтой. И также туфтой будет нейросеть сколь бы умно она не выглядела.

Почему я решил пойти от негативного кейса? Мне кажется это - вопрос интересный и дискуссионный.
Это как доказательство теоремы. В случае алгоритма волны - это возможно. Если волна заполнила
все пространство вокруг А и не достигла Б - значит решения нет.

Кроме нейросетей есть еще комбинирование рандомных решений с улучшениями (генетические
алгоритмы)
. С точки зрения лабиртнта это выглядит как построение большого количества
случайных путей из точки А в точку Б с отбором тех путей которые
- которые короче другие
- которые не пересекают края фигур

Для генетики признаком невозможности найти решение будет скорее всего количество эпох
после которых мы так и не получили маршрут от А до Б без наезда на зеленые фигурки.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы