There appear to be inconsistencies in the documentation for training a classifier:
- The docs mention downloading the pre-trained model but the classifier training command doesn't allow for this pre-trained model to be used as input (as with the SSD model training's -m option) nor is it specified anywhere in the specification file. If this is really how things should work then how are we doing transfer learning? Is there perhaps an undocumented mechanism in place for loading the pre-trained model? If not then why is a pre-trained model even mentioned in the docs or provided on NGC if it can't be used as a training input?
- The example specification file for classifier training includes a field named "conf_threshold", but the parser doesn't expect this field:
2019-12-17 04:01:27,761 [INFO] iva.makenet.scripts.train: Loading experiment spec at specs/classification_resnet_train.txt. 2019-12-17 04:01:27,763 [INFO] iva.makenet.spec_handling.spec_loader: Merging specification from specs/classification_resnet_train.txt Traceback (most recent call last): File "/usr/local/bin/tlt-train-g1", line 8, in <module> sys.exit(main()) File "./common/magnet_train.py", line 27, in main File "./makenet/scripts/train.py", line 410, in main File "./makenet/scripts/train.py", line 271, in run_experiment File "./makenet/spec_handling/spec_loader.py", line 75, in load_experiment_spec File "./makenet/spec_handling/spec_loader.py", line 51, in load_proto File "./makenet/spec_handling/spec_loader.py", line 35, in _load_from_file File "/usr/local/lib/python2.7/dist-packages/google/protobuf/text_format.py", line 693, in Merge allow_unknown_field=allow_unknown_field) File "/usr/local/lib/python2.7/dist-packages/google/protobuf/text_format.py", line 760, in MergeLines return parser.MergeLines(lines, message) File "/usr/local/lib/python2.7/dist-packages/google/protobuf/text_format.py", line 785, in MergeLines self._ParseOrMerge(lines, message) File "/usr/local/lib/python2.7/dist-packages/google/protobuf/text_format.py", line 807, in _ParseOrMerge self._MergeField(tokenizer, message) File "/usr/local/lib/python2.7/dist-packages/google/protobuf/text_format.py", line 932, in _MergeField merger(tokenizer, message, field) File "/usr/local/lib/python2.7/dist-packages/google/protobuf/text_format.py", line 1006, in _MergeMessageField self._MergeField(tokenizer, sub_message) File "/usr/local/lib/python2.7/dist-packages/google/protobuf/text_format.py", line 899, in _MergeField (message_descriptor.full_name, name)) google.protobuf.text_format.ParseError: 28:3 : Message type "EvalConfig" has no field named "conf_threshold".
When I remove the “conf_threshold” field this error goes away.