def cd3_extartion(video_parth, device=None): batch_size = 1 train_frame_interval = 2 clip_length = 16 single_load = True #should not matter home = os.getcwd() pretrained_3d = home + "/c3d-pytorch-master/c3d.pickle" if device == None: device = torch.device("cuda" if torch.cuda.is_available() else "cpu") #Load clips print("doing train loader") train_loader = VideoIterTrain(dataset_path=None, annotation_path=video_parth, clip_length=clip_length, frame_stride=train_frame_interval, video_transform=build_transforms(), name='train', return_item_subpath=False, single_load=single_load) print("train loader done, train_iter now") train_iter = torch.utils.data.DataLoader( train_loader, batch_size=batch_size, shuffle=False, num_workers=32, # 4, # change this part accordingly pin_memory=True) #Possesing with CD3 print("Now loading the data to C3D netowr") network = C3D(pretrained=pretrained_3d) network.to(device) if not os.path.exists(features_dir): os.mkdir(features_dir) features_writer = FeaturesWriter() dir_list = [] for i_batch, (data, target, sampled_idx, dirs, vid_names) in tqdm(enumerate(train_iter)): with torch.no_grad(): outputs = network(data.cuda()) for i, (dir, vid_name, start_frame) in enumerate( zip(dirs, vid_names, sampled_idx.cpu().numpy())): dir_list.append([dir, vid_name]) dir = os.path.join(features_dir, dir) features_writer.write(feature=outputs[i], video_name=vid_name, idx=start_frame, dir=dir) features_writer.dump() return dir_list
def main(): device = torch.device("cuda" if torch.cuda.is_available() else "cpu") args = parser.parse_args() set_logger(log_file=args.log_file, debug_mode=args.debug_mode) torch.manual_seed(args.random_seed) torch.cuda.manual_seed(args.random_seed) cudnn.benchmark = True train_loader = VideoIterTrain( dataset_path=args.dataset_path, annotation_path=args.annotation_path, clip_length=args.clip_length, frame_stride=args.train_frame_interval, video_transform=build_transforms(), name='train', return_item_subpath=False, ) train_iter = torch.utils.data.DataLoader( train_loader, batch_size=args.batch_size, shuffle=False, num_workers=32, # 4, # change this part accordingly pin_memory=True) val_loader = VideoIterTrain( dataset_path=args.dataset_path, annotation_path=args.annotation_path_test, clip_length=args.clip_length, frame_stride=args.val_frame_interval, video_transform=build_transforms(), name='val', return_item_subpath=False, ) val_iter = torch.utils.data.DataLoader( val_loader, batch_size=args.batch_size, shuffle=False, num_workers=32, # 4, # change this part accordingly pin_memory=True) network = C3D(pretrained=args.pretrained_3d) network.to(device) if not path.exists(features_dir): mkdir(features_dir) features_writer = FeaturesWriter() for i_batch, (data, target, sampled_idx, dirs, vid_names) in tqdm(enumerate(train_iter)): with torch.no_grad(): outputs = network(data.cuda()) for i, (dir, vid_name, start_frame) in enumerate( zip(dirs, vid_names, sampled_idx.cpu().numpy())): dir = path.join(features_dir, dir) features_writer.write(feature=outputs[i], video_name=vid_name, start_frame=start_frame, dir=dir) features_writer.dump() features_writer = FeaturesWriter() for i_batch, (data, target, sampled_idx, dirs, vid_names) in tqdm(enumerate(val_iter)): with torch.no_grad(): outputs = network(data.cuda()) for i, (dir, vid_name, start_frame) in enumerate( zip(dirs, vid_names, sampled_idx.cpu().numpy())): dir = path.join(features_dir, dir) features_writer.write(feature=outputs[i], video_name=vid_name, start_frame=start_frame, dir=dir) features_writer.dump()
def main(): device = torch.device("cuda" if torch.cuda.is_available() else "cpu") args = parser.parse_args() set_logger(log_file=args.log_file, debug_mode=args.debug_mode) torch.manual_seed(args.random_seed) torch.cuda.manual_seed(args.random_seed) cudnn.benchmark = True mean = [124 / 255, 117 / 255, 104 / 255] std = [1 / (.0167 * 255)] * 3 normalize = transforms.Normalize(mean=mean, std=std) train_loader = VideoIterTrain( dataset_path=args.dataset_path, annotation_path=args.annotation_path, clip_length=args.clip_length, frame_interval=args.train_frame_interval, video_transform=transforms.Compose([ transforms.Resize((256, 256)), transforms.RandomCrop((224, 224)), transforms.ToTensor(), normalize, ]), name='train', return_item_subpath=False, ) train_iter = torch.utils.data.DataLoader( train_loader, batch_size=args.batch_size, shuffle=False, num_workers=32, # 4, # change this part accordingly pin_memory=True) val_loader = VideoIterTrain( dataset_path=args.dataset_path, annotation_path=args.annotation_path_test, clip_length=args.clip_length, frame_interval=args.val_frame_interval, video_transform=transforms.Compose([ transforms.Resize((256, 256)), transforms.RandomCrop((224, 224)), transforms.ToTensor(), normalize, ]), name='val', return_item_subpath=False, ) val_iter = torch.utils.data.DataLoader( val_loader, batch_size=args.batch_size, shuffle=False, num_workers=32, # 4, # change this part accordingly pin_memory=True) network = C3D(pretrained=args.pretrained_3d) network.to(device) if not path.exists(features_dir): mkdir(features_dir) features_writer = FeaturesWriter() for i_batch, (data, target, sampled_idx, dirs, vid_names) in tqdm(enumerate(train_iter)): data = data.to(device) with torch.no_grad(): input_var = torch.autograd.Variable(data) outputs = network(input_var) for i, (dir, vid_name, start_frame) in enumerate( zip(dirs, vid_names, sampled_idx.cpu().numpy())): dir = path.join(features_dir, dir) features_writer.write(feature=outputs[i], video_name=vid_name, start_frame=start_frame, dir=dir) features_writer.dump() features_writer = FeaturesWriter() for i_batch, (data, target, sampled_idx, dirs, vid_names) in tqdm(enumerate(val_iter)): data = data.to(device) with torch.no_grad(): input_var = torch.autograd.Variable(data) outputs = network(input_var) for i, (dir, vid_name, start_frame) in enumerate( zip(dirs, vid_names, sampled_idx.cpu().numpy())): dir = path.join(features_dir, dir) features_writer.write(feature=outputs[i], video_name=vid_name, start_frame=start_frame, dir=dir) features_writer.dump()