Hi,
Upon training a 2 class classifier using: tao classification train -e ... --gpus 2
command we are seeing terrible accuracy performance from mobilenetv2.
I was hoping someone can have a look at the below config and point out any potential errors? This is quite a simple person shirt type classification task. Hivis or not Hivis.
Accuracy Comparison trained in TAO:
- Resnet50: 99%
- EffecientnetB0 (pruned and retrained): 96%
- Mobilenetv2: ~65%
- Mobilenetv3 (not TAO trained): ~95%
MobilenetV2 training config file:
model_config {
# Model Architecture can be chosen from:
# ['resnet', 'vgg', 'googlenet', 'alexnet']
arch: "mobilenet_v2"
# for resnet --> n_layers can be [10, 18, 50]
# for vgg --> n_layers can be [16, 19]
#n_layers: 50
use_batch_norm: False
use_bias: False
all_projections: False
use_pooling: False
use_imagenet_head: False
resize_interpolation_method: BICUBIC
# if you want to use the pretrained model,
# image size should be "3,224,224"
# otherwise, it can be "3, X, Y", where X,Y >= 16
input_image_size: "3,224,224"
}
train_config {
train_dataset_path: "/iclassifier/data/train/"
val_dataset_path: "/classifier/data/test/"
#pretrained_model_path: "/path/to/your/pretrained/model"
# Only ['sgd', 'adam'] are supported for optimizer
optimizer {
sgd {
lr: 0.1
decay: 0.0
momentum: 0.01
nesterov: True
}
}
batch_size_per_gpu: 512
n_epochs: 120
# Number of CPU cores for loading data
n_workers: 40
# regularizer
reg_config {
# regularizer type can be "L1", "L2" or "None".
type: "L2"
# if the type is not "None",
# scope can be either "Conv2D" or "Dense" or both.
scope: "Conv2D,Dense"
# 0 < weight decay < 1
weight_decay: 0.000015
}
# learning_rate
lr_config {
cosine {
learning_rate: 0.1
soft_start: 0.0
min_lr_ratio: 0.001
}
}
enable_random_crop: False
enable_center_crop: False
enable_color_augmentation: False
mixup_alpha: 0.2
label_smoothing: 0.1
preprocess_mode: "torch"
}
eval_config {
eval_dataset_path: "/classifier/data/test/"
model_path: "/classifier/model/"
top_k: 3
batch_size: 512
n_workers: 20
enable_center_crop: False
}
EffecientnetB0 training config file:
model_config {
arch: "efficientnet_b0"
use_bias: False
use_imagenet_head: False
resize_interpolation_method: BICUBIC
input_image_size: "3,224,224"
}
train_config {
preprocess_mode: "caffe"
train_dataset_path: "/classifier/data/train/"
val_dataset_path: "/classifier/data/test/"
#pretrained_model_path: "/inviol/hivis_classifier/model/weights/efficientnet_b0_042_pruned.tlt"
optimizer {
sgd {
lr: 0.01
decay: 0.0
momentum: 0.9
nesterov: False
}
}
batch_size_per_gpu: 256
n_epochs: 120
n_workers: 60
reg_config {
type: "None"
scope: "Conv2D,Dense"
weight_decay: 5e-5
}
lr_config {
cosine {
learning_rate: 0.05
min_lr_ratio: 0.001
}
}
enable_random_crop: True
enable_center_crop: True
enable_color_augmentation: False
mixup_alpha: 0.2
label_smoothing: 0.1
}
eval_config {
eval_dataset_path: "/classifier/data/test/"
#model_path: "/classifier/model/retrain/"
top_k: 3
batch_size: 256
n_workers: 60
enable_center_crop: False
}
Other info:
• Training Hardware: 2 x RTX A6000 GPU
• Network Type: MobilenetV2
• TLT Version: tao/tao-toolkit-tf: v3.21.11-tf1.15.5-py3