Exemple #1
0
def temp_charades_dataset():
    frame_names = [f"{str(i)}.png" for i in range(3)]

    # Create csv containing 2 test frame videos.
    with tempfile.NamedTemporaryFile(delete=False, suffix=".csv") as f:
        f.write("original_vido_id video_id frame_id path labels\n".encode())

        # Frame video 1
        with temp_frame_video(frame_names) as (frame_1_video_dir, data_1):
            for i, frame_name in enumerate(frame_names):
                original_video_id = str(frame_1_video_dir)
                video_id = "1"
                frame_id = str(i)
                path = pathlib.Path(frame_1_video_dir) / frame_name
                label = "0"
                f.write(
                    f"{original_video_id} {video_id} {frame_id} {path} {label}\n"
                    .encode())

            # Frame video 2
            with temp_frame_video(frame_names) as (frame_2_video_dir, data_2):
                for i, frame_name in enumerate(frame_names):
                    original_video_id = str(frame_2_video_dir)
                    video_id = "2"
                    frame_id = str(i)
                    path = pathlib.Path(frame_2_video_dir) / frame_name
                    label = "1"
                    f.write(
                        f"{original_video_id} {video_id} {frame_id} {path} {label}\n"
                        .encode())

                f.close()
                yield f.name, data_1, data_2
Exemple #2
0
    def test_multiple_labels_per_frame(self):
        frame_names = [f"{str(i)}.png" for i in range(3)]

        # Create csv containing a test frame videos.
        with tempfile.NamedTemporaryFile(delete=False, suffix=".csv") as f:
            f.write(
                "original_vido_id video_id frame_id path labels\n".encode())
            with temp_frame_video(frame_names) as (frame_1_video_dir, data_1):
                for i, frame_name in enumerate(frame_names):
                    original_video_id = str(frame_1_video_dir)
                    video_id = "1"
                    frame_id = str(i)
                    path = pathlib.Path(frame_1_video_dir) / frame_name
                    label = "0,100"
                    f.write(
                        f"{original_video_id} {video_id} {frame_id} {path} {label}\n"
                        .encode())

                f.close()

                clip_sampler = make_clip_sampler(
                    "random",
                    0.1,  # Total duration of 3 frames at 30fps is 0.1 seconds.                )
                )
                dataset = Charades(f.name,
                                   clip_sampler=clip_sampler,
                                   video_sampler=SequentialSampler)

                sample = next(dataset)
                self.assertEqual(sample["label"],
                                 [[0, 100], [0, 100], [0, 100]])
                self.assertTrue(sample["video"].equal(data_1))
    def test_frame_video_works(self):
        frame_names = [f"{str(i)}.png" for i in range(3)]
        with temp_frame_video(frame_names) as (f_name, data):
            frame_paths = [f_name / x for x in frame_names]
            test_video = FrameVideo.from_frame_paths(frame_paths)
            expected_duration = (
                0.1  # Total duration of 3 frames at 30fps is 0.1 seconds.
            )
            self.assertEqual(test_video.duration, expected_duration)

            # All frames (0 - 0.1 seconds)
            clip = test_video.get_clip(0, 0.1)
            frames, indices = clip["video"], clip["frame_indices"]
            self.assertTrue(frames.equal(data))
            self.assertEqual(indices, [0, 1, 2])

            # All frames (0 - 0.1 seconds), filtred to middle frame
            clip = test_video.get_clip(0, 0.1, lambda lst: lst[1:2])
            frames, indices = clip["video"], clip["frame_indices"]
            self.assertTrue(frames.equal(data[:, 1:2]))
            self.assertEqual(indices, [1])

            # 2 frames (0 - 0.066 seconds)
            clip = test_video.get_clip(0, 0.066)
            frames, indices = clip["video"], clip["frame_indices"]
            self.assertTrue(frames.equal(data[:, :2]))
            self.assertEqual(indices, [0, 1])

            # No frames (3 - 5 seconds)
            result = test_video.get_clip(3, 5)
            self.assertEqual(result, None)
Exemple #4
0
def temp_ava_dataset_2_videos():
    frame_names = [f"{str(i)}.png" for i in range(90)]
    # Create csv containing 2 test frame videos.
    with tempfile.NamedTemporaryFile(delete=False,
                                     suffix=".csv") as frames_file:
        frames_file.write(
            "original_vido_id video_id frame_id path labels\n".encode())
        # Frame video 1
        with temp_frame_video(frame_names) as (frame_1_video_dir, data_1):
            for i, frame_name in enumerate(frame_names):
                original_video_id_1 = str(frame_1_video_dir)
                video_id = "1"
                frame_id = str(i)
                path = pathlib.Path(frame_1_video_dir) / frame_name
                label = "0"
                frames_file.write(
                    f"{original_video_id_1} {video_id} {frame_id} {path} {label}\n"
                    .encode())

            # Frame video 2
            with temp_frame_video(frame_names, height=5, width=5) as (
                    frame_2_video_dir,
                    data_2,
            ):
                for i, frame_name in enumerate(frame_names):
                    original_video_id_2 = str(frame_2_video_dir)
                    video_id = "2"
                    frame_id = str(i)
                    path = pathlib.Path(frame_2_video_dir) / frame_name
                    label = "1"
                    frames_file.write(
                        f"{original_video_id_2} {video_id} {frame_id} {path} {label}\n"
                        .encode())

                frames_file.close()
                yield frames_file.name, data_1, data_2, original_video_id_1, original_video_id_2
Exemple #5
0
def temp_ssv2_dataset():
    frame_names = [f"{str(i)}.png" for i in range(7)]

    # Create json file for label names.
    labels = [
        "Approaching something with your camera",
        "Attaching something to something",
    ]
    label_names = {labels[0]: "0", labels[1]: "1"}
    with tempfile.NamedTemporaryFile(mode="w", delete=False,
                                     suffix=".json") as f:
        json.dump(label_names, f)
        label_name_file = f.name

    # Create csv containing 2 test frame videos.
    with tempfile.NamedTemporaryFile(delete=False, suffix=".csv") as f:
        f.write("original_vido_id video_id frame_id path labels\n".encode())

        # Frame video 1
        with temp_frame_video(frame_names) as (frame_1_video_dir, data_1):
            for i, frame_name in enumerate(frame_names):
                original_video_id = str(frame_1_video_dir)
                video_id = "1"
                frame_id = str(i)
                path = pathlib.Path(frame_1_video_dir) / frame_name
                f.write(
                    f"{original_video_id} {video_id} {frame_id} {path} ''\n".
                    encode())

            # Frame video 2
            with temp_frame_video(frame_names) as (frame_2_video_dir, data_2):
                for i, frame_name in enumerate(frame_names):
                    original_video_id = str(frame_2_video_dir)
                    video_id = "2"
                    frame_id = str(i)
                    path = pathlib.Path(frame_2_video_dir) / frame_name
                    f.write(
                        f"{original_video_id} {video_id} {frame_id} {path} ''\n"
                        .encode())

                f.close()
                video_path_file = f.name

                # Create json file for lable names.
                with tempfile.NamedTemporaryFile(mode="w",
                                                 delete=False,
                                                 suffix=".json") as f:
                    videos = [
                        {
                            "id": str(frame_1_video_dir),
                            "template": labels[0]
                        },
                        {
                            "id": str(frame_2_video_dir),
                            "template": labels[1]
                        },
                    ]
                    json.dump(videos, f)
                    video_label_file = f.name

                yield label_name_file, video_label_file, video_path_file, data_1, data_2