예제 #1
0
    def test_select_and_where_video_in_table(self):
        select_query = "SELECT id,data FROM MyVideo WHERE id = 5;"
        actual_batch = execute_query_fetch_all(select_query)
        expected_batch = list(create_dummy_batches(filters=[5]))[0]
        self.assertEqual(actual_batch, expected_batch)

        select_query = "SELECT data FROM MyVideo WHERE id = 5;"
        actual_batch = execute_query_fetch_all(select_query)
        expected_rows = [{
            "data":
            np.array(np.ones((2, 2, 3)) * float(5 + 1) * 25, dtype=np.uint8)
        }]
        expected_batch = Batch(frames=pd.DataFrame(expected_rows))
        self.assertEqual(actual_batch, expected_batch)

        select_query = "SELECT id, data FROM MyVideo WHERE id >= 2;"
        actual_batch = execute_query_fetch_all(select_query)
        actual_batch.sort()
        expected_batch = list(
            create_dummy_batches(filters=range(2, NUM_FRAMES)))[0]
        self.assertEqual(actual_batch, expected_batch)

        select_query = "SELECT id, data FROM MyVideo WHERE id >= 2 AND id < 5;"
        actual_batch = execute_query_fetch_all(select_query)
        actual_batch.sort()
        expected_batch = list(create_dummy_batches(filters=range(2, 5)))[0]

        self.assertEqual(actual_batch, expected_batch)
예제 #2
0
    def test_should_load_video_in_table(self):
        query = """LOAD DATA INFILE 'dummy.avi' INTO MyVideo;"""
        execute_query_fetch_all(query)

        metadata = CatalogManager().get_dataset_metadata("", "MyVideo")
        actual_batch = Batch(pd.DataFrame())
        actual_batch = Batch.concat(StorageEngine.read(metadata), copy=False)
        actual_batch.sort()
        expected_batch = list(create_dummy_batches())
        self.assertEqual([actual_batch], expected_batch)
예제 #3
0
    def test_cnn_filtering(self):
        create_udf_query = """CREATE UDF CNNFilter
                  INPUT  (Frame_Array NDARRAY UINT8(3, 256, 256))
                  OUTPUT (hasCar BOOLEAN)
                  TYPE  Filter
                  IMPL  'src/udfs/filters/cnn_filter.py';
        """
        execute_query_fetch_all(create_udf_query)

        select_query = """SELECT id FROM MyVideo WHERE CNNFilter(data);"""
        execute_query_fetch_all(select_query)
예제 #4
0
    def setUp(self):
        CatalogManager().reset()
        create_sample_video(NUM_FRAMES)
        load_query = """LOAD DATA INFILE 'dummy.avi' INTO MyVideo;"""
        execute_query_fetch_all(load_query)

        create_udf_query = """CREATE UDF DummyObjectDetector
                  INPUT  (Frame_Array NDARRAY UINT8(3, 256, 256))
                  OUTPUT (label NDARRAY STR(10))
                  TYPE  Classification
                  IMPL  'test/util.py';
        """
        execute_query_fetch_all(create_udf_query)
예제 #5
0
    def test_should_load_and_select_in_table(self):
        select_query = "SELECT id FROM MyVideo;"
        actual_batch = execute_query_fetch_all(select_query)
        actual_batch.sort()
        expected_rows = [{"id": i} for i in range(NUM_FRAMES)]
        expected_batch = Batch(frames=pd.DataFrame(expected_rows))
        self.assertEqual(actual_batch, expected_batch)

        select_query = "SELECT id,data FROM MyVideo;"
        actual_batch = execute_query_fetch_all(select_query)
        actual_batch.sort()
        expected_batch = list(create_dummy_batches())
        self.assertEqual([actual_batch], expected_batch)
예제 #6
0
    def test_sort_on_nonprojected_column(self):
        """ This tests doing an order by on a column
        that is not projected. The orderby_executor currently
        catches the KeyError, passes, and returns the untouched
        data
        """
        select_query = "SELECT data FROM MyVideo ORDER BY id;"
        actual_batch = execute_query_fetch_all(select_query)

        select_query = "SELECT data FROM MyVideo"
        expected_batch = execute_query_fetch_all(select_query)

        self.assertEqual(actual_batch, expected_batch)
예제 #7
0
    def test_should_load_and_select_real_video_in_table(self):
        query = """LOAD DATA INFILE 'data/ua_detrac/ua_detrac.mp4'
                   INTO MyVideo;"""
        execute_query_fetch_all(query)

        select_query = "SELECT id,data FROM MyVideo;"
        actual_batch = execute_query_fetch_all(select_query)
        actual_batch.sort()
        video_reader = OpenCVReader('data/ua_detrac/ua_detrac/mp4')
        expected_batch = Batch(frames=pd.DataFrame())
        for batch in video_reader.read():
            expected_batch += batch
        self.assertTrue(actual_batch, expected_batch)
예제 #8
0
    def test_should_load_and_select_using_udf_video(self):
        # Equality test
        select_query = "SELECT id,DummyObjectDetector(data) FROM MyVideo \
            WHERE DummyObjectDetector(data).label = ['person'] ORDER BY id;"

        actual_batch = execute_query_fetch_all(select_query)
        expected = [{
            'id': i * 2,
            'label': ['person']
        } for i in range(NUM_FRAMES // 2)]
        expected_batch = Batch(frames=pd.DataFrame(expected))
        self.assertEqual(actual_batch, expected_batch)

        # Contain test
        select_query = "SELECT id,DummyObjectDetector(data) FROM MyVideo \
            WHERE DummyObjectDetector(data).label @> ['person'] ORDER BY id;"

        actual_batch = execute_query_fetch_all(select_query)
        self.assertEqual(actual_batch, expected_batch)

        # Mutli element contain test

        select_query = "SELECT id,DummyObjectDetector(data) FROM MyVideo \
            WHERE DummyObjectDetector(data).label <@ ['person', 'bicycle'] \
            ORDER BY id;"

        actual_batch = execute_query_fetch_all(select_query)
        expected = [{
            'id': i * 2,
            'label': ['person']
        } for i in range(NUM_FRAMES // 2)]
        expected += [{
            'id': i,
            'label': ['bicycle']
        } for i in range(NUM_FRAMES) if i % 2 + 1 == 2]
        expected_batch = Batch(frames=pd.DataFrame(expected))
        expected_batch.sort()
        self.assertEqual(actual_batch, expected_batch)

        nested_select_query = """SELECT id, data FROM
            (SELECT id, data, DummyObjectDetector(data) FROM MyVideo
                WHERE id >= 2
            )
            WHERE ['person'] <@ label;
            """
        actual_batch = execute_query_fetch_all(nested_select_query)
        actual_batch.sort()
        expected_batch = list(
            create_dummy_batches(
                filters=[i for i in range(2, NUM_FRAMES) if i % 2 == 0]))[0]
        self.assertEqual(actual_batch, expected_batch)
예제 #9
0
    def test_should_load_video_in_table(self):
        query = """LOAD DATA INFILE 'dummy.avi' INTO MyVideo;"""
        execute_query_fetch_all(query)

        insert_query = """ INSERT INTO MyVideo (id, data) VALUES (40,
                            [[[40, 40, 40] , [40, 40, 40]],
                            [[40, 40, 40], [40, 40, 40]]]);"""
        execute_query_fetch_all(insert_query)

        insert_query_2 = """ INSERT INTO MyVideo (id, data) VALUES (41,
                            [[[41, 41, 41] , [41, 41, 41]],
                            [[41, 41, 41], [41, 41, 41]]]);"""
        execute_query_fetch_all(insert_query_2)

        query = 'SELECT id, data FROM MyVideo WHERE id = 40'
        batch = execute_query_fetch_all(query)
        self.assertIsNone(
            np.testing.assert_array_equal(
                batch.frames['data'][0],
                np.array([[[40, 40, 40], [40, 40, 40]],
                          [[40, 40, 40], [40, 40, 40]]])))

        query = 'SELECT id, data FROM MyVideo WHERE id = 41;'
        batch = execute_query_fetch_all(query)
        self.assertIsNone(
            np.testing.assert_array_equal(
                batch.frames['data'][0],
                np.array([[[41, 41, 41], [41, 41, 41]],
                          [[41, 41, 41], [41, 41, 41]]])))
예제 #10
0
    def test_should_load_and_sort_in_table(self):
        select_query = "SELECT data, id FROM MyVideo ORDER BY id;"
        actual_batch = execute_query_fetch_all(select_query)
        expected_rows = [{
            'id':
            i,
            'data':
            np.array(np.ones((2, 2, 3)) * float(i + 1) * 25, dtype=np.uint8)
        } for i in range(NUM_FRAMES)]
        expected_batch = Batch(frames=pd.DataFrame(expected_rows))
        self.assertEqual(actual_batch, expected_batch)

        select_query = "SELECT data, id FROM MyVideo ORDER BY id DESC;"
        actual_batch = execute_query_fetch_all(select_query)
        expected_batch.reverse()
        self.assertEqual(actual_batch, expected_batch)
예제 #11
0
파일: test_pytorch.py 프로젝트: xzdandy/eva
    def test_should_run_pytorch_and_fastrcnn(self):
        query = """LOAD DATA INFILE 'data/ua_detrac/ua_detrac.mp4'
                   INTO MyVideo;"""
        execute_query_fetch_all(query)

        create_udf_query = """CREATE UDF FastRCNNObjectDetector
                  INPUT  (Frame_Array NDARRAY UINT8(3, 256, 256))
                  OUTPUT (label NDARRAY STR(10))
                  TYPE  Classification
                  IMPL  'src/udfs/fastrcnn_object_detector.py';
        """
        execute_query_fetch_all(create_udf_query)

        select_query = """SELECT FastRCNNObjectDetector(data) FROM MyVideo
                        WHERE id < 5;"""
        actual_batch = execute_query_fetch_all(select_query)
        self.assertEqual(actual_batch.batch_size, 5)
예제 #12
0
 def test_nested_select_video_in_table(self):
     nested_select_query = """SELECT id, data FROM
         (SELECT id, data FROM MyVideo WHERE id >= 2 AND id < 5)
         WHERE id >= 3;"""
     actual_batch = execute_query_fetch_all(nested_select_query)
     actual_batch.sort()
     expected_batch = list(create_dummy_batches(filters=range(3, 5)))[0]
     self.assertEqual(actual_batch, expected_batch)
예제 #13
0
    def test_select_and_limit(self):
        select_query = "SELECT id,data FROM MyVideo LIMIT 5;"
        actual_batch = execute_query_fetch_all(select_query)
        actual_batch.sort()
        expected_batch = list(create_dummy_batches(num_frames=10,
                                                   batch_size=5))

        self.assertEqual(actual_batch.batch_size, expected_batch[0].batch_size)
        self.assertEqual(actual_batch, expected_batch[0])
예제 #14
0
    def test_select_and_sample(self):
        select_query = "SELECT id,data FROM MyVideo SAMPLE 7;"
        actual_batch = execute_query_fetch_all(select_query)
        actual_batch.sort()

        expected_batch = list(
            create_dummy_batches(filters=range(0, NUM_FRAMES, 7)))

        self.assertEqual(actual_batch.batch_size, expected_batch[0].batch_size)
        self.assertEqual(actual_batch, expected_batch[0])
예제 #15
0
    def test_select_and_union_video_in_table(self):
        select_query = """SELECT id, data FROM MyVideo WHERE id < 3
            UNION ALL SELECT id, data FROM MyVideo WHERE id > 7;"""
        actual_batch = execute_query_fetch_all(select_query)
        actual_batch.sort()
        expected_batch = list(
            create_dummy_batches(
                filters=[i for i in range(NUM_FRAMES) if i < 3 or i > 7]))[0]
        self.assertEqual(actual_batch, expected_batch)

        select_query = """SELECT id, data FROM MyVideo WHERE id < 2
            UNION ALL SELECT id, data FROM MyVideo WHERE id > 4 AND id < 6
            UNION ALL SELECT id, data FROM MyVideo WHERE id > 7;"""
        actual_batch = execute_query_fetch_all(select_query)
        actual_batch.sort()
        expected_batch = list(
            create_dummy_batches(filters=[
                i for i in range(NUM_FRAMES) if i < 2 or i == 5 or i > 7
            ]))[0]
        self.assertEqual(actual_batch, expected_batch)
예제 #16
0
    def test_should_load_and_select_using_udf_video_in_table(self):
        select_query = "SELECT id,DummyObjectDetector(data) FROM MyVideo \
            ORDER BY id;"

        actual_batch = execute_query_fetch_all(select_query)
        labels = DummyObjectDetector().labels
        expected = [{
            'id': i,
            'label': [labels[1 + i % 2]]
        } for i in range(NUM_FRAMES)]
        expected_batch = Batch(frames=pd.DataFrame(expected))
        self.assertEqual(actual_batch, expected_batch)
예제 #17
0
파일: test_pytorch.py 프로젝트: xzdandy/eva
    def test_should_run_pytorch_and_ssd(self):
        query = """LOAD DATA INFILE 'data/ua_detrac/ua_detrac.mp4'
                   INTO MyVideo;"""
        execute_query_fetch_all(query)

        create_udf_query = """CREATE UDF SSDObjectDetector
                  INPUT  (Frame_Array NDARRAY UINT8(3, 256, 256))
                  OUTPUT (label NDARRAY STR(10))
                  TYPE  Classification
                  IMPL  'src/udfs/ssd_object_detector.py';
        """
        execute_query_fetch_all(create_udf_query)

        select_query = """SELECT SSDObjectDetector(data) FROM MyVideo
                        WHERE id < 5;"""
        actual_batch = execute_query_fetch_all(select_query)
        self.assertEqual(actual_batch.batch_size, 5)

        # non-trivial test case
        res = actual_batch.frames
        for idx in res.index:
            self.assertTrue('car' in res['label'][idx])
예제 #18
0
    def test_logical_to_physical_udf(self):
        load_query = """LOAD DATA INFILE 'dummy.avi' INTO MyVideo;"""
        execute_query_fetch_all(load_query)

        create_udf_query = """CREATE UDF DummyObjectDetector
                  INPUT  (Frame_Array NDARRAY UINT8(3, 256, 256))
                  OUTPUT (label NDARRAY STR(10))
                  TYPE  Classification
                  IMPL  'test/util.py';
        """
        execute_query_fetch_all(create_udf_query)

        select_query = """SELECT id, DummyObjectDetector(data)
                    FROM MyVideo
                    WHERE DummyObjectDetector(data).label = ['person'];
        """
        actual_batch = execute_query_fetch_all(select_query)
        actual_batch.sort()
        expected = [{
            'id': i * 2,
            'label': ['person']
        } for i in range(NUM_FRAMES // 2)]
        expected_batch = Batch(frames=pd.DataFrame(expected))
        self.assertEqual(actual_batch, expected_batch)
예제 #19
0
 def setUp(self):
     CatalogManager().reset()
     load_query = """LOAD DATA INFILE 'data/m30.mp4' INTO MyVideo;"""
     execute_query_fetch_all(load_query)
예제 #20
0
 def setUpClass(cls):
     CatalogManager().reset()
     create_sample_video(NUM_FRAMES)
     load_query = """LOAD DATA INFILE 'dummy.avi' INTO MyVideo;"""
     execute_query_fetch_all(load_query)