I have manage to train mobilenet ssd512 changing the config file and get some results from a toy training session
My question is what base model do I use when I do it for a real application? Is there a pre-existing 512 model I can use much like the mobilenet_ssd300_v1 model used in examples?
Hi @liellplane, if you are referring to train_ssd.py from jetson-inference, then there isn’t a different higher-resolution base model and you can just use the existing one. For most applications I doubt there would be a significant difference in the training accuracy, but if necessary you can train your own base model.
So if I for instance train using 512 configuration on the 300 base model, does it transfer-learn or must I train everything from scratch? For instance if I have custom person dataset, will I have to also add the coco dataset for “people” so it will still perform well?
@liellplane it does transfer learning from the base model, which were trained on the Pascal VOC dataset (not COCO). Typically using the base model yields better results than training “from scratch” (which is relative considering that the classifier backbone base model is pre-trained on ImageNet too), but YMMV.
so in your opinion, say if we had our own dataset for “person” - when we transfer-learn, does the network retain its performance vs the Pascal VOC dataset “person” class?
Models trained on the Pascal VOC dataset have 20 classes, whereas it sounds like your dataset only has 1 class, so typically the fully-connected layers get resized during training for the different number of classes and there is no longer a 1:1 correspondence with the previous classes. That doesn’t mean there aren’t substantial benefits to fine-tuning pre-trained models though, because the rest of the weights have still been “dialed in” persay.
In theory it may be possible for you to modify train_ssd.py so that it doesn’t resize the number of classes of the model and keeps the original 20 classes from Pascal VOC (and if your dataset person labels have the same spelling of the Pascal VOC person class) - I haven’t tried this however.
The best way to confirm that your model is trained well, will be to run train_ssd.py with the --validate-mean-ap flag which computes the accuracy for each class during the validation phase after each training epoch.