Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement EfficientNet backbone #172

Open
daniel-j-h opened this issue Jun 13, 2019 · 2 comments
Open

Implement EfficientNet backbone #172

daniel-j-h opened this issue Jun 13, 2019 · 2 comments

Comments

@daniel-j-h
Copy link
Collaborator

This recently came out

https://arxiv.org/abs/1905.11946

EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks

with incredible practical implications: we can either get a much better backbone than our current resnet50 for the same computational budget or get a highly computationally efficient backbone and roughly keep the resnet50's prediction performance.

Here's why we should look into this

  • it's simple and easy to implement
  • it provides huge practical engineering gains we care about (size, runtime)
  • the accuracy is same or higher (depending on EfficientNet model)

Check out the paper's table 2 (below) for comparisons; we are currently using a resnet50.

I highlighted

  • the resnet50 we are currently using
  • the EfficientNet-B0 which reaches roughly the same accuracy as resnet50 but is x4.9 smaller and requires x11 less flops
  • the EfficientNet-B4 which is a bit smaller than the resnet50, requires roughly the same amount of flops than the resnet50, but reaches a much higher accuracy

efficientnet

efficientnet2

@daniel-j-h
Copy link
Collaborator Author

daniel-j-h commented Jun 20, 2019

Took a couple more evenings than I hoped it would but now there is

https://github.com/daniel-j-h/efficientnet

Next actions:

  • finish impl (se blocks)
  • pre-train on imagenet (at least b0, b4)
  • see how it behaves as a backbone for a segmentation model in robosat
  • switch to a pre-trained efficientnet as a backbone

The EfficientNets generally use an order of magnitude fewer parameters and floating point operations per second compared to existing models with similar accuracy. If we can make this work for robosat we can expect either much better segmentation results or much smaller models (or both if we e.g. provide a B0 and a B4 backbone for our users).

cc @ocourtin might be interesting to you :)

@daniel-j-h
Copy link
Collaborator Author

Updating here. Making progress in https://github.com/daniel-j-h/efficientnet There are some open questions re. the implementation and tricks we can use on top of the paper, you can follow e.g.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant