"""Main script for Youtube-8M feature extractor.""" import misc.config as cfg from misc.utils import concat_feat, get_dataloader, make_cuda, make_variable from models import PCAWrapper, inception_v3 if __name__ == '__main__': # init models and data loader model = make_cuda( inception_v3(pretrained=True, transform_input=True, extract_feat=True)) pca = PCAWrapper(n_components=cfg.n_components) model.eval() # data loader for frames in ingle video # data_loader = get_dataloader(dataset="VideoFrame", # path=cfg.video_file, # num_frames=cfg.num_frames, # batch_size=cfg.batch_size) # data loader for frames decoded from several videos data_loader = get_dataloader(dataset="FrameImage", path=cfg.frame_root, batch_size=cfg.batch_size) # extract features by inception_v3 feats = None for step, frames in enumerate(data_loader): print("extracting feature [{}/{}]".format(step + 1, len(data_loader))) feat = model(make_variable(frames)) feats = concat_feat(feats, feat.data.cpu()) # recude dimensions by PCA
QUANTIZE_MAX_VAL) # - convert to 8-bit in range [0.0, 255.0] quantized_embeddings = ( (clipped_embeddings - QUANTIZE_MIN_VAL) * (255.0 / (QUANTIZE_MAX_VAL - QUANTIZE_MIN_VAL))) # - cast 8-bit float to uint8 quantized_embeddings = quantized_embeddings.astype(np.uint8) return quantized_embeddings if __name__ == '__main__': # init Inception v3 model model = make_cuda(inception_v3(pretrained=True, model_path=cfg.inception_v3_model, transform_input=True, extract_feat=True)) model.eval() # init PCA model pca = PCAWrapper(n_components=cfg.n_components, batch_size=cfg.pca_batch_size) pca.load_params(filepath=cfg.pca_model) subfolders = list_folders(cfg.dataset_path) for subfolder in subfolders: print("current folder: {}".format(subfolder)) # data loader for frames in single video data_loader = get_dataloader(dataset="FrameImage", path=os.path.join(subfolder, 'frames'), frame_num =cfg.frame_num,