def get_test_pipeline(self, model, tokenizer, feature_extractor): image_classifier = ImageClassificationPipeline(model=model, feature_extractor=feature_extractor, top_k=2) examples = [ Image.open("./tests/fixtures/tests_samples/COCO/000000039769.png"), "http://images.cocodataset.org/val2017/000000039769.jpg", ] return image_classifier, examples
def test_small_model_from_pipeline(self): for small_model in self.small_models: model = AutoModelForImageClassification.from_pretrained( small_model) feature_extractor = AutoFeatureExtractor.from_pretrained( small_model) image_classifier = ImageClassificationPipeline( model=model, feature_extractor=feature_extractor) for valid_input in self.valid_inputs: output = image_classifier(**valid_input) top_k = valid_input.get("top_k", 5) def assert_valid_pipeline_output(pipeline_output): self.assertTrue(isinstance(pipeline_output, list)) self.assertEqual(len(pipeline_output), top_k) for label_result in pipeline_output: self.assertTrue(isinstance(label_result, dict)) self.assertIn("label", label_result) self.assertIn("score", label_result) if isinstance(valid_input["images"], list): # When images are batched, pipeline output is a list of lists of dictionaries self.assertEqual(len(valid_input["images"]), len(output)) for individual_output in output: assert_valid_pipeline_output(individual_output) else: # When images are batched, pipeline output is a list of dictionaries assert_valid_pipeline_output(output)
def run_pipeline_test(self, model, tokenizer, feature_extractor): image_classifier = ImageClassificationPipeline(model=model, feature_extractor=feature_extractor) outputs = image_classifier("./tests/fixtures/tests_samples/COCO/000000039769.png") self.assertEqual( outputs, [ {"score": ANY(float), "label": ANY(str)}, {"score": ANY(float), "label": ANY(str)}, ], ) import datasets dataset = datasets.load_dataset("Narsil/image_dummy", "image", split="test") # Accepts URL + PIL.Image + lists outputs = image_classifier( [ Image.open("./tests/fixtures/tests_samples/COCO/000000039769.png"), "http://images.cocodataset.org/val2017/000000039769.jpg", # RGBA dataset[0]["file"], # LA dataset[1]["file"], # L dataset[2]["file"], ] ) self.assertEqual( outputs, [ [ {"score": ANY(float), "label": ANY(str)}, {"score": ANY(float), "label": ANY(str)}, ], [ {"score": ANY(float), "label": ANY(str)}, {"score": ANY(float), "label": ANY(str)}, ], [ {"score": ANY(float), "label": ANY(str)}, {"score": ANY(float), "label": ANY(str)}, ], [ {"score": ANY(float), "label": ANY(str)}, {"score": ANY(float), "label": ANY(str)}, ], [ {"score": ANY(float), "label": ANY(str)}, {"score": ANY(float), "label": ANY(str)}, ], ], )