|
| 1 | +# SimpleNet in Pytorch |
| 2 | +SimpleNetV1 architecture implementation in Pytorch |
| 3 | + |
| 4 | +## Lets Keep it simple, Using simple architectures to outperform deeper and more complex architectures (2016). |
| 5 | + |
| 6 | +/SimpleNet_Arch_Larged.jpg) |
| 7 | + |
| 8 | + |
| 9 | +This is the pytorch implementation of our architecture [SimpleNetV1(2016)](https://arxiv.org/abs/1608.06037) . |
| 10 | +Pytorch is different from caffe in several sections, and this made it a bit harder to have the architecture properly ported especially since I'm a complete newbie in Pytorch. However, thanks to [this great work](https://github.com/D-X-Y/ResNeXt-DenseNet), I could easily focus on the model and port the architecture and hopefully achieve my reported results in Caffe and also exceed them as well! |
| 11 | + |
| 12 | +The pytorch implementation is also very effieicent and the whole model takes only **1239MB** with the batch size of 64! (compare this to other architectures such as ResNet,WRN, DenseNet which a 800K model takes more than 6G of vram!) |
| 13 | + |
| 14 | +The original Caffe implementation can be found here : [Original Caffe implementation - 2016](https://github.com/Coderx7/SimpleNet) |
| 15 | + |
| 16 | +#### CIFAR10/100 Results achieved using this implementation : |
| 17 | + |
| 18 | +| Dataset | Accuracy | |
| 19 | +|------------|----------| |
| 20 | +| CIFAR10 | **95.51** | |
| 21 | +| CIFAR100 | **78.37** | |
| 22 | + |
| 23 | +### CIFAR10/100 top results (2016): |
| 24 | + |
| 25 | +| **Method** | **\#Params** | **CIFAR10** | **CIFAR100** | |
| 26 | +| :--------------------------- | :----------: | :-----------: | :----------: | |
| 27 | +| VGGNet(16L) /Enhanced | 138m | 91.4 / 92.45 | \- | |
| 28 | +| ResNet-110L / 1202L \* | 1.7/10.2m | 93.57 / 92.07 | 74.84/72.18 | |
| 29 | +| SD-110L / 1202L | 1.7/10.2m | 94.77 / 95.09 | 75.42 / - | |
| 30 | +| WRN-(16/8)/(28/10) | 11/36m | 95.19 / 95.83 | 77.11/79.5 | |
| 31 | +| Highway Network | N/A | 92.40 | 67.76 | |
| 32 | +| FitNet | 1M | 91.61 | 64.96 | |
| 33 | +| FMP\* (1 tests) | 12M | 95.50 | 73.61 | |
| 34 | +| Max-out(k=2) | 6M | 90.62 | 65.46 | |
| 35 | +| Network in Network | 1M | 91.19 | 64.32 | |
| 36 | +| DSN | 1M | 92.03 | 65.43 | |
| 37 | +| Max-out NIN | \- | 93.25 | 71.14 | |
| 38 | +| LSUV | N/A | 94.16 | N/A | |
| 39 | +| SimpleNet | 5.48M | **95.51** | **78.37** | |
| 40 | + |
| 41 | + |
| 42 | + |
| 43 | +#### Models and logs |
| 44 | +-- Models and training logs can be found in [snapshot folder](https://github.com/Coderx7/SimpleNet_Pytorch/tree/master/snapshots). |
| 45 | + |
| 46 | + |
| 47 | + |
| 48 | +#### How to run ? |
| 49 | +Simply initiate the training like : |
| 50 | +`python3 main.py ./data/cifar.python --dataset cifar10 --arch simplenet_cifar_5m --save_path ./snapshots/simplenet --epochs 540 --batch_size 100 --workers 2` |
| 51 | + |
| 52 | + |
| 53 | +Note 1: the initial learning rate, and optimization policy is hard coded just like caffe. |
| 54 | +Note 2: for testing the cifar10/100 weights located in the repository, use the `simplenet_cifar_5m_extra_pool` model instead. see [issue #5](https://github.com/Coderx7/SimpleNet_Pytorch/issues/5) for more information. |
| 55 | + |
| 56 | + |
| 57 | +## Citation |
| 58 | +If you find SimpleNet useful in your research, please consider citing: |
| 59 | + |
| 60 | + @article{hasanpour2016lets, |
| 61 | + title={Lets keep it simple, Using simple architectures to outperform deeper and more complex architectures}, |
| 62 | + author={Hasanpour, Seyyed Hossein and Rouhani, Mohammad and Fayyaz, Mohsen and Sabokrou, Mohammad}, |
| 63 | + journal={arXiv preprint arXiv:1608.06037}, |
| 64 | + year={2016} |
| 65 | + } |
0 commit comments