pytorch_classifiers
pytorch_classifiers copied to clipboard
Almost any Image classification problem using pytorch
This is an experimental setup to build code base for pytorch. Its main is to experiment faster using transfer learning on all available pre-trained models.
Dataset: Plant Seedlings classification
Classes present:
- Black-grass
- Charlock
- Cleavers
- Common Chickweed
- Common wheat
- Fat Hen
- Loose Silky-bent
- Maize
- Scentless Mayweed
- Shepherds Purse
- Small-flowered Cranesbill
- Sugar beet
Run the following commands
To train the models:
make -f Makefile.train
To test the models:
make -f Makefile.predict
Results
total number of train images: 4268 total number of val images: 482 total number of test images: 794
Results with Full-Agumentation strategy:
Trained the networks in three methods:
- Full Finetuning
- Freeze first few layers
Case-1 - Finetuning entire network
Models | Train Accuracy_score | Val Accuracy_score |
---|---|---|
resnet18 | 0.92783 | 0.93153 |
resnet34 | 0.9522 | 0.94190 |
resnet50 | 0.95665 | 0.94398 |
resnet101 | 0.96696 | 0.96265 |
resnet152 | 0.96555 | 0.95643 |
squeezenet1_0 | 0.94329 | 0.92738 |
squeezenet1_1 | 0.93955 | 0.93153 |
densenet121 | 0.95243 | 0.9336 |
densenet169 | 0.96626 | 0.93983 |
densenet201 | 0.96063 | 0.95020 |
inception_v3 | 0.94212 | 0.93568 |
vgg11 | 0.93814 | 0.93153 |
vgg13 | 0.94493 | 0.94190 |
vgg16 | 0.95665 | 0.93568 |
vgg19 | 0.95009 | 0.93775 |
vgg11_bn | 0.94142 | 0.93775 |
vgg13_bn | 0.94423 | 0.92738 |
vgg16_bn | 0.94634 | 0.94190 |
vgg19_bn | 0.94915 | 0.93360 |
alexnet | 0.91260 | 0.90456 |
resnext101_64x4d | 0.98055 | 0.96887 |
resnext101_32x4d | 0.98172 | 0.96887 |
nasnetalarge | 0.96907 | 0.96265 |
inceptionresnetv2 | 0.96134 | 0.95435 |
inceptionv4 | 0.96930 | 0.96473 |
Case-2 - Freezed first few layers(look at code)
Models | Train Accuracy_score | Val Accuracy_score |
---|---|---|
resnet18 | 0.9196 | 0.91493 |
resnet34 | 0.94845 | 0.93983 |
resnet50 | 0.9564 | 0.93983 |
resnet101 | 0.96790 | 0.96265 |
resnet152 | 0.96508 | 0.95643 |
squeezenet1_0 | 0.94048 | 0.92738 |
squeezenet1_1 | 0.93088 | 0.92116 |
densenet121 | 0.95173 | 0.95228 |
densenet169 | 0.96087 | 0.94813 |
densenet201 | 0.95384 | 0.95020 |
inception_v3 | 0.94025 | 0.93775 |
vgg11 | 0.93697 | 0.92946 |
vgg13 | 0.93533 | 0.92323 |
vgg16 | 0.94821 | 0.93983 |
vgg19 | 0.95243 | 0.94190 |
vgg11_bn | 0.93416 | 0.92738 |
vgg13_bn | 0.93322 | 0.92323 |
vgg16_bn | 0.94728 | 0.93775 |
vgg19_bn | 0.94798 | 0.94190 |
alexnet | 0.89784 | 0.88589 |
resnext101_64x4d | 0.98617 | 0.96887 |
resnext101_32x4d | 0.98195 | 0.96473 |
nasnetalarge | 0.95970 | 0.96265 |
inceptionresnetv2 | 0.95103 | 0.94813 |
inceptionv4 | 0.96251 | 0.93775 |
Results with Basic Agumentation
Case-1 (Freezed all layers except last one)
Models | Train Accuracy_score | Val Accuracy_score |
---|---|---|
resnet18 | 0.77553 | 0.75518 |
resnet152 | 0.82778 | 0.81535 |
resnet101 | 0.82333 | 0.80290 |
resnet50 | 0.79943 | 0.78630 |
resnet34 | 0.78655 | 0.74688 |
squeezenet1_0 | 0.91447 | 0.87966 |
squeezenet1_1 | 0.90089 | 0.87344 |
densenet121 | 0.80880 | 0.81120 |
densenet169 | 0.84746 | 0.82987 |
densenet201 | 0.86621 | 0.86514 |
inception_v3 | 0.76101 | 0.74688 |
vgg11 | 0.78209 | 0.78008 |
vgg13 | 0.75960 | 0.72821 |
vgg16 | 0.77038 | 0.71576 |
vgg19 | 0.71204 | 0.64522 |
vgg11_bn | 0.76522 | 0.74481 |
vgg13_bn | 0.76241 | 0.76348 |
vgg16_bn | 0.76265 | 0.75726 |
vgg19_bn | 0.75773 | 0.73858 |
alexnet | 0.83153 | 0.76348 |
Case-2 Finetuning the entire network
Models | Train Accuracy_score | Val Accuracy_score |
---|---|---|
resnet18 | 0.98477 | 0.96058 |
resnet152 | 0.99273 | 0.97717 |
resnet101 | 0.99367 | 0.97717 |
resnet50 | 0.99133 | 0.97510 |
resnet34 | 0.98969 | 0.97095 |
squeezenet1_0 | 0.96274 | 0.94190 |
squeezenet1_1 | 0.96485 | 0.92738 |
densenet121 | 0.99086 | 0.96887 |
densenet169 | 0.99507 | 0.97510 |
densenet201 | 0.99390 | 0.97717 |
inception_v3 | 0.98898 | 0.97302 |
vgg11 | 0.98031 | 0.95020 |
vgg13 | 0.98078 | 0.95643 |
vgg16 | 0.98266 | 0.95435 |
vgg19 | 0.98430 | 0.95643 |
vgg11_bn | 0.98570 | 0.96265 |
vgg13_bn | 0.98687 | 0.97095 |
vgg16_bn | 0.99179 | 0.96680 |
vgg19_bn | 0.99297 | 0.96680 |
alexnet | 0.95970 | 0.92946 |
Submissions:
- densenet201 LB - to 97.22
- ensemble1 - mode of all best performing models LB - 97.32
TO_DO
- Adding mixup strategy to all the networks
- Ensembling model outputs
- Model stacking
- Extracting bottleneck features and using - ML to train the model - Visualization using T-sne
- Solve issue with bninception(Model is not training)
- Train Vggm network