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