Open bonlime opened 4 years ago
Статья про разпознавание объектов на спутниковых снимках: End-to-End Deep Convolutional Active Contours for Image Segmentation
upd. прочитал. мне нравится идея. не понятно почему они используют какую-то супер маленькую сеточку для детекции крыш, вместо какого-нибудь dilate Resnet ну и ладно. С точки зрения реализации сделать на выходе 3 слоя для distance transform, lambda1 и lambda2 не сложно. А вот самому написать DSAC может быть очень проблемно.
upd 2. нашел еще одну статью от того же автора: DALS: Deep Active Lesion Segmentation. Там есть чуть больше инфы о том, как устроен этот его DSAC.
Еще у меня есть идея попробовать собрать монстра вроде: EfficientNet backbone + aspp (из Deeplabv3) чтобы улучшить фичи на последнем слое + BiFPN чтобы улучшить фичи на слоях с высоким разрешением + Segmentation голову поверх всего этого
Panoptic-DeepLab - небольшое улучшение DeepLab. [Panoptic Feature Pyramid Networks](Panoptic Feature Pyramid Networks) - то что в pytorch_tools я впилил как SegmFPN
Статья про разпознавание объектов на спутниковых снимках: End-to-End Deep Convolutional Active Contours for Image Segmentation
Сейчас написал письмо одному из авторов статьи, попросил поделиться исходным кодом. Будем надеяться, что он ответит.
upd: ahatamiz@cs.ucla.edu не ответил. Эмиль хочет написать на FB https://www.facebook.com/ahatamiz буду ждать результатов
https://arxiv.org/pdf/1805.04777.pdf Статья о convolutinal conditional random fields. Если я правильно понимаю, можно обучить сетку с binary cross-entropy, а потом поверх набросить эту штуку и она может улучшить предсказания. есть код для PyTorch! upd. с пол пинка код не завелся и с пинка тоже. видимо придется разобраться что там происходит прежде чем получится заставить это работать
https://arxiv.org/pdf/2001.04269.pdf Статья про то, что можно добавить дескриминатор, adversarial loss и учить сегментацию как GAN. Звучит прикольно, но кажется что на практике будет сложно применить
END TO END TRAINABLE ACTIVE CONTOURS VIA DIFFERENTIABLE RENDERING
Еще одна статья про active contours. Огромный плюс - у них есть код на торче! Можно попытаться запустить upd. у них есть фундаментальнео ограничение - они хорошо сегментируют только один объект, причем он должен находиться в центре. картинки в статье черри пикнутые.
Вот тут хороший репозиторий. Перечислены статьи, их немного, можно изучить. https://github.com/JunMa11/SegWithDistMap Статьи все свежие.
https://arxiv.org/pdf/1909.01671.pdf Но тут нет кода.
Более старая статья про Watershed transform, и по ней, кажется, есть код. https://arxiv.org/abs/1611.08303v2
Главный вопрос, собственно, в том, как считать distance map на pytorch, чтобы можно было делать backprop. Пока что я реализаций distance transform на Pytorch не встречал, но м.б. есть какие-то его заменители или приближения?
https://towardsdatascience.com/mapping-challenge-winning-solution-1aa1a13161b3 Нет смысла читать всю статью. Основная идея, которую можно попробовать повторить, это использование разных взвешенных лоссов.
1) Distance weights: high values corresponds to pixels between buildings.
2) Size weights: дополнительно взвешивать маски в зависимости от размера здания. Т.е. чем оно больше, тем его вес меньше. Идея видимо в том, что большие здания сетка и так найдёт, поэтому нужно искусственно учить её находить варианты поменьше. При это всё что не здание закрашивать чёрным (максимальный вес)
Aerial image semantic segmentation using DCNN predicted distance maps Статья про обучение предсказаний на спутниковых снимках с использованием signed distance maps
Ссылки от парня из лабы Карима:
Для того, чтобы разделять здания более четко могу порекомендовать отдельную сетку научить сегментировать границы зданий (взять границу толщиной 2-3 пикселя), и потом из итоговой маски зданий вычитать маску границ. https://www.kaggle.com/c/data-science-bowl-2018/discussion/54741
Для выравнивания границ ничего адекватного не могу подсказать, мы после всего уже с векторными полигонами работаем, но это вряд ли улучшит метрики, только внешний вид будет более привычный человеку, вот тут примерно написано: https://medium.com/geoalert-platform-urban-monitoring/urban-mapping-going-over-post-processing-issues-f89170131b56
Пусть тут будет склад статей
Авторы попробовали обучать FPN и SegNet с кросс-этнропией и focal loss и вышло что focal loss практически не помогает