コード例 #1
0
def main():
    set_determinstic_mode(seed=1538574472)
    args = _parse_args()
    trainer = Trainer(args.config, args.device)
    train_data = breakfast.get_mstcn_data('train')
    test_data = breakfast.get_mstcn_data('test')
    trainer.train(train_data, test_data)
コード例 #2
0
def main():
    set_determinstic_mode()
    args = _parse_args()

    if args.model == 'mstcn':
        from scripts.action_segmentation.train_mstcn import Trainer
    elif args.model == 'coarse-inputs':
        from scripts.action_segmentation.train_coarse_inputs import Trainer
    elif args.model == 'coarse-inputs-boundary-true':
        from scripts.action_segmentation.train_coarse_inputs_boundary_true import Trainer
    else:
        raise ValueError('no such model')
    submission_dir = os.path.join(SUBMISSION_DIR, args.model, args.config)
    if not os.path.exists(submission_dir):
        os.makedirs(submission_dir)
    else:
        raise ValueError(
            submission_dir +
            ' exists, please delete if you want a new submission with this name'
        )

    trainer = Trainer(args.config, args.device)
    if 'boundary' in args.model:  # this is for boundary aware models
        i3d_feats, timestamps = get_boundary_aware_submission_data()
        frame_level_predictions = trainer.predict(i3d_feats, timestamps)
    else:
        submission_segments, _, _ = breakfast.get_mstcn_data(split='test')
        frame_level_predictions = trainer.predict(submission_segments)
    return get_cls_results(frame_level_predictions, submission_dir)
コード例 #3
0
def main():
    set_determinstic_mode()
    args = _parse_args()
    trainer = Trainer(args.config, args.device)
    train_videos = get_train_videos()
    test_videos = get_test_videos()
    trainer.train(train_videos, test_videos)
コード例 #4
0
def main():
    set_determinstic_mode()
    args = _parse_args()
    trainer = Trainer(args.config, args.device)
    train_data = _parse_split_data('train', trainer.i3d_length)
    test_data = _parse_split_data('test', trainer.i3d_length)
    trainer.train(train_data, test_data)
コード例 #5
0
def main():
    set_determinstic_mode()
    args = _parse_args()

    submission_dir = os.path.join(SUBMISSION_DIR, 'zhangcan', args.config)
    submission_feats, _, _ = breakfast.get_mstcn_data(split='test')

    frame_prediction_dir = submission_dir
    video_names = [
        os.path.split(feat_file)[-1] for feat_file in submission_feats
    ]
    video_names = [feat_file.split('.')[0] for feat_file in video_names]
    mapping_dict = breakfast.read_mapping_file()
    frame_level_predictions = []
    for i, video_name in enumerate(video_names):
        frame_prediction_file = os.path.join(frame_prediction_dir, video_name)
        with open(frame_prediction_file, 'r') as f:
            frame_predictions = f.readlines()[1]
        frame_predictions = frame_predictions.strip().split(' ')
        frame_predictions = [
            mapping_dict[prediction] for prediction in frame_predictions
        ]
        frame_level_predictions.append(frame_predictions)

    with open(breakfast.SUBMISSION_LABEL_FILE, 'r') as f:
        submission_timestamps = f.readlines()
    submission_timestamps = [
        line.strip().split(' ') for line in submission_timestamps
    ]
    submission_timestamps = [
        np.array(timestamps).astype(int)
        for timestamps in submission_timestamps
    ]

    n_segments = 0
    submission_str = 'Id,Category\n'
    for i, video_name in enumerate(video_names):
        video_timestamps = submission_timestamps[i]
        n_timestamps = len(video_timestamps)
        video_frame_predictions = frame_level_predictions[i]
        for j in range(n_timestamps - 1):
            start = video_timestamps[j]
            end = video_timestamps[j + 1]
            segment_frame_predictions = video_frame_predictions[start:end]
            counts = np.bincount(segment_frame_predictions)

            segment_prediction = np.argmax(counts).item()
            submission_str += '{0},{1}\n'.format(n_segments,
                                                 segment_prediction)
            n_segments += 1

    submission_file = os.path.join(submission_dir, 'submission.csv')
    with open(submission_file, 'w') as f:
        f.write(submission_str)
    get_submission_accuracy(submission_file)