Jump to content
Compvision.ru
Sergey1985

Поиск мостов

Recommended Posts

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
18 минут назад, Sergey1985 сказал:

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

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

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

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

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

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

Share this post


Link to post
Share on other sites
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, но с ними опыта не было.

 

Share this post


Link to post
Share on other sites
19 минут назад, Nuzhny сказал:

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

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

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

Share this post


Link to post
Share on other sites
10 minutes ago, idrua said:

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

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

10 minutes ago, idrua said:

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

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

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

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Recently Browsing   0 members

    No registered users viewing this page.

×