Pull to refresh

Comments 34

неправильно комментируете и вот :)
Да я просто передумал разводить срач на ровном месте.
Интересно Народную карту модераторы контролируют или АИ проверяет изменения. Рисую свалку — её не утверждают.

На ручном приводе асессорами, по-крайней мере такая отбивка приходила на почту после подтверждения моей правки.

В OSM было много докладов на эту тему. В этом году и Microsoft делал, и Facebook и еще пару разных проектов. Проблема всегда одна: кто будет адреса пилить?
В Америке домики отрисованы, но смысл без адреса почти нулевой.
А когда дому присваивают кокой-то адрес, он в каких документах появляется? Может быть эти документы есть в публичном доступе? Тогда можно использовать другую нейросеть и распарсить какой-нибудь канцелярит. Потом соотнести его с существующими реалиями и выяснить о каком доме идёт речь.
В России адреса можно поставить по кадастровой карте. Так же есть APIб которое возвращает кадастровый адрес по координатам.

Проблема всегда одна: кто будет адреса пилить?
Как минимум в MAPS.ME при наличии отрисованного здания у человека появляется возможность изменить/добавить адрес. Это не массовые правки, но уже что-то.
Я на дачах разметил линии номерами и центральные улицы назвал именами дачных массивов все председатели именно так и рисуют на планах, но кому то не понравилось рефы улиц и их выпилили.Кстати Павел Гурдэ не заморачивался поиском топонимов а тракты просто нумеровал, в Верном только в 1957 году стали улицам давать имена улицам до этого были № квартала как в Порт Артуре.
Чтобы задать адрес, домик уже должен быть. Не представляете как сложно собирать адреса когда домов нет/частично есть. Потом разбирать записи и выяснять какому из домов соответствует заметка — гораздо сложнее. Хуже только в чистом поле без дорог и домиков пытаться что-то сделать.
адрес может присваиваться не только домику но и участку земли.
Я к тому что точку в пяти метрах от себя не все могут найти на экране смартфона, когда там нет ничего. А когда потом ещё выясняется, что GPS мобильника тебя держал на 20 метров левее (или кто-то рисовал дороги по спутнику без коррекции смещения снимка) — и подавно. А так хоть с реальностью есть возможность сопоставить.
> смысл без адреса почти нулевой

смысл? Ну например в «векторизации» Генштаба )))
Согласен, что было бы здорово. При этом, я постоянно везде пишу, что контуры домов — наименее приоритетные объекты на карте. Ну, после крышек люков, наверное. Главное — их параметры: адрес, этажность. Этого ни с какого спутникового снимка не получишь, и именно для таких данных яндекс сделал «народную карту», а не полагается на автоматику.
GAN'ы в этой задаче пока не использовали.
«Карты», которые выдает генератор в Pix2Pix, выглядят довольно красиво, но их также придется дополнительно обработать, чтобы получить векторизованные здания, а это, кажется, еще более сложная задача, чем обработать семантическую сегментацию.
Есть множество работ, в которых GAN'ы используются для улучшения качества семантической сегментации. Например, вот эта Semantic Segmentation using Adversarial Networks. Возможно, стоит попробовать их.
Я как раз и говорил про «предобработку» изображения
Хотя кажется, что можно сделать ту же самую сегментацию и на картинках после Pix2Pix :)
Сложная схема получается, но такой эксперимент выглядит достаточно интересно. Можно попробовать :)
Увидел тему, изображение и сначала не понял, что моя курсовая работа времен института (Разработка методов распознавания городской застройки по аэрофотоснимкам) делает в блоге Яндекса, ну очень уж похоже :D

image

Правда меня в дипломе интересовала больше скорость распознавания и возможность использования алгоритмов в реалтайме, потому что целевая задача была иной и я не рассматривал возможность использования нейросети. Тем не менее, результаты точности распознавания в статье прекрасны, я впечатлен)
Действительно, похоже. Видимо, зеленый цвет лучше всего смотрится на спутниковых снимках :)
А какие методы для распознавания Вы использовали? Расскажите, пожалуйста, очень интересно.
Так как главная актуальность в дипломе была определена, кажется, как «определять местоположение по зданиям», а вторичная — «искать изменения городской местности со временем», то у меня использовались не особо интересные методы с современной точки зрения (ну и, конечно, тот факт, что времени на все это было в обрез, тоже повлиял). Первый способ подходил вообще только для зданий, которые просто были внесены в базу вручную, это достаточно сильное отклонение от темы, но выглядело это примерно так:

image

Т.е. по сути это поиск зон по ключевым точкам, в котором использовался алгоритм SIFT из всем известного OpenCV. Когда я начинал только этим заниматься, по своей наивности я считал, что здания по большей части все одинаковые, а значит для распознавания достаточно добавить в базу здания или даже их части с наиболее выраженными признаками. Конечно, это никак не работало. Если я правильно помню, то без предобработки все изображения зашумлены слишком сильно, а если обрабатывать, то признаков останется слишком мало, чтобы SIFT или SURF адекватно сработали на нахождение ключевых точек конкретных зданий. Для моих целей это работало достаточно быстро и абсолютно точно, в принципе, но для целей распознавания зданий напрямую это никак не годилось.

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

image

Сначала выделяются контура алгоритмом Line Segment Detector (он быстрее и лучше, чем использовать Canny edge detector или Hough Transform), потом линии достраиваются и, наконец, проходят простой фильтр наличия отрезков на всех изначально обнаруженных и достроенных сторонах, в принципе это все, на что меня хватило на тот момент. Прямоугольные здания, конечно, распознавались очень неплохо, чего нельзя было сказать про сложные строения, ну зато это происходило достаточно быстро. Думаю, если бы покопался подольше, поискал нужные фильтры, добавил бы полигональный билдер какой-нибудь, это все работало повеселее :D
Прям, получилась статья в статье, чтобы читая статью мы могли читать статью.

image
Писал магистерскую — так и не дошел до выделения отдельных зданий.
Там было больше про спектральные индексы:
Разделение на растительность, почву, воду и искусственные объекты. Определение изменений состояния растительности. Поиск изменений формы областей, занимаемых растительностью, почвой и т.д. Ну и все в таком духе.
Закончил на разделении области искусственных объектов методом k-средних.
image
image
image
А до алгоритма, который точно бы указывал — здание это или нет, не дошло.
Пробовал как-то unet для поиска трещин на фото стекол, к сожалению эта сеть плохо работает, если классы на выходе (черные и белые) сильно не сбалансированны (трещин мало и они тонкие), что с этим делать — не понятно.
а какую функцию потерь Вы использовали?
Работает отлично, только учить надо не под BCE, а под смесь Focal + Dice, например, или под что-то подобное.
Хотелось бы посмотреть распознанное изображение вида сверху материнской платы.
Там тоже свои конденсаторы — высотки и слоты — панельные многоквартирники

Изображение справа тоже сегментировано Mask R-CNN? Удивительно, что у вас получилось выделить плотно расположенные однотипные объекты. В моих попытках для таких случаев region proposal network обучить не удавалось, но сеть маски работала очень хорошо.
image

Для такой плотной застройки более хороший результат показала комбинация семантической сегментации и детектирования ребер, но и Mask R-CNN тут тоже не безнадежен :)
3. Найти самую длинную сторону в контуре. Именно её угол наклона определит угол всего будущего ортогонального многоугольника.

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

Делал ортогонализатор как раз для домов (на C, на Java), пришёл к выводу, что перебор и самая длинная сторона — не лучшие способы. В итоге сделал через доворот (шагами по 90 градусов) всех векторов контура внутрь сектора 90 градусов, умножение длин векторов на их квадрат и сложение всех векторов. Суммарный вектор даёт базовое направление, но чтобы избежать проблем на границе сектора приходится считать 2 варианта — для секторов -45..+45 градусов и 0..90 градусов, и выбирать какой даёт меньшее отклонение контура.
Далее проецируем все вектора контура на базовое направление или ортогональное.

Замечу, что ваш вариант с проецированием на сетку может давать лучший результат для симметричных зданий, зданий с одинаковыми элементами или периодической структурой, если шаг сетки окажется подходящим.
Sign up to leave a comment.