Beispiel #1
0
 def load_from_json(self, filename):
     "Load all parameters of the dataset from a JSON file."
     with open(filename) as f:
         config = json.load(f)
     self.classes = config["classes"]
     for data in config["images"]:
         self.images.append(Image.load_from_json_data(self.classes, data))
Beispiel #2
0
 def load_from_json(self, filename):
     "Load all parameters of the dataset from a JSON file."
     with open(filename) as f:
         config = json.load(f)
     self.classes = config['classes']
     for data in config['images']:
         self.images.append(Image.load_from_json_data(self.classes, data))
Beispiel #3
0
    def test_get_det_gt(self):
        image = Image.load_from_json_data(self.classes, self.data)
        objects_table = Table(
            np.array([[0, 0, 0, 0, 0, 0, 0], [1, 1, 1, 1, 1, 0, 0],
                      [2, 2, 2, 2, 2, 0, 0]]), self.columns)
        assert (image.get_objects() == objects_table)

        data = self.data.copy()
        data['objects'][0]['diff'] = 1
        data['objects'][1]['trun'] = 1
        image = Image.load_from_json_data(self.classes, data)
        objects_table = Table(
            np.array([[0, 0, 0, 0, 0, 1, 0], [1, 1, 1, 1, 1, 0, 1],
                      [2, 2, 2, 2, 2, 0, 0]]), self.columns)
        assert (image.get_objects(with_diff=True,
                                  with_trun=True) == objects_table)

        objects_table = Table(
            np.array([[1, 1, 1, 1, 1, 0, 1], [2, 2, 2, 2, 2, 0, 0]]),
            self.columns)
        assert (image.get_objects(with_diff=False,
                                  with_trun=True) == objects_table)

        # this should be default behavior
        assert (image.get_objects() == objects_table)

        objects_table = Table(np.array([[2, 2, 2, 2, 2, 0, 0]]), self.columns)
        assert (image.get_objects(with_diff=False,
                                  with_trun=False) == objects_table)

        objects_table = Table(
            np.array([[0, 0, 0, 0, 0, 1, 0], [2, 2, 2, 2, 2, 0, 0]]),
            self.columns)
        assert (image.get_objects(with_diff=True,
                                  with_trun=False) == objects_table)

        # What if everything is filtered out?
        data['objects'] = data['objects'][:-1]
        objects_table = Table(
            np.array([[0, 0, 0, 0, 0, 1, 0], [1, 1, 1, 1, 1, 0, 1]]),
            self.columns)
        image = Image.load_from_json_data(self.classes, data)
        assert (image.get_objects(with_diff=True,
                                  with_trun=True) == objects_table)
        assert (image.get_objects(with_diff=False,
                                  with_trun=False).shape[0] == 0)
Beispiel #4
0
 def test_load_json_data(self):
     image = Image.load_from_json_data(self.classes, self.data)
     assert (image.width == 640 and image.height == 480)
     assert (image.classes == ['A', 'B', 'C'])
     assert (image.name == 'test_image')
     objects_table = Table(
         np.array([[0, 0, 0, 0, 0, 0, 0], [1, 1, 1, 1, 1, 0, 0],
                   [2, 2, 2, 2, 2, 0, 0]]), self.columns)
     assert (image.objects_table == objects_table)
Beispiel #5
0
  def test_get_det_gt(self):
    image = Image.load_from_json_data(self.classes,self.data)
    objects_table = Table(np.array([
      [0,0,0,0,0,0,0],
      [1,1,1,1,1,0,0],
      [2,2,2,2,2,0,0]]), self.columns)
    assert(image.get_objects() == objects_table)

    data = self.data.copy()
    data['objects'][0]['diff'] = 1
    data['objects'][1]['trun'] = 1
    image = Image.load_from_json_data(self.classes,data)
    objects_table = Table(np.array([
      [0,0,0,0,0,1,0],
      [1,1,1,1,1,0,1],
      [2,2,2,2,2,0,0]]), self.columns)
    assert(image.get_objects(with_diff=True,with_trun=True) == objects_table)

    objects_table = Table(np.array([
      [1,1,1,1,1,0,1],
      [2,2,2,2,2,0,0]]),self.columns)
    assert(image.get_objects(with_diff=False,with_trun=True) == objects_table)

    # this should be default behavior
    assert(image.get_objects() == objects_table)

    objects_table = Table(np.array([
      [2,2,2,2,2,0,0]]),self.columns)
    assert(image.get_objects(with_diff=False,with_trun=False) == objects_table)

    objects_table = Table(np.array([
      [0,0,0,0,0,1,0],
      [2,2,2,2,2,0,0]]), self.columns)
    assert(image.get_objects(with_diff=True,with_trun=False) == objects_table)

    # What if everything is filtered out?
    data['objects'] = data['objects'][:-1]
    objects_table = Table(np.array([
      [0,0,0,0,0,1,0],
      [1,1,1,1,1,0,1]]), self.columns)
    image = Image.load_from_json_data(self.classes,data)
    assert(image.get_objects(with_diff=True,with_trun=True) == objects_table)
    assert(image.get_objects(with_diff=False,with_trun=False).shape[0] == 0)
Beispiel #6
0
 def test_load_json_data(self):
   image = Image.load_from_json_data(self.classes,self.data)
   assert(image.width == 640 and image.height == 480)
   assert(image.classes == ['A','B','C'])
   assert(image.name == 'test_image')
   objects_table = Table(np.array([
     [0,0,0,0,0,0,0],
     [1,1,1,1,1,0,0],
     [2,2,2,2,2,0,0]]), self.columns)
   assert(image.objects_table == objects_table)
Beispiel #7
0
    def test_get_cls_counts_and_gt(self):
        data = self.data.copy()
        image = Image.load_from_json_data(self.classes, data)
        assert (np.all(image.get_cls_counts() == np.array([1, 1, 1])))
        assert (np.all(image.get_cls_gt() == np.array([True, True, True])))
        assert (image.contains_class('A') == True)
        assert (image.contains_class('B') == True)

        data['objects'][0]['class'] = 'B'
        image = Image.load_from_json_data(self.classes, data)
        # doesn't actually have to be Series, can be ndarray for comparison
        assert (np.all(image.get_cls_counts() == np.array([0, 2, 1])))
        assert (np.all(image.get_cls_gt() == np.array([False, True, True])))
        assert (image.contains_class('A') == False)
        assert (image.contains_class('B') == True)

        data['objects'] = []
        image = Image.load_from_json_data(self.classes, data)
        assert (np.all(image.get_cls_counts() == np.array([0, 0, 0])))
        assert (np.all(image.get_cls_gt() == np.array([False, False, False])))
        assert (image.contains_class('A') == False)
        assert (image.contains_class('B') == False)
Beispiel #8
0
  def test_get_cls_counts_and_gt(self):
    data = self.data.copy()
    image = Image.load_from_json_data(self.classes,data)
    assert(np.all(image.get_cls_counts() == np.array([1,1,1])))
    assert(np.all(image.get_cls_gt() == np.array([True,True,True])))
    assert(image.contains_class('A') == True)
    assert(image.contains_class('B') == True)

    data['objects'][0]['class'] = 'B'
    image = Image.load_from_json_data(self.classes,data)
    # doesn't actually have to be Series, can be ndarray for comparison
    assert(np.all(image.get_cls_counts() == np.array([0,2,1])))
    assert(np.all(image.get_cls_gt() == np.array([False,True,True])))
    assert(image.contains_class('A') == False)
    assert(image.contains_class('B') == True)

    data['objects'] = []
    image = Image.load_from_json_data(self.classes,data)
    assert(np.all(image.get_cls_counts() == np.array([0,0,0])))
    assert(np.all(image.get_cls_gt() == np.array([False,False,False])))
    assert(image.contains_class('A') == False)
    assert(image.contains_class('B') == False)