Spaces:
Sleeping
Sleeping
| import json | |
| import tempfile | |
| import unittest | |
| import numpy as np | |
| from PIL import Image | |
| class FakePolicy: | |
| def __init__(self, actions=None): | |
| self.observation = None | |
| self.noise = None | |
| self.actions = np.ones((10, 7)) if actions is None else actions | |
| def infer(self, observation, *, noise=None): | |
| self.observation = observation | |
| self.noise = noise | |
| return {"actions": self.actions} | |
| class InferenceTests(unittest.TestCase): | |
| def test_prediction_maps_ur_observation_and_writes_json(self): | |
| from inference import ACTION_LABELS, run_prediction | |
| policy = FakePolicy() | |
| image = Image.new("RGB", (8, 6), "red") | |
| result = run_prediction( | |
| policy, image, image, "pick up", [1, 2, 3, 4, 5, 6, 0], 2, | |
| "owner/model", "checkpoint", | |
| ) | |
| self.assertEqual(tuple(result.actions.columns), ACTION_LABELS) | |
| self.assertEqual( | |
| policy.observation["observation/state"].tolist(), | |
| [1, 2, 3, 4, 5, 6, 0], | |
| ) | |
| self.assertEqual(policy.observation["observation/image"].dtype, np.uint8) | |
| self.assertEqual(policy.observation["prompt"], "pick up") | |
| self.assertEqual(policy.noise.shape, (10, 32)) | |
| with open(result.json_path, encoding="utf-8") as stream: | |
| self.assertEqual(json.load(stream)["seed"], 44) | |
| def test_same_trial_uses_same_diffusion_noise(self): | |
| from inference import run_prediction | |
| first, second = FakePolicy(), FakePolicy() | |
| image = Image.new("RGB", (8, 6)) | |
| arguments = (image, image, "task", [0] * 7, 3, "model", "checkpoint") | |
| run_prediction(first, *arguments) | |
| run_prediction(second, *arguments) | |
| np.testing.assert_array_equal(first.noise, second.noise) | |
| def test_prediction_rejects_invalid_state_and_action_shape(self): | |
| from inference import run_prediction | |
| image = Image.new("RGB", (8, 6)) | |
| with self.assertRaisesRegex(ValueError, "seven"): | |
| run_prediction(FakePolicy(), image, image, "task", [1, 2], 0, "m", "c") | |
| with self.assertRaisesRegex(RuntimeError, r"\(10, 7\)"): | |
| run_prediction( | |
| FakePolicy(np.zeros((8, 7))), image, image, "task", [0] * 7, | |
| 0, "m", "c", | |
| ) | |
| if __name__ == "__main__": | |
| unittest.main() | |