





'''simple docstring'''


import unittest

import numpy as np

from transformers.testing_utils import require_pytesseract, require_torch
from transformers.utils import is_pytesseract_available, is_torch_available

from ...test_image_processing_common import ImageProcessingSavingTestMixin, prepare_image_inputs


if is_torch_available():
		import torch

if is_pytesseract_available():
		from PIL import Image

		from transformers import LayoutLMvaImageProcessor






class    UpperCamelCase__	(		unittest.TestCase  ):







	def __init__(					self      : Dict			,			lowerCamelCase      : Optional[Any]			,			lowerCamelCase      : int=7			,			lowerCamelCase      : Optional[Any]=3			,			lowerCamelCase      : Union[str, Any]=1_8			,			lowerCamelCase      : Optional[Any]=3_0			,			lowerCamelCase      : Any=4_0_0			,			lowerCamelCase      : Any=True			,			lowerCamelCase      : int=None			,			lowerCamelCase      : Optional[int]=True			,			):




				'''simple docstring'''
				a__	 =			size if size is not None else {"height": 1_8, "width": 1_8}
				a__	 =			parent
				a__	 =			batch_size
				a__	 =			num_channels
				a__	 =			image_size
				a__	 =			min_resolution
				a__	 =			max_resolution
				a__	 =			do_resize
				a__	 =			size
				a__	 =			apply_ocr







	def     __a (					self      : Union[str, Any]		):




				'''simple docstring'''
				return {"do_resize": self.do_resize, "size": self.size, "apply_ocr": self.apply_ocr}






@require_torch
@require_pytesseract
class    UpperCamelCase__	(		__lowerCAmelCase						,unittest.TestCase  ):
	lowerCAmelCase__       :      Tuple										=    LayoutLMvaImageProcessor if is_pytesseract_available() else None







	def     __a (					self      : Union[str, Any]		):




				'''simple docstring'''
				a__	 =			LayoutLMvaImageProcessingTester(self		)







	@property
	def     __a (					self      : Dict		):




				'''simple docstring'''
				return self.image_processor_tester.prepare_image_processor_dict()







	def     __a (					self      : Dict		):




				'''simple docstring'''
				a__	 =			self.image_processing_class(**self.image_processor_dict		)
				self.assertTrue(hasattr(_lowerCamelCase			,			"do_resize"		)		)
				self.assertTrue(hasattr(_lowerCamelCase			,			"size"		)		)
				self.assertTrue(hasattr(_lowerCamelCase			,			"apply_ocr"		)		)







	def     __a (					self      : Dict		):




				'''simple docstring'''
				a__	 =			self.image_processing_class.from_dict(self.image_processor_dict		)
				self.assertEqual(image_processor.size			,			{"height": 1_8, "width": 1_8}		)

				a__	 =			self.image_processing_class.from_dict(self.image_processor_dict			,			size=4_2		)
				self.assertEqual(image_processor.size			,			{"height": 4_2, "width": 4_2}		)







	def     __a (					self      : List[str]		):




				'''simple docstring'''
				pass







	def     __a (					self      : Tuple		):




				'''simple docstring'''
				# Initialize image_processing
				a__	 =			self.image_processing_class(**self.image_processor_dict		)
				# create random PIL images
				a__	 =			prepare_image_inputs(self.image_processor_tester			,			equal_resolution=_lowerCamelCase		)
				for image in image_inputs:
							self.assertIsInstance(_lowerCamelCase			,			Image.Image		)

				# Test not batched input
				a__	 =			image_processing(image_inputs[0]			,			return_tensors="pt"		)
				self.assertEqual(
				    encoding.pixel_values.shape			,			(
				        1,
				        self.image_processor_tester.num_channels,
				        self.image_processor_tester.size["height"],
				        self.image_processor_tester.size["width"],
				    )			,			)

				self.assertIsInstance(encoding.words			,			_lowerCamelCase		)
				self.assertIsInstance(encoding.boxes			,			_lowerCamelCase		)

				# Test batched
				a__	 =			image_processing(_lowerCamelCase			,			return_tensors="pt"		).pixel_values
				self.assertEqual(
				    encoded_images.shape			,			(
				        self.image_processor_tester.batch_size,
				        self.image_processor_tester.num_channels,
				        self.image_processor_tester.size["height"],
				        self.image_processor_tester.size["width"],
				    )			,			)







	def     __a (					self      : Optional[int]		):




				'''simple docstring'''
				# Initialize image_processing
				a__	 =			self.image_processing_class(**self.image_processor_dict		)
				# create random numpy tensors
				a__	 =			prepare_image_inputs(self.image_processor_tester			,			equal_resolution=_lowerCamelCase			,			numpify=_lowerCamelCase		)
				for image in image_inputs:
							self.assertIsInstance(_lowerCamelCase			,			np.ndarray		)

				# Test not batched input
				a__	 =			image_processing(image_inputs[0]			,			return_tensors="pt"		).pixel_values
				self.assertEqual(
				    encoded_images.shape			,			(
				        1,
				        self.image_processor_tester.num_channels,
				        self.image_processor_tester.size["height"],
				        self.image_processor_tester.size["width"],
				    )			,			)

				# Test batched
				a__	 =			image_processing(_lowerCamelCase			,			return_tensors="pt"		).pixel_values
				self.assertEqual(
				    encoded_images.shape			,			(
				        self.image_processor_tester.batch_size,
				        self.image_processor_tester.num_channels,
				        self.image_processor_tester.size["height"],
				        self.image_processor_tester.size["width"],
				    )			,			)







	def     __a (					self      : List[Any]		):




				'''simple docstring'''
				# Initialize image_processing
				a__	 =			self.image_processing_class(**self.image_processor_dict		)
				# create random PyTorch tensors
				a__	 =			prepare_image_inputs(self.image_processor_tester			,			equal_resolution=_lowerCamelCase			,			torchify=_lowerCamelCase		)
				for image in image_inputs:
							self.assertIsInstance(_lowerCamelCase			,			torch.Tensor		)

				# Test not batched input
				a__	 =			image_processing(image_inputs[0]			,			return_tensors="pt"		).pixel_values
				self.assertEqual(
				    encoded_images.shape			,			(
				        1,
				        self.image_processor_tester.num_channels,
				        self.image_processor_tester.size["height"],
				        self.image_processor_tester.size["width"],
				    )			,			)

				# Test batched
				a__	 =			image_processing(_lowerCamelCase			,			return_tensors="pt"		).pixel_values
				self.assertEqual(
				    encoded_images.shape			,			(
				        self.image_processor_tester.batch_size,
				        self.image_processor_tester.num_channels,
				        self.image_processor_tester.size["height"],
				        self.image_processor_tester.size["width"],
				    )			,			)







	def     __a (					self      : int		):




				'''simple docstring'''
				# with apply_OCR = True
				a__	 =			LayoutLMvaImageProcessor()

				from datasets import load_dataset

				a__	 =			load_dataset("hf-internal-testing/fixtures_docvqa"			,			split="test"		)

				a__	 =			Image.open(ds[0]["file"]		).convert("RGB"		)

				a__	 =			image_processing(_lowerCamelCase			,			return_tensors="pt"		)

				self.assertEqual(encoding.pixel_values.shape			,			(1, 3, 2_2_4, 2_2_4)		)
				self.assertEqual(len(encoding.words		)			,			len(encoding.boxes		)		)

				# fmt: off
				# the words and boxes were obtained with Tesseract 4.1.1
				a__	 =			[["11:14", "to", "11:39", "a.m", "11:39", "to", "11:44", "a.m.", "11:44", "a.m.", "to", "12:25", "p.m.", "12:25", "to", "12:58", "p.m.", "12:58", "to", "4:00", "p.m.", "2:00", "to", "5:00", "p.m.", "Coffee", "Break", "Coffee", "will", "be", "served", "for", "men", "and", "women", "in", "the", "lobby", "adjacent", "to", "exhibit", "area.", "Please", "move", "into", "exhibit", "area.", "(Exhibits", "Open)", "TRRF", "GENERAL", "SESSION", "(PART", "|)", "Presiding:", "Lee", "A.", "Waller", "TRRF", "Vice", "President", "“Introductory", "Remarks”", "Lee", "A.", "Waller,", "TRRF", "Vice", "Presi-", "dent", "Individual", "Interviews", "with", "TRRF", "Public", "Board", "Members", "and", "Sci-", "entific", "Advisory", "Council", "Mem-", "bers", "Conducted", "by", "TRRF", "Treasurer", "Philip", "G.", "Kuehn", "to", "get", "answers", "which", "the", "public", "refrigerated", "warehousing", "industry", "is", "looking", "for.", "Plus", "questions", "from", "the", "floor.", "Dr.", "Emil", "M.", "Mrak,", "University", "of", "Cal-", "ifornia,", "Chairman,", "TRRF", "Board;", "Sam", "R.", "Cecil,", "University", "of", "Georgia", "College", "of", "Agriculture;", "Dr.", "Stanley", "Charm,", "Tufts", "University", "School", "of", "Medicine;", "Dr.", "Robert", "H.", "Cotton,", "ITT", "Continental", "Baking", "Company;", "Dr.", "Owen", "Fennema,", "University", "of", "Wis-", "consin;", "Dr.", "Robert", "E.", "Hardenburg,", "USDA.", "Questions", "and", "Answers", "Exhibits", "Open", "Capt.", "Jack", "Stoney", "Room", "TRRF", "Scientific", "Advisory", "Council", "Meeting", "Ballroom", "Foyer"]]  # noqa: E231
				a__	 =			[[[1_4_1, 5_7, 2_1_4, 6_9], [2_2_8, 5_8, 2_5_2, 6_9], [1_4_1, 7_5, 2_1_6, 8_8], [2_3_0, 7_9, 2_8_0, 8_8], [1_4_2, 2_6_0, 2_1_8, 2_7_3], [2_3_0, 2_6_1, 2_5_5, 2_7_3], [1_4_3, 2_7_9, 2_1_8, 2_9_0], [2_3_1, 2_8_2, 2_9_0, 2_9_1], [1_4_3, 3_4_2, 2_1_8, 3_5_4], [2_3_1, 3_4_5, 2_8_9, 3_5_5], [2_0_2, 3_6_2, 2_2_7, 3_7_3], [1_4_3, 3_7_9, 2_2_0, 3_9_2], [2_3_1, 3_8_2, 2_9_1, 3_9_4], [1_4_4, 7_1_4, 2_2_0, 7_2_6], [2_3_1, 7_1_5, 2_5_6, 7_2_6], [1_4_4, 7_3_2, 2_2_0, 7_4_5], [2_3_2, 7_3_6, 2_9_1, 7_4_7], [1_4_4, 7_6_9, 2_1_8, 7_8_2], [2_3_1, 7_7_0, 2_5_6, 7_8_2], [1_4_1, 7_8_8, 2_0_2, 8_0_1], [2_1_5, 7_9_1, 2_7_4, 8_0_4], [1_4_3, 8_2_6, 2_0_4, 8_3_8], [2_1_5, 8_2_6, 2_4_0, 8_3_8], [1_4_2, 8_4_4, 2_0_2, 8_5_7], [2_1_5, 8_4_7, 2_7_4, 8_5_9], [3_3_4, 5_7, 4_2_7, 6_9], [4_4_0, 5_7, 5_2_2, 6_9], [3_6_9, 7_5, 4_6_1, 8_8], [4_6_9, 7_5, 5_1_6, 8_8], [5_2_8, 7_6, 5_6_2, 8_8], [5_7_0, 7_6, 6_6_7, 8_8], [6_7_5, 7_5, 7_1_1, 8_7], [7_2_1, 7_9, 7_7_8, 8_8], [7_8_9, 7_5, 8_4_0, 8_8], [3_6_9, 9_7, 4_7_0, 1_0_7], [4_8_4, 9_4, 5_0_7, 1_0_6], [5_1_8, 9_4, 5_6_2, 1_0_7], [5_7_6, 9_4, 6_5_5, 1_1_0], [6_6_8, 9_4, 7_9_2, 1_0_9], [8_0_4, 9_5, 8_2_9, 1_0_7], [3_6_9, 1_1_3, 4_6_5, 1_2_5], [4_7_7, 1_1_6, 5_4_7, 1_2_5], [5_6_2, 1_1_3, 6_5_8, 1_2_5], [6_7_1, 1_1_6, 7_4_8, 1_2_5], [7_6_1, 1_1_3, 8_1_1, 1_2_5], [3_6_9, 1_3_1, 4_6_5, 1_4_3], [4_7_7, 1_3_3, 5_4_8, 1_4_3], [5_6_3, 1_3_0, 6_9_8, 1_4_5], [7_1_0, 1_3_0, 8_0_2, 1_4_6], [3_3_6, 1_7_1, 4_1_2, 1_8_3], [4_2_3, 1_7_1, 5_7_2, 1_8_3], [5_8_2, 1_7_0, 7_1_6, 1_8_4], [7_2_8, 1_7_1, 8_1_7, 1_8_7], [8_2_9, 1_7_1, 8_4_4, 1_8_6], [3_3_8, 1_9_7, 4_8_2, 2_1_2], [5_0_7, 1_9_6, 5_5_7, 2_0_9], [5_6_9, 1_9_6, 5_9_5, 2_0_8], [6_1_0, 1_9_6, 7_0_2, 2_0_9], [5_0_5, 2_1_4, 5_8_3, 2_2_6], [5_9_5, 2_1_4, 6_5_6, 2_2_7], [6_7_0, 2_1_5, 8_0_7, 2_2_7], [3_3_5, 2_5_9, 5_4_3, 2_7_4], [5_5_6, 2_5_9, 7_0_8, 2_7_2], [3_7_2, 2_7_9, 4_2_2, 2_9_1], [4_3_5, 2_7_9, 4_6_0, 2_9_1], [4_7_4, 2_7_9, 5_7_4, 2_9_2], [5_8_7, 2_7_8, 6_6_4, 2_9_1], [6_7_6, 2_7_8, 7_3_8, 2_9_1], [7_5_1, 2_7_9, 8_3_4, 2_9_1], [3_7_2, 2_9_8, 4_3_4, 3_1_0], [3_3_5, 3_4_1, 4_8_3, 3_5_4], [4_9_7, 3_4_1, 6_5_5, 3_5_4], [6_6_7, 3_4_1, 7_2_8, 3_5_4], [7_4_0, 3_4_1, 8_2_5, 3_5_4], [3_3_5, 3_6_0, 4_3_0, 3_7_2], [4_4_2, 3_6_0, 5_3_4, 3_7_2], [5_4_5, 3_5_9, 6_8_7, 3_7_2], [6_9_7, 3_6_0, 7_5_4, 3_7_2], [7_6_5, 3_6_0, 8_2_3, 3_7_3], [3_3_4, 3_7_8, 4_2_8, 3_9_1], [4_4_0, 3_7_8, 5_7_7, 3_9_4], [5_9_0, 3_7_8, 7_0_5, 3_9_1], [7_2_0, 3_7_8, 8_0_1, 3_9_1], [3_3_4, 3_9_7, 4_0_0, 4_0_9], [3_7_0, 4_1_6, 5_2_9, 4_2_9], [5_4_4, 4_1_6, 5_7_6, 4_3_2], [5_8_7, 4_1_6, 6_6_5, 4_2_8], [6_7_7, 4_1_6, 8_1_4, 4_2_9], [3_7_2, 4_3_5, 4_5_2, 4_5_0], [4_6_5, 4_3_4, 4_9_5, 4_4_7], [5_1_1, 4_3_4, 6_0_0, 4_4_7], [6_1_1, 4_3_6, 6_3_7, 4_4_7], [6_4_9, 4_3_6, 6_9_4, 4_5_1], [7_0_5, 4_3_8, 8_2_4, 4_4_7], [3_6_9, 4_5_3, 4_5_2, 4_6_6], [4_6_4, 4_5_4, 5_0_9, 4_6_6], [5_2_2, 4_5_3, 6_1_1, 4_6_9], [6_2_5, 4_5_3, 7_9_2, 4_6_9], [3_7_0, 4_7_2, 5_5_6, 4_8_8], [5_7_0, 4_7_2, 6_8_4, 4_8_7], [6_9_7, 4_7_2, 7_1_8, 4_8_5], [7_3_2, 4_7_2, 8_3_5, 4_8_8], [3_6_9, 4_9_0, 4_1_1, 5_0_3], [4_2_5, 4_9_0, 4_8_4, 5_0_3], [4_9_6, 4_9_0, 6_3_5, 5_0_6], [6_4_5, 4_9_0, 7_0_7, 5_0_3], [7_1_8, 4_9_1, 7_6_1, 5_0_3], [7_7_1, 4_9_0, 8_4_0, 5_0_3], [3_3_6, 5_1_0, 3_7_4, 5_2_1], [3_8_8, 5_1_0, 4_4_7, 5_2_2], [4_6_0, 5_1_0, 4_8_9, 5_2_1], [5_0_3, 5_1_0, 5_8_0, 5_2_2], [5_9_2, 5_0_9, 7_3_6, 5_2_5], [7_4_5, 5_0_9, 7_7_0, 5_2_2], [7_8_1, 5_0_9, 8_4_0, 5_2_2], [3_3_8, 5_2_8, 4_3_4, 5_4_1], [4_4_8, 5_2_8, 5_9_6, 5_4_1], [6_0_9, 5_2_7, 6_8_7, 5_4_0], [7_0_0, 5_2_8, 7_9_2, 5_4_1], [3_3_6, 5_4_6, 3_9_7, 5_5_9], [4_0_7, 5_4_6, 4_3_1, 5_5_9], [4_4_3, 5_4_6, 5_2_5, 5_6_0], [5_3_7, 5_4_6, 6_8_0, 5_6_2], [6_8_8, 5_4_6, 7_1_4, 5_5_9], [7_2_2, 5_4_6, 8_3_7, 5_6_2], [3_3_6, 5_6_5, 4_4_9, 5_8_1], [4_6_1, 5_6_5, 4_8_5, 5_7_7], [4_9_7, 5_6_5, 6_6_5, 5_8_1], [6_8_1, 5_6_5, 7_1_8, 5_7_7], [7_3_2, 5_6_5, 8_3_7, 5_8_0], [3_3_7, 5_8_4, 4_3_8, 5_9_7], [4_5_2, 5_8_3, 5_2_1, 5_9_6], [5_3_5, 5_8_4, 6_7_7, 5_9_9], [6_9_0, 5_8_3, 7_8_7, 5_9_6], [8_0_1, 5_8_3, 8_2_5, 5_9_6], [3_3_8, 6_0_2, 4_7_8, 6_1_5], [4_9_2, 6_0_2, 5_3_0, 6_1_4], [5_4_3, 6_0_2, 6_3_8, 6_1_5], [6_5_0, 6_0_2, 6_7_6, 6_1_4], [6_8_8, 6_0_2, 7_8_8, 6_1_5], [8_0_2, 6_0_2, 8_4_3, 6_1_4], [3_3_7, 6_2_1, 5_0_2, 6_3_3], [5_1_6, 6_2_1, 6_1_5, 6_3_7], [6_2_9, 6_2_1, 7_7_4, 6_3_6], [7_8_9, 6_2_1, 8_2_7, 6_3_3], [3_3_7, 6_3_9, 4_1_8, 6_5_2], [4_3_2, 6_4_0, 5_7_1, 6_5_3], [5_8_7, 6_3_9, 7_3_1, 6_5_5], [7_4_3, 6_3_9, 7_6_9, 6_5_2], [7_8_0, 6_3_9, 8_4_1, 6_5_2], [3_3_8, 6_5_8, 4_4_0, 6_7_3], [4_5_5, 6_5_8, 4_9_1, 6_7_0], [5_0_8, 6_5_8, 6_0_2, 6_7_1], [6_1_6, 6_5_8, 6_3_8, 6_7_0], [6_5_4, 6_5_8, 8_3_5, 6_7_4], [3_3_7, 6_7_7, 4_2_9, 6_8_9], [3_3_7, 7_1_4, 4_8_2, 7_2_6], [4_9_5, 7_1_4, 5_4_8, 7_2_6], [5_6_1, 7_1_4, 6_8_3, 7_2_6], [3_3_8, 7_7_0, 4_6_1, 7_8_2], [4_7_4, 7_6_9, 5_5_4, 7_8_5], [4_8_9, 7_8_8, 5_6_2, 8_0_3], [5_7_6, 7_8_8, 6_4_3, 8_0_1], [6_5_6, 7_8_7, 7_5_1, 8_0_4], [7_6_4, 7_8_8, 8_4_4, 8_0_1], [3_3_4, 8_2_5, 4_2_1, 8_3_8], [4_3_0, 8_2_4, 5_7_4, 8_3_8], [5_8_4, 8_2_4, 7_2_3, 8_4_1], [3_3_5, 8_4_4, 4_5_0, 8_5_7], [4_6_4, 8_4_3, 5_8_3, 8_6_0], [6_2_8, 8_6_2, 7_5_5, 8_7_5], [7_6_9, 8_6_1, 8_4_8, 8_7_8]]]  # noqa: E231
				# fmt: on

				self.assertListEqual(encoding.words			,			_lowerCamelCase		)
				self.assertListEqual(encoding.boxes			,			_lowerCamelCase		)

				# with apply_OCR = False
				a__	 =			LayoutLMvaImageProcessor(apply_ocr=_lowerCamelCase		)

				a__	 =			image_processing(_lowerCamelCase			,			return_tensors="pt"		)

				self.assertEqual(encoding.pixel_values.shape			,			(1, 3, 2_2_4, 2_2_4)		)




"""simple docstring"""


import gc
import unittest

import numpy as np
import torch
from transformers import CLIPTextConfig, CLIPTextModel, CLIPTokenizer

from diffusers import (
    AutoencoderKL,
    DDIMScheduler,
    PNDMScheduler,
    StableDiffusionLDMaDPipeline,
    UNetaDConditionModel,
)
from diffusers.utils import nightly, slow, torch_device
from diffusers.utils.testing_utils import enable_full_determinism, require_torch_gpu

from ..pipeline_params import TEXT_TO_IMAGE_BATCH_PARAMS, TEXT_TO_IMAGE_IMAGE_PARAMS, TEXT_TO_IMAGE_PARAMS


enable_full_determinism()






class   __UpperCAmelCase		(      unittest.TestCase      ):
				A__ :  List[Any]    				=			StableDiffusionLDMaDPipeline
				A__ :  List[str]    				=			TEXT_TO_IMAGE_PARAMS
				A__ :  str    				=			TEXT_TO_IMAGE_BATCH_PARAMS
				A__ :  Tuple    				=			TEXT_TO_IMAGE_IMAGE_PARAMS

				def 						_a      ( self ):
										torch.manual_seed(0 )
										lowerCamelCase__   =UNetaDConditionModel(
										    block_out_channels=(32, 64)      ,					layers_per_block=2      ,					sample_size=32      ,					in_channels=4      ,					out_channels=4      ,					down_block_types=("DownBlock2D", "CrossAttnDownBlock2D")      ,					up_block_types=("CrossAttnUpBlock2D", "UpBlock2D")      ,					cross_attention_dim=32      ,					)
										lowerCamelCase__   =DDIMScheduler(
										    beta_start=0.0_0_0_8_5      ,					beta_end=0.0_1_2      ,					beta_schedule="scaled_linear"      ,					clip_sample=_lowerCamelCase      ,					set_alpha_to_one=_lowerCamelCase      ,					)
										torch.manual_seed(0 )
										lowerCamelCase__   =AutoencoderKL(
										    block_out_channels=[32, 64]      ,					in_channels=6      ,					out_channels=6      ,					down_block_types=["DownEncoderBlock2D", "DownEncoderBlock2D"]      ,					up_block_types=["UpDecoderBlock2D", "UpDecoderBlock2D"]      ,					latent_channels=4      ,					)
										torch.manual_seed(0 )
										lowerCamelCase__   =CLIPTextConfig(
										    bos_token_id=0      ,					eos_token_id=2      ,					hidden_size=32      ,					intermediate_size=37      ,					layer_norm_eps=1E-05      ,					num_attention_heads=4      ,					num_hidden_layers=5      ,					pad_token_id=1      ,					vocab_size=1000      ,					)
										lowerCamelCase__   =CLIPTextModel(_lowerCamelCase )
										lowerCamelCase__   =CLIPTokenizer.from_pretrained("hf-internal-testing/tiny-random-clip" )

										lowerCamelCase__   ={
										    "unet": unet,
										    "scheduler": scheduler,
										    "vae": vae,
										    "text_encoder": text_encoder,
										    "tokenizer": tokenizer,
										    "safety_checker": None,
										    "feature_extractor": None,
										}
										return components

				def 						_a      ( self      ,					_lowerCamelCase      ,					_lowerCamelCase=0 ):
										if str(_lowerCamelCase ).startswith("mps" ):
																lowerCamelCase__   =torch.manual_seed(_lowerCamelCase )
										else:
																lowerCamelCase__   =torch.Generator(device=_lowerCamelCase ).manual_seed(_lowerCamelCase )
										lowerCamelCase__   ={
										    "prompt": "A painting of a squirrel eating a burger",
										    "generator": generator,
										    "num_inference_steps": 2,
										    "guidance_scale": 6.0,
										    "output_type": "numpy",
										}
										return inputs

				def 						_a      ( self ):
										lowerCamelCase__   ="cpu"  # ensure determinism for the device-dependent torch.Generator

										lowerCamelCase__   =self.get_dummy_components()
										lowerCamelCase__   =StableDiffusionLDMaDPipeline(**_lowerCamelCase )
										lowerCamelCase__   =ldmad_pipe.to(_lowerCamelCase )
										ldmad_pipe.set_progress_bar_config(disable=_lowerCamelCase )

										lowerCamelCase__   =self.get_dummy_inputs(_lowerCamelCase )
										lowerCamelCase__   =ldmad_pipe(**_lowerCamelCase )
										lowerCamelCase__   , lowerCamelCase__   =output.rgb, output.depth

										lowerCamelCase__   =rgb[0, -3:, -3:, -1]
										lowerCamelCase__   =depth[0, -3:, -1]

										assert rgb.shape == (1, 64, 64, 3)
										assert depth.shape == (1, 64, 64)

										lowerCamelCase__   =np.array(
										    [0.3_7_3_3_8_1_7_6, 0.7_0_2_4_7, 0.7_4_2_0_3_1_9_3, 0.5_1_6_4_3_6_0_4, 0.5_8_2_5_6_7_9_3, 0.6_0_9_3_2_1_3_6, 0.4_1_8_1_0_9_5, 0.4_8_3_5_5_8_7_7, 0.4_6_5_3_5_2_6_2] )
										lowerCamelCase__   =np.array([1_0_3.4_6_7_2_7, 8_5.8_1_2_0_0_4, 8_7.8_4_9_2_3_6] )

										assert np.abs(image_slice_rgb.flatten() - expected_slice_rgb ).max() < 1E-2
										assert np.abs(image_slice_depth.flatten() - expected_slice_depth ).max() < 1E-2

				def 						_a      ( self ):
										lowerCamelCase__   =self.get_dummy_components()
										lowerCamelCase__   =StableDiffusionLDMaDPipeline(**_lowerCamelCase )
										lowerCamelCase__   =ldmad_pipe.to(_lowerCamelCase )
										ldmad_pipe.set_progress_bar_config(disable=_lowerCamelCase )

										lowerCamelCase__   =self.get_dummy_inputs(_lowerCamelCase )
										lowerCamelCase__   =3 * [inputs["prompt"]]

										# forward
										lowerCamelCase__   =ldmad_pipe(**_lowerCamelCase )
										lowerCamelCase__   , lowerCamelCase__   =output.rgb, output.depth
										lowerCamelCase__   =rgb_slice_a[0, -3:, -3:, -1]
										lowerCamelCase__   =depth_slice_a[0, -3:, -1]

										lowerCamelCase__   =self.get_dummy_inputs(_lowerCamelCase )
										lowerCamelCase__   =3 * [inputs.pop("prompt" )]

										lowerCamelCase__   =ldmad_pipe.tokenizer(
										    _lowerCamelCase      ,					padding="max_length"      ,					max_length=ldmad_pipe.tokenizer.model_max_length      ,					truncation=_lowerCamelCase      ,					return_tensors="pt"      ,					)
										lowerCamelCase__   =text_inputs["input_ids"].to(_lowerCamelCase )

										lowerCamelCase__   =ldmad_pipe.text_encoder(_lowerCamelCase )[0]

										lowerCamelCase__   =prompt_embeds

										# forward
										lowerCamelCase__   =ldmad_pipe(**_lowerCamelCase )
										lowerCamelCase__   , lowerCamelCase__   =output.rgb, output.depth
										lowerCamelCase__   =rgb_slice_a[0, -3:, -3:, -1]
										lowerCamelCase__   =depth_slice_a[0, -3:, -1]

										assert np.abs(rgb_slice_a.flatten() - rgb_slice_a.flatten() ).max() < 1E-4
										assert np.abs(depth_slice_a.flatten() - depth_slice_a.flatten() ).max() < 1E-4






				def 						_a      ( self ):
										lowerCamelCase__   ="cpu"  # ensure determinism for the device-dependent torch.Generator
										lowerCamelCase__   =self.get_dummy_components()
										lowerCamelCase__   =PNDMScheduler(skip_prk_steps=_lowerCamelCase )
										lowerCamelCase__   =StableDiffusionLDMaDPipeline(**_lowerCamelCase )
										lowerCamelCase__   =ldmad_pipe.to(_lowerCamelCase )
										ldmad_pipe.set_progress_bar_config(disable=_lowerCamelCase )

										lowerCamelCase__   =self.get_dummy_inputs(_lowerCamelCase )
										lowerCamelCase__   ="french fries"
										lowerCamelCase__   =ldmad_pipe(**_lowerCamelCase      ,					negative_prompt=_lowerCamelCase )

										lowerCamelCase__   , lowerCamelCase__   =output.rgb, output.depth
										lowerCamelCase__   =rgb[0, -3:, -3:, -1]
										lowerCamelCase__   =depth[0, -3:, -1]

										assert rgb.shape == (1, 64, 64, 3)
										assert depth.shape == (1, 64, 64)

										lowerCamelCase__   =np.array(
										    [0.3_7_0_4_4, 0.7_1_8_1_1_5_0_3, 0.7_2_2_3_2_5_1, 0.4_8_6_0_3_6_7_5, 0.5_6_3_8_3_9_1, 0.6_3_6_4_9_4_8, 0.4_2_8_3_3_7_0_4, 0.4_9_0_1_3_1_5, 0.4_7_9_2_6_2_1_7] )
										lowerCamelCase__   =np.array([1_0_7.8_4_7_3_8, 8_4.6_2_8_0_2, 8_9.9_6_2_1_3_5] )
										assert np.abs(rgb_slice.flatten() - expected_slice_rgb ).max() < 1E-2
										assert np.abs(depth_slice.flatten() - expected_slice_depth ).max() < 1E-2






@slow
@require_torch_gpu
class   __UpperCAmelCase		(      unittest.TestCase      ):

				def 						_a      ( self ):
										super().tearDown()
										gc.collect()
										torch.cuda.empty_cache()

				def 						_a      ( self      ,					_lowerCamelCase      ,					_lowerCamelCase="cpu"      ,					_lowerCamelCase=torch.floataa      ,					_lowerCamelCase=0 ):
										lowerCamelCase__   =torch.Generator(device=_lowerCamelCase ).manual_seed(_lowerCamelCase )
										lowerCamelCase__   =np.random.RandomState(_lowerCamelCase ).standard_normal((1, 4, 64, 64) )
										lowerCamelCase__   =torch.from_numpy(_lowerCamelCase ).to(device=_lowerCamelCase      ,					dtype=_lowerCamelCase )
										lowerCamelCase__   ={
										    "prompt": "a photograph of an astronaut riding a horse",
										    "latents": latents,
										    "generator": generator,
										    "num_inference_steps": 3,
										    "guidance_scale": 7.5,
										    "output_type": "numpy",
										}
										return inputs






				def 						_a      ( self ):
										lowerCamelCase__   =StableDiffusionLDMaDPipeline.from_pretrained("Intel/ldm3d" )
										lowerCamelCase__   =ldmad_pipe.to(_lowerCamelCase )
										ldmad_pipe.set_progress_bar_config(disable=_lowerCamelCase )

										lowerCamelCase__   =self.get_inputs(_lowerCamelCase )
										lowerCamelCase__   =ldmad_pipe(**_lowerCamelCase )
										lowerCamelCase__   , lowerCamelCase__   =output.rgb, output.depth
										lowerCamelCase__   =rgb[0, -3:, -3:, -1].flatten()
										lowerCamelCase__   =rgb[0, -3:, -1].flatten()

										assert rgb.shape == (1, 512, 512, 3)
										assert depth.shape == (1, 512, 512)

										lowerCamelCase__   =np.array(
										    [0.5_3_8_0_5_4_6_5, 0.5_6_7_0_7_3_0_5, 0.5_4_8_6_5_1_5, 0.5_7_0_1_2_2_3_6, 0.5_8_1_4_5_1_1, 0.5_6_2_5_3_4_8_7, 0.5_4_8_4_3_0_1_4, 0.5_5_0_9_2_2_6_3, 0.6_4_5_9_7_0_6] )
										lowerCamelCase__   =np.array(
										    [0.9_2_6_3_7_8_1, 0.6_6_7_8_6_7_2, 0.5_4_8_6_5_1_5, 0.9_2_2_0_2_1_4_5, 0.6_7_8_3_1_1_3_5, 0.5_6_2_5_3_4_8_7, 0.9_2_4_1_6_9_4, 0.7_5_5_1_4_7_8, 0.6_4_5_9_7_0_6] )
										assert np.abs(rgb_slice - expected_slice_rgb ).max() < 3E-3
										assert np.abs(depth_slice - expected_slice_depth ).max() < 3E-3






@nightly
@require_torch_gpu
class   __UpperCAmelCase		(      unittest.TestCase      ):

				def 						_a      ( self ):
										super().tearDown()
										gc.collect()
										torch.cuda.empty_cache()

				def 						_a      ( self      ,					_lowerCamelCase      ,					_lowerCamelCase="cpu"      ,					_lowerCamelCase=torch.floataa      ,					_lowerCamelCase=0 ):
										lowerCamelCase__   =torch.Generator(device=_lowerCamelCase ).manual_seed(_lowerCamelCase )
										lowerCamelCase__   =np.random.RandomState(_lowerCamelCase ).standard_normal((1, 4, 64, 64) )
										lowerCamelCase__   =torch.from_numpy(_lowerCamelCase ).to(device=_lowerCamelCase      ,					dtype=_lowerCamelCase )
										lowerCamelCase__   ={
										    "prompt": "a photograph of an astronaut riding a horse",
										    "latents": latents,
										    "generator": generator,
										    "num_inference_steps": 50,
										    "guidance_scale": 7.5,
										    "output_type": "numpy",
										}
										return inputs

				def 						_a      ( self ):
										lowerCamelCase__   =StableDiffusionLDMaDPipeline.from_pretrained("Intel/ldm3d" ).to(_lowerCamelCase )
										ldmad_pipe.set_progress_bar_config(disable=_lowerCamelCase )

										lowerCamelCase__   =self.get_inputs(_lowerCamelCase )
										lowerCamelCase__   =ldmad_pipe(**_lowerCamelCase )
										lowerCamelCase__   , lowerCamelCase__   =output.rgb, output.depth

										lowerCamelCase__   =0.4_9_5_5_8_6
										lowerCamelCase__   =0.3_3_7_9_5_5_1_5
										lowerCamelCase__   =1_1_2.4_8_5_1_8
										lowerCamelCase__   =9_8.4_8_9_7_4_6
										assert np.abs(expected_rgb_mean - rgb.mean() ) < 1E-3
										assert np.abs(expected_rgb_std - rgb.std() ) < 1E-3
										assert np.abs(expected_depth_mean - depth.mean() ) < 1E-3
										assert np.abs(expected_depth_std - depth.std() ) < 1E-3






				def 						_a      ( self ):
										lowerCamelCase__   =StableDiffusionLDMaDPipeline.from_pretrained("Intel/ldm3d-4c" ).to(_lowerCamelCase )
										ldmad_pipe.set_progress_bar_config(disable=_lowerCamelCase )

										lowerCamelCase__   =self.get_inputs(_lowerCamelCase )
										lowerCamelCase__   =ldmad_pipe(**_lowerCamelCase )
										lowerCamelCase__   , lowerCamelCase__   =output.rgb, output.depth

										lowerCamelCase__   =0.4_1_9_4_1_2_7
										lowerCamelCase__   =0.3_5_3_7_5_5_8_6
										lowerCamelCase__   =0.5_6_3_8_5_0_2
										lowerCamelCase__   =0.3_4_6_8_6_1_0_3

										assert rgb.shape == (1, 512, 512, 3)
										assert depth.shape == (1, 512, 512, 1)
										assert np.abs(expected_rgb_mean - rgb.mean() ) < 1E-3
										assert np.abs(expected_rgb_std - rgb.std() ) < 1E-3
										assert np.abs(expected_depth_mean - depth.mean() ) < 1E-3
										assert np.abs(expected_depth_std - depth.std() ) < 1E-3


