image-classification-pytorch

Requirements

Python3 support only. Tested on CUDA9.0, cudnn7.

  • albumentations==0.1.1
  • easydict==1.8
  • imgaug==0.2.6
  • opencv-python==3.4.3.18
  • protobuf==3.6.1
  • scikit-image==0.14.0
  • tensorboardX==1.4
  • torch==0.4.1
  • torchvision==0.2.1

model

net inputsize
vggnet 224
alexnet 224
resnet 224
inceptionV3 299
inceptionV4 299
squeezenet 224
densenet 224
dpnnet 224
inception-resnet-v2 299
mobilenetV2 224
nasnet-a-large 331
nasnet-mobile 224
polynet 331
resnext 224
senet 224
squeezenet 224
pnasnet 331
shufflenetV2 224
mnasnet 224
mobilenetV3 224
oct-resnet 224/256
... ...

From torchvision package:

From mobilenetV2 package:

From shufflenetV2 package:

From MnasNet package:

From mobilenetV3 package:

From OctaveResnet package:

usage

configuration

configure description
model_module_name eg: vgg_module
model_net_name net function name in module, eg:vgg16
gpu_id eg: single GPU: "0", multi-GPUs:"0,1,3,4,7"
async_loading make an asynchronous copy to the GPU
is_tensorboard if use tensorboard for visualization
evaluate_before_train evaluate accuracy before training
shuffle shuffle your training data
data_aug augment your training data
img_height input height
img_width input width
num_channels input channel
num_classes output number of classes
batch_size train batch size
dataloader_workers number of workers when loading data
learning_rate learning rate
learning_rate_decay learning rate decat rate
learning_rate_decay_epoch learning rate decay per n-epoch
train_mode eg: "fromscratch","finetune","update"
file_label_separator separator between data-name and label. eg:"----"
pretrained_path pretrain model path
pretrained_file pretrain model name. eg:"alexnet-owt-4df8aa71.pth"
pretrained_model_num_classes output number of classes when pretrain model trained. eg:1000 in imagenet
save_path model path when saving
save_name model name when saving
train_data_root_dir training data root dir
val_data_root_dir testing data root dir
train_data_file a txt filename which has training data and label list
val_data_file a txt filename which has testing data and label list

Training

1.make your training &. testing data and label list with txt file:

txt file with single label index eg:

apple.jpg----0
k.jpg----3
30.jpg----0
data/2.jpg----1
abc.jpg----1

2.configuration

3.train

python3 train.py

Inference

eg: trained by inception_resnet_v2, vgg/data/flowers/102:

python3 inference.py --image test.jpg --module inception_resnet_v2_module --net inception_resnet_v2 --model model.pth --size 299 --cls 102

tensorboardX

tensorboard --logdir='./logs/' runs

logdir is log dir in your project dir