Machine learning is still considered "new" or "difficult" so people often respond to posts like this with comments like the one that says "Nothing impressive, existing architectures were used". Writers only get enthusiasm if they raise a benchmark with a brand new approach.<p>For researchers and people spend a lot of time on ML, I totally get that. There isn't anything <i>new</i> here. In fact, I correctly guessed nearly the entire content of the article from the title alone (transfer learning, using Keras' "Application" models, etc). But why does that matter? It's still a useful article to a lot of people and it's well written.<p>There is still a dearth of practical advice on how non-specialist developers can solve everyday problems with ML. The truth is that the majority of real projects that real companies need done could be done exactly this way. Using this approach, a developer could get decent results and be done with a project in hours instead of months.<p>For some reason everyone thinks it's fine to post an article about how to speed up your CRUD website with a Postgres indexes even though it's been done millions of times before, but ML posts get dismissed if they aren't making some kind of research breakthrough. I personally feel like we need a lot more approachable discussion around ML like this in the world. Every dev should feel comfortable getting started with this kind of work if they want to.
While it might not be novelty (and therefor it doesn't seem impressive to some), Transfer Learning is actually highly efficient even for small datasets and should at least be considered before wasting energy and money in building your own convnet. Its a good first step when tackling a new problem in this problem space.
Interesting. I did the same exercise with the pretrained Xception and 2 dense layers at the end and only got 83% accuracy. Thanks for sharing the tweaks you made, that's good to know. I wasn't aware of those techniques.
I'd love to see this network tested on hybrid breeds (but still trained on pure breeds) to see if the probabilistic output would be divided between the two parent breeds.
Nothing impressive, existing architectures were used, InceptionV3, Xception and InceptionResNetV2. Fine-tuning those models resulted in a slightly worse accuracy.