Пример #1
0
    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)

    # 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)

    # init writer
    writer = RecordWriter(filepath="data/test.tfrecord", level="frame")

    # 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))
        feat_np = feat.data.cpu().numpy()
        # recude dimensions by PCA
        feat_ = pca.transform(feat_np)
        feats = concat_feat(feats, feat_)

    # write features into TFRecord
    vid = os.path.splitext(os.path.basename(cfg.video_file))[0]
    writer.write(vid=vid, feat_rgb=feats)
    writer.close()
Пример #2
0
    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
    X = feats.numpy()
    pca.fit(X)
    X_ = pca.transform(X)
    print("reduce X {} to X_ {}".format(X.shape, X_.shape))

    # sabe PCA params
    pca.save_params(filepath=cfg.pca_model)
Пример #3
0
        for record in tf.python_io.tf_record_iterator(
                os.path.join(cfg.record_root, record_file)):
            result = Reader(record)

            if not os.path.exists(
                    cfg.inception_v3_feats_path.format(result.vid)):
                print("skipping {}".format(result.vid))
                continue
            else:
                print("extracting {} - labels {}".format(
                    result.vid, result.labels))
                print("--> load fatures")
                feats = torch.load(
                    cfg.inception_v3_feats_path.format(result.vid))
                print("--> recude dimensions by PCA")
                feats_ = pca.transform(feats.numpy())
                print("--> write to tfrecord")
                writer.write(vid=result.vid,
                             feat_rgb=feats_,
                             labels=result.labels)
                feat_counter += 1

                if (feat_counter + 1) % cfg.feats_per_file == 0:
                    print(">>> saving tfrecord: {}".format(
                        cfg.extract_feat_path.format(save_counter)))
                    writer.close()
                    save_counter += 1
                    feat_counter = 0
                    writer = RecordWriter(
                        filepath=cfg.extract_feat_path.format(save_counter),
                        level="frame")