示例#1
0
 def test_challenge2018(self):
     dat = H.ImgReader(BallDatasetHandler.TRAIN.CHALLENGE_2018,
                       batch_size=8)
     dat_filtered = H.ImgReader(BallDatasetHandler.TRAIN.CHALLENGE_2018,
                                batch_size=8,
                                label_content="ball",
                                filter_labels=True)
     # 35327 number of ball annotations
     # 35952 number of images total
     self.assertEqual(dat.get_dataset_size(), 35952)
     self.assertEqual(dat_filtered.get_dataset_size(), 35327)
示例#2
0
    def test_heatmap_labels2D_rectangular_dummy_data(self):
        # set up dummy data
        heatmap = np.zeros(shape=(3, 10, 10, 1), dtype=np.float32)
        heatmap[0, 1:4, 1:4, :] = 1.0  # 0: top left
        heatmap[1, 5:10, 7:10, :] = 1.0  # 1: bottom right
        heatmap[2, 1:4, 1:4, :] = 1.0  # 2: both
        heatmap[2, 5:10, 7:10, :] = 1.0

        # set up dummy labels
        bbx1 = H.LabelBoundingBox2D(x1=1, y1=1, x2=3, y2=3)

        bbx2 = H.LabelBoundingBox2D(x1=7, y1=5, x2=9, y2=9)

        labels = [[bbx1], [bbx2], [bbx1, bbx2]]

        ret = H.heatmap.labels2D_rectangular(heatmap, labels)

        self.assertTrue(np.array_equal(heatmap, ret))
示例#3
0
    def test_set01_multiple_goalpost(self):
        dat = H.LblReader(
            [os.path.join(os.environ["ROBO_AI_DATA"], "bitbots-set00-01")],
            img_dim=(800, 600),
            label_content="goalpost")

        imgs = ["jan16_seq__000.531.png"]
        paths = [
            os.path.join(os.environ["ROBO_AI_DATA"], "bitbots-set00-01",
                         imgs[0])
        ]

        labels = dat.get_labels_for_batch(paths)

        # image 'jan16_seq__000.531.png' contains two goalposts - check for two labels
        self.assertEqual(len(labels[0]), 2)

        # extract label objects
        # left goal post: x1=26 and y1=0
        if abs(labels[0][0].x1 - 26) <= 2 and abs(labels[0][0].y1 - 0) <= 2:
            # if x1 and y1 of labels[0][0] matched, then labels[0][0] is the left goalpost
            goalpost1 = labels[0][0]
            goalpost2 = labels[0][1]
        else:
            # if it did not match, then just assume right goalpost is labels[0][0]
            goalpost2 = labels[0][0]
            goalpost1 = labels[0][1]

        # check left goalpost information
        self.assertAlmostEqual(goalpost1.x1, 26, delta=2)
        self.assertAlmostEqual(goalpost1.y1, 0, delta=2)
        self.assertAlmostEqual(goalpost1.x2, 110, delta=2)
        self.assertAlmostEqual(goalpost1.y2, 150, delta=2)

        self.assertAlmostEqual(goalpost1.center_x, 68, delta=2)
        self.assertAlmostEqual(goalpost1.center_y, 75, delta=2)
        self.assertAlmostEqual(goalpost1.width, 84, delta=2)
        self.assertAlmostEqual(goalpost1.height, 150, delta=2)

        # check right goalpost information
        self.assertAlmostEqual(goalpost2.x1, 731, delta=2)
        self.assertAlmostEqual(goalpost2.y1, 0, delta=2)
        self.assertAlmostEqual(goalpost2.x2, 799, delta=2)
        self.assertAlmostEqual(goalpost2.y2, 123, delta=2)

        self.assertAlmostEqual(goalpost2.center_x, 765, delta=2)
        self.assertAlmostEqual(goalpost2.center_y, 61.5, delta=2)
        self.assertAlmostEqual(goalpost2.width, 68, delta=2)
        self.assertAlmostEqual(goalpost2.height, 123, delta=2)
示例#4
0
    def test_mock_multiple_goalpost(self):
        dat = H.LblReader(TestLabelReader.pathlist,
                          img_dim=(640, 480),
                          label_content="goalpost")
        imgs = ["fake.png"]
        paths = [str(TestLabelReader.mock_dataset_dir / img) for img in imgs]
        labels = dat.get_labels_for_batch(paths)
        goalposts = labels[0]
        self.assertEqual(len(goalposts), 2,
                         "Should contain two goalpost labels")

        expected_goalposts = [{
            'x1': 398,
            'y1': 0,
            'x2': 458,
            'y2': 225,
            'center_x': 428,
            'center_y': 112,
            'width': 60,
            'height': 225
        }, {
            'x1': 197,
            'y1': 14,
            'x2': 252,
            'y2': 236,
            'center_x': 224,
            'center_y': 125,
            'width': 55,
            'height': 222
        }]
        eps = 1e-2
        for expected_goalpost in expected_goalposts:
            matching_goalposts = [
                gp for gp in goalposts
                if abs(gp.x1 - expected_goalpost['x1']) < eps
            ]
            self.assertEqual(len(matching_goalposts), 1)
            goalposts.remove(matching_goalposts[0])
            compare_goalpost = {
                attr: getattr(matching_goalposts[0], attr)
                for attr in expected_goalpost.keys()
            }
            self.assertDictEqual(expected_goalpost, compare_goalpost)
示例#5
0
    def test_mock_goalpost(self):
        dat = H.LblReader(TestLabelReader.pathlist,
                          img_dim=(800, 600),
                          label_content="goalpost")
        imgs = ["img_fr_nov15_000.000.png"]
        paths = [str(TestLabelReader.mock_dataset_dir / img) for img in imgs]
        labels = dat.get_labels_for_batch(paths)
        self.assertEqual(len(labels[0]), 1)

        goalpost = labels[0][0]

        self.assertAlmostEqual(goalpost.x1, 688)
        self.assertAlmostEqual(goalpost.y1, 0)
        self.assertAlmostEqual(goalpost.x2, 772)
        self.assertAlmostEqual(goalpost.y2, 203)

        # calculated in LabelBoundingBox2D - not from label file
        self.assertAlmostEqual(goalpost.center_x, 730)
        # calculated in LabelBoundingBox2D - not from label file
        self.assertAlmostEqual(goalpost.center_y, 101)
        self.assertAlmostEqual(goalpost.width, 84)
        self.assertAlmostEqual(goalpost.height, 203)
示例#6
0
import os
import MLHelper as H
from MLHelper.datasets.bitbots import BallDatasetHandler

from matplotlib import pyplot as plt
from matplotlib import patches

for img_dim in [(800, 600), (200, 150)]:
    dat = H.ImgLblReader(BallDatasetHandler.TRAIN.NAGOYA,
                         batch_size=4,
                         queue_size=4,
                         img_dim=img_dim,
                         label_content="ball",
                         filter_labels=True)

    iterations = 5
    for i in range(iterations):
        # retrieve data
        batch = dat.get_next_batch()
        imgs = batch.get_data()
        labels = batch.get_labels()

        plt.title(f"img_dim {img_dim} iteration {i+1}/{iterations}")
        for p, j in zip(range(1, 5), range(4)):
            # active subplot p
            ax = plt.subplot(2, 2, p)
            plt.imshow(imgs[j], interpolation="None")

            # labels
            for label in labels[j]:
                rect = patches.Rectangle((label.x1, label.y1),
示例#7
0
import os
import MLHelper as H
from MLHelper.datasets.bitbots import BallDatasetHandler

from matplotlib import pyplot as plt
from matplotlib import patches

for img_dim in [(800, 600), (200, 150)]:
    dat = H.ImgLblReader([os.path.join(os.environ["ROBO_AI_DATA"], "5")],
                         batch_size=4,
                         queue_size=4,
                         img_dim=img_dim,
                         label_content="goalpost",
                         filter_labels=True)

    iterations = 5
    for i in range(iterations):
        # retrieve data
        batch = dat.get_next_batch()
        imgs = batch.get_data()
        labels = batch.get_labels()

        plt.title(f"img_dim {img_dim} iteration {i+1}/{iterations}")
        for p, j in zip(range(1, 5), range(4)):
            # active subplot p
            ax = plt.subplot(2, 2, p)
            plt.imshow(imgs[j], interpolation="None")

            # labels
            for label in labels[j]:
                rect = patches.Rectangle((label.x1, label.y1),
示例#8
0
 def setUpClass(cls):
     TestLabelReader.data = H.LblReader(TestLabelReader.pathlist,
                                        img_dim=(800, 600),
                                        label_content="ball")
示例#9
0
 def test_montreal_and_size(self):
     dat = H.ImgReader(BallDatasetHandler.TRAIN.MONTREAL, batch_size=8)
     self.assertEqual(dat.get_dataset_size(), 16866)
示例#10
0
 def test_nagoya_and_size(self):
     dat = H.ImgReader(BallDatasetHandler.TRAIN.NAGOYA, batch_size=8)
     self.assertEqual(dat.get_dataset_size(), 8243)
示例#11
0
 def test_leipzig_ball_label(self):
     dat = H.ImgReader(BallDatasetHandler.TRAIN.LEIPZIG,
                       batch_size=8,
                       label_content="ball",
                       filter_labels=True)
     self.assertEqual(dat.get_dataset_size(), 14684)
示例#12
0
 def test_mock_ball_label(self):
     dat = H.ImgReader(TestImageReader.pathlist,
                       batch_size=5,
                       label_content="ball",
                       filter_labels=True)
     self.assertEqual(dat.get_dataset_size(), 11)
示例#13
0
 def setUpClass(cls):
     TestImageReader.data = H.ImgReader(
         TestImageReader.pathlist,
         batch_size=TestImageReader.batch_size,
         label_content="ball")