GithubHelp home page GithubHelp logo

License == ? about kaggle_dstl_submission HOT 5 CLOSED

ternaus avatar ternaus commented on July 21, 2024
License == ?

from kaggle_dstl_submission.

Comments (5)

cepera-ang avatar cepera-ang commented on July 21, 2024 2

Feel free to use as you want! Added MIT's licence.

from kaggle_dstl_submission.

guillaume-chevalier avatar guillaume-chevalier commented on July 21, 2024 1

Thanks! If you are interested in seeing what I have done with your code, see my post here:
https://vooban.com/en/tips-articles-geek-stuff/satellite-image-segmentation-workflow-with-u-net/

By the way, I am wondering if you have used automatic hyperparameter optimization search (such as using Hyperopt or a grid search), or if you did that incrementally and manually with potentially less computing power.

I also wonder about how did you split the labelled data into a training/validation/test set, so as to find your best architecture. On my side, I used a test set as being the first fifth of the 25 images at the left (in other words, the first left column caused no class imbalance as a train/test split):

I would be interested in having your output on that, if that does not bother you / if you have time for that :) Thanks again!

from kaggle_dstl_submission.

ternaus avatar ternaus commented on July 21, 2024 1

I loved your post and amount of work that you put into it is very impressive.

We did not use HypertOpt or gridsearch for this particular problem. It is expensive and we just did not have enough hardware. I used HyperOpt in other problems. It is pretty nice and works better than BayesianOpt

  1. All Unet modifications architectures work similarly. The only important difference was a BatchNorm that increased convergence a lot. A different number of filters, different activation functions, a different number of blocks - all nearly the same. One that we used worked well for me in the UltraSound Nerve segmentation challenge.

  2. To my knowledge, noone figured out how to do reliable validation in this problem. Train, Public and Private test are small and very different. We tried picking several images, like what you described, we tried to split each image into train and test parts - no success. Both these variations are able to catch big improvements, but nothing is able to catch small. => in this problem we took advantage of the fact that overfitting Unet is hard and used visual inspection (plotting images and predicted masks side by side) and feedback from Public LB which was unreliable.

  3. In your post you mentioned Tiramisu. - We and other teams tried it, no success. Same performance as Unet but converges much significantly slower. Most likely one will be able to make Tiramisu work well, but probably not on this dataset but something much bigger.

How I would try to imporve our solution if I did it right now?

  1. After that challenge I used mxnet, but right now I am using PyTorch and I really like it. => my first step would be to transfer everything into Pytorch, especially because Konstantin Lophin already has really nice Unet implementation: https://github.com/lopuhin/mapillary-vistas-2017 . You may also find his code for the DSTL problem there (his team finished 5th). https://github.com/lopuhin/kaggle-dstl
    Reason, why I would use PyTorch, is because I have multiple GPU at home and PyTorch allows to parallelize your batch without pain, that you get in TensorFlow => instead of 112x112x128 I would be able to use, say 224x224x128 or 256x256x64 which, I believe would help for some classes.

  2. Another thing that I had in mind, but we did not have time to implement is different input scale for different images. I believe downscaling input images and feeding to the same network would help trees and crops. Something that worked well for Kyle, who finished 1st.

  3. And of course car classes. A lot can be done there, even taking into account far from the perfect labeling quality. Sergey and I got a lot of practice in this type of the task in a https://www.datasciencechallenge.org/challenges/1/safe-passage where one needed to find cars from aerial images. I finished second, and I believe some knowledge in that problem may be transferred to this type of the task.

Again, I loved your post and reposted it where I could :)

from kaggle_dstl_submission.

guillaume-chevalier avatar guillaume-chevalier commented on July 21, 2024 1

Thanks for sharing! I edited the post to include recommendations on the amount of data if using the Tiramisu. Also, I didn't know that the 1st place winner used different zoom levels as data augmentation.

PyTorch seems very interesting to me too, and especially for its dynamic computation graph (random fact: I have just started learning PyTorch yesterday evening hehe, that's motivating today to see your thoughts on it).

Thanks again :)

from kaggle_dstl_submission.

guillaume-chevalier avatar guillaume-chevalier commented on July 21, 2024 1

By the way, I have also added a link in the blog post to some code I have made for making the prediction perfectly smooth (D4 Dihedral Group for predictions + smooth merging of overlapped image patches):
https://github.com/Vooban/Smoothly-Blend-Image-Patches
That GitHub repository I just linked might soon be converted into another blog post on the website.

from kaggle_dstl_submission.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.