These are ResNet models trainined on ImageNet. The accuracy on the ImageNet validation set are included below.
The ResNet-50 model has a batch normalization layer after the addition, instead of immediately after the convolution layer. The ResNet-200 model is the full pre-activation variant from "Identity Mappings in Deep Residual Networks".
Network | Top-1 error | Top-5 error |
---|---|---|
ResNet-18 | 30.43 | 10.76 |
ResNet-34 | 26.73 | 8.74 |
ResNet-50 | 24.01 | 7.02 |
ResNet-101 | 22.44 | 6.21 |
ResNet-152 | 22.16 | 6.16 |
ResNet-200 | 21.66 1 | 5.79 |
Network | Top-1 error | Top-5 error |
---|---|---|
ResNet-18 | 28.22 | 9.42 |
ResNet-34 | 24.76 | 7.35 |
ResNet-50 | 22.24 | 6.08 |
ResNet-101 | 21.08 | 5.35 |
ResNet-152 | 20.69 | 5.21 |
ResNet-200 | 20.15 | 4.93 |
See the convergence plots for charts of training and validation error and training loss after every epoch.
Your images don't need to be pre-processed or packaged in a database, but you need to arrange them so that your dataset contains a train
and a val
directory, which each contain sub-directories for every label. For example:
train/<label1>/<image.jpg>
train/<label2>/<image.jpg>
val/<label1>/<image.jpg>
val/<label2>/<image.jpg>
You can then use the included ImageNet data loader with your dataset and train with the -resetClassifer
and -nClasses
options:
th main.lua -retrain resnet-50.t7 -data [path-to-directory-with-train-and-val] -resetClassifier true -nClasses 80
The labels will be sorted alphabetically. The first output of the network corresponds to the label that comes first alphabetically.
To get the top 5 predicted of a model for a given input image, you can use the classify.lua
script. For example:
th classify.lua resnet-101.t7 img1.jpg img2.jpg ...
Example output:
Classes for cat.jpg
0.77302575111389 Egyptian cat
0.060410376638174 tabby, tabby cat
0.040622022002935 tiger cat
0.025837801396847 lynx, catamount
0.018691379576921 window screen
The extract-features.lua
script will extract the image features from an image and save them as a serialized Torch tensor. To use it, first download one of the trained models above. Next run it using
th extract-features.lua resnet-101.t7 img1.jpg img2.jpg ...
This will save a file called features.t7
in the current directory. You can then load the image features in Torch.
local features = torch.load('features.t7')
1 This is on a test crop of size 224x224. On a test crop of size 320x320, the error rate is 20.1/4.8.