Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Сегментация объектов на спутниковых снимках
(Kaggle DSTL)
Роман Соловьев, Ph.D.
kaggle.com/zfturbo
ODS Slack: @zfturbo
Арт...
Постановка задачи
RGB+P 450-690 нм
0.31 метр/пиксель
4 канала
M band 400-1040 нм
1.24 метр/пиксель
8 каналов
SWIR(A) 1195-...
Метрика: Average Jaccard Similarity
0.6
Размер данных
Public
Private
Train
25 samples
Fake Test: 425 samples
Real Test
32 samples
Особенности соревнования
6010_0_0.tiff
Дано: Что нужно сделать:
Algorithm
(CNN)
Боль
Baseline
Train
Validation:
X
Y
Predict
Sliding window
U-net
Представление изображения
U-net
U-Net: Convolutional Networks for Biomedical Image Segmentation
arXiv:1505.04597 [cs.CV]
github.com/jocicmarko/ultra...
Улучшения базового решения
Conv + ReLu → Conv + BN + ReLu
Augs: Rotation, Mirror, Flip
Adam (LR 0.001)
Hard samples on Epo...
RGB+P, 224 x 224
M band
56 x 56
A band
14 x 14
masks, 224x224
Multi input
Conv
+
Pool
Conv
+
Pool
Concat
Concat
Concat
Con...
Full pipeline
RGB+P+M
1280 x 1280
128x128
U-net
RGB+P
3360 x 3360
160x160
U-net
RGB+P
3584 x 3584
M band
896 x 896
A band
...
Logs
Logs
Test check
ZFTurbo solution
3360 х 3360
20 chns
RGB+P
M band
A band
...
15 x 15 x 25 = 5625 + positive samples
Fixed train pool
Strat...
Структура U-net BN224
U-net BN32 для машин
Augs: Rotation, Mirror, Flip
Коэффициент Тверски loss
32 x 32 x 12
U-net
32BN Class n
RGB+P+M
All bands
3360 x 3360
20 chns
224x224
U-net BN224, cl 1
U-net BN224, cl 2
U-net BN224, cl 8
...
RGB+P+M
3360 x 3360
12 chn...
Kyle the goose
(1st place)
Kyle pipeline overview
RGB
RGB+M
RGB+M+A
RGB+P+M+A
M+P+A
224 x 224 x n
256 x 256 x n
288 x 288 x n
320 x 320 x n
Class n
U...
Vladimir Iglovikov, Ph.D. & Sergey Mushinskiy (3rd place)
3560 х 3560 x 16 chns
RGB+P
M band
EVI
NDWI
SAVI
CCCI
112 x 112 ...
alno & kostia & deepsystems
Many different approaches:
UNet with smaller patches
Modified DenseNet (Tiramisu) github.com/S...
Small vehicle augmentation (didn’t finish in time)
Misc. Manmade structures
Very thin, lot of loss on polygon → mask → polygon:
pixel jaccard 0.27 → polygon jaccard 0.23 :(
...
0.42
Hardware & frameworks
Dev
Core i7
RAM 48 Gb
GTX 1080
Learn 24/7
Core i5
RAM 32 Gb
Titan Black
Learn 24/7
Core i5
RAM 64 Gb...
Full scheme
Сегментация объектов на спутниковых снимках (Kaggle DSTL) / Артур Кузин (Avito)
Upcoming SlideShare
Loading in …5
×

Сегментация объектов на спутниковых снимках (Kaggle DSTL) / Артур Кузин (Avito)

147 views

Published on

РИТ++ 2017, секция ML + IoT + ИБ
Зал Белу-Оризонти, 6 июня, 16:00

Тезисы:
http://ritfest.ru/2017/abstracts/2802.html

В докладе я расскажу про решение задачи сегментации объектов на спутниковых снимках, которая была поставлена в рамках Kaggle-соревнования Dstl Satellite Imagery Feature Detection. В этом соревновании я в команде с Романом Соловьёвым занял 2 место.

В докладе я кратко опишу особенности работы нейросети для сегментации объектов. Затем будут показаны примеры модификаций нейросети с учетом особенности задачи. Также будут рассказаны приемы обучения нейросети, значимо повышающие финальную точность. Будут рассказаны все топ-5 решения.
В качестве бонуса - история, как можно сломать лидерборд за пару дней до конца соревнования.

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

Сегментация объектов на спутниковых снимках (Kaggle DSTL) / Артур Кузин (Avito)

  1. 1. Сегментация объектов на спутниковых снимках (Kaggle DSTL) Роман Соловьев, Ph.D. kaggle.com/zfturbo ODS Slack: @zfturbo Артур Кузин Avito kaggle.com/drn01z3 ODS Slack: @n01z3
  2. 2. Постановка задачи RGB+P 450-690 нм 0.31 метр/пиксель 4 канала M band 400-1040 нм 1.24 метр/пиксель 8 каналов SWIR(A) 1195-2365 нм 7.5 метр/пиксель 8 каналов
  3. 3. Метрика: Average Jaccard Similarity 0.6
  4. 4. Размер данных Public Private Train 25 samples Fake Test: 425 samples Real Test 32 samples
  5. 5. Особенности соревнования 6010_0_0.tiff Дано: Что нужно сделать: Algorithm (CNN) Боль
  6. 6. Baseline Train Validation: X Y Predict Sliding window U-net
  7. 7. Представление изображения
  8. 8. U-net U-Net: Convolutional Networks for Biomedical Image Segmentation arXiv:1505.04597 [cs.CV] github.com/jocicmarko/ultrasound-nerve-segmentation
  9. 9. Улучшения базового решения Conv + ReLu → Conv + BN + ReLu Augs: Rotation, Mirror, Flip Adam (LR 0.001) Hard samples on Epoch: ... ~3000 Train pool Predict ... ... ... ... ... Class 1 Class 2 Class n Top 100 hard samples per class ~30%
  10. 10. RGB+P, 224 x 224 M band 56 x 56 A band 14 x 14 masks, 224x224 Multi input Conv + Pool Conv + Pool Concat Concat Concat Concat Conv + Up Conv + Up Conv + Up Conv Conv Conv + Pool Conv + Pool
  11. 11. Full pipeline RGB+P+M 1280 x 1280 128x128 U-net RGB+P 3360 x 3360 160x160 U-net RGB+P 3584 x 3584 M band 896 x 896 A band 224 x 224 56 x 56 14 x 14 Multi input U-net 1 class, gmean epoch: 489, 450, 245 3 class, epoch: 489 6 class, epoch: 489 7 class, gmean epoch: 389, 349 8 class, gmean epoch: 489, 450, 245 2 class, epoch: 518 4 class, epoch: 457 5 class, epoch: 321
  12. 12. Logs
  13. 13. Logs
  14. 14. Test check
  15. 15. ZFTurbo solution 3360 х 3360 20 chns RGB+P M band A band ... 15 x 15 x 25 = 5625 + positive samples Fixed train pool Stratified 5 KFold by IMG_ID 224 x 224 x 20 U-net 224BN Class n Grid search:  Optimizer =  {Adam(0.01, 0.001, 0.0001), SGD(LR 0.05, 0.01, 0.001)}   Aug rotation = True, False   Regularization = Dropout(0.1), BN   Epoch size = 5625, 5625/2 Train Sample preparation
  16. 16. Структура U-net BN224
  17. 17. U-net BN32 для машин Augs: Rotation, Mirror, Flip Коэффициент Тверски loss 32 x 32 x 12 U-net 32BN Class n RGB+P+M
  18. 18. All bands 3360 x 3360 20 chns 224x224 U-net BN224, cl 1 U-net BN224, cl 2 U-net BN224, cl 8 ... RGB+P+M 3360 x 3360 12 chns U-net BN32, cl 9 U-net BN32, cl 10 RGB+P 3584 x 3584 M band 896 x 896 A band 56x56 32x32 RGB+P+M 1280 x 1280 12 chns 128x128 RGB+P 3360 x 3360 4 chns 160x160 224x224 U-net classes: 1-7 U-net All classes n01z3 ZFTurbo Preprocess Train neural nets Merge based on LB ScoreClass Multi input U-net
  19. 19. Kyle the goose (1st place)
  20. 20. Kyle pipeline overview RGB RGB+M RGB+M+A RGB+P+M+A M+P+A 224 x 224 x n 256 x 256 x n 288 x 288 x n 320 x 320 x n Class n U-net Depth 3 Depth 4 Depth 5 Bagging Union http://blog.kaggle.com/2017/04/26/dstl-satellite-imagery-competition-1st-place-winners-interview-kyle-lee/ Oversampling on rare classes Vehicles sample on Roads and Building Augs: rotate 45 deg, 15-25% zooms/translations, shears, channel shift, flips Adam (LR 0.001) Index methods for waterways (CCCI and NDWI)
  21. 21. Vladimir Iglovikov, Ph.D. & Sergey Mushinskiy (3rd place) 3560 х 3560 x 16 chns RGB+P M band EVI NDWI SAVI CCCI 112 x 112 x 16 Class n U-net Conv + ReLu → Conv + BN + Elu Batch 128 Train augs: Mirror, Flip, 45 Flip (transpose) [D4 group] Nadam (LR 0.001, 0.0001) Test time aug: original + flips + transpose 80 x 80 P.S. Sergey is open for new opportunities in Data Science linkedin.com/in/sergeymushinskiy
  22. 22. alno & kostia & deepsystems Many different approaches: UNet with smaller patches Modified DenseNet (Tiramisu) github.com/SimJeg/FC-DenseNet SegNet (conv/deconv without skip connections) Using pre-trained VGG (smart pre-processing by deepsystems) Some post-processing for water Voting/union of several models 2nd place on Public LB → 5th place on Private LB Standing water 0.072 → 0.018, other classes were good.
  23. 23. Small vehicle augmentation (didn’t finish in time)
  24. 24. Misc. Manmade structures Very thin, lot of loss on polygon → mask → polygon: pixel jaccard 0.27 → polygon jaccard 0.23 :( Solution: before making train polygons, do .buffer(0.5): pixel jaccard 0.29 → polygon jaccard 0.29 on validation, 0.027 on Private LB
  25. 25. 0.42
  26. 26. Hardware & frameworks Dev Core i7 RAM 48 Gb GTX 1080 Learn 24/7 Core i5 RAM 32 Gb Titan Black Learn 24/7 Core i5 RAM 64 Gb 2x Titan X 12 Gb (Maxwell) Dev/Learn Core i7 RAM 32 Gb 980 Ti 6 GB Windows 10 Python 3.4 Keras 1.0.8 Theano-0.8.2 Ubuntu 16.04.2 LTS Python 2.7 Keras 1.1.2 Theano-0.9.0rc2.dev
  27. 27. Full scheme

×