def _load_net(self): # Load feature extractor feature_extractor = feature_extractors.StridedInflatedEfficientNet() checkpoint = engine.load_weights(self.feature_extractor_weights) feature_extractor.load_state_dict(checkpoint) feature_extractor.eval() # Load a logistic regression classifier gesture_classifier = LogisticRegression( num_in=feature_extractor.feature_dim, num_out=30) checkpoint = engine.load_weights(self.gesture_classifier_weights) gesture_classifier.load_state_dict(checkpoint) gesture_classifier.eval() # Combine both models self.net = Pipe(feature_extractor, gesture_classifier)
gender = args['--gender'] or None camera_id = args['--camera_id'] or 0 path_in = args['--path_in'] or None path_out = args['--path_out'] or None title = args['--title'] or None use_gpu = args['--use_gpu'] # Load feature extractor feature_extractor = feature_extractors.StridedInflatedMobileNetV2() checkpoint = engine.load_weights( 'resources/backbone/strided_inflated_mobilenet.ckpt') feature_extractor.load_state_dict(checkpoint) feature_extractor.eval() # Load fitness activity classifier gesture_classifier = LogisticRegression( num_in=feature_extractor.feature_dim, num_out=81) checkpoint = engine.load_weights( 'resources/fitness_activity_recognition/mobilenet_logistic_regression.ckpt' ) gesture_classifier.load_state_dict(checkpoint) gesture_classifier.eval() # Load MET value converter met_value_converter = calorie_estimation.METValueMLPConverter() checkpoint = torch.load( 'resources/calorie_estimation/mobilenet_features_met_converter.ckpt') met_value_converter.load_state_dict(checkpoint) met_value_converter.eval() # Concatenate feature extractor with downstream nets net = Pipe(feature_extractor,
path_in, f"features_train_num_layers_to_finetune={num_layers_to_finetune}"), label_names, label2int, num_timesteps=num_timesteps) valid_loader = generate_data_loader(os.path.join( path_in, f"features_valid_num_layers_to_finetune={num_layers_to_finetune}"), label_names, label2int, num_timesteps=None, batch_size=1, shuffle=False) # modeify the network to generate the training network on top of the features gesture_classifier = LogisticRegression( num_in=feature_extractor.feature_dim, num_out=len(label_names)) if num_layers_to_finetune > 0: net = Pipe(custom_classifier_bottom, gesture_classifier) else: net = gesture_classifier net.train() if use_gpu: net = net.cuda() lr_schedule = {0: 0.0001, 40: 0.00001} num_epochs = 60 best_model_state_dict = training_loops(net, train_loader, valid_loader, use_gpu, num_epochs, lr_schedule) # Save best model