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
예제 #2
0
    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)},
                ],
            ],
        )