Перейти к содержимому
Compvision.ru

Recommended Posts

Доброго времени суток. Возникла задача определения мостов на картах Google и же с ними. (разумеется средствами OpenCV) Хотелось бы послушать мнение компетентных людей на сей счет. Какие идеи и общие принципы решения данной задачи Вы видите? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Все современные подходы к таким вещам сводятся к использованию нейросетей. Если интересует сегментация мостов, то архитектура типа Unet. Если детектирование прямоугольника, то SSD, RetinaNet, Faster RCNN, YOLO.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну, пробовать можно. В любом случае этот процесс должен начаться со сбора датасета, разметки и т.д. Раньше работать над алгоритмом смысла нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Бегло глянул на карты Google. Цвет речки всегда одинаковый. Возможно, выделение по цвету и дальнейший поиск прямых линий что-то даст.
А вообще, конечно, более простой способ это UNet в нейросетях. Достаточно просто собрать датасет, НС сама найдет фичи и выделит мосты.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А где можно почитать про нейросети и про UNet в частности что - нибудь из рубрики  ДЛЯ ЧАЙНИКОВ

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
18 минут назад, Sergey1985 сказал:

А где можно почитать про нейросети и про UNet в частности что - нибудь из рубрики  ДЛЯ ЧАЙНИКОВ

Это достаточно новая архитектура. Если не ошибаюсь в 2015 изобрели, а в 2016 начали активно использовать. Поэтому с чтением на русском вообще беда.
Далее. Все эти вещи писаны на Python и только. По шагам это выглядит так: изучаем Python, изучаем азы сверточных нейронных сетей, покупаем или арендуем GPU  — аллилуйя.

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

3 часа назад, Nuzhny сказал:

Все современные подходы к таким вещам сводятся к использованию нейросетей. Если интересует сегментация мостов, то архитектура типа Unet. Если детектирование прямоугольника, то SSD, RetinaNet, Faster RCNN, YOLO.

Серега , все хочу спросить, а ты не переписывал на плюсы подобные архитектуры? Насколько этот процесс трудоемок?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
22 minutes ago, idrua said:

Серега , все хочу спросить, а ты не переписывал на плюсы подобные архитектуры? Насколько этот процесс трудоемок?

Тут правильно было бы спросить: использовал ли я их в проекте, написанном на С++? Ответ: да.

Но тут 2 этапа:

  1. Выбор архитектуры, обучение, всякие графики - это всё делалось на Питоне.
  2. Сама работа обученной сети или inference. Да, это делал на С++ и сейчас делаю.
  • 2.1. В первом приближении практически всё можно запускать с помощью средств OpenCV - opencv_dnn. В нашем совместном проекте Multitarget-tracker детекторы так и работают: и resnet, и MobileNet, и YOLO... Не всё идеально, но запускается и результат выдаёт, но только на CPU или Intel GPU.
  • 2.2. TensorFlow имеет хорошее C++ API, в проектах мы его используем вместе с OpenCV, которым предварительно обрабатываем видео. Обучение и тренировка сети на Питоне.
  • 2.3. Ранее использовал Caffe, там тоже всё отлично.
  • 2.4. Использовал и видел многие проекты, которые включают в себя код darknet и обученный под себя YOLO. Там всё достаточно просто, примеры в нём самом есть.
  • 2.5. Ещё знаю, что нормальный С++ API есть у Caffe2 и MxNet, но с ними опыта не было.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
19 минут назад, Nuzhny сказал:

Сама работа обученной сети или inference. Да, это делал на С++ и сейчас делаю.

Т.е. обучаешь ты на Python, а inference  на плюсах. Я правильно понял?
Ок. Даже если так, то как добыть из файла h5 весовые коэффициенты. Где-то описан формат файла?

А были модели на Keras в обучении? Выходной файл обученной модели отличается чем-то для TF и Keras?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
10 minutes ago, idrua said:

Т.е. обучаешь ты на Python, а inference  на плюсах. Я правильно понял?

Да, именно так.

10 minutes ago, idrua said:

Ок. Даже если так, то как добыть из файла h5 весовые коэффициенты. Где-то описан формат файла?

А были модели на Keras в обучении? Выходной файл обученной модели отличается чем-то для TF и Keras?

h5 у нас не водится, tensorflow::SavedModel сохраняет в *.pb, то есть бинарный protobuf.

Модели в Керасе тоже обучали и использовали, но уже не вспомню как. Сейчас же Керас уже стал часть TensorFlow (его исходники в репозитории TensorFlow), возможен взаимный вызов из одного методов другого. Точно помню, что проблем с этим не было.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×