MobileNets - Tradeoff

Hi,

Are there any tradeoffs between performance and efficiency when using MobileNet? In other words, if computational resources are not a concern, would a Conv Net (correction: other architectures) perform better than a MobileNet?

Thanks

For performance / accuracy tradeoff, try different settings on your dataset to make a conclusion.
Mobilenet also uses Conv2D under the hood. So, please be specific about the architectures you want to compare.
Before updating your post, how about:

  1. Trying both architectures on the dataset
  2. Including observations and why you picked one over another.

If this is not course related, please consider posting your question on sites like stackoverflow as well to improve the odds getting a good answer.

Hi,

Thanks for your response. It is a course related. The motivation behind MobileNet is using this architecture with small devices that has limited resources.

Should we consider another architecture when we are not using a device that has limited resource (like a cellphone)? If so, why?

before trying different architectures, I believe we need to make decision on what architectures would be a good candidate based on our use case.

If you are interested in using in small devices, you may want to check TensorFlow Lite. It converts TensorFlow model to be suitable to run in a resource constraint device. It runs on iOS, Android, embedded Linux and so on. There are several works to make it run on Raspberry pi. Of course, there are some restrictions, and, it does not say all model can be converted. But, it should be interesting one.

[some additions]
I suppose I bypassed some key points, and talked different things. Here is what I thought.

MobileNet itself also has options to realize “trade off” of accuracy and performance. Those are "width multiplier, \alpha" and "resolution multiplier, \rho“. And, if we want to compare with other ConvNet like VGG, there is another factor, i.e, GPU. As we learned in Andrew’s video, MobileNet has an excellent algorithm to reduce computational efforts. Heavy and deep convolutions definitely require huge computational power. But, those can be easily off-loaded to GPU. If we do not use use GPU, MobileNet should be faster than VGG, but if we use GPU, then, VGG is much faster than MobileNet. Practically, there should be targets and constraints which are key factors to select a model.
On the other hand, as you know, training a model also requires huge computational resources (and time). If we can train a model in a rich environment, and transfer it to a resource constraint environment, then it may be one of choices. It’s a kind of 'hybrid” approach, that I wanted to add.

Like above, there are several points to be considered to select a model (or even in a single model.)

Hope this helps some.

@Moutasem_Akkad

Sorry to repeat this. The decision on which architecture to use should be defined by you, based on the problem in hand.

For all we know, mobilenet might be enough for your dataset. For instance, if the train / val / test accuracies are 1 when using mobilenet, would you need a different architecture?

For starters, please come up with optimizing and satisfying metrics for your problem. Try different architectures and pick the one that passes the satisfying metrics and produces the best results for optimizing metrics. It’s possible to come up with your own architecture and that’s ok too.

For existing models, you might find this link useful.

Does this help?