Smart India Hackathon, 28 Architectures Later
This started as a Smart India Hackathon 2023 problem statement: classify satellite and drone imagery into terrain types. Simple enough on paper. In practice, it turned into an exhaustive architecture search across 28 model configurations because I wanted to actually understand which design choices matter for this kind of task, not just throw ResNet at it and call it a day.
The Experiment Matrix
I trained 7 custom CNN architectures from scratch, each with 4 different optimizers: Adam, RMSprop, SGD with momentum, and Adagrad. That is 28 custom model runs. On top of that, I evaluated 4 pretrained transfer learning models: EfficientNet-B0, ConvNeXT Tiny, MobileNetV2, and Xception. All of them on the same dataset of 10,000 custom scraped images across 5 terrain classes.
The dataset itself was a project within the project. There is no clean, large scale terrain classification dataset that covers the categories we needed, so I built a scraping pipeline to collect images from satellite imagery sources, filtered for quality, balanced the classes, and split into train/val/test with stratification. Data work is always 60% of the actual effort and 0% of the glory.
EfficientNet Wins, Then Gets Compressed
EfficientNet-B0 with transfer learning won at 92.40% test accuracy. Not surprising in hindsight. The compound scaling in EfficientNet is well suited for tasks where you need good feature extraction but do not have millions of training images. What was more interesting was how much the optimizer choice mattered for the custom architectures. Adam consistently outperformed the others on this task, but the gap between Adam and RMSprop was smaller than I expected. SGD with momentum was competitive on the deeper custom architectures but fell behind on the shallower ones.
The practical challenge was deployment. The raw EfficientNet-B0 checkpoint was about 150MB. For a system that might run on edge devices or resource constrained servers, that is too large. I applied quantization and pruning to compress it down to 15.6MB, roughly a 10x reduction, with minimal accuracy loss. The compressed model sits comfortably on hardware that the full model would choke on.
Open Source and Community
The project has 21 GitHub stars, which is modest but meaningful for a hackathon project. I open sourced it through GSSoC (GirlScript Summer of Code) and CodePeak, which brought in external contributors who helped clean up the codebase, add documentation, and improve the data pipeline. The full experiment logs, training curves, and comparison tables are in the repository. I wanted this to be a reference for anyone doing architecture comparisons on image classification tasks, not just a one off hackathon submission that rots on GitHub.
The biggest takeaway from this project was not technical. It was that exhaustive comparison beats intuition. I had strong priors about which architectures would win going in, and several of them were wrong. The only way to know is to run the experiments and let the numbers talk.