weathon
commited on
Commit
·
8ab76da
1
Parent(s):
92153b4
clean up and token
Browse filesThis view is limited to 50 files because it contains too many changes.
See raw diff
- VSF/.gitignore +0 -7
- VSF/LICENSE +0 -21
- VSF/README.md +0 -228
- VSF/app.py +0 -106
- VSF/comfyui/custom_nodes/value_sign_flip/.editorconfig +0 -21
- VSF/comfyui/custom_nodes/value_sign_flip/.github/ISSUE_TEMPLATE.md +0 -15
- VSF/comfyui/custom_nodes/value_sign_flip/.github/workflows/build-pipeline.yml +0 -34
- VSF/comfyui/custom_nodes/value_sign_flip/.github/workflows/publish_node.yml +0 -21
- VSF/comfyui/custom_nodes/value_sign_flip/.github/workflows/validate.yml +0 -13
- VSF/comfyui/custom_nodes/value_sign_flip/.gitignore +0 -114
- VSF/comfyui/custom_nodes/value_sign_flip/.pre-commit-config.yaml +0 -10
- VSF/comfyui/custom_nodes/value_sign_flip/LICENSE +0 -675
- VSF/comfyui/custom_nodes/value_sign_flip/MANIFEST.in +0 -9
- VSF/comfyui/custom_nodes/value_sign_flip/README.md +0 -53
- VSF/comfyui/custom_nodes/value_sign_flip/__init__.py +0 -16
- VSF/comfyui/custom_nodes/value_sign_flip/pyproject.toml +0 -82
- VSF/comfyui/custom_nodes/value_sign_flip/src/value_sign_flip/nodes.py +0 -185
- VSF/comfyui/custom_nodes/value_sign_flip/src/value_sign_flip/pipeline.py +0 -612
- VSF/comfyui/custom_nodes/value_sign_flip/src/value_sign_flip/processor.py +0 -112
- VSF/comfyui/custom_nodes/value_sign_flip/tests/__init__.py +0 -1
- VSF/comfyui/custom_nodes/value_sign_flip/tests/conftest.py +0 -6
- VSF/comfyui/custom_nodes/value_sign_flip/tests/pytest.ini +0 -4
- VSF/comfyui/custom_nodes/value_sign_flip/tests/test_value_sign_flip.py +0 -21
- VSF/demo.ipynb +0 -0
- VSF/experimentstest_nag_original.py +0 -58
- VSF/flux_demo.py +0 -22
- VSF/nasa/__init__.py +0 -0
- VSF/nasa/main.py +0 -20
- VSF/nasa/normalization.py +0 -54
- VSF/nasa/processor.py +0 -134
- VSF/prompts/.ipynb_checkpoints/test_prompt-checkpoint.json +0 -1203
- VSF/prompts/.ipynb_checkpoints/test_prompts.json-checkpoint.new +0 -1203
- VSF/prompts/prompts_gen.py +0 -29
- VSF/prompts/test_prompt.json +0 -1203
- VSF/prompts/test_prompts.json.new +0 -1203
- VSF/qwen.ipynb +0 -118
- VSF/qwen.py +0 -15
- VSF/qwen_image/pipeline.py +0 -334
- VSF/qwen_image/processor.py +0 -119
- VSF/requirements.txt +0 -14
- VSF/src/__init__.py +0 -0
- VSF/vsfwan/__init__.py +0 -0
- VSF/vsfwan/main.ipynb +0 -205
- VSF/vsfwan/pipeline.py +0 -612
- VSF/vsfwan/processor.py +0 -114
- VSF/wan.md +0 -112
- app.py +1 -1
- {VSF/comfyui/custom_nodes/value_sign_flip/src/value_sign_flip → src}/__init__.py +0 -0
- src/__pycache__/__init__.cpython-310.pyc +0 -0
- VSF/nasa/pipeline.py → src/__pycache__/pipeline.cpython-310.pyc +0 -0
VSF/.gitignore
DELETED
|
@@ -1,7 +0,0 @@
|
|
| 1 |
-
experiments/wandb
|
| 2 |
-
**/__pycache__
|
| 3 |
-
experiments/wandb
|
| 4 |
-
comfyui/models
|
| 5 |
-
experiments/video_reward/videos
|
| 6 |
-
experiments/results_nasa
|
| 7 |
-
**/.env
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VSF/LICENSE
DELETED
|
@@ -1,21 +0,0 @@
|
|
| 1 |
-
MIT License
|
| 2 |
-
|
| 3 |
-
Copyright (c) 2025 Marshall
|
| 4 |
-
|
| 5 |
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 6 |
-
of this software and associated documentation files (the "Software"), to deal
|
| 7 |
-
in the Software without restriction, including without limitation the rights
|
| 8 |
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 9 |
-
copies of the Software, and to permit persons to whom the Software is
|
| 10 |
-
furnished to do so, subject to the following conditions:
|
| 11 |
-
|
| 12 |
-
The above copyright notice and this permission notice shall be included in all
|
| 13 |
-
copies or substantial portions of the Software.
|
| 14 |
-
|
| 15 |
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 16 |
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 17 |
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
| 18 |
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
| 19 |
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
| 20 |
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
| 21 |
-
SOFTWARE.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VSF/README.md
DELETED
|
@@ -1,228 +0,0 @@
|
|
| 1 |
-
# VSF: Simple, Efficient, and Effective Negative Guidance in Few-Step Image Generation Models By Value Sign Flip
|
| 2 |
-
This project is experimental; please leave your feedback in issues or contact us.
|
| 3 |
-
Email: email@weasoft.com
|
| 4 |
-
|
| 5 |
-
[Web Page](https://vsf.weasoft.com/)
|
| 6 |
-
## Preprint
|
| 7 |
-
[](https://arxiv.org/abs/2508.10931)
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
## Web Demo for Wan 2.1 VSF
|
| 11 |
-
Wan 2.1 web demo [https://huggingface.co/spaces/weathon/VSF](https://huggingface.co/spaces/weathon/VSF)
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
## Introduction
|
| 16 |
-
This project introduces a new method called Value Sign Flip (VSF) that improves how image generation models handle negative prompts.
|
| 17 |
-
|
| 18 |
-
Problem: Modern few-step text-to-image models often struggle to properly exclude concepts described in negative prompts. Existing methods (CFG) either don’t work well or require heavy changes to the model (NegationCLIP).
|
| 19 |
-
|
| 20 |
-
Solution (VSF): We propose a lightweight technique that flips the value vector of negative prompt embeddings during attention. This cancels out unwanted features without retraining or needing access to classifier-free ⚡️.
|
| 21 |
-
|
| 22 |
-
Key Advantages:
|
| 23 |
-
|
| 24 |
-
- ⚡ Works with few-step and even single-step generation models (currently only supports SD3.5, Flux, and Wan), able to generate video with negative guidance in 30s. (480p, Wan 1.3B, 81 frames)
|
| 25 |
-
- 🔧 Requires no model retraining.
|
| 26 |
-
- 🚫 Avoids common issues like negative prompts being accidentally reinforcing the undesired concept.
|
| 27 |
-
- 🎯 Includes attention masking and token duplication to isolate effects to only where needed.
|
| 28 |
-
|
| 29 |
-
## ComfyUI
|
| 30 |
-
ComfyUI custom node is available at [comfyui](comfyui/), make sure you have the diffusers installed in your Comfy envirement
|
| 31 |
-
|
| 32 |
-
## News
|
| 33 |
-
- 📄 July 26, 2025: Preprint uploaded
|
| 34 |
-
- 🎇 July 26, 2025: First version of ComfyUI node added
|
| 35 |
-
- 🤗 July 19, 2025: HuggingFace Space demo for Wan added
|
| 36 |
-
- 📼 July 17, 2025: We now had experimental support for Wan 2.1
|
| 37 |
-
- 🖼️ July 16, 2025: We now support Flux Dev and Flux Schnell
|
| 38 |
-
- 🎨 July 15, 2025: We open sourced our repo and has support for SD3.5-large-turbo
|
| 39 |
-
|
| 40 |
-
## Examples
|
| 41 |
-
### SD3.5
|
| 42 |
-
<img width="1045" height="459" alt="image" src="https://github.com/user-attachments/assets/751e06db-bbd3-4c1b-b208-c384100efeea" />
|
| 43 |
-
This is an SD3.5 example; the green prompt is the positive prompt, and the red text is the negative prompt.
|
| 44 |
-
|
| 45 |
-
### Flux
|
| 46 |
-
<img width="1024" height="1024" alt="image" src="https://github.com/user-attachments/assets/49068cac-e737-4f91-be95-b48d337e2e73" />
|
| 47 |
-
Positive Prompt: `a chef cat making a cake in the kitchen, the kitchen is modern and well-lit, the text on cake is saying 'I LOVE AI, the whole image is in oil paint style'`
|
| 48 |
-
|
| 49 |
-
Negative Prompt: `chef hat`
|
| 50 |
-
|
| 51 |
-
Scale: `3.5`
|
| 52 |
-
|
| 53 |
-
|
| 54 |
-
<img width="1024" height="1024" alt="image" src="https://github.com/user-attachments/assets/be934907-14f7-44e0-bb5f-c59177cb80c0" />
|
| 55 |
-
Positive Prompt: `a chef cat making a cake in the kitchen, the kitchen is modern and well-lit, the text on cake is saying 'I LOVE AI, the whole image is in oil paint style'`
|
| 56 |
-
|
| 57 |
-
Negative Prompt: `icing`
|
| 58 |
-
|
| 59 |
-
Scale: `4`
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
|
| 64 |
-
[This video](media/flux_demo.mp4) shows a positive prompt of `a canadian winter landscape in the style of a 19th century painting` and negative prompt of `snow` at different scale, from 1 to 8.9 ([Code](flux_demo.py)). We can see as the scale increase the snow is decreasing.
|
| 65 |
-
|
| 66 |
-
<!-- <video src="media/flux_demo.mp4" controls preload></video> -->
|
| 67 |
-
|
| 68 |
-
### Wan 2.1
|
| 69 |
-
Please checkout our examples in [https://vsf.weasoft.com/](https://vsf.weasoft.com/).
|
| 70 |
-
## Usage
|
| 71 |
-
You can clone this repo into your working folder, and execute the following code. We subjectively find that SD3.5 version is better at following negative prompt while Flux Schnell version has better quality. It seems like our method did not work well on Flux Dev.
|
| 72 |
-
|
| 73 |
-
**Note: the CFG scale has to be set to 0 to use our method. **
|
| 74 |
-
|
| 75 |
-
### Wan WEb Demo
|
| 76 |
-
Clone the repo, and run `python3 app.py` will start a gradio interface for Wan.
|
| 77 |
-
|
| 78 |
-
|
| 79 |
-
### SD3.5-large-turbo
|
| 80 |
-
```python
|
| 81 |
-
import torch
|
| 82 |
-
from src.sd3_pipeline import VSFStableDiffusion3Pipeline
|
| 83 |
-
pipe = VSFStableDiffusion3Pipeline.from_pretrained(
|
| 84 |
-
"stabilityai/stable-diffusion-3.5-large-turbo",
|
| 85 |
-
torch_dtype=torch.bfloat16,
|
| 86 |
-
).to("cuda")
|
| 87 |
-
prompt = "A poker table is set in the casino room, green felt stretched tight over the oval surface."
|
| 88 |
-
negative_prompt = "cards"
|
| 89 |
-
image_ours = pipe(
|
| 90 |
-
prompt=prompt,
|
| 91 |
-
negative_prompt=negative_prompt,
|
| 92 |
-
guidance_scale=0.0, # This has to be 0
|
| 93 |
-
num_inference_steps=8,
|
| 94 |
-
scale=3.5,
|
| 95 |
-
offset=0.1
|
| 96 |
-
generator=torch.Generator("cpu").manual_seed(19)
|
| 97 |
-
).images[0].save("demo.png")
|
| 98 |
-
```
|
| 99 |
-
|
| 100 |
-
A demo notebook and comparsion with [NAG](https://github.com/ChenDarYen/Normalized-Attention-Guidance/tree/main) can be found in [demo.ipynb](demo.ipynb).
|
| 101 |
-
|
| 102 |
-
### Flux Schnell
|
| 103 |
-
```python
|
| 104 |
-
import torch
|
| 105 |
-
from src.flux_pipeline import VSFFluxPipeline
|
| 106 |
-
import numpy as np
|
| 107 |
-
import imageio
|
| 108 |
-
|
| 109 |
-
pipe = VSFFluxPipeline.from_pretrained("black-forest-labs/FLUX.1-schnell", torch_dtype=torch.bfloat16).to("cuda")
|
| 110 |
-
|
| 111 |
-
prompt = "a canadian winter landscape in the style of a 19th century painting"
|
| 112 |
-
image = pipe(
|
| 113 |
-
prompt,
|
| 114 |
-
negative_prompt="snow on the ground",
|
| 115 |
-
guidance_scale=0.0,
|
| 116 |
-
num_inference_steps=8,
|
| 117 |
-
max_sequence_length=256,
|
| 118 |
-
scale=6,
|
| 119 |
-
generator=torch.Generator("cpu").manual_seed(19)
|
| 120 |
-
).images[0].save("demo.png")
|
| 121 |
-
```
|
| 122 |
-
|
| 123 |
-
### Flux Dev
|
| 124 |
-
(Our method doesn't seem to work on Flux Dev)
|
| 125 |
-
```python
|
| 126 |
-
import torch
|
| 127 |
-
from src.flux_pipeline import VSFFluxPipeline
|
| 128 |
-
import numpy as np
|
| 129 |
-
import imageio
|
| 130 |
-
|
| 131 |
-
pipe = VSFFluxPipeline.from_pretrained("black-forest-labs/FLUX.1-dev", torch_dtype=torch.bfloat16).to("cuda")
|
| 132 |
-
|
| 133 |
-
prompt = "a bike on a snowy road in the style of a 19th century painting"
|
| 134 |
-
image = pipe(
|
| 135 |
-
prompt,
|
| 136 |
-
negative_prompt="wheels",
|
| 137 |
-
guidance_scale=0.0,
|
| 138 |
-
num_inference_steps=32,
|
| 139 |
-
max_sequence_length=256,
|
| 140 |
-
scale=8,
|
| 141 |
-
generator=torch.Generator("cpu").manual_seed(19)
|
| 142 |
-
).images[0].save("demo.png")
|
| 143 |
-
```
|
| 144 |
-
### Wan2.1
|
| 145 |
-
|
| 146 |
-
Wan 2.1 does not have a complete pipeline yet, so the code is a bit long
|
| 147 |
-
```python
|
| 148 |
-
import torch
|
| 149 |
-
from diffusers import AutoencoderKLWan
|
| 150 |
-
from vsfwan.pipeline import WanPipeline
|
| 151 |
-
from vsfwan.processor import WanAttnProcessor2_0
|
| 152 |
-
from diffusers.utils import export_to_video
|
| 153 |
-
|
| 154 |
-
model_id = "Wan-AI/Wan2.1-T2V-1.3B-Diffusers"
|
| 155 |
-
vae = AutoencoderKLWan.from_pretrained(model_id, subfolder="vae", torch_dtype=torch.float32)
|
| 156 |
-
pipe = WanPipeline.from_pretrained(model_id, vae=vae, torch_dtype=torch.bfloat16)
|
| 157 |
-
pipe.load_lora_weights(
|
| 158 |
-
"Kijai/WanVideo_comfy",
|
| 159 |
-
weight_name="Wan21_CausVid_bidirect2_T2V_1_3B_lora_rank32.safetensors",
|
| 160 |
-
adapter_name="lora"
|
| 161 |
-
)
|
| 162 |
-
pipe = pipe.to("cuda")
|
| 163 |
-
|
| 164 |
-
# prompt = "A chef cat and a dog baking a cake together in a kitchen. The cat is carefully measuring flour, while the dog is stirring the batter with a wooden spoon. The cat is wearing a chef suit"
|
| 165 |
-
# neg_prompt = "chef hat"
|
| 166 |
-
prompt = "A cessna flying over a snowy mountain landscape, with a clear blue sky and fluffy white clouds. The plane is flying at a low altitude, casting a shadow on the snow-covered ground below. The mountains are rugged and steep, with patches of evergreen trees visible in the foreground."
|
| 167 |
-
neg_prompt = "trees"
|
| 168 |
-
|
| 169 |
-
neg_prompt_embeds, _ = pipe.encode_prompt(
|
| 170 |
-
prompt=neg_prompt,
|
| 171 |
-
padding=False,
|
| 172 |
-
do_classifier_free_guidance=False,
|
| 173 |
-
)
|
| 174 |
-
|
| 175 |
-
pos_prompt_embeds, _ = pipe.encode_prompt(
|
| 176 |
-
prompt=prompt,
|
| 177 |
-
do_classifier_free_guidance=False,
|
| 178 |
-
max_sequence_length=512 - neg_prompt_embeds.shape[1],
|
| 179 |
-
)
|
| 180 |
-
pipe.set_adapters("lora", 0.5)
|
| 181 |
-
|
| 182 |
-
|
| 183 |
-
|
| 184 |
-
neg_len = neg_prompt_embeds.shape[1]
|
| 185 |
-
pos_len = pos_prompt_embeds.shape[1]
|
| 186 |
-
print(neg_len, pos_len)
|
| 187 |
-
height = 480
|
| 188 |
-
width = 832
|
| 189 |
-
frames = 81
|
| 190 |
-
|
| 191 |
-
img_len = (height//8) * (width//8) * 3 * (frames // 4 + 1) // 12
|
| 192 |
-
print(img_len)
|
| 193 |
-
mask = torch.zeros((1, img_len, pos_len+neg_len)).cuda()
|
| 194 |
-
mask[:, :, -neg_len:] = -0.2 # this should be negative
|
| 195 |
-
|
| 196 |
-
for block in pipe.transformer.blocks:
|
| 197 |
-
block.attn2.processor = WanAttnProcessor2_0(scale=1.7, neg_prompt_length=neg_len, attn_mask=mask)
|
| 198 |
-
|
| 199 |
-
prompt_embeds = torch.cat([pos_prompt_embeds, neg_prompt_embeds], dim=1)
|
| 200 |
-
|
| 201 |
-
output = pipe(
|
| 202 |
-
prompt_embeds=prompt_embeds,
|
| 203 |
-
negative_prompt=neg_prompt,
|
| 204 |
-
height=height,
|
| 205 |
-
width=width,
|
| 206 |
-
num_frames=frames + 1,
|
| 207 |
-
num_inference_steps=12,
|
| 208 |
-
guidance_scale=0.0,
|
| 209 |
-
generator=torch.Generator(device="cuda").manual_seed(42),
|
| 210 |
-
).frames[0]
|
| 211 |
-
export_to_video(output, "vsf.mp4", fps=15)
|
| 212 |
-
```
|
| 213 |
-
|
| 214 |
-
|
| 215 |
-
## To-do List
|
| 216 |
-
This to-do list will be listed in issues. If it is not assigned yet, feel free to assign it to yourself and contribute
|
| 217 |
-
- [x] Add support for SD3.5-large-turbo
|
| 218 |
-
- [x] Add support for Flux-Schnell
|
| 219 |
-
- [x] Add Wan2.1 support
|
| 220 |
-
- [x] Gradio Interface
|
| 221 |
-
- [ ] Add full Wan 2.1 work (non-experimental LoRA)
|
| 222 |
-
- [ ] Make Flux-Dev work
|
| 223 |
-
- [ ] Add Comfy-UI custom node
|
| 224 |
-
- [ ] Add Web-UI demo
|
| 225 |
-
|
| 226 |
-
## Star History
|
| 227 |
-
|
| 228 |
-
[](https://www.star-history.com/#weathon/VSF&Timeline)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VSF/app.py
DELETED
|
@@ -1,106 +0,0 @@
|
|
| 1 |
-
import gradio as gr
|
| 2 |
-
import numpy as np
|
| 3 |
-
import imageio
|
| 4 |
-
|
| 5 |
-
import torch
|
| 6 |
-
from diffusers import AutoencoderKLWan
|
| 7 |
-
from vsfwan.pipeline import WanPipeline
|
| 8 |
-
from vsfwan.processor import WanAttnProcessor2_0
|
| 9 |
-
from diffusers import WanVACEPipeline
|
| 10 |
-
from diffusers.utils import export_to_video
|
| 11 |
-
import uuid
|
| 12 |
-
|
| 13 |
-
model_id = "Wan-AI/Wan2.1-T2V-1.3B-Diffusers"
|
| 14 |
-
vae = AutoencoderKLWan.from_pretrained(model_id, subfolder="vae", torch_dtype=torch.float32)
|
| 15 |
-
pipe = WanPipeline.from_pretrained(model_id, vae=vae, torch_dtype=torch.bfloat16)
|
| 16 |
-
pipe.load_lora_weights(
|
| 17 |
-
"Kijai/WanVideo_comfy",
|
| 18 |
-
weight_name="Wan21_CausVid_bidirect2_T2V_1_3B_lora_rank32.safetensors",
|
| 19 |
-
adapter_name="lora"
|
| 20 |
-
)
|
| 21 |
-
pipe = pipe.to("cuda")
|
| 22 |
-
height = 480
|
| 23 |
-
width = 832
|
| 24 |
-
import os
|
| 25 |
-
os.makedirs("videos", exist_ok=True)
|
| 26 |
-
def generate_video(positive_prompt, negative_prompt, guidance_scale, bias, step, frames, seed, progress=gr.Progress(track_tqdm=False)):
|
| 27 |
-
lambda total: progress.tqdm(range(total))
|
| 28 |
-
|
| 29 |
-
print(f"Generating video with params: {positive_prompt}, {negative_prompt}, {guidance_scale}, {bias}, {step}, {frames}")
|
| 30 |
-
pipe.set_adapters("lora", 0.6)
|
| 31 |
-
prompt = positive_prompt
|
| 32 |
-
neg_prompt = negative_prompt
|
| 33 |
-
|
| 34 |
-
neg_prompt_embeds, _ = pipe.encode_prompt(
|
| 35 |
-
prompt=neg_prompt,
|
| 36 |
-
padding=False,
|
| 37 |
-
do_classifier_free_guidance=False,
|
| 38 |
-
)
|
| 39 |
-
|
| 40 |
-
pos_prompt_embeds, _ = pipe.encode_prompt(
|
| 41 |
-
prompt=prompt,
|
| 42 |
-
do_classifier_free_guidance=False,
|
| 43 |
-
max_sequence_length=512 - neg_prompt_embeds.shape[1],
|
| 44 |
-
)
|
| 45 |
-
|
| 46 |
-
neg_len = neg_prompt_embeds.shape[1]
|
| 47 |
-
pos_len = pos_prompt_embeds.shape[1]
|
| 48 |
-
print(neg_len, pos_len)
|
| 49 |
-
|
| 50 |
-
|
| 51 |
-
img_len = (height//8) * (width//8) * 3 * (frames // 4 + 1) // 12
|
| 52 |
-
print(img_len)
|
| 53 |
-
mask = torch.zeros((1, img_len, pos_len+neg_len)).cuda()
|
| 54 |
-
# mask[:, :, -neg_len:] = -torch.inf # this should be negative
|
| 55 |
-
mask[:, :, -neg_len:] = bias
|
| 56 |
-
|
| 57 |
-
for block in pipe.transformer.blocks:
|
| 58 |
-
block.attn2.processor = WanAttnProcessor2_0(scale=guidance_scale, neg_prompt_length=neg_len, attn_mask=mask)
|
| 59 |
-
|
| 60 |
-
prompt_embeds = torch.cat([pos_prompt_embeds, neg_prompt_embeds], dim=1)
|
| 61 |
-
|
| 62 |
-
output = pipe(
|
| 63 |
-
prompt_embeds=prompt_embeds,
|
| 64 |
-
negative_prompt=neg_prompt,
|
| 65 |
-
height=height,
|
| 66 |
-
width=width,
|
| 67 |
-
num_frames=frames,
|
| 68 |
-
num_inference_steps=step,
|
| 69 |
-
guidance_scale=0.0,
|
| 70 |
-
generator=torch.Generator(device="cuda").manual_seed(seed),
|
| 71 |
-
).frames[0]
|
| 72 |
-
path = f"videos/{uuid.uuid4().hex}.mp4"
|
| 73 |
-
export_to_video(output[5:], path, fps=15)
|
| 74 |
-
output_path = path
|
| 75 |
-
with open(output_path.replace(".mp4", ".txt"), "w") as f:
|
| 76 |
-
f.write(f"Positive Prompt: {positive_prompt}\n")
|
| 77 |
-
f.write(f"Negative Prompt: {negative_prompt}\n")
|
| 78 |
-
f.write(f"Guidance Scale: {guidance_scale}\n")
|
| 79 |
-
f.write(f"Bias: {bias}\n")
|
| 80 |
-
f.write(f"Steps: {step}\n")
|
| 81 |
-
f.write(f"Frames: {frames}\n")
|
| 82 |
-
f.write(f"Seed: {seed}\n")
|
| 83 |
-
print(f"Video saved to {output_path}")
|
| 84 |
-
return output_path
|
| 85 |
-
|
| 86 |
-
|
| 87 |
-
with gr.Blocks(title="Value Sign Flip Wan 2.1 Demo") as demo:
|
| 88 |
-
gr.Markdown("# Value Sign Flip Wan 2.1 Demo \n All videos generated are saved and might be used as demo videos in the future. \n\n This demo is based on Wan 2.1 T2V model and uses Value Sign Flip technique to generate videos with different guidance scales and biases. More on [GitHub](https://github.com/weathon/VSF/blob/main/wan.md)")
|
| 89 |
-
|
| 90 |
-
with gr.Row():
|
| 91 |
-
pos = gr.Textbox(label="Positive Prompt", value="A chef cat and a chef dog with chef suit baking a cake together in a kitchen. The cat is carefully measuring flour, while the dog is stirring the batter with a wooden spoon.")
|
| 92 |
-
neg = gr.Textbox(label="Negative Prompt", value="white dog")
|
| 93 |
-
|
| 94 |
-
with gr.Row():
|
| 95 |
-
guidance = gr.Slider(0, 5, step=0.1, label="Guidance Scale", value=1.5)
|
| 96 |
-
bias = gr.Slider(0, 0.5, step=0.01, label="Bias", value=0.1)
|
| 97 |
-
step = gr.Slider(6, 15, step=1, label="Step", value=10)
|
| 98 |
-
frames = gr.Slider(31, 81, step=1, label="Frames", value=81)
|
| 99 |
-
seed = gr.Number(label="Seed", value=0, precision=0)
|
| 100 |
-
|
| 101 |
-
out = gr.Video(label="Generated Video")
|
| 102 |
-
|
| 103 |
-
btn = gr.Button("Generate")
|
| 104 |
-
btn.click(fn=generate_video, inputs=[pos, neg, guidance, bias, step, frames, seed], outputs=out)
|
| 105 |
-
|
| 106 |
-
demo.launch()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VSF/comfyui/custom_nodes/value_sign_flip/.editorconfig
DELETED
|
@@ -1,21 +0,0 @@
|
|
| 1 |
-
# http://editorconfig.org
|
| 2 |
-
|
| 3 |
-
root = true
|
| 4 |
-
|
| 5 |
-
[*]
|
| 6 |
-
indent_style = space
|
| 7 |
-
indent_size = 4
|
| 8 |
-
trim_trailing_whitespace = true
|
| 9 |
-
insert_final_newline = true
|
| 10 |
-
charset = utf-8
|
| 11 |
-
end_of_line = lf
|
| 12 |
-
|
| 13 |
-
[*.bat]
|
| 14 |
-
indent_style = tab
|
| 15 |
-
end_of_line = crlf
|
| 16 |
-
|
| 17 |
-
[LICENSE]
|
| 18 |
-
insert_final_newline = false
|
| 19 |
-
|
| 20 |
-
[Makefile]
|
| 21 |
-
indent_style = tab
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VSF/comfyui/custom_nodes/value_sign_flip/.github/ISSUE_TEMPLATE.md
DELETED
|
@@ -1,15 +0,0 @@
|
|
| 1 |
-
* value_sign_flip version:
|
| 2 |
-
* Python version:
|
| 3 |
-
* Operating System:
|
| 4 |
-
|
| 5 |
-
### Description
|
| 6 |
-
|
| 7 |
-
Describe what you were trying to get done.
|
| 8 |
-
Tell us what happened, what went wrong, and what you expected to happen.
|
| 9 |
-
|
| 10 |
-
### What I Did
|
| 11 |
-
|
| 12 |
-
```
|
| 13 |
-
Paste the command(s) you ran and the output.
|
| 14 |
-
If there was a crash, please include the traceback here.
|
| 15 |
-
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VSF/comfyui/custom_nodes/value_sign_flip/.github/workflows/build-pipeline.yml
DELETED
|
@@ -1,34 +0,0 @@
|
|
| 1 |
-
# GitHub CI build pipeline
|
| 2 |
-
name: {{ cookiecutter.project_slug }} CI build
|
| 3 |
-
|
| 4 |
-
on:
|
| 5 |
-
pull_request:
|
| 6 |
-
branches:
|
| 7 |
-
- master
|
| 8 |
-
- main
|
| 9 |
-
jobs:
|
| 10 |
-
build:
|
| 11 |
-
runs-on: {% raw %} ${{ matrix.os }} {% endraw %}
|
| 12 |
-
env:
|
| 13 |
-
PYTHONIOENCODING: "utf8"
|
| 14 |
-
strategy:
|
| 15 |
-
matrix:
|
| 16 |
-
os: [ubuntu-latest]
|
| 17 |
-
python-version: ["3.12"]
|
| 18 |
-
|
| 19 |
-
steps:
|
| 20 |
-
- uses: actions/checkout@v4
|
| 21 |
-
- name: Set up Python
|
| 22 |
-
uses: actions/setup-python@v5
|
| 23 |
-
with:
|
| 24 |
-
python-version: {% raw %} ${{ matrix.python-version }} {% endraw %}
|
| 25 |
-
- name: Install dependencies
|
| 26 |
-
run: |
|
| 27 |
-
python -m pip install --upgrade pip
|
| 28 |
-
pip install .[dev]
|
| 29 |
-
- name: Run Linting
|
| 30 |
-
run: |
|
| 31 |
-
ruff check .
|
| 32 |
-
- name: Run Tests
|
| 33 |
-
run: |
|
| 34 |
-
pytest tests/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VSF/comfyui/custom_nodes/value_sign_flip/.github/workflows/publish_node.yml
DELETED
|
@@ -1,21 +0,0 @@
|
|
| 1 |
-
name: 📦 Publish to Comfy registry
|
| 2 |
-
on:
|
| 3 |
-
workflow_dispatch:
|
| 4 |
-
push:
|
| 5 |
-
tags:
|
| 6 |
-
- '*'
|
| 7 |
-
|
| 8 |
-
permissions:
|
| 9 |
-
issues: write
|
| 10 |
-
|
| 11 |
-
jobs:
|
| 12 |
-
publish-node:
|
| 13 |
-
name: Publish Custom Node to registry
|
| 14 |
-
runs-on: ubuntu-latest
|
| 15 |
-
steps:
|
| 16 |
-
- name: ♻️ Check out code
|
| 17 |
-
uses: actions/checkout@v4
|
| 18 |
-
- name: 📦 Publish Custom Node
|
| 19 |
-
uses: Comfy-Org/publish-node-action@main
|
| 20 |
-
with:
|
| 21 |
-
personal_access_token: {% raw %}${{ secrets.REGISTRY_ACCESS_TOKEN }}{% endraw %}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VSF/comfyui/custom_nodes/value_sign_flip/.github/workflows/validate.yml
DELETED
|
@@ -1,13 +0,0 @@
|
|
| 1 |
-
name: Validate backwards compatibility
|
| 2 |
-
|
| 3 |
-
on:
|
| 4 |
-
pull_request:
|
| 5 |
-
branches:
|
| 6 |
-
- master
|
| 7 |
-
- main
|
| 8 |
-
|
| 9 |
-
jobs:
|
| 10 |
-
validate:
|
| 11 |
-
runs-on: ubuntu-latest
|
| 12 |
-
steps:
|
| 13 |
-
- uses: comfy-org/node-diff@main
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VSF/comfyui/custom_nodes/value_sign_flip/.gitignore
DELETED
|
@@ -1,114 +0,0 @@
|
|
| 1 |
-
# Byte-compiled / optimized / DLL files
|
| 2 |
-
__pycache__/
|
| 3 |
-
*.py[cod]
|
| 4 |
-
*$py.class
|
| 5 |
-
|
| 6 |
-
# OSX useful to ignore
|
| 7 |
-
*.DS_Store
|
| 8 |
-
.AppleDouble
|
| 9 |
-
.LSOverride
|
| 10 |
-
|
| 11 |
-
# Thumbnails
|
| 12 |
-
._*
|
| 13 |
-
|
| 14 |
-
# Files that might appear in the root of a volume
|
| 15 |
-
.DocumentRevisions-V100
|
| 16 |
-
.fseventsd
|
| 17 |
-
.Spotlight-V100
|
| 18 |
-
.TemporaryItems
|
| 19 |
-
.Trashes
|
| 20 |
-
.VolumeIcon.icns
|
| 21 |
-
.com.apple.timemachine.donotpresent
|
| 22 |
-
|
| 23 |
-
# Directories potentially created on remote AFP share
|
| 24 |
-
.AppleDB
|
| 25 |
-
.AppleDesktop
|
| 26 |
-
Network Trash Folder
|
| 27 |
-
Temporary Items
|
| 28 |
-
.apdisk
|
| 29 |
-
|
| 30 |
-
# C extensions
|
| 31 |
-
*.so
|
| 32 |
-
|
| 33 |
-
# Distribution / packaging
|
| 34 |
-
.Python
|
| 35 |
-
env/
|
| 36 |
-
venv/
|
| 37 |
-
build/
|
| 38 |
-
develop-eggs/
|
| 39 |
-
dist/
|
| 40 |
-
downloads/
|
| 41 |
-
eggs/
|
| 42 |
-
.eggs/
|
| 43 |
-
lib/
|
| 44 |
-
lib64/
|
| 45 |
-
parts/
|
| 46 |
-
sdist/
|
| 47 |
-
var/
|
| 48 |
-
*.egg-info/
|
| 49 |
-
.installed.cfg
|
| 50 |
-
*.egg
|
| 51 |
-
|
| 52 |
-
# PyInstaller
|
| 53 |
-
# Usually these files are written by a python script from a template
|
| 54 |
-
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
| 55 |
-
*.manifest
|
| 56 |
-
*.spec
|
| 57 |
-
|
| 58 |
-
# Installer logs
|
| 59 |
-
pip-log.txt
|
| 60 |
-
pip-delete-this-directory.txt
|
| 61 |
-
|
| 62 |
-
# Unit test / coverage reports
|
| 63 |
-
htmlcov/
|
| 64 |
-
.tox/
|
| 65 |
-
.coverage
|
| 66 |
-
.coverage.*
|
| 67 |
-
.cache
|
| 68 |
-
nosetests.xml
|
| 69 |
-
coverage.xml
|
| 70 |
-
*,cover
|
| 71 |
-
.hypothesis/
|
| 72 |
-
.pytest_cache/
|
| 73 |
-
|
| 74 |
-
# Translations
|
| 75 |
-
*.mo
|
| 76 |
-
*.pot
|
| 77 |
-
|
| 78 |
-
# Django stuff:
|
| 79 |
-
*.log
|
| 80 |
-
|
| 81 |
-
# Sphinx documentation
|
| 82 |
-
docs/_build/
|
| 83 |
-
|
| 84 |
-
# IntelliJ Idea
|
| 85 |
-
.idea
|
| 86 |
-
*.iml
|
| 87 |
-
*.ipr
|
| 88 |
-
*.iws
|
| 89 |
-
|
| 90 |
-
# PyBuilder
|
| 91 |
-
target/
|
| 92 |
-
|
| 93 |
-
# Cookiecutter
|
| 94 |
-
output/
|
| 95 |
-
python_boilerplate/
|
| 96 |
-
cookiecutter-pypackage-env/
|
| 97 |
-
|
| 98 |
-
# vscode settings
|
| 99 |
-
.history/
|
| 100 |
-
*.code-workspace
|
| 101 |
-
|
| 102 |
-
# Frontend extension
|
| 103 |
-
node_modules/
|
| 104 |
-
.env
|
| 105 |
-
.env.local
|
| 106 |
-
.env.development.local
|
| 107 |
-
.env.test.local
|
| 108 |
-
.env.production.local
|
| 109 |
-
npm-debug.log*
|
| 110 |
-
yarn-debug.log*
|
| 111 |
-
yarn-error.log*
|
| 112 |
-
node.zip
|
| 113 |
-
.vscode/
|
| 114 |
-
.claude/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VSF/comfyui/custom_nodes/value_sign_flip/.pre-commit-config.yaml
DELETED
|
@@ -1,10 +0,0 @@
|
|
| 1 |
-
repos:
|
| 2 |
-
- repo: https://github.com/astral-sh/ruff-pre-commit
|
| 3 |
-
# Ruff version.
|
| 4 |
-
rev: v0.4.9
|
| 5 |
-
hooks:
|
| 6 |
-
# Run the linter.
|
| 7 |
-
- id: ruff
|
| 8 |
-
args: [ --fix ]
|
| 9 |
-
# Run the formatter.
|
| 10 |
-
- id: ruff-format
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VSF/comfyui/custom_nodes/value_sign_flip/LICENSE
DELETED
|
@@ -1,675 +0,0 @@
|
|
| 1 |
-
GNU GENERAL PUBLIC LICENSE
|
| 2 |
-
Version 3, 29 June 2007
|
| 3 |
-
|
| 4 |
-
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
| 5 |
-
Everyone is permitted to copy and distribute verbatim copies
|
| 6 |
-
of this license document, but changing it is not allowed.
|
| 7 |
-
|
| 8 |
-
Preamble
|
| 9 |
-
|
| 10 |
-
The GNU General Public License is a free, copyleft license for
|
| 11 |
-
software and other kinds of works.
|
| 12 |
-
|
| 13 |
-
The licenses for most software and other practical works are designed
|
| 14 |
-
to take away your freedom to share and change the works. By contrast,
|
| 15 |
-
the GNU General Public License is intended to guarantee your freedom to
|
| 16 |
-
share and change all versions of a program--to make sure it remains free
|
| 17 |
-
software for all its users. We, the Free Software Foundation, use the
|
| 18 |
-
GNU General Public License for most of our software; it applies also to
|
| 19 |
-
any other work released this way by its authors. You can apply it to
|
| 20 |
-
your programs, too.
|
| 21 |
-
|
| 22 |
-
When we speak of free software, we are referring to freedom, not
|
| 23 |
-
price. Our General Public Licenses are designed to make sure that you
|
| 24 |
-
have the freedom to distribute copies of free software (and charge for
|
| 25 |
-
them if you wish), that you receive source code or can get it if you
|
| 26 |
-
want it, that you can change the software or use pieces of it in new
|
| 27 |
-
free programs, and that you know you can do these things.
|
| 28 |
-
|
| 29 |
-
To protect your rights, we need to prevent others from denying you
|
| 30 |
-
these rights or asking you to surrender the rights. Therefore, you have
|
| 31 |
-
certain responsibilities if you distribute copies of the software, or if
|
| 32 |
-
you modify it: responsibilities to respect the freedom of others.
|
| 33 |
-
|
| 34 |
-
For example, if you distribute copies of such a program, whether
|
| 35 |
-
gratis or for a fee, you must pass on to the recipients the same
|
| 36 |
-
freedoms that you received. You must make sure that they, too, receive
|
| 37 |
-
or can get the source code. And you must show them these terms so they
|
| 38 |
-
know their rights.
|
| 39 |
-
|
| 40 |
-
Developers that use the GNU GPL protect your rights with two steps:
|
| 41 |
-
(1) assert copyright on the software, and (2) offer you this License
|
| 42 |
-
giving you legal permission to copy, distribute and/or modify it.
|
| 43 |
-
|
| 44 |
-
For the developers' and authors' protection, the GPL clearly explains
|
| 45 |
-
that there is no warranty for this free software. For both users' and
|
| 46 |
-
authors' sake, the GPL requires that modified versions be marked as
|
| 47 |
-
changed, so that their problems will not be attributed erroneously to
|
| 48 |
-
authors of previous versions.
|
| 49 |
-
|
| 50 |
-
Some devices are designed to deny users access to install or run
|
| 51 |
-
modified versions of the software inside them, although the manufacturer
|
| 52 |
-
can do so. This is fundamentally incompatible with the aim of
|
| 53 |
-
protecting users' freedom to change the software. The systematic
|
| 54 |
-
pattern of such abuse occurs in the area of products for individuals to
|
| 55 |
-
use, which is precisely where it is most unacceptable. Therefore, we
|
| 56 |
-
have designed this version of the GPL to prohibit the practice for those
|
| 57 |
-
products. If such problems arise substantially in other domains, we
|
| 58 |
-
stand ready to extend this provision to those domains in future versions
|
| 59 |
-
of the GPL, as needed to protect the freedom of users.
|
| 60 |
-
|
| 61 |
-
Finally, every program is threatened constantly by software patents.
|
| 62 |
-
States should not allow patents to restrict development and use of
|
| 63 |
-
software on general-purpose computers, but in those that do, we wish to
|
| 64 |
-
avoid the special danger that patents applied to a free program could
|
| 65 |
-
make it effectively proprietary. To prevent this, the GPL assures that
|
| 66 |
-
patents cannot be used to render the program non-free.
|
| 67 |
-
|
| 68 |
-
The precise terms and conditions for copying, distribution and
|
| 69 |
-
modification follow.
|
| 70 |
-
|
| 71 |
-
TERMS AND CONDITIONS
|
| 72 |
-
|
| 73 |
-
0. Definitions.
|
| 74 |
-
|
| 75 |
-
"This License" refers to version 3 of the GNU General Public License.
|
| 76 |
-
|
| 77 |
-
"Copyright" also means copyright-like laws that apply to other kinds of
|
| 78 |
-
works, such as semiconductor masks.
|
| 79 |
-
|
| 80 |
-
"The Program" refers to any copyrightable work licensed under this
|
| 81 |
-
License. Each licensee is addressed as "you". "Licensees" and
|
| 82 |
-
"recipients" may be individuals or organizations.
|
| 83 |
-
|
| 84 |
-
To "modify" a work means to copy from or adapt all or part of the work
|
| 85 |
-
in a fashion requiring copyright permission, other than the making of an
|
| 86 |
-
exact copy. The resulting work is called a "modified version" of the
|
| 87 |
-
earlier work or a work "based on" the earlier work.
|
| 88 |
-
|
| 89 |
-
A "covered work" means either the unmodified Program or a work based
|
| 90 |
-
on the Program.
|
| 91 |
-
|
| 92 |
-
To "propagate" a work means to do anything with it that, without
|
| 93 |
-
permission, would make you directly or secondarily liable for
|
| 94 |
-
infringement under applicable copyright law, except executing it on a
|
| 95 |
-
computer or modifying a private copy. Propagation includes copying,
|
| 96 |
-
distribution (with or without modification), making available to the
|
| 97 |
-
public, and in some countries other activities as well.
|
| 98 |
-
|
| 99 |
-
To "convey" a work means any kind of propagation that enables other
|
| 100 |
-
parties to make or receive copies. Mere interaction with a user through
|
| 101 |
-
a computer network, with no transfer of a copy, is not conveying.
|
| 102 |
-
|
| 103 |
-
An interactive user interface displays "Appropriate Legal Notices"
|
| 104 |
-
to the extent that it includes a convenient and prominently visible
|
| 105 |
-
feature that (1) displays an appropriate copyright notice, and (2)
|
| 106 |
-
tells the user that there is no warranty for the work (except to the
|
| 107 |
-
extent that warranties are provided), that licensees may convey the
|
| 108 |
-
work under this License, and how to view a copy of this License. If
|
| 109 |
-
the interface presents a list of user commands or options, such as a
|
| 110 |
-
menu, a prominent item in the list meets this criterion.
|
| 111 |
-
|
| 112 |
-
1. Source Code.
|
| 113 |
-
|
| 114 |
-
The "source code" for a work means the preferred form of the work
|
| 115 |
-
for making modifications to it. "Object code" means any non-source
|
| 116 |
-
form of a work.
|
| 117 |
-
|
| 118 |
-
A "Standard Interface" means an interface that either is an official
|
| 119 |
-
standard defined by a recognized standards body, or, in the case of
|
| 120 |
-
interfaces specified for a particular programming language, one that
|
| 121 |
-
is widely used among developers working in that language.
|
| 122 |
-
|
| 123 |
-
The "System Libraries" of an executable work include anything, other
|
| 124 |
-
than the work as a whole, that (a) is included in the normal form of
|
| 125 |
-
packaging a Major Component, but which is not part of that Major
|
| 126 |
-
Component, and (b) serves only to enable use of the work with that
|
| 127 |
-
Major Component, or to implement a Standard Interface for which an
|
| 128 |
-
implementation is available to the public in source code form. A
|
| 129 |
-
"Major Component", in this context, means a major essential component
|
| 130 |
-
(kernel, window system, and so on) of the specific operating system
|
| 131 |
-
(if any) on which the executable work runs, or a compiler used to
|
| 132 |
-
produce the work, or an object code interpreter used to run it.
|
| 133 |
-
|
| 134 |
-
The "Corresponding Source" for a work in object code form means all
|
| 135 |
-
the source code needed to generate, install, and (for an executable
|
| 136 |
-
work) run the object code and to modify the work, including scripts to
|
| 137 |
-
control those activities. However, it does not include the work's
|
| 138 |
-
System Libraries, or general-purpose tools or generally available free
|
| 139 |
-
programs which are used unmodified in performing those activities but
|
| 140 |
-
which are not part of the work. For example, Corresponding Source
|
| 141 |
-
includes interface definition files associated with source files for
|
| 142 |
-
the work, and the source code for shared libraries and dynamically
|
| 143 |
-
linked subprograms that the work is specifically designed to require,
|
| 144 |
-
such as by intimate data communication or control flow between those
|
| 145 |
-
subprograms and other parts of the work.
|
| 146 |
-
|
| 147 |
-
The Corresponding Source need not include anything that users
|
| 148 |
-
can regenerate automatically from other parts of the Corresponding
|
| 149 |
-
Source.
|
| 150 |
-
|
| 151 |
-
The Corresponding Source for a work in source code form is that
|
| 152 |
-
same work.
|
| 153 |
-
|
| 154 |
-
2. Basic Permissions.
|
| 155 |
-
|
| 156 |
-
All rights granted under this License are granted for the term of
|
| 157 |
-
copyright on the Program, and are irrevocable provided the stated
|
| 158 |
-
conditions are met. This License explicitly affirms your unlimited
|
| 159 |
-
permission to run the unmodified Program. The output from running a
|
| 160 |
-
covered work is covered by this License only if the output, given its
|
| 161 |
-
content, constitutes a covered work. This License acknowledges your
|
| 162 |
-
rights of fair use or other equivalent, as provided by copyright law.
|
| 163 |
-
|
| 164 |
-
You may make, run and propagate covered works that you do not
|
| 165 |
-
convey, without conditions so long as your license otherwise remains
|
| 166 |
-
in force. You may convey covered works to others for the sole purpose
|
| 167 |
-
of having them make modifications exclusively for you, or provide you
|
| 168 |
-
with facilities for running those works, provided that you comply with
|
| 169 |
-
the terms of this License in conveying all material for which you do
|
| 170 |
-
not control copyright. Those thus making or running the covered works
|
| 171 |
-
for you must do so exclusively on your behalf, under your direction
|
| 172 |
-
and control, on terms that prohibit them from making any copies of
|
| 173 |
-
your copyrighted material outside their relationship with you.
|
| 174 |
-
|
| 175 |
-
Conveying under any other circumstances is permitted solely under
|
| 176 |
-
the conditions stated below. Sublicensing is not allowed; section 10
|
| 177 |
-
makes it unnecessary.
|
| 178 |
-
|
| 179 |
-
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
| 180 |
-
|
| 181 |
-
No covered work shall be deemed part of an effective technological
|
| 182 |
-
measure under any applicable law fulfilling obligations under article
|
| 183 |
-
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
| 184 |
-
similar laws prohibiting or restricting circumvention of such
|
| 185 |
-
measures.
|
| 186 |
-
|
| 187 |
-
When you convey a covered work, you waive any legal power to forbid
|
| 188 |
-
circumvention of technological measures to the extent such circumvention
|
| 189 |
-
is effected by exercising rights under this License with respect to
|
| 190 |
-
the covered work, and you disclaim any intention to limit operation or
|
| 191 |
-
modification of the work as a means of enforcing, against the work's
|
| 192 |
-
users, your or third parties' legal rights to forbid circumvention of
|
| 193 |
-
technological measures.
|
| 194 |
-
|
| 195 |
-
4. Conveying Verbatim Copies.
|
| 196 |
-
|
| 197 |
-
You may convey verbatim copies of the Program's source code as you
|
| 198 |
-
receive it, in any medium, provided that you conspicuously and
|
| 199 |
-
appropriately publish on each copy an appropriate copyright notice;
|
| 200 |
-
keep intact all notices stating that this License and any
|
| 201 |
-
non-permissive terms added in accord with section 7 apply to the code;
|
| 202 |
-
keep intact all notices of the absence of any warranty; and give all
|
| 203 |
-
recipients a copy of this License along with the Program.
|
| 204 |
-
|
| 205 |
-
You may charge any price or no price for each copy that you convey,
|
| 206 |
-
and you may offer support or warranty protection for a fee.
|
| 207 |
-
|
| 208 |
-
5. Conveying Modified Source Versions.
|
| 209 |
-
|
| 210 |
-
You may convey a work based on the Program, or the modifications to
|
| 211 |
-
produce it from the Program, in the form of source code under the
|
| 212 |
-
terms of section 4, provided that you also meet all of these conditions:
|
| 213 |
-
|
| 214 |
-
a) The work must carry prominent notices stating that you modified
|
| 215 |
-
it, and giving a relevant date.
|
| 216 |
-
|
| 217 |
-
b) The work must carry prominent notices stating that it is
|
| 218 |
-
released under this License and any conditions added under section
|
| 219 |
-
7. This requirement modifies the requirement in section 4 to
|
| 220 |
-
"keep intact all notices".
|
| 221 |
-
|
| 222 |
-
c) You must license the entire work, as a whole, under this
|
| 223 |
-
License to anyone who comes into possession of a copy. This
|
| 224 |
-
License will therefore apply, along with any applicable section 7
|
| 225 |
-
additional terms, to the whole of the work, and all its parts,
|
| 226 |
-
regardless of how they are packaged. This License gives no
|
| 227 |
-
permission to license the work in any other way, but it does not
|
| 228 |
-
invalidate such permission if you have separately received it.
|
| 229 |
-
|
| 230 |
-
d) If the work has interactive user interfaces, each must display
|
| 231 |
-
Appropriate Legal Notices; however, if the Program has interactive
|
| 232 |
-
interfaces that do not display Appropriate Legal Notices, your
|
| 233 |
-
work need not make them do so.
|
| 234 |
-
|
| 235 |
-
A compilation of a covered work with other separate and independent
|
| 236 |
-
works, which are not by their nature extensions of the covered work,
|
| 237 |
-
and which are not combined with it such as to form a larger program,
|
| 238 |
-
in or on a volume of a storage or distribution medium, is called an
|
| 239 |
-
"aggregate" if the compilation and its resulting copyright are not
|
| 240 |
-
used to limit the access or legal rights of the compilation's users
|
| 241 |
-
beyond what the individual works permit. Inclusion of a covered work
|
| 242 |
-
in an aggregate does not cause this License to apply to the other
|
| 243 |
-
parts of the aggregate.
|
| 244 |
-
|
| 245 |
-
6. Conveying Non-Source Forms.
|
| 246 |
-
|
| 247 |
-
You may convey a covered work in object code form under the terms
|
| 248 |
-
of sections 4 and 5, provided that you also convey the
|
| 249 |
-
machine-readable Corresponding Source under the terms of this License,
|
| 250 |
-
in one of these ways:
|
| 251 |
-
|
| 252 |
-
a) Convey the object code in, or embodied in, a physical product
|
| 253 |
-
(including a physical distribution medium), accompanied by the
|
| 254 |
-
Corresponding Source fixed on a durable physical medium
|
| 255 |
-
customarily used for software interchange.
|
| 256 |
-
|
| 257 |
-
b) Convey the object code in, or embodied in, a physical product
|
| 258 |
-
(including a physical distribution medium), accompanied by a
|
| 259 |
-
written offer, valid for at least three years and valid for as
|
| 260 |
-
long as you offer spare parts or customer support for that product
|
| 261 |
-
model, to give anyone who possesses the object code either (1) a
|
| 262 |
-
copy of the Corresponding Source for all the software in the
|
| 263 |
-
product that is covered by this License, on a durable physical
|
| 264 |
-
medium customarily used for software interchange, for a price no
|
| 265 |
-
more than your reasonable cost of physically performing this
|
| 266 |
-
conveying of source, or (2) access to copy the
|
| 267 |
-
Corresponding Source from a network server at no charge.
|
| 268 |
-
|
| 269 |
-
c) Convey individual copies of the object code with a copy of the
|
| 270 |
-
written offer to provide the Corresponding Source. This
|
| 271 |
-
alternative is allowed only occasionally and noncommercially, and
|
| 272 |
-
only if you received the object code with such an offer, in accord
|
| 273 |
-
with subsection 6b.
|
| 274 |
-
|
| 275 |
-
d) Convey the object code by offering access from a designated
|
| 276 |
-
place (gratis or for a charge), and offer equivalent access to the
|
| 277 |
-
Corresponding Source in the same way through the same place at no
|
| 278 |
-
further charge. You need not require recipients to copy the
|
| 279 |
-
Corresponding Source along with the object code. If the place to
|
| 280 |
-
copy the object code is a network server, the Corresponding Source
|
| 281 |
-
may be on a different server (operated by you or a third party)
|
| 282 |
-
that supports equivalent copying facilities, provided you maintain
|
| 283 |
-
clear directions next to the object code saying where to find the
|
| 284 |
-
Corresponding Source. Regardless of what server hosts the
|
| 285 |
-
Corresponding Source, you remain obligated to ensure that it is
|
| 286 |
-
available for as long as needed to satisfy these requirements.
|
| 287 |
-
|
| 288 |
-
e) Convey the object code using peer-to-peer transmission, provided
|
| 289 |
-
you inform other peers where the object code and Corresponding
|
| 290 |
-
Source of the work are being offered to the general public at no
|
| 291 |
-
charge under subsection 6d.
|
| 292 |
-
|
| 293 |
-
A separable portion of the object code, whose source code is excluded
|
| 294 |
-
from the Corresponding Source as a System Library, need not be
|
| 295 |
-
included in conveying the object code work.
|
| 296 |
-
|
| 297 |
-
A "User Product" is either (1) a "consumer product", which means any
|
| 298 |
-
tangible personal property which is normally used for personal, family,
|
| 299 |
-
or household purposes, or (2) anything designed or sold for incorporation
|
| 300 |
-
into a dwelling. In determining whether a product is a consumer product,
|
| 301 |
-
doubtful cases shall be resolved in favor of coverage. For a particular
|
| 302 |
-
product received by a particular user, "normally used" refers to a
|
| 303 |
-
typical or common use of that class of product, regardless of the status
|
| 304 |
-
of the particular user or of the way in which the particular user
|
| 305 |
-
actually uses, or expects or is expected to use, the product. A product
|
| 306 |
-
is a consumer product regardless of whether the product has substantial
|
| 307 |
-
commercial, industrial or non-consumer uses, unless such uses represent
|
| 308 |
-
the only significant mode of use of the product.
|
| 309 |
-
|
| 310 |
-
"Installation Information" for a User Product means any methods,
|
| 311 |
-
procedures, authorization keys, or other information required to install
|
| 312 |
-
and execute modified versions of a covered work in that User Product from
|
| 313 |
-
a modified version of its Corresponding Source. The information must
|
| 314 |
-
suffice to ensure that the continued functioning of the modified object
|
| 315 |
-
code is in no case prevented or interfered with solely because
|
| 316 |
-
modification has been made.
|
| 317 |
-
|
| 318 |
-
If you convey an object code work under this section in, or with, or
|
| 319 |
-
specifically for use in, a User Product, and the conveying occurs as
|
| 320 |
-
part of a transaction in which the right of possession and use of the
|
| 321 |
-
User Product is transferred to the recipient in perpetuity or for a
|
| 322 |
-
fixed term (regardless of how the transaction is characterized), the
|
| 323 |
-
Corresponding Source conveyed under this section must be accompanied
|
| 324 |
-
by the Installation Information. But this requirement does not apply
|
| 325 |
-
if neither you nor any third party retains the ability to install
|
| 326 |
-
modified object code on the User Product (for example, the work has
|
| 327 |
-
been installed in ROM).
|
| 328 |
-
|
| 329 |
-
The requirement to provide Installation Information does not include a
|
| 330 |
-
requirement to continue to provide support service, warranty, or updates
|
| 331 |
-
for a work that has been modified or installed by the recipient, or for
|
| 332 |
-
the User Product in which it has been modified or installed. Access to a
|
| 333 |
-
network may be denied when the modification itself materially and
|
| 334 |
-
adversely affects the operation of the network or violates the rules and
|
| 335 |
-
protocols for communication across the network.
|
| 336 |
-
|
| 337 |
-
Corresponding Source conveyed, and Installation Information provided,
|
| 338 |
-
in accord with this section must be in a format that is publicly
|
| 339 |
-
documented (and with an implementation available to the public in
|
| 340 |
-
source code form), and must require no special password or key for
|
| 341 |
-
unpacking, reading or copying.
|
| 342 |
-
|
| 343 |
-
7. Additional Terms.
|
| 344 |
-
|
| 345 |
-
"Additional permissions" are terms that supplement the terms of this
|
| 346 |
-
License by making exceptions from one or more of its conditions.
|
| 347 |
-
Additional permissions that are applicable to the entire Program shall
|
| 348 |
-
be treated as though they were included in this License, to the extent
|
| 349 |
-
that they are valid under applicable law. If additional permissions
|
| 350 |
-
apply only to part of the Program, that part may be used separately
|
| 351 |
-
under those permissions, but the entire Program remains governed by
|
| 352 |
-
this License without regard to the additional permissions.
|
| 353 |
-
|
| 354 |
-
When you convey a copy of a covered work, you may at your option
|
| 355 |
-
remove any additional permissions from that copy, or from any part of
|
| 356 |
-
it. (Additional permissions may be written to require their own
|
| 357 |
-
removal in certain cases when you modify the work.) You may place
|
| 358 |
-
additional permissions on material, added by you to a covered work,
|
| 359 |
-
for which you have or can give appropriate copyright permission.
|
| 360 |
-
|
| 361 |
-
Notwithstanding any other provision of this License, for material you
|
| 362 |
-
add to a covered work, you may (if authorized by the copyright holders of
|
| 363 |
-
that material) supplement the terms of this License with terms:
|
| 364 |
-
|
| 365 |
-
a) Disclaiming warranty or limiting liability differently from the
|
| 366 |
-
terms of sections 15 and 16 of this License; or
|
| 367 |
-
|
| 368 |
-
b) Requiring preservation of specified reasonable legal notices or
|
| 369 |
-
author attributions in that material or in the Appropriate Legal
|
| 370 |
-
Notices displayed by works containing it; or
|
| 371 |
-
|
| 372 |
-
c) Prohibiting misrepresentation of the origin of that material, or
|
| 373 |
-
requiring that modified versions of such material be marked in
|
| 374 |
-
reasonable ways as different from the original version; or
|
| 375 |
-
|
| 376 |
-
d) Limiting the use for publicity purposes of names of licensors or
|
| 377 |
-
authors of the material; or
|
| 378 |
-
|
| 379 |
-
e) Declining to grant rights under trademark law for use of some
|
| 380 |
-
trade names, trademarks, or service marks; or
|
| 381 |
-
|
| 382 |
-
f) Requiring indemnification of licensors and authors of that
|
| 383 |
-
material by anyone who conveys the material (or modified versions of
|
| 384 |
-
it) with contractual assumptions of liability to the recipient, for
|
| 385 |
-
any liability that these contractual assumptions directly impose on
|
| 386 |
-
those licensors and authors.
|
| 387 |
-
|
| 388 |
-
All other non-permissive additional terms are considered "further
|
| 389 |
-
restrictions" within the meaning of section 10. If the Program as you
|
| 390 |
-
received it, or any part of it, contains a notice stating that it is
|
| 391 |
-
governed by this License along with a term that is a further
|
| 392 |
-
restriction, you may remove that term. If a license document contains
|
| 393 |
-
a further restriction but permits relicensing or conveying under this
|
| 394 |
-
License, you may add to a covered work material governed by the terms
|
| 395 |
-
of that license document, provided that the further restriction does
|
| 396 |
-
not survive such relicensing or conveying.
|
| 397 |
-
|
| 398 |
-
If you add terms to a covered work in accord with this section, you
|
| 399 |
-
must place, in the relevant source files, a statement of the
|
| 400 |
-
additional terms that apply to those files, or a notice indicating
|
| 401 |
-
where to find the applicable terms.
|
| 402 |
-
|
| 403 |
-
Additional terms, permissive or non-permissive, may be stated in the
|
| 404 |
-
form of a separately written license, or stated as exceptions;
|
| 405 |
-
the above requirements apply either way.
|
| 406 |
-
|
| 407 |
-
8. Termination.
|
| 408 |
-
|
| 409 |
-
You may not propagate or modify a covered work except as expressly
|
| 410 |
-
provided under this License. Any attempt otherwise to propagate or
|
| 411 |
-
modify it is void, and will automatically terminate your rights under
|
| 412 |
-
this License (including any patent licenses granted under the third
|
| 413 |
-
paragraph of section 11).
|
| 414 |
-
|
| 415 |
-
However, if you cease all violation of this License, then your
|
| 416 |
-
license from a particular copyright holder is reinstated (a)
|
| 417 |
-
provisionally, unless and until the copyright holder explicitly and
|
| 418 |
-
finally terminates your license, and (b) permanently, if the copyright
|
| 419 |
-
holder fails to notify you of the violation by some reasonable means
|
| 420 |
-
prior to 60 days after the cessation.
|
| 421 |
-
|
| 422 |
-
Moreover, your license from a particular copyright holder is
|
| 423 |
-
reinstated permanently if the copyright holder notifies you of the
|
| 424 |
-
violation by some reasonable means, this is the first time you have
|
| 425 |
-
received notice of violation of this License (for any work) from that
|
| 426 |
-
copyright holder, and you cure the violation prior to 30 days after
|
| 427 |
-
your receipt of the notice.
|
| 428 |
-
|
| 429 |
-
Termination of your rights under this section does not terminate the
|
| 430 |
-
licenses of parties who have received copies or rights from you under
|
| 431 |
-
this License. If your rights have been terminated and not permanently
|
| 432 |
-
reinstated, you do not qualify to receive new licenses for the same
|
| 433 |
-
material under section 10.
|
| 434 |
-
|
| 435 |
-
9. Acceptance Not Required for Having Copies.
|
| 436 |
-
|
| 437 |
-
You are not required to accept this License in order to receive or
|
| 438 |
-
run a copy of the Program. Ancillary propagation of a covered work
|
| 439 |
-
occurring solely as a consequence of using peer-to-peer transmission
|
| 440 |
-
to receive a copy likewise does not require acceptance. However,
|
| 441 |
-
nothing other than this License grants you permission to propagate or
|
| 442 |
-
modify any covered work. These actions infringe copyright if you do
|
| 443 |
-
not accept this License. Therefore, by modifying or propagating a
|
| 444 |
-
covered work, you indicate your acceptance of this License to do so.
|
| 445 |
-
|
| 446 |
-
10. Automatic Licensing of Downstream Recipients.
|
| 447 |
-
|
| 448 |
-
Each time you convey a covered work, the recipient automatically
|
| 449 |
-
receives a license from the original licensors, to run, modify and
|
| 450 |
-
propagate that work, subject to this License. You are not responsible
|
| 451 |
-
for enforcing compliance by third parties with this License.
|
| 452 |
-
|
| 453 |
-
An "entity transaction" is a transaction transferring control of an
|
| 454 |
-
organization, or substantially all assets of one, or subdividing an
|
| 455 |
-
organization, or merging organizations. If propagation of a covered
|
| 456 |
-
work results from an entity transaction, each party to that
|
| 457 |
-
transaction who receives a copy of the work also receives whatever
|
| 458 |
-
licenses to the work the party's predecessor in interest had or could
|
| 459 |
-
give under the previous paragraph, plus a right to possession of the
|
| 460 |
-
Corresponding Source of the work from the predecessor in interest, if
|
| 461 |
-
the predecessor has it or can get it with reasonable efforts.
|
| 462 |
-
|
| 463 |
-
You may not impose any further restrictions on the exercise of the
|
| 464 |
-
rights granted or affirmed under this License. For example, you may
|
| 465 |
-
not impose a license fee, royalty, or other charge for exercise of
|
| 466 |
-
rights granted under this License, and you may not initiate litigation
|
| 467 |
-
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
| 468 |
-
any patent claim is infringed by making, using, selling, offering for
|
| 469 |
-
sale, or importing the Program or any portion of it.
|
| 470 |
-
|
| 471 |
-
11. Patents.
|
| 472 |
-
|
| 473 |
-
A "contributor" is a copyright holder who authorizes use under this
|
| 474 |
-
License of the Program or a work on which the Program is based. The
|
| 475 |
-
work thus licensed is called the contributor's "contributor version".
|
| 476 |
-
|
| 477 |
-
A contributor's "essential patent claims" are all patent claims
|
| 478 |
-
owned or controlled by the contributor, whether already acquired or
|
| 479 |
-
hereafter acquired, that would be infringed by some manner, permitted
|
| 480 |
-
by this License, of making, using, or selling its contributor version,
|
| 481 |
-
but do not include claims that would be infringed only as a
|
| 482 |
-
consequence of further modification of the contributor version. For
|
| 483 |
-
purposes of this definition, "control" includes the right to grant
|
| 484 |
-
patent sublicenses in a manner consistent with the requirements of
|
| 485 |
-
this License.
|
| 486 |
-
|
| 487 |
-
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
| 488 |
-
patent license under the contributor's essential patent claims, to
|
| 489 |
-
make, use, sell, offer for sale, import and otherwise run, modify and
|
| 490 |
-
propagate the contents of its contributor version.
|
| 491 |
-
|
| 492 |
-
In the following three paragraphs, a "patent license" is any express
|
| 493 |
-
agreement or commitment, however denominated, not to enforce a patent
|
| 494 |
-
(such as an express permission to practice a patent or covenant not to
|
| 495 |
-
sue for patent infringement). To "grant" such a patent license to a
|
| 496 |
-
party means to make such an agreement or commitment not to enforce a
|
| 497 |
-
patent against the party.
|
| 498 |
-
|
| 499 |
-
If you convey a covered work, knowingly relying on a patent license,
|
| 500 |
-
and the Corresponding Source of the work is not available for anyone
|
| 501 |
-
to copy, free of charge and under the terms of this License, through a
|
| 502 |
-
publicly available network server or other readily accessible means,
|
| 503 |
-
then you must either (1) cause the Corresponding Source to be so
|
| 504 |
-
available, or (2) arrange to deprive yourself of the benefit of the
|
| 505 |
-
patent license for this particular work, or (3) arrange, in a manner
|
| 506 |
-
consistent with the requirements of this License, to extend the patent
|
| 507 |
-
license to downstream recipients. "Knowingly relying" means you have
|
| 508 |
-
actual knowledge that, but for the patent license, your conveying the
|
| 509 |
-
covered work in a country, or your recipient's use of the covered work
|
| 510 |
-
in a country, would infringe one or more identifiable patents in that
|
| 511 |
-
country that you have reason to believe are valid.
|
| 512 |
-
|
| 513 |
-
If, pursuant to or in connection with a single transaction or
|
| 514 |
-
arrangement, you convey, or propagate by procuring conveyance of, a
|
| 515 |
-
covered work, and grant a patent license to some of the parties
|
| 516 |
-
receiving the covered work authorizing them to use, propagate, modify
|
| 517 |
-
or convey a specific copy of the covered work, then the patent license
|
| 518 |
-
you grant is automatically extended to all recipients of the covered
|
| 519 |
-
work and works based on it.
|
| 520 |
-
|
| 521 |
-
A patent license is "discriminatory" if it does not include within
|
| 522 |
-
the scope of its coverage, prohibits the exercise of, or is
|
| 523 |
-
conditioned on the non-exercise of one or more of the rights that are
|
| 524 |
-
specifically granted under this License. You may not convey a covered
|
| 525 |
-
work if you are a party to an arrangement with a third party that is
|
| 526 |
-
in the business of distributing software, under which you make payment
|
| 527 |
-
to the third party based on the extent of your activity of conveying
|
| 528 |
-
the work, and under which the third party grants, to any of the
|
| 529 |
-
parties who would receive the covered work from you, a discriminatory
|
| 530 |
-
patent license (a) in connection with copies of the covered work
|
| 531 |
-
conveyed by you (or copies made from those copies), or (b) primarily
|
| 532 |
-
for and in connection with specific products or compilations that
|
| 533 |
-
contain the covered work, unless you entered into that arrangement,
|
| 534 |
-
or that patent license was granted, prior to 28 March 2007.
|
| 535 |
-
|
| 536 |
-
Nothing in this License shall be construed as excluding or limiting
|
| 537 |
-
any implied license or other defenses to infringement that may
|
| 538 |
-
otherwise be available to you under applicable patent law.
|
| 539 |
-
|
| 540 |
-
12. No Surrender of Others' Freedom.
|
| 541 |
-
|
| 542 |
-
If conditions are imposed on you (whether by court order, agreement or
|
| 543 |
-
otherwise) that contradict the conditions of this License, they do not
|
| 544 |
-
excuse you from the conditions of this License. If you cannot convey a
|
| 545 |
-
covered work so as to satisfy simultaneously your obligations under this
|
| 546 |
-
License and any other pertinent obligations, then as a consequence you may
|
| 547 |
-
not convey it at all. For example, if you agree to terms that obligate you
|
| 548 |
-
to collect a royalty for further conveying from those to whom you convey
|
| 549 |
-
the Program, the only way you could satisfy both those terms and this
|
| 550 |
-
License would be to refrain entirely from conveying the Program.
|
| 551 |
-
|
| 552 |
-
13. Use with the GNU Affero General Public License.
|
| 553 |
-
|
| 554 |
-
Notwithstanding any other provision of this License, you have
|
| 555 |
-
permission to link or combine any covered work with a work licensed
|
| 556 |
-
under version 3 of the GNU Affero General Public License into a single
|
| 557 |
-
combined work, and to convey the resulting work. The terms of this
|
| 558 |
-
License will continue to apply to the part which is the covered work,
|
| 559 |
-
but the special requirements of the GNU Affero General Public License,
|
| 560 |
-
section 13, concerning interaction through a network will apply to the
|
| 561 |
-
combination as such.
|
| 562 |
-
|
| 563 |
-
14. Revised Versions of this License.
|
| 564 |
-
|
| 565 |
-
The Free Software Foundation may publish revised and/or new versions of
|
| 566 |
-
the GNU General Public License from time to time. Such new versions will
|
| 567 |
-
be similar in spirit to the present version, but may differ in detail to
|
| 568 |
-
address new problems or concerns.
|
| 569 |
-
|
| 570 |
-
Each version is given a distinguishing version number. If the
|
| 571 |
-
Program specifies that a certain numbered version of the GNU General
|
| 572 |
-
Public License "or any later version" applies to it, you have the
|
| 573 |
-
option of following the terms and conditions either of that numbered
|
| 574 |
-
version or of any later version published by the Free Software
|
| 575 |
-
Foundation. If the Program does not specify a version number of the
|
| 576 |
-
GNU General Public License, you may choose any version ever published
|
| 577 |
-
by the Free Software Foundation.
|
| 578 |
-
|
| 579 |
-
If the Program specifies that a proxy can decide which future
|
| 580 |
-
versions of the GNU General Public License can be used, that proxy's
|
| 581 |
-
public statement of acceptance of a version permanently authorizes you
|
| 582 |
-
to choose that version for the Program.
|
| 583 |
-
|
| 584 |
-
Later license versions may give you additional or different
|
| 585 |
-
permissions. However, no additional obligations are imposed on any
|
| 586 |
-
author or copyright holder as a result of your choosing to follow a
|
| 587 |
-
later version.
|
| 588 |
-
|
| 589 |
-
15. Disclaimer of Warranty.
|
| 590 |
-
|
| 591 |
-
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
| 592 |
-
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
| 593 |
-
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
| 594 |
-
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
| 595 |
-
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
| 596 |
-
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
| 597 |
-
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
| 598 |
-
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
| 599 |
-
|
| 600 |
-
16. Limitation of Liability.
|
| 601 |
-
|
| 602 |
-
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
| 603 |
-
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
| 604 |
-
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
| 605 |
-
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
| 606 |
-
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
| 607 |
-
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
| 608 |
-
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
| 609 |
-
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
| 610 |
-
SUCH DAMAGES.
|
| 611 |
-
|
| 612 |
-
17. Interpretation of Sections 15 and 16.
|
| 613 |
-
|
| 614 |
-
If the disclaimer of warranty and limitation of liability provided
|
| 615 |
-
above cannot be given local legal effect according to their terms,
|
| 616 |
-
reviewing courts shall apply local law that most closely approximates
|
| 617 |
-
an absolute waiver of all civil liability in connection with the
|
| 618 |
-
Program, unless a warranty or assumption of liability accompanies a
|
| 619 |
-
copy of the Program in return for a fee.
|
| 620 |
-
|
| 621 |
-
END OF TERMS AND CONDITIONS
|
| 622 |
-
|
| 623 |
-
How to Apply These Terms to Your New Programs
|
| 624 |
-
|
| 625 |
-
If you develop a new program, and you want it to be of the greatest
|
| 626 |
-
possible use to the public, the best way to achieve this is to make it
|
| 627 |
-
free software which everyone can redistribute and change under these terms.
|
| 628 |
-
|
| 629 |
-
To do so, attach the following notices to the program. It is safest
|
| 630 |
-
to attach them to the start of each source file to most effectively
|
| 631 |
-
state the exclusion of warranty; and each file should have at least
|
| 632 |
-
the "copyright" line and a pointer to where the full notice is found.
|
| 633 |
-
|
| 634 |
-
<one line to give the program's name and a brief idea of what it does.>
|
| 635 |
-
Copyright (C) <year> <name of author>
|
| 636 |
-
|
| 637 |
-
This program is free software: you can redistribute it and/or modify
|
| 638 |
-
it under the terms of the GNU General Public License as published by
|
| 639 |
-
the Free Software Foundation, either version 3 of the License, or
|
| 640 |
-
(at your option) any later version.
|
| 641 |
-
|
| 642 |
-
This program is distributed in the hope that it will be useful,
|
| 643 |
-
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
| 644 |
-
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
| 645 |
-
GNU General Public License for more details.
|
| 646 |
-
|
| 647 |
-
You should have received a copy of the GNU General Public License
|
| 648 |
-
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
| 649 |
-
|
| 650 |
-
Also add information on how to contact you by electronic and paper mail.
|
| 651 |
-
|
| 652 |
-
If the program does terminal interaction, make it output a short
|
| 653 |
-
notice like this when it starts in an interactive mode:
|
| 654 |
-
|
| 655 |
-
<program> Copyright (C) <year> <name of author>
|
| 656 |
-
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
| 657 |
-
This is free software, and you are welcome to redistribute it
|
| 658 |
-
under certain conditions; type `show c' for details.
|
| 659 |
-
|
| 660 |
-
The hypothetical commands `show w' and `show c' should show the appropriate
|
| 661 |
-
parts of the General Public License. Of course, your program's commands
|
| 662 |
-
might be different; for a GUI interface, you would use an "about box".
|
| 663 |
-
|
| 664 |
-
You should also get your employer (if you work as a programmer) or school,
|
| 665 |
-
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
| 666 |
-
For more information on this, and how to apply and follow the GNU GPL, see
|
| 667 |
-
<https://www.gnu.org/licenses/>.
|
| 668 |
-
|
| 669 |
-
The GNU General Public License does not permit incorporating your program
|
| 670 |
-
into proprietary programs. If your program is a subroutine library, you
|
| 671 |
-
may consider it more useful to permit linking proprietary applications with
|
| 672 |
-
the library. If this is what you want to do, use the GNU Lesser General
|
| 673 |
-
Public License instead of this License. But first, please read
|
| 674 |
-
<https://www.gnu.org/licenses/why-not-lgpl.html>.
|
| 675 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VSF/comfyui/custom_nodes/value_sign_flip/MANIFEST.in
DELETED
|
@@ -1,9 +0,0 @@
|
|
| 1 |
-
include LICENSE
|
| 2 |
-
include README.md
|
| 3 |
-
|
| 4 |
-
recursive-exclude * __pycache__
|
| 5 |
-
recursive-exclude * *.py[co]
|
| 6 |
-
|
| 7 |
-
recursive-include docs *.rst conf.py Makefile make.bat *.jpg *.png *.gif
|
| 8 |
-
|
| 9 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VSF/comfyui/custom_nodes/value_sign_flip/README.md
DELETED
|
@@ -1,53 +0,0 @@
|
|
| 1 |
-
|
| 2 |
-
# Value Sign Flip for ComfyUI (Wan 2.1)
|
| 3 |
-
|
| 4 |
-
## Purpose
|
| 5 |
-
|
| 6 |
-
This node implements **Value Sign Flip (VSF)** for **negative guidance without CFG** in ComfyUI. It is designed for object removal in video generation (e.g., removing bike wheels), **not for quality improvement**. Using prompts like "low quality" as negative could increase quality, but could also decrease it.
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
Example (generated using 1.3B, thus lower quality):
|
| 11 |
-
<img width="1502" height="850" alt="image" src="https://github.com/user-attachments/assets/575fe78a-a7e2-47cd-9cc9-3897ba59b54d" />
|
| 12 |
-
|
| 13 |
-
---
|
| 14 |
-
|
| 15 |
-
## Installation
|
| 16 |
-
|
| 17 |
-
Install this node like any other ComfyUI custom node.
|
| 18 |
-
|
| 19 |
-
---
|
| 20 |
-
|
| 21 |
-
## Usage
|
| 22 |
-
|
| 23 |
-
This is an all-in-one node. Connect it like any standard generation node. Provide a **positive prompt**, **negative prompt**, and the relevant configuration. The output is a list of images representing a video. Connect it to a `SaveWebp` node for preview/export.
|
| 24 |
-
|
| 25 |
-
No example workflow is provided due to the simplicity of the setup.
|
| 26 |
-
|
| 27 |
-
---
|
| 28 |
-
|
| 29 |
-
### Parameters
|
| 30 |
-
|
| 31 |
-
* **model\_id**: HuggingFace model ID for the *diffusers* version of the Wan model (e.g., `1.3B`, `14B`). Only config, tokenizer, and scheduler are loaded from here.
|
| 32 |
-
* **cfg\_lora**: Choose a CFG LoRA like
|
| 33 |
-
[`Wan21_CausVid_bidirect2_T2V_1_3B_lora_rank32.safetensors`](https://huggingface.co/Kijai/WanVideo_comfy/tree/main)
|
| 34 |
-
or some others from [here](https://huggingface.co/Kijai/WanVideo_comfy/tree/main).
|
| 35 |
-
* **scale**: VSF scale. Starts at `0` (unlike CFG which starts at `1`).
|
| 36 |
-
* **offset**: Lower (more negative) values decrease the impact of the negative prompt outside the target area.
|
| 37 |
-
* **shift**: Flow shift during sampling.
|
| 38 |
-
* **cfg\_lora\_scale**: Scale of the CFG LoRA. Recommended: `0.4`–`0.7`.
|
| 39 |
-
|
| 40 |
-
---
|
| 41 |
-
|
| 42 |
-
## Limitations
|
| 43 |
-
|
| 44 |
-
* No in-node progress bar during denoising. Use `Ctrl + ~` to view progress in the terminal.
|
| 45 |
-
* Minimal customization; functionality is self-contained.
|
| 46 |
-
* CPU offloading is not supported.
|
| 47 |
-
* Requires FP16 text encoder. Use `umt5_xxl_fp16.safetensors`. FP8 models are unsupported.
|
| 48 |
-
|
| 49 |
-
---
|
| 50 |
-
|
| 51 |
-
## Feedback
|
| 52 |
-
|
| 53 |
-
This is an experimental tool. Feedback or suggestions are welcome via GitHub Issues.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VSF/comfyui/custom_nodes/value_sign_flip/__init__.py
DELETED
|
@@ -1,16 +0,0 @@
|
|
| 1 |
-
"""Top-level package for value_sign_flip."""
|
| 2 |
-
|
| 3 |
-
__all__ = [
|
| 4 |
-
"NODE_CLASS_MAPPINGS",
|
| 5 |
-
"NODE_DISPLAY_NAME_MAPPINGS",
|
| 6 |
-
|
| 7 |
-
]
|
| 8 |
-
|
| 9 |
-
__author__ = """Value Sign Flip"""
|
| 10 |
-
__email__ = "email@weasoft.com"
|
| 11 |
-
__version__ = "0.0.1"
|
| 12 |
-
|
| 13 |
-
from .src.value_sign_flip.nodes import NODE_CLASS_MAPPINGS
|
| 14 |
-
from .src.value_sign_flip.nodes import NODE_DISPLAY_NAME_MAPPINGS
|
| 15 |
-
|
| 16 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VSF/comfyui/custom_nodes/value_sign_flip/pyproject.toml
DELETED
|
@@ -1,82 +0,0 @@
|
|
| 1 |
-
[build-system]
|
| 2 |
-
requires = ["setuptools>=70.0"]
|
| 3 |
-
build-backend = "setuptools.build_meta"
|
| 4 |
-
|
| 5 |
-
[project]
|
| 6 |
-
name = "value_sign_flip"
|
| 7 |
-
version = "0.0.1"
|
| 8 |
-
description = "Negative Guidance Without CFG"
|
| 9 |
-
authors = [
|
| 10 |
-
{name = "Value Sign Flip", email = "email@weasoft.com"}
|
| 11 |
-
]
|
| 12 |
-
readme = "README.md"
|
| 13 |
-
license = {text = "GNU General Public License v3"}
|
| 14 |
-
classifiers = []
|
| 15 |
-
dependencies = [
|
| 16 |
-
|
| 17 |
-
]
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
[project.optional-dependencies]
|
| 22 |
-
dev = [
|
| 23 |
-
"bump-my-version",
|
| 24 |
-
"coverage", # testing
|
| 25 |
-
"mypy", # linting
|
| 26 |
-
"pre-commit", # runs linting on commit
|
| 27 |
-
"pytest", # testing
|
| 28 |
-
"ruff", # linting
|
| 29 |
-
]
|
| 30 |
-
|
| 31 |
-
[project.urls]
|
| 32 |
-
bugs = "https://github.com/weathon/value_sign_flip/issues"
|
| 33 |
-
homepage = "https://github.com/weathon/value_sign_flip"
|
| 34 |
-
|
| 35 |
-
|
| 36 |
-
[tool.comfy]
|
| 37 |
-
PublisherId = "weathon"
|
| 38 |
-
DisplayName = "Value Sign Flip"
|
| 39 |
-
Icon = ""
|
| 40 |
-
|
| 41 |
-
|
| 42 |
-
[tool.setuptools.package-data]
|
| 43 |
-
"*" = ["*.*"]
|
| 44 |
-
|
| 45 |
-
[tool.pytest.ini_options]
|
| 46 |
-
minversion = "8.0"
|
| 47 |
-
testpaths = [
|
| 48 |
-
"tests",
|
| 49 |
-
]
|
| 50 |
-
|
| 51 |
-
[tool.mypy]
|
| 52 |
-
files = "."
|
| 53 |
-
|
| 54 |
-
# Use strict defaults
|
| 55 |
-
strict = true
|
| 56 |
-
warn_unreachable = true
|
| 57 |
-
warn_no_return = true
|
| 58 |
-
|
| 59 |
-
[[tool.mypy.overrides]]
|
| 60 |
-
# Don't require test functions to include types
|
| 61 |
-
module = "tests.*"
|
| 62 |
-
allow_untyped_defs = true
|
| 63 |
-
disable_error_code = "attr-defined"
|
| 64 |
-
|
| 65 |
-
[tool.ruff]
|
| 66 |
-
# extend-exclude = ["static", "ci/templates"]
|
| 67 |
-
line-length = 140
|
| 68 |
-
src = ["src", "tests"]
|
| 69 |
-
target-version = "py39"
|
| 70 |
-
|
| 71 |
-
# Add rules to ban exec/eval
|
| 72 |
-
[tool.ruff.lint]
|
| 73 |
-
select = [
|
| 74 |
-
"S102", # exec-builtin
|
| 75 |
-
"S307", # eval-used
|
| 76 |
-
"W293",
|
| 77 |
-
"F", # The "F" series in Ruff stands for "Pyflakes" rules, which catch various Python syntax errors and undefined names.
|
| 78 |
-
# See all rules here: https://docs.astral.sh/ruff/rules/#pyflakes-f
|
| 79 |
-
]
|
| 80 |
-
|
| 81 |
-
[tool.ruff.lint.flake8-quotes]
|
| 82 |
-
inline-quotes = "double"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VSF/comfyui/custom_nodes/value_sign_flip/src/value_sign_flip/nodes.py
DELETED
|
@@ -1,185 +0,0 @@
|
|
| 1 |
-
from inspect import cleandoc
|
| 2 |
-
import torch
|
| 3 |
-
from diffusers import AutoencoderKLWan, UniPCMultistepScheduler, WanTransformer3DModel
|
| 4 |
-
from transformers import T5EncoderModel, AutoTokenizer
|
| 5 |
-
from .pipeline import WanPipeline
|
| 6 |
-
from .processor import WanAttnProcessor2_0
|
| 7 |
-
from diffusers.utils import export_to_video
|
| 8 |
-
import folder_paths
|
| 9 |
-
from transformers import AutoConfig
|
| 10 |
-
from safetensors.torch import load_file
|
| 11 |
-
from diffusers.hooks.group_offloading import apply_group_offloading
|
| 12 |
-
|
| 13 |
-
class VSF:
|
| 14 |
-
"""
|
| 15 |
-
A example node
|
| 16 |
-
|
| 17 |
-
Class methods
|
| 18 |
-
-------------
|
| 19 |
-
INPUT_TYPES (dict):
|
| 20 |
-
Tell the main program input parameters of nodes.
|
| 21 |
-
IS_CHANGED:
|
| 22 |
-
optional method to control when the node is re executed.
|
| 23 |
-
|
| 24 |
-
Attributes
|
| 25 |
-
----------
|
| 26 |
-
RETURN_TYPES (`tuple`):
|
| 27 |
-
The type of each element in the output tulple.
|
| 28 |
-
RETURN_NAMES (`tuple`):
|
| 29 |
-
Optional: The name of each output in the output tulple.
|
| 30 |
-
FUNCTION (`str`):
|
| 31 |
-
The name of the entry-point method. For example, if `FUNCTION = "execute"` then it will run Example().execute()
|
| 32 |
-
OUTPUT_NODE ([`bool`]):
|
| 33 |
-
If this node is an output node that outputs a result/image from the graph. The SaveImage node is an example.
|
| 34 |
-
The backend iterates on these output nodes and tries to execute all their parents if their parent graph is properly connected.
|
| 35 |
-
Assumed to be False if not present.
|
| 36 |
-
CATEGORY (`str`):
|
| 37 |
-
The category the node should appear in the UI.
|
| 38 |
-
execute(s) -> tuple || None:
|
| 39 |
-
The entry point method. The name of this method must be the same as the value of property `FUNCTION`.
|
| 40 |
-
For example, if `FUNCTION = "execute"` then this method's name must be `execute`, if `FUNCTION = "foo"` then it must be `foo`.
|
| 41 |
-
"""
|
| 42 |
-
def __init__(self):
|
| 43 |
-
pass
|
| 44 |
-
|
| 45 |
-
@classmethod
|
| 46 |
-
def INPUT_TYPES(s):
|
| 47 |
-
return {
|
| 48 |
-
"required": {
|
| 49 |
-
"clip": (folder_paths.get_filename_list("text_encoders"),),
|
| 50 |
-
"wan": (folder_paths.get_filename_list("diffusion_models"),),
|
| 51 |
-
"vae": (folder_paths.get_filename_list("vae"),),
|
| 52 |
-
"cfg_lora": (folder_paths.get_filename_list("loras"),),
|
| 53 |
-
"model_id": ("STRING", {"default": "Wan-AI/Wan2.1-T2V-1.3B-Diffusers"}),
|
| 54 |
-
"positive_prompt": ("STRING", {"default": "A cessna flying over a snowy mountain landscape, with a clear blue sky and fluffy white clouds. The plane is flying at a low altitude, casting a shadow on the snow-covered ground below.", "multiline": True}),
|
| 55 |
-
"negative_prompt": ("STRING", {"default": "wings", "multiline": True}),
|
| 56 |
-
"steps": ("INT", {"default": 12}),
|
| 57 |
-
"height": ("INT", {"default": 480}),
|
| 58 |
-
"width": ("INT", {"default": 832}),
|
| 59 |
-
"frames": ("INT", {"default": 81}),
|
| 60 |
-
"scale": ("FLOAT", {"default": 1.5, "min": 0.1, "max": 10.0, "step": 0.1}),
|
| 61 |
-
"offset": ("FLOAT", {"default": -0.1, "min": -1.0, "max": 0, "step": 0.01}),
|
| 62 |
-
"shift": ("FLOAT", {"default": 3.0, "min": 0.0, "max": 5.0, "step": 0.1}),
|
| 63 |
-
"seed": ("INT", {"default": 42}),
|
| 64 |
-
"cfg_lora_scale": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0, "step": 0.1}),
|
| 65 |
-
# "cpu_offload": ("BOOLEAN", {"default": True, "label": "CPU Offload"}),
|
| 66 |
-
},
|
| 67 |
-
}
|
| 68 |
-
|
| 69 |
-
RETURN_TYPES = ("IMAGE",)
|
| 70 |
-
FUNCTION = "main"
|
| 71 |
-
|
| 72 |
-
CATEGORY = "sampling"
|
| 73 |
-
|
| 74 |
-
def main(self, clip, wan, cfg_lora, vae, model_id, positive_prompt, shift, negative_prompt, steps, height, width, frames, scale, offset, seed, cfg_lora_scale):
|
| 75 |
-
model_id = "Wan-AI/Wan2.1-T2V-1.3B-Diffusers"
|
| 76 |
-
vae = AutoencoderKLWan.from_single_file(
|
| 77 |
-
folder_paths.get_full_path("vae", vae),
|
| 78 |
-
local_files_only=True,
|
| 79 |
-
torch_dtype=torch.float32,
|
| 80 |
-
)
|
| 81 |
-
transformer = WanTransformer3DModel.from_single_file(
|
| 82 |
-
folder_paths.get_full_path("diffusion_models", wan),
|
| 83 |
-
local_files_only=True,
|
| 84 |
-
torch_dtype=torch.bfloat16,
|
| 85 |
-
)
|
| 86 |
-
tokenizer = AutoTokenizer.from_pretrained(model_id, subfolder="tokenizer")
|
| 87 |
-
text_encoder_state = load_file(
|
| 88 |
-
folder_paths.get_full_path("text_encoders", clip),
|
| 89 |
-
device="cpu",
|
| 90 |
-
)
|
| 91 |
-
|
| 92 |
-
text_encoder = T5EncoderModel.from_pretrained(
|
| 93 |
-
pretrained_model_name_or_path=None,
|
| 94 |
-
config=AutoConfig.from_pretrained(model_id, subfolder="text_encoder"),
|
| 95 |
-
state_dict=text_encoder_state,
|
| 96 |
-
torch_dtype=torch.bfloat16,
|
| 97 |
-
)
|
| 98 |
-
# text_encoder = T5EncoderModel.from_pretrained(
|
| 99 |
-
# pretrained_model_name_or_path=model_id,
|
| 100 |
-
# subfolder="text_encoder",
|
| 101 |
-
# )
|
| 102 |
-
# if cpu_offload:
|
| 103 |
-
# onload_device = torch.device("cuda")
|
| 104 |
-
# offload_device = torch.device("cpu")
|
| 105 |
-
# apply_group_offloading(text_encoder,
|
| 106 |
-
# onload_device=onload_device,
|
| 107 |
-
# offload_device=offload_device,
|
| 108 |
-
# offload_type="block_level",
|
| 109 |
-
# num_blocks_per_group=4
|
| 110 |
-
# )
|
| 111 |
-
# transformer.enable_group_offload(
|
| 112 |
-
# onload_device=onload_device,
|
| 113 |
-
# offload_device=offload_device,
|
| 114 |
-
# offload_type="leaf_level",
|
| 115 |
-
# use_stream=True
|
| 116 |
-
# )
|
| 117 |
-
|
| 118 |
-
pipe = WanPipeline(
|
| 119 |
-
vae=vae,
|
| 120 |
-
transformer=transformer,
|
| 121 |
-
text_encoder=text_encoder,
|
| 122 |
-
tokenizer=tokenizer,
|
| 123 |
-
scheduler=UniPCMultistepScheduler.from_pretrained(
|
| 124 |
-
model_id, subfolder="scheduler", flow_shift=shift,
|
| 125 |
-
),
|
| 126 |
-
)
|
| 127 |
-
lora_path = folder_paths.get_full_path("loras", cfg_lora)
|
| 128 |
-
pipe.load_lora_weights(
|
| 129 |
-
lora_path,
|
| 130 |
-
adapter_name="lora",
|
| 131 |
-
)
|
| 132 |
-
|
| 133 |
-
pipe.to(device="cuda", dtype=torch.bfloat16)
|
| 134 |
-
|
| 135 |
-
neg_prompt_embeds, _ = pipe.encode_prompt(
|
| 136 |
-
prompt=negative_prompt,
|
| 137 |
-
padding=False,
|
| 138 |
-
do_classifier_free_guidance=False,
|
| 139 |
-
)
|
| 140 |
-
|
| 141 |
-
pos_prompt_embeds, _ = pipe.encode_prompt(
|
| 142 |
-
prompt=positive_prompt,
|
| 143 |
-
do_classifier_free_guidance=False,
|
| 144 |
-
max_sequence_length=512 - neg_prompt_embeds.shape[1],
|
| 145 |
-
)
|
| 146 |
-
pipe.set_adapters("lora", cfg_lora_scale)
|
| 147 |
-
|
| 148 |
-
|
| 149 |
-
|
| 150 |
-
neg_len = neg_prompt_embeds.shape[1]
|
| 151 |
-
pos_len = pos_prompt_embeds.shape[1]
|
| 152 |
-
print(neg_len, pos_len)
|
| 153 |
-
|
| 154 |
-
img_len = (height//8) * (width//8) * 3 * (frames // 4 + 1) // 12
|
| 155 |
-
print(img_len)
|
| 156 |
-
mask = torch.zeros((1, img_len, pos_len+neg_len)).cuda()
|
| 157 |
-
mask[:, :, -neg_len:] = offset
|
| 158 |
-
|
| 159 |
-
for block in pipe.transformer.blocks:
|
| 160 |
-
block.attn2.processor = WanAttnProcessor2_0(scale=scale, neg_prompt_length=neg_len, attn_mask=mask)
|
| 161 |
-
|
| 162 |
-
prompt_embeds = torch.cat([pos_prompt_embeds, neg_prompt_embeds], dim=1)
|
| 163 |
-
|
| 164 |
-
output = pipe(
|
| 165 |
-
prompt_embeds=prompt_embeds,
|
| 166 |
-
height=height,
|
| 167 |
-
width=width,
|
| 168 |
-
num_frames=frames,
|
| 169 |
-
num_inference_steps=steps,
|
| 170 |
-
guidance_scale=0.0,
|
| 171 |
-
generator=torch.Generator(device="cuda").manual_seed(seed),
|
| 172 |
-
output_type="pt",
|
| 173 |
-
)[0].float()[0].permute(0, 2, 3, 1).contiguous()
|
| 174 |
-
print(output.shape)
|
| 175 |
-
|
| 176 |
-
return (output, )
|
| 177 |
-
|
| 178 |
-
NODE_CLASS_MAPPINGS = {
|
| 179 |
-
"Example": VSF
|
| 180 |
-
}
|
| 181 |
-
|
| 182 |
-
# A dictionary that contains the friendly/humanly readable titles for the nodes
|
| 183 |
-
NODE_DISPLAY_NAME_MAPPINGS = {
|
| 184 |
-
"Example": "Value Sign Flip"
|
| 185 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VSF/comfyui/custom_nodes/value_sign_flip/src/value_sign_flip/pipeline.py
DELETED
|
@@ -1,612 +0,0 @@
|
|
| 1 |
-
# Copyright 2025 The Wan Team and The HuggingFace Team. All rights reserved.
|
| 2 |
-
#
|
| 3 |
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
| 4 |
-
# you may not use this file except in compliance with the License.
|
| 5 |
-
# You may obtain a copy of the License at
|
| 6 |
-
#
|
| 7 |
-
# http://www.apache.org/licenses/LICENSE-2.0
|
| 8 |
-
#
|
| 9 |
-
# Unless required by applicable law or agreed to in writing, software
|
| 10 |
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
| 11 |
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 12 |
-
# See the License for the specific language governing permissions and
|
| 13 |
-
# limitations under the License.
|
| 14 |
-
|
| 15 |
-
import html
|
| 16 |
-
from typing import Any, Callable, Dict, List, Optional, Union
|
| 17 |
-
|
| 18 |
-
import regex as re
|
| 19 |
-
import torch
|
| 20 |
-
from transformers import AutoTokenizer, UMT5EncoderModel
|
| 21 |
-
|
| 22 |
-
from diffusers.callbacks import MultiPipelineCallbacks, PipelineCallback
|
| 23 |
-
from diffusers.loaders import WanLoraLoaderMixin
|
| 24 |
-
from diffusers.models import AutoencoderKLWan, WanTransformer3DModel
|
| 25 |
-
from diffusers.schedulers import FlowMatchEulerDiscreteScheduler
|
| 26 |
-
from diffusers.utils import is_ftfy_available, is_torch_xla_available, logging, replace_example_docstring
|
| 27 |
-
from diffusers.utils.torch_utils import randn_tensor
|
| 28 |
-
from diffusers.video_processor import VideoProcessor
|
| 29 |
-
from diffusers.pipelines.pipeline_utils import DiffusionPipeline
|
| 30 |
-
from diffusers.pipelines.wan.pipeline_output import WanPipelineOutput
|
| 31 |
-
|
| 32 |
-
|
| 33 |
-
if is_torch_xla_available():
|
| 34 |
-
import torch_xla.core.xla_model as xm
|
| 35 |
-
|
| 36 |
-
XLA_AVAILABLE = True
|
| 37 |
-
else:
|
| 38 |
-
XLA_AVAILABLE = False
|
| 39 |
-
|
| 40 |
-
logger = logging.get_logger(__name__) # pylint: disable=invalid-name
|
| 41 |
-
|
| 42 |
-
if is_ftfy_available():
|
| 43 |
-
import ftfy
|
| 44 |
-
|
| 45 |
-
|
| 46 |
-
EXAMPLE_DOC_STRING = """
|
| 47 |
-
Examples:
|
| 48 |
-
```python
|
| 49 |
-
>>> import torch
|
| 50 |
-
>>> from diffusers.utils import export_to_video
|
| 51 |
-
>>> from diffusers import AutoencoderKLWan, WanPipeline
|
| 52 |
-
>>> from diffusers.schedulers.scheduling_unipc_multistep import UniPCMultistepScheduler
|
| 53 |
-
|
| 54 |
-
>>> # Available models: Wan-AI/Wan2.1-T2V-14B-Diffusers, Wan-AI/Wan2.1-T2V-1.3B-Diffusers
|
| 55 |
-
>>> model_id = "Wan-AI/Wan2.1-T2V-14B-Diffusers"
|
| 56 |
-
>>> vae = AutoencoderKLWan.from_pretrained(model_id, subfolder="vae", torch_dtype=torch.float32)
|
| 57 |
-
>>> pipe = WanPipeline.from_pretrained(model_id, vae=vae, torch_dtype=torch.bfloat16)
|
| 58 |
-
>>> flow_shift = 5.0 # 5.0 for 720P, 3.0 for 480P
|
| 59 |
-
>>> pipe.scheduler = UniPCMultistepScheduler.from_config(pipe.scheduler.config, flow_shift=flow_shift)
|
| 60 |
-
>>> pipe.to("cuda")
|
| 61 |
-
|
| 62 |
-
>>> prompt = "A cat and a dog baking a cake together in a kitchen. The cat is carefully measuring flour, while the dog is stirring the batter with a wooden spoon. The kitchen is cozy, with sunlight streaming through the window."
|
| 63 |
-
>>> negative_prompt = "Bright tones, overexposed, static, blurred details, subtitles, style, works, paintings, images, static, overall gray, worst quality, low quality, JPEG compression residue, ugly, incomplete, extra fingers, poorly drawn hands, poorly drawn faces, deformed, disfigured, misshapen limbs, fused fingers, still picture, messy background, three legs, many people in the background, walking backwards"
|
| 64 |
-
|
| 65 |
-
>>> output = pipe(
|
| 66 |
-
... prompt=prompt,
|
| 67 |
-
... negative_prompt=negative_prompt,
|
| 68 |
-
... height=720,
|
| 69 |
-
... width=1280,
|
| 70 |
-
... num_frames=81,
|
| 71 |
-
... guidance_scale=5.0,
|
| 72 |
-
... ).frames[0]
|
| 73 |
-
>>> export_to_video(output, "output.mp4", fps=16)
|
| 74 |
-
```
|
| 75 |
-
"""
|
| 76 |
-
|
| 77 |
-
|
| 78 |
-
def basic_clean(text):
|
| 79 |
-
text = ftfy.fix_text(text)
|
| 80 |
-
text = html.unescape(html.unescape(text))
|
| 81 |
-
return text.strip()
|
| 82 |
-
|
| 83 |
-
|
| 84 |
-
def whitespace_clean(text):
|
| 85 |
-
text = re.sub(r"\s+", " ", text)
|
| 86 |
-
text = text.strip()
|
| 87 |
-
return text
|
| 88 |
-
|
| 89 |
-
|
| 90 |
-
def prompt_clean(text):
|
| 91 |
-
text = whitespace_clean(basic_clean(text))
|
| 92 |
-
return text
|
| 93 |
-
|
| 94 |
-
|
| 95 |
-
class WanPipeline(DiffusionPipeline, WanLoraLoaderMixin):
|
| 96 |
-
r"""
|
| 97 |
-
Pipeline for text-to-video generation using Wan.
|
| 98 |
-
|
| 99 |
-
This model inherits from [`DiffusionPipeline`]. Check the superclass documentation for the generic methods
|
| 100 |
-
implemented for all pipelines (downloading, saving, running on a particular device, etc.).
|
| 101 |
-
|
| 102 |
-
Args:
|
| 103 |
-
tokenizer ([`T5Tokenizer`]):
|
| 104 |
-
Tokenizer from [T5](https://huggingface.co/docs/transformers/en/model_doc/t5#transformers.T5Tokenizer),
|
| 105 |
-
specifically the [google/umt5-xxl](https://huggingface.co/google/umt5-xxl) variant.
|
| 106 |
-
text_encoder ([`T5EncoderModel`]):
|
| 107 |
-
[T5](https://huggingface.co/docs/transformers/en/model_doc/t5#transformers.T5EncoderModel), specifically
|
| 108 |
-
the [google/umt5-xxl](https://huggingface.co/google/umt5-xxl) variant.
|
| 109 |
-
transformer ([`WanTransformer3DModel`]):
|
| 110 |
-
Conditional Transformer to denoise the input latents.
|
| 111 |
-
scheduler ([`UniPCMultistepScheduler`]):
|
| 112 |
-
A scheduler to be used in combination with `transformer` to denoise the encoded image latents.
|
| 113 |
-
vae ([`AutoencoderKLWan`]):
|
| 114 |
-
Variational Auto-Encoder (VAE) Model to encode and decode videos to and from latent representations.
|
| 115 |
-
"""
|
| 116 |
-
|
| 117 |
-
model_cpu_offload_seq = "text_encoder->transformer->vae"
|
| 118 |
-
_callback_tensor_inputs = ["latents", "prompt_embeds", "negative_prompt_embeds"]
|
| 119 |
-
|
| 120 |
-
def __init__(
|
| 121 |
-
self,
|
| 122 |
-
tokenizer: AutoTokenizer,
|
| 123 |
-
text_encoder: UMT5EncoderModel,
|
| 124 |
-
transformer: WanTransformer3DModel,
|
| 125 |
-
vae: AutoencoderKLWan,
|
| 126 |
-
scheduler: FlowMatchEulerDiscreteScheduler,
|
| 127 |
-
):
|
| 128 |
-
super().__init__()
|
| 129 |
-
|
| 130 |
-
self.register_modules(
|
| 131 |
-
vae=vae,
|
| 132 |
-
text_encoder=text_encoder,
|
| 133 |
-
tokenizer=tokenizer,
|
| 134 |
-
transformer=transformer,
|
| 135 |
-
scheduler=scheduler,
|
| 136 |
-
)
|
| 137 |
-
|
| 138 |
-
self.vae_scale_factor_temporal = 2 ** sum(self.vae.temperal_downsample) if getattr(self, "vae", None) else 4
|
| 139 |
-
self.vae_scale_factor_spatial = 2 ** len(self.vae.temperal_downsample) if getattr(self, "vae", None) else 8
|
| 140 |
-
self.video_processor = VideoProcessor(vae_scale_factor=self.vae_scale_factor_spatial)
|
| 141 |
-
|
| 142 |
-
def _get_t5_prompt_embeds(
|
| 143 |
-
self,
|
| 144 |
-
prompt: Union[str, List[str]] = None,
|
| 145 |
-
num_videos_per_prompt: int = 1,
|
| 146 |
-
max_sequence_length: int = 226,
|
| 147 |
-
device: Optional[torch.device] = None,
|
| 148 |
-
dtype: Optional[torch.dtype] = None,
|
| 149 |
-
padding: bool = True,
|
| 150 |
-
):
|
| 151 |
-
device = device or self._execution_device
|
| 152 |
-
dtype = dtype or self.text_encoder.dtype
|
| 153 |
-
|
| 154 |
-
prompt = [prompt] if isinstance(prompt, str) else prompt
|
| 155 |
-
prompt = [prompt_clean(u) for u in prompt]
|
| 156 |
-
batch_size = len(prompt)
|
| 157 |
-
print(padding)
|
| 158 |
-
text_inputs = self.tokenizer(
|
| 159 |
-
prompt,
|
| 160 |
-
padding="max_length" if padding else False,
|
| 161 |
-
max_length=max_sequence_length,
|
| 162 |
-
truncation=True,
|
| 163 |
-
add_special_tokens=True,
|
| 164 |
-
return_attention_mask=True,
|
| 165 |
-
return_tensors="pt",
|
| 166 |
-
)
|
| 167 |
-
text_input_ids, mask = text_inputs.input_ids, text_inputs.attention_mask
|
| 168 |
-
seq_lens = mask.gt(0).sum(dim=1).long()
|
| 169 |
-
|
| 170 |
-
prompt_embeds = self.text_encoder(text_input_ids.to(device), mask.to(device)).last_hidden_state
|
| 171 |
-
prompt_embeds = prompt_embeds.to(dtype=dtype, device=device)
|
| 172 |
-
prompt_embeds = [u[:v] for u, v in zip(prompt_embeds, seq_lens)]
|
| 173 |
-
if padding:
|
| 174 |
-
prompt_embeds = torch.stack(
|
| 175 |
-
[torch.cat([u, u.new_zeros(max_sequence_length - u.size(0), u.size(1))]) for u in prompt_embeds], dim=0
|
| 176 |
-
)
|
| 177 |
-
else:
|
| 178 |
-
prompt_embeds = torch.stack(
|
| 179 |
-
[torch.cat([u]) for u in prompt_embeds], dim=0
|
| 180 |
-
)
|
| 181 |
-
|
| 182 |
-
# duplicate text embeddings for each generation per prompt, using mps friendly method
|
| 183 |
-
_, seq_len, _ = prompt_embeds.shape
|
| 184 |
-
prompt_embeds = prompt_embeds.repeat(1, num_videos_per_prompt, 1)
|
| 185 |
-
prompt_embeds = prompt_embeds.view(batch_size * num_videos_per_prompt, seq_len, -1)
|
| 186 |
-
|
| 187 |
-
return prompt_embeds
|
| 188 |
-
|
| 189 |
-
def encode_prompt(
|
| 190 |
-
self,
|
| 191 |
-
prompt: Union[str, List[str]],
|
| 192 |
-
negative_prompt: Optional[Union[str, List[str]]] = None,
|
| 193 |
-
do_classifier_free_guidance: bool = True,
|
| 194 |
-
num_videos_per_prompt: int = 1,
|
| 195 |
-
prompt_embeds: Optional[torch.Tensor] = None,
|
| 196 |
-
negative_prompt_embeds: Optional[torch.Tensor] = None,
|
| 197 |
-
max_sequence_length: int = 226,
|
| 198 |
-
device: Optional[torch.device] = None,
|
| 199 |
-
dtype: Optional[torch.dtype] = None,
|
| 200 |
-
padding: bool = True,
|
| 201 |
-
):
|
| 202 |
-
r"""
|
| 203 |
-
Encodes the prompt into text encoder hidden states.
|
| 204 |
-
|
| 205 |
-
Args:
|
| 206 |
-
prompt (`str` or `List[str]`, *optional*):
|
| 207 |
-
prompt to be encoded
|
| 208 |
-
negative_prompt (`str` or `List[str]`, *optional*):
|
| 209 |
-
The prompt or prompts not to guide the image generation. If not defined, one has to pass
|
| 210 |
-
`negative_prompt_embeds` instead. Ignored when not using guidance (i.e., ignored if `guidance_scale` is
|
| 211 |
-
less than `1`).
|
| 212 |
-
do_classifier_free_guidance (`bool`, *optional*, defaults to `True`):
|
| 213 |
-
Whether to use classifier free guidance or not.
|
| 214 |
-
num_videos_per_prompt (`int`, *optional*, defaults to 1):
|
| 215 |
-
Number of videos that should be generated per prompt. torch device to place the resulting embeddings on
|
| 216 |
-
prompt_embeds (`torch.Tensor`, *optional*):
|
| 217 |
-
Pre-generated text embeddings. Can be used to easily tweak text inputs, *e.g.* prompt weighting. If not
|
| 218 |
-
provided, text embeddings will be generated from `prompt` input argument.
|
| 219 |
-
negative_prompt_embeds (`torch.Tensor`, *optional*):
|
| 220 |
-
Pre-generated negative text embeddings. Can be used to easily tweak text inputs, *e.g.* prompt
|
| 221 |
-
weighting. If not provided, negative_prompt_embeds will be generated from `negative_prompt` input
|
| 222 |
-
argument.
|
| 223 |
-
device: (`torch.device`, *optional*):
|
| 224 |
-
torch device
|
| 225 |
-
dtype: (`torch.dtype`, *optional*):
|
| 226 |
-
torch dtype
|
| 227 |
-
"""
|
| 228 |
-
device = device or self._execution_device
|
| 229 |
-
|
| 230 |
-
prompt = [prompt] if isinstance(prompt, str) else prompt
|
| 231 |
-
if prompt is not None:
|
| 232 |
-
batch_size = len(prompt)
|
| 233 |
-
else:
|
| 234 |
-
batch_size = prompt_embeds.shape[0]
|
| 235 |
-
|
| 236 |
-
if prompt_embeds is None:
|
| 237 |
-
prompt_embeds = self._get_t5_prompt_embeds(
|
| 238 |
-
prompt=prompt,
|
| 239 |
-
num_videos_per_prompt=num_videos_per_prompt,
|
| 240 |
-
max_sequence_length=max_sequence_length,
|
| 241 |
-
device=device,
|
| 242 |
-
dtype=dtype,
|
| 243 |
-
padding=padding
|
| 244 |
-
)
|
| 245 |
-
|
| 246 |
-
if do_classifier_free_guidance and negative_prompt_embeds is None:
|
| 247 |
-
negative_prompt = negative_prompt or ""
|
| 248 |
-
negative_prompt = batch_size * [negative_prompt] if isinstance(negative_prompt, str) else negative_prompt
|
| 249 |
-
|
| 250 |
-
if prompt is not None and type(prompt) is not type(negative_prompt):
|
| 251 |
-
raise TypeError(
|
| 252 |
-
f"`negative_prompt` should be the same type to `prompt`, but got {type(negative_prompt)} !="
|
| 253 |
-
f" {type(prompt)}."
|
| 254 |
-
)
|
| 255 |
-
elif batch_size != len(negative_prompt):
|
| 256 |
-
raise ValueError(
|
| 257 |
-
f"`negative_prompt`: {negative_prompt} has batch size {len(negative_prompt)}, but `prompt`:"
|
| 258 |
-
f" {prompt} has batch size {batch_size}. Please make sure that passed `negative_prompt` matches"
|
| 259 |
-
" the batch size of `prompt`."
|
| 260 |
-
)
|
| 261 |
-
|
| 262 |
-
negative_prompt_embeds = self._get_t5_prompt_embeds(
|
| 263 |
-
prompt=negative_prompt,
|
| 264 |
-
num_videos_per_prompt=num_videos_per_prompt,
|
| 265 |
-
max_sequence_length=max_sequence_length,
|
| 266 |
-
device=device,
|
| 267 |
-
dtype=dtype,
|
| 268 |
-
)
|
| 269 |
-
|
| 270 |
-
return prompt_embeds, negative_prompt_embeds
|
| 271 |
-
|
| 272 |
-
def check_inputs(
|
| 273 |
-
self,
|
| 274 |
-
prompt,
|
| 275 |
-
negative_prompt,
|
| 276 |
-
height,
|
| 277 |
-
width,
|
| 278 |
-
prompt_embeds=None,
|
| 279 |
-
negative_prompt_embeds=None,
|
| 280 |
-
callback_on_step_end_tensor_inputs=None,
|
| 281 |
-
):
|
| 282 |
-
if height % 16 != 0 or width % 16 != 0:
|
| 283 |
-
raise ValueError(f"`height` and `width` have to be divisible by 16 but are {height} and {width}.")
|
| 284 |
-
|
| 285 |
-
if callback_on_step_end_tensor_inputs is not None and not all(
|
| 286 |
-
k in self._callback_tensor_inputs for k in callback_on_step_end_tensor_inputs
|
| 287 |
-
):
|
| 288 |
-
raise ValueError(
|
| 289 |
-
f"`callback_on_step_end_tensor_inputs` has to be in {self._callback_tensor_inputs}, but found {[k for k in callback_on_step_end_tensor_inputs if k not in self._callback_tensor_inputs]}"
|
| 290 |
-
)
|
| 291 |
-
|
| 292 |
-
if prompt is not None and prompt_embeds is not None:
|
| 293 |
-
raise ValueError(
|
| 294 |
-
f"Cannot forward both `prompt`: {prompt} and `prompt_embeds`: {prompt_embeds}. Please make sure to"
|
| 295 |
-
" only forward one of the two."
|
| 296 |
-
)
|
| 297 |
-
elif negative_prompt is not None and negative_prompt_embeds is not None:
|
| 298 |
-
raise ValueError(
|
| 299 |
-
f"Cannot forward both `negative_prompt`: {negative_prompt} and `negative_prompt_embeds`: {negative_prompt_embeds}. Please make sure to"
|
| 300 |
-
" only forward one of the two."
|
| 301 |
-
)
|
| 302 |
-
elif prompt is None and prompt_embeds is None:
|
| 303 |
-
raise ValueError(
|
| 304 |
-
"Provide either `prompt` or `prompt_embeds`. Cannot leave both `prompt` and `prompt_embeds` undefined."
|
| 305 |
-
)
|
| 306 |
-
elif prompt is not None and (not isinstance(prompt, str) and not isinstance(prompt, list)):
|
| 307 |
-
raise ValueError(f"`prompt` has to be of type `str` or `list` but is {type(prompt)}")
|
| 308 |
-
elif negative_prompt is not None and (
|
| 309 |
-
not isinstance(negative_prompt, str) and not isinstance(negative_prompt, list)
|
| 310 |
-
):
|
| 311 |
-
raise ValueError(f"`negative_prompt` has to be of type `str` or `list` but is {type(negative_prompt)}")
|
| 312 |
-
|
| 313 |
-
def prepare_latents(
|
| 314 |
-
self,
|
| 315 |
-
batch_size: int,
|
| 316 |
-
num_channels_latents: int = 16,
|
| 317 |
-
height: int = 480,
|
| 318 |
-
width: int = 832,
|
| 319 |
-
num_frames: int = 81,
|
| 320 |
-
dtype: Optional[torch.dtype] = None,
|
| 321 |
-
device: Optional[torch.device] = None,
|
| 322 |
-
generator: Optional[Union[torch.Generator, List[torch.Generator]]] = None,
|
| 323 |
-
latents: Optional[torch.Tensor] = None,
|
| 324 |
-
) -> torch.Tensor:
|
| 325 |
-
if latents is not None:
|
| 326 |
-
return latents.to(device=device, dtype=dtype)
|
| 327 |
-
|
| 328 |
-
num_latent_frames = (num_frames - 1) // self.vae_scale_factor_temporal + 1
|
| 329 |
-
shape = (
|
| 330 |
-
batch_size,
|
| 331 |
-
num_channels_latents,
|
| 332 |
-
num_latent_frames,
|
| 333 |
-
int(height) // self.vae_scale_factor_spatial,
|
| 334 |
-
int(width) // self.vae_scale_factor_spatial,
|
| 335 |
-
)
|
| 336 |
-
if isinstance(generator, list) and len(generator) != batch_size:
|
| 337 |
-
raise ValueError(
|
| 338 |
-
f"You have passed a list of generators of length {len(generator)}, but requested an effective batch"
|
| 339 |
-
f" size of {batch_size}. Make sure the batch size matches the length of the generators."
|
| 340 |
-
)
|
| 341 |
-
|
| 342 |
-
latents = randn_tensor(shape, generator=generator, device=device, dtype=dtype)
|
| 343 |
-
return latents
|
| 344 |
-
|
| 345 |
-
@property
|
| 346 |
-
def guidance_scale(self):
|
| 347 |
-
return self._guidance_scale
|
| 348 |
-
|
| 349 |
-
@property
|
| 350 |
-
def do_classifier_free_guidance(self):
|
| 351 |
-
return self._guidance_scale > 1.0
|
| 352 |
-
|
| 353 |
-
@property
|
| 354 |
-
def num_timesteps(self):
|
| 355 |
-
return self._num_timesteps
|
| 356 |
-
|
| 357 |
-
@property
|
| 358 |
-
def current_timestep(self):
|
| 359 |
-
return self._current_timestep
|
| 360 |
-
|
| 361 |
-
@property
|
| 362 |
-
def interrupt(self):
|
| 363 |
-
return self._interrupt
|
| 364 |
-
|
| 365 |
-
@property
|
| 366 |
-
def attention_kwargs(self):
|
| 367 |
-
return self._attention_kwargs
|
| 368 |
-
|
| 369 |
-
@torch.no_grad()
|
| 370 |
-
@replace_example_docstring(EXAMPLE_DOC_STRING)
|
| 371 |
-
def __call__(
|
| 372 |
-
self,
|
| 373 |
-
prompt: Union[str, List[str]] = None,
|
| 374 |
-
negative_prompt: Union[str, List[str]] = None,
|
| 375 |
-
height: int = 480,
|
| 376 |
-
width: int = 832,
|
| 377 |
-
num_frames: int = 81,
|
| 378 |
-
num_inference_steps: int = 50,
|
| 379 |
-
guidance_scale: float = 5.0,
|
| 380 |
-
num_videos_per_prompt: Optional[int] = 1,
|
| 381 |
-
generator: Optional[Union[torch.Generator, List[torch.Generator]]] = None,
|
| 382 |
-
latents: Optional[torch.Tensor] = None,
|
| 383 |
-
prompt_embeds: Optional[torch.Tensor] = None,
|
| 384 |
-
negative_prompt_embeds: Optional[torch.Tensor] = None,
|
| 385 |
-
output_type: Optional[str] = "np",
|
| 386 |
-
return_dict: bool = True,
|
| 387 |
-
attention_kwargs: Optional[Dict[str, Any]] = None,
|
| 388 |
-
callback_on_step_end: Optional[
|
| 389 |
-
Union[Callable[[int, int, Dict], None], PipelineCallback, MultiPipelineCallbacks]
|
| 390 |
-
] = None,
|
| 391 |
-
callback_on_step_end_tensor_inputs: List[str] = ["latents"],
|
| 392 |
-
max_sequence_length: int = 512,
|
| 393 |
-
):
|
| 394 |
-
r"""
|
| 395 |
-
The call function to the pipeline for generation.
|
| 396 |
-
|
| 397 |
-
Args:
|
| 398 |
-
prompt (`str` or `List[str]`, *optional*):
|
| 399 |
-
The prompt or prompts to guide the image generation. If not defined, pass `prompt_embeds` instead.
|
| 400 |
-
negative_prompt (`str` or `List[str]`, *optional*):
|
| 401 |
-
The prompt or prompts to avoid during image generation. If not defined, pass `negative_prompt_embeds`
|
| 402 |
-
instead. Ignored when not using guidance (`guidance_scale` < `1`).
|
| 403 |
-
height (`int`, defaults to `480`):
|
| 404 |
-
The height in pixels of the generated image.
|
| 405 |
-
width (`int`, defaults to `832`):
|
| 406 |
-
The width in pixels of the generated image.
|
| 407 |
-
num_frames (`int`, defaults to `81`):
|
| 408 |
-
The number of frames in the generated video.
|
| 409 |
-
num_inference_steps (`int`, defaults to `50`):
|
| 410 |
-
The number of denoising steps. More denoising steps usually lead to a higher quality image at the
|
| 411 |
-
expense of slower inference.
|
| 412 |
-
guidance_scale (`float`, defaults to `5.0`):
|
| 413 |
-
Guidance scale as defined in [Classifier-Free Diffusion
|
| 414 |
-
Guidance](https://huggingface.co/papers/2207.12598). `guidance_scale` is defined as `w` of equation 2.
|
| 415 |
-
of [Imagen Paper](https://huggingface.co/papers/2205.11487). Guidance scale is enabled by setting
|
| 416 |
-
`guidance_scale > 1`. Higher guidance scale encourages to generate images that are closely linked to
|
| 417 |
-
the text `prompt`, usually at the expense of lower image quality.
|
| 418 |
-
num_videos_per_prompt (`int`, *optional*, defaults to 1):
|
| 419 |
-
The number of images to generate per prompt.
|
| 420 |
-
generator (`torch.Generator` or `List[torch.Generator]`, *optional*):
|
| 421 |
-
A [`torch.Generator`](https://pytorch.org/docs/stable/generated/torch.Generator.html) to make
|
| 422 |
-
generation deterministic.
|
| 423 |
-
latents (`torch.Tensor`, *optional*):
|
| 424 |
-
Pre-generated noisy latents sampled from a Gaussian distribution, to be used as inputs for image
|
| 425 |
-
generation. Can be used to tweak the same generation with different prompts. If not provided, a latents
|
| 426 |
-
tensor is generated by sampling using the supplied random `generator`.
|
| 427 |
-
prompt_embeds (`torch.Tensor`, *optional*):
|
| 428 |
-
Pre-generated text embeddings. Can be used to easily tweak text inputs (prompt weighting). If not
|
| 429 |
-
provided, text embeddings are generated from the `prompt` input argument.
|
| 430 |
-
output_type (`str`, *optional*, defaults to `"np"`):
|
| 431 |
-
The output format of the generated image. Choose between `PIL.Image` or `np.array`.
|
| 432 |
-
return_dict (`bool`, *optional*, defaults to `True`):
|
| 433 |
-
Whether or not to return a [`WanPipelineOutput`] instead of a plain tuple.
|
| 434 |
-
attention_kwargs (`dict`, *optional*):
|
| 435 |
-
A kwargs dictionary that if specified is passed along to the `AttentionProcessor` as defined under
|
| 436 |
-
`self.processor` in
|
| 437 |
-
[diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py).
|
| 438 |
-
callback_on_step_end (`Callable`, `PipelineCallback`, `MultiPipelineCallbacks`, *optional*):
|
| 439 |
-
A function or a subclass of `PipelineCallback` or `MultiPipelineCallbacks` that is called at the end of
|
| 440 |
-
each denoising step during the inference. with the following arguments: `callback_on_step_end(self:
|
| 441 |
-
DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)`. `callback_kwargs` will include a
|
| 442 |
-
list of all tensors as specified by `callback_on_step_end_tensor_inputs`.
|
| 443 |
-
callback_on_step_end_tensor_inputs (`List`, *optional*):
|
| 444 |
-
The list of tensor inputs for the `callback_on_step_end` function. The tensors specified in the list
|
| 445 |
-
will be passed as `callback_kwargs` argument. You will only be able to include variables listed in the
|
| 446 |
-
`._callback_tensor_inputs` attribute of your pipeline class.
|
| 447 |
-
max_sequence_length (`int`, defaults to `512`):
|
| 448 |
-
The maximum sequence length of the text encoder. If the prompt is longer than this, it will be
|
| 449 |
-
truncated. If the prompt is shorter, it will be padded to this length.
|
| 450 |
-
|
| 451 |
-
Examples:
|
| 452 |
-
|
| 453 |
-
Returns:
|
| 454 |
-
[`~WanPipelineOutput`] or `tuple`:
|
| 455 |
-
If `return_dict` is `True`, [`WanPipelineOutput`] is returned, otherwise a `tuple` is returned where
|
| 456 |
-
the first element is a list with the generated images and the second element is a list of `bool`s
|
| 457 |
-
indicating whether the corresponding generated image contains "not-safe-for-work" (nsfw) content.
|
| 458 |
-
"""
|
| 459 |
-
|
| 460 |
-
if isinstance(callback_on_step_end, (PipelineCallback, MultiPipelineCallbacks)):
|
| 461 |
-
callback_on_step_end_tensor_inputs = callback_on_step_end.tensor_inputs
|
| 462 |
-
|
| 463 |
-
# 1. Check inputs. Raise error if not correct
|
| 464 |
-
self.check_inputs(
|
| 465 |
-
prompt,
|
| 466 |
-
negative_prompt,
|
| 467 |
-
height,
|
| 468 |
-
width,
|
| 469 |
-
prompt_embeds,
|
| 470 |
-
negative_prompt_embeds,
|
| 471 |
-
callback_on_step_end_tensor_inputs,
|
| 472 |
-
)
|
| 473 |
-
|
| 474 |
-
if num_frames % self.vae_scale_factor_temporal != 1:
|
| 475 |
-
logger.warning(
|
| 476 |
-
f"`num_frames - 1` has to be divisible by {self.vae_scale_factor_temporal}. Rounding to the nearest number."
|
| 477 |
-
)
|
| 478 |
-
num_frames = num_frames // self.vae_scale_factor_temporal * self.vae_scale_factor_temporal + 1
|
| 479 |
-
num_frames = max(num_frames, 1)
|
| 480 |
-
|
| 481 |
-
self._guidance_scale = guidance_scale
|
| 482 |
-
self._attention_kwargs = attention_kwargs
|
| 483 |
-
self._current_timestep = None
|
| 484 |
-
self._interrupt = False
|
| 485 |
-
|
| 486 |
-
device = self._execution_device
|
| 487 |
-
|
| 488 |
-
# 2. Define call parameters
|
| 489 |
-
if prompt is not None and isinstance(prompt, str):
|
| 490 |
-
batch_size = 1
|
| 491 |
-
elif prompt is not None and isinstance(prompt, list):
|
| 492 |
-
batch_size = len(prompt)
|
| 493 |
-
else:
|
| 494 |
-
batch_size = prompt_embeds.shape[0]
|
| 495 |
-
|
| 496 |
-
# 3. Encode input prompt
|
| 497 |
-
prompt_embeds, negative_prompt_embeds = self.encode_prompt(
|
| 498 |
-
prompt=prompt,
|
| 499 |
-
negative_prompt=negative_prompt,
|
| 500 |
-
do_classifier_free_guidance=self.do_classifier_free_guidance,
|
| 501 |
-
num_videos_per_prompt=num_videos_per_prompt,
|
| 502 |
-
prompt_embeds=prompt_embeds,
|
| 503 |
-
negative_prompt_embeds=negative_prompt_embeds,
|
| 504 |
-
max_sequence_length=max_sequence_length,
|
| 505 |
-
device=device,
|
| 506 |
-
)
|
| 507 |
-
|
| 508 |
-
transformer_dtype = self.transformer.dtype
|
| 509 |
-
prompt_embeds = prompt_embeds.to(transformer_dtype)
|
| 510 |
-
if negative_prompt_embeds is not None:
|
| 511 |
-
negative_prompt_embeds = negative_prompt_embeds.to(transformer_dtype)
|
| 512 |
-
|
| 513 |
-
# 4. Prepare timesteps
|
| 514 |
-
self.scheduler.set_timesteps(num_inference_steps, device=device)
|
| 515 |
-
timesteps = self.scheduler.timesteps
|
| 516 |
-
|
| 517 |
-
# 5. Prepare latent variables
|
| 518 |
-
num_channels_latents = self.transformer.config.in_channels
|
| 519 |
-
latents = self.prepare_latents(
|
| 520 |
-
batch_size * num_videos_per_prompt,
|
| 521 |
-
num_channels_latents,
|
| 522 |
-
height,
|
| 523 |
-
width,
|
| 524 |
-
num_frames,
|
| 525 |
-
torch.float32,
|
| 526 |
-
device,
|
| 527 |
-
generator,
|
| 528 |
-
latents,
|
| 529 |
-
)
|
| 530 |
-
|
| 531 |
-
# 6. Denoising loop
|
| 532 |
-
num_warmup_steps = len(timesteps) - num_inference_steps * self.scheduler.order
|
| 533 |
-
self._num_timesteps = len(timesteps)
|
| 534 |
-
|
| 535 |
-
with self.progress_bar(total=num_inference_steps) as progress_bar:
|
| 536 |
-
for i, t in enumerate(timesteps):
|
| 537 |
-
if self.interrupt:
|
| 538 |
-
continue
|
| 539 |
-
|
| 540 |
-
self._current_timestep = t
|
| 541 |
-
latent_model_input = latents.to(transformer_dtype)
|
| 542 |
-
timestep = t.expand(latents.shape[0])
|
| 543 |
-
for block in self.transformer.blocks:
|
| 544 |
-
if hasattr(block.attn2, "processor"):
|
| 545 |
-
block.attn2.processor.pos = True
|
| 546 |
-
|
| 547 |
-
noise_pred = self.transformer(
|
| 548 |
-
hidden_states=latent_model_input,
|
| 549 |
-
timestep=timestep,
|
| 550 |
-
encoder_hidden_states=prompt_embeds,
|
| 551 |
-
attention_kwargs=attention_kwargs,
|
| 552 |
-
return_dict=False,
|
| 553 |
-
)[0]
|
| 554 |
-
|
| 555 |
-
if self.do_classifier_free_guidance:
|
| 556 |
-
for block in self.transformer.blocks:
|
| 557 |
-
if hasattr(block.attn2, "processor"):
|
| 558 |
-
block.attn2.processor.pos = False
|
| 559 |
-
noise_uncond = self.transformer(
|
| 560 |
-
hidden_states=latent_model_input,
|
| 561 |
-
timestep=timestep,
|
| 562 |
-
encoder_hidden_states=negative_prompt_embeds,
|
| 563 |
-
attention_kwargs=attention_kwargs,
|
| 564 |
-
return_dict=False,
|
| 565 |
-
)[0]
|
| 566 |
-
noise_pred = noise_uncond + guidance_scale * (noise_pred - noise_uncond)
|
| 567 |
-
|
| 568 |
-
# compute the previous noisy sample x_t -> x_t-1
|
| 569 |
-
latents = self.scheduler.step(noise_pred, t, latents, return_dict=False)[0]
|
| 570 |
-
|
| 571 |
-
if callback_on_step_end is not None:
|
| 572 |
-
callback_kwargs = {}
|
| 573 |
-
for k in callback_on_step_end_tensor_inputs:
|
| 574 |
-
callback_kwargs[k] = locals()[k]
|
| 575 |
-
callback_outputs = callback_on_step_end(self, i, t, callback_kwargs)
|
| 576 |
-
|
| 577 |
-
latents = callback_outputs.pop("latents", latents)
|
| 578 |
-
prompt_embeds = callback_outputs.pop("prompt_embeds", prompt_embeds)
|
| 579 |
-
negative_prompt_embeds = callback_outputs.pop("negative_prompt_embeds", negative_prompt_embeds)
|
| 580 |
-
|
| 581 |
-
# call the callback, if provided
|
| 582 |
-
if i == len(timesteps) - 1 or ((i + 1) > num_warmup_steps and (i + 1) % self.scheduler.order == 0):
|
| 583 |
-
progress_bar.update()
|
| 584 |
-
|
| 585 |
-
if XLA_AVAILABLE:
|
| 586 |
-
xm.mark_step()
|
| 587 |
-
|
| 588 |
-
self._current_timestep = None
|
| 589 |
-
|
| 590 |
-
if not output_type == "latent":
|
| 591 |
-
latents = latents.to(self.vae.dtype)
|
| 592 |
-
latents_mean = (
|
| 593 |
-
torch.tensor(self.vae.config.latents_mean)
|
| 594 |
-
.view(1, self.vae.config.z_dim, 1, 1, 1)
|
| 595 |
-
.to(latents.device, latents.dtype)
|
| 596 |
-
)
|
| 597 |
-
latents_std = 1.0 / torch.tensor(self.vae.config.latents_std).view(1, self.vae.config.z_dim, 1, 1, 1).to(
|
| 598 |
-
latents.device, latents.dtype
|
| 599 |
-
)
|
| 600 |
-
latents = latents / latents_std + latents_mean
|
| 601 |
-
video = self.vae.decode(latents, return_dict=False)[0]
|
| 602 |
-
video = self.video_processor.postprocess_video(video, output_type=output_type)
|
| 603 |
-
else:
|
| 604 |
-
video = latents
|
| 605 |
-
|
| 606 |
-
# Offload all models
|
| 607 |
-
self.maybe_free_model_hooks()
|
| 608 |
-
|
| 609 |
-
if not return_dict:
|
| 610 |
-
return (video,)
|
| 611 |
-
|
| 612 |
-
return WanPipelineOutput(frames=video)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VSF/comfyui/custom_nodes/value_sign_flip/src/value_sign_flip/processor.py
DELETED
|
@@ -1,112 +0,0 @@
|
|
| 1 |
-
|
| 2 |
-
import torch
|
| 3 |
-
import torch.nn.functional as F
|
| 4 |
-
from typing import Optional
|
| 5 |
-
from diffusers.models.attention_processor import Attention
|
| 6 |
-
|
| 7 |
-
class WanAttnProcessor2_0:
|
| 8 |
-
def __init__(self, scale=4, attn_mask=None, neg_prompt_length=0):
|
| 9 |
-
if not hasattr(F, "scaled_dot_product_attention"):
|
| 10 |
-
raise ImportError("WanAttnProcessor2_0 requires PyTorch 2.0. To use it, please upgrade PyTorch to 2.0.")
|
| 11 |
-
self.attn_mask = attn_mask
|
| 12 |
-
self.neg_prompt_length = neg_prompt_length
|
| 13 |
-
self.scale = scale
|
| 14 |
-
|
| 15 |
-
def __call__(
|
| 16 |
-
self,
|
| 17 |
-
attn: Attention,
|
| 18 |
-
hidden_states: torch.Tensor,
|
| 19 |
-
encoder_hidden_states: Optional[torch.Tensor] = None,
|
| 20 |
-
attention_mask: Optional[torch.Tensor] = None,
|
| 21 |
-
rotary_emb: Optional[torch.Tensor] = None,
|
| 22 |
-
) -> torch.Tensor:
|
| 23 |
-
encoder_hidden_states_img = None
|
| 24 |
-
if attn.add_k_proj is not None:
|
| 25 |
-
# 512 is the context length of the text encoder, hardcoded for now
|
| 26 |
-
image_context_length = encoder_hidden_states.shape[1] - 512
|
| 27 |
-
encoder_hidden_states_img = encoder_hidden_states[:, :image_context_length]
|
| 28 |
-
encoder_hidden_states = encoder_hidden_states[:, image_context_length:]
|
| 29 |
-
cross_attn = False
|
| 30 |
-
if encoder_hidden_states is None:
|
| 31 |
-
encoder_hidden_states = hidden_states
|
| 32 |
-
query = attn.to_q(hidden_states)
|
| 33 |
-
key = attn.to_k(encoder_hidden_states)
|
| 34 |
-
value = attn.to_v(encoder_hidden_states)
|
| 35 |
-
else:
|
| 36 |
-
query = attn.to_q(hidden_states)
|
| 37 |
-
key = attn.to_k(encoder_hidden_states)
|
| 38 |
-
value = attn.to_v(encoder_hidden_states)
|
| 39 |
-
cross_attn = True
|
| 40 |
-
|
| 41 |
-
if attn.norm_q is not None:
|
| 42 |
-
query = attn.norm_q(query)
|
| 43 |
-
if attn.norm_k is not None:
|
| 44 |
-
key = attn.norm_k(key)
|
| 45 |
-
|
| 46 |
-
query = query.unflatten(2, (attn.heads, -1)).transpose(1, 2)
|
| 47 |
-
key = key.unflatten(2, (attn.heads, -1)).transpose(1, 2)
|
| 48 |
-
value = value.unflatten(2, (attn.heads, -1)).transpose(1, 2)
|
| 49 |
-
# print(self.pos)
|
| 50 |
-
|
| 51 |
-
if cross_attn and self.pos:
|
| 52 |
-
# print(value.shape, self.neg_prompt_length)
|
| 53 |
-
value[:,:,-self.neg_prompt_length:] *= -self.scale
|
| 54 |
-
|
| 55 |
-
if rotary_emb is not None:
|
| 56 |
-
def apply_rotary_emb(
|
| 57 |
-
hidden_states: torch.Tensor,
|
| 58 |
-
freqs_cos: torch.Tensor,
|
| 59 |
-
freqs_sin: torch.Tensor,
|
| 60 |
-
):
|
| 61 |
-
x = hidden_states.view(*hidden_states.shape[:-1], -1, 2)
|
| 62 |
-
x1, x2 = x[..., 0], x[..., 1]
|
| 63 |
-
cos = freqs_cos[..., 0::2]
|
| 64 |
-
sin = freqs_sin[..., 1::2]
|
| 65 |
-
out = torch.empty_like(hidden_states)
|
| 66 |
-
out[..., 0::2] = x1 * cos - x2 * sin
|
| 67 |
-
out[..., 1::2] = x1 * sin + x2 * cos
|
| 68 |
-
return out.type_as(hidden_states)
|
| 69 |
-
|
| 70 |
-
query = apply_rotary_emb(query, *rotary_emb)
|
| 71 |
-
key = apply_rotary_emb(key, *rotary_emb)
|
| 72 |
-
|
| 73 |
-
# I2V task
|
| 74 |
-
hidden_states_img = None
|
| 75 |
-
if encoder_hidden_states_img is not None:
|
| 76 |
-
key_img = attn.add_k_proj(encoder_hidden_states_img)
|
| 77 |
-
key_img = attn.norm_added_k(key_img)
|
| 78 |
-
value_img = attn.add_v_proj(encoder_hidden_states_img)
|
| 79 |
-
|
| 80 |
-
key_img = key_img.unflatten(2, (attn.heads, -1)).transpose(1, 2)
|
| 81 |
-
value_img = value_img.unflatten(2, (attn.heads, -1)).transpose(1, 2)
|
| 82 |
-
print(query.shape, key_img.shape, value_img.shape)
|
| 83 |
-
hidden_states_img = F.scaled_dot_product_attention(
|
| 84 |
-
query, key_img, value_img, attn_mask=None, dropout_p=0.0, is_causal=False
|
| 85 |
-
)
|
| 86 |
-
hidden_states_img = hidden_states_img.transpose(1, 2).flatten(2, 3)
|
| 87 |
-
hidden_states_img = hidden_states_img.type_as(query)
|
| 88 |
-
if self.attn_mask is not None:
|
| 89 |
-
self.attn_mask = self.attn_mask.to(query.dtype)
|
| 90 |
-
if not self.pos:
|
| 91 |
-
hidden_states = F.scaled_dot_product_attention(
|
| 92 |
-
query, key, value, dropout_p=0.0, is_causal=False
|
| 93 |
-
)
|
| 94 |
-
else:
|
| 95 |
-
hidden_states = F.scaled_dot_product_attention(
|
| 96 |
-
query, key, value, attn_mask=self.attn_mask, dropout_p=0.0, is_causal=False
|
| 97 |
-
)
|
| 98 |
-
# if cross_attn:
|
| 99 |
-
# # print(hidden_states.shape)
|
| 100 |
-
# hidden_states_norm = torch.norm(hidden_states, dim=-1, keepdim=True)
|
| 101 |
-
# new_norm = torch.where(hidden_states_norm > max_norm * 2, max_norm * 2, hidden_states_norm)
|
| 102 |
-
# hidden_states = hidden_states * (new_norm / hidden_states_norm)
|
| 103 |
-
|
| 104 |
-
hidden_states = hidden_states.transpose(1, 2).flatten(2, 3)
|
| 105 |
-
hidden_states = hidden_states.type_as(query)
|
| 106 |
-
|
| 107 |
-
if hidden_states_img is not None:
|
| 108 |
-
hidden_states = hidden_states + hidden_states_img
|
| 109 |
-
|
| 110 |
-
hidden_states = attn.to_out[0](hidden_states)
|
| 111 |
-
hidden_states = attn.to_out[1](hidden_states)
|
| 112 |
-
return hidden_states
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VSF/comfyui/custom_nodes/value_sign_flip/tests/__init__.py
DELETED
|
@@ -1 +0,0 @@
|
|
| 1 |
-
"""Unit test package for value_sign_flip."""
|
|
|
|
|
|
VSF/comfyui/custom_nodes/value_sign_flip/tests/conftest.py
DELETED
|
@@ -1,6 +0,0 @@
|
|
| 1 |
-
import os
|
| 2 |
-
import sys
|
| 3 |
-
|
| 4 |
-
# Add the project root directory to Python path
|
| 5 |
-
# This allows the tests to import the project
|
| 6 |
-
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VSF/comfyui/custom_nodes/value_sign_flip/tests/pytest.ini
DELETED
|
@@ -1,4 +0,0 @@
|
|
| 1 |
-
[pytest]
|
| 2 |
-
testpaths = . # Run tests in the current directory
|
| 3 |
-
python_files = test_*.py # Run tests in files that start with "test_"
|
| 4 |
-
norecursedirs = .. # Don't run tests in the parent directory
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VSF/comfyui/custom_nodes/value_sign_flip/tests/test_value_sign_flip.py
DELETED
|
@@ -1,21 +0,0 @@
|
|
| 1 |
-
#!/usr/bin/env python
|
| 2 |
-
|
| 3 |
-
"""Tests for `value_sign_flip` package."""
|
| 4 |
-
|
| 5 |
-
import pytest
|
| 6 |
-
from src.value_sign_flip.nodes import Example
|
| 7 |
-
|
| 8 |
-
@pytest.fixture
|
| 9 |
-
def example_node():
|
| 10 |
-
"""Fixture to create an Example node instance."""
|
| 11 |
-
return Example()
|
| 12 |
-
|
| 13 |
-
def test_example_node_initialization(example_node):
|
| 14 |
-
"""Test that the node can be instantiated."""
|
| 15 |
-
assert isinstance(example_node, Example)
|
| 16 |
-
|
| 17 |
-
def test_return_types():
|
| 18 |
-
"""Test the node's metadata."""
|
| 19 |
-
assert Example.RETURN_TYPES == ("IMAGE",)
|
| 20 |
-
assert Example.FUNCTION == "test"
|
| 21 |
-
assert Example.CATEGORY == "Example"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VSF/demo.ipynb
DELETED
|
The diff for this file is too large to render.
See raw diff
|
|
|
VSF/experimentstest_nag_original.py
DELETED
|
@@ -1,58 +0,0 @@
|
|
| 1 |
-
import torch
|
| 2 |
-
import sys
|
| 3 |
-
from nag import NAGStableDiffusion3Pipeline
|
| 4 |
-
import json
|
| 5 |
-
import judge
|
| 6 |
-
import wandb
|
| 7 |
-
import numpy as np
|
| 8 |
-
import os
|
| 9 |
-
import argparse
|
| 10 |
-
|
| 11 |
-
parser = argparse.ArgumentParser(description="Run NAG sweep")
|
| 12 |
-
parser.add_argument("--eval_later", action="store_true", help="Run evaluation later")
|
| 13 |
-
args = parser.parse_args()
|
| 14 |
-
|
| 15 |
-
model_id = "stabilityai/stable-diffusion-3.5-large-turbo"
|
| 16 |
-
pipe = NAGStableDiffusion3Pipeline.from_pretrained(
|
| 17 |
-
model_id,
|
| 18 |
-
torch_dtype=torch.bfloat16,
|
| 19 |
-
)
|
| 20 |
-
pipe.to("cuda")
|
| 21 |
-
|
| 22 |
-
with open("../prompts/test_prompts.json.new", "r") as f:
|
| 23 |
-
dev_prompts = json.load(f)
|
| 24 |
-
|
| 25 |
-
def run(nag_scale, nag_alpha, nag_tau):
|
| 26 |
-
wandb.init(project="nag-sweep")
|
| 27 |
-
score = np.array([0, 0], dtype=int)
|
| 28 |
-
total = 0
|
| 29 |
-
for seed in range(1):
|
| 30 |
-
for i in dev_prompts:
|
| 31 |
-
image = pipe(
|
| 32 |
-
i["prompt"],
|
| 33 |
-
nag_negative_prompt=i["missing_element"],
|
| 34 |
-
guidance_scale=0.,
|
| 35 |
-
nag_scale=nag_scale,
|
| 36 |
-
nag_alpha=nag_alpha,
|
| 37 |
-
nag_tau=nag_tau,
|
| 38 |
-
num_inference_steps=8,
|
| 39 |
-
generator=torch.Generator("cuda").manual_seed(seed),
|
| 40 |
-
).images[0]
|
| 41 |
-
if not args.eval_later:
|
| 42 |
-
delta = judge.vqa(image, i["question_1"], i["question_2"])
|
| 43 |
-
score += delta
|
| 44 |
-
total += 1
|
| 45 |
-
# show the score as text on the image using PIL
|
| 46 |
-
from PIL import ImageDraw, ImageFont
|
| 47 |
-
draw = ImageDraw.Draw(image)
|
| 48 |
-
font = ImageFont.truetype("DejaVuSans.ttf", 50)
|
| 49 |
-
text = f"{delta}, -: {i['missing_element']}"
|
| 50 |
-
draw.text((10, 10), text, fill="white", font=font)
|
| 51 |
-
text = f"{delta[0]}, {delta[1]}, -: {i['missing_element']}"
|
| 52 |
-
draw.text((10, 10), text, fill="white")
|
| 53 |
-
wandb.log({"pos_score":score[0]/total, "neg_score":score[1]/total, "img": wandb.Image(image, caption=f"+: {i['prompt']}\n -: {i['missing_element']}")})
|
| 54 |
-
else:
|
| 55 |
-
wandb.log({"img": wandb.Image(image, caption=f"+: {i['prompt']}\n -: {i['missing_element']}")})
|
| 56 |
-
|
| 57 |
-
# run(10, 0.5, 5)
|
| 58 |
-
run(4, 0.125, 2.5)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VSF/flux_demo.py
DELETED
|
@@ -1,22 +0,0 @@
|
|
| 1 |
-
import torch
|
| 2 |
-
from src.flux_pipeline import VSFFluxPipeline
|
| 3 |
-
import numpy as np
|
| 4 |
-
import imageio
|
| 5 |
-
|
| 6 |
-
pipe = VSFFluxPipeline.from_pretrained("black-forest-labs/FLUX.1-schnell", torch_dtype=torch.bfloat16).to("cuda")
|
| 7 |
-
|
| 8 |
-
prompt = "a canadian winter landscape in the style of a 19th century painting"
|
| 9 |
-
images = []
|
| 10 |
-
for scale in np.arange(1, 9, 0.1):
|
| 11 |
-
image = pipe(
|
| 12 |
-
prompt,
|
| 13 |
-
negative_prompt="snow on the ground",
|
| 14 |
-
guidance_scale=0.0,
|
| 15 |
-
num_inference_steps=8,
|
| 16 |
-
max_sequence_length=256,
|
| 17 |
-
scale=scale,
|
| 18 |
-
generator=torch.Generator("cpu").manual_seed(19)
|
| 19 |
-
).images[0]
|
| 20 |
-
images.append(image)
|
| 21 |
-
|
| 22 |
-
imageio.mimsave("flux_demo.mp4", images, fps=4)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VSF/nasa/__init__.py
DELETED
|
File without changes
|
VSF/nasa/main.py
DELETED
|
@@ -1,20 +0,0 @@
|
|
| 1 |
-
import torch
|
| 2 |
-
from pipeline import NASAStableDiffusion3Pipeline
|
| 3 |
-
|
| 4 |
-
model_id = "stabilityai/stable-diffusion-3.5-large-turbo"
|
| 5 |
-
pipe = NASAStableDiffusion3Pipeline.from_pretrained(
|
| 6 |
-
model_id,
|
| 7 |
-
torch_dtype=torch.bfloat16,
|
| 8 |
-
)
|
| 9 |
-
pipe.to("cuda")
|
| 10 |
-
|
| 11 |
-
prompt = "a bike by the wall, during sunset, in the style of a 1980s photograph, high quality, detailed, realistic"
|
| 12 |
-
nag_negative_prompt = "wheels"
|
| 13 |
-
|
| 14 |
-
image = pipe(
|
| 15 |
-
prompt,
|
| 16 |
-
nag_negative_prompt=nag_negative_prompt,
|
| 17 |
-
guidance_scale=0.,
|
| 18 |
-
nag_scale=0.25,
|
| 19 |
-
num_inference_steps=8,
|
| 20 |
-
).images[0].save("output.png")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VSF/nasa/normalization.py
DELETED
|
@@ -1,54 +0,0 @@
|
|
| 1 |
-
from typing import Optional, Tuple
|
| 2 |
-
|
| 3 |
-
import torch
|
| 4 |
-
from diffusers.models.normalization import AdaLayerNorm, AdaLayerNormContinuous, AdaLayerNormZero, SD35AdaLayerNormZeroX
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
class TruncAdaLayerNorm(AdaLayerNorm):
|
| 8 |
-
def forward(
|
| 9 |
-
self, x: torch.Tensor, timestep: Optional[torch.Tensor] = None, temb: Optional[torch.Tensor] = None
|
| 10 |
-
) -> torch.Tensor:
|
| 11 |
-
batch_size = x.shape[0]
|
| 12 |
-
return self.forward_old(
|
| 13 |
-
x,
|
| 14 |
-
temb[:batch_size] if temb is not None else None,
|
| 15 |
-
)
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
class TruncAdaLayerNormContinuous(AdaLayerNormContinuous):
|
| 19 |
-
def forward(self, x: torch.Tensor, conditioning_embedding: torch.Tensor) -> torch.Tensor:
|
| 20 |
-
batch_size = x.shape[0]
|
| 21 |
-
return self.forward_old(x, conditioning_embedding[:batch_size])
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
class TruncAdaLayerNormZero(AdaLayerNormZero):
|
| 25 |
-
def forward(
|
| 26 |
-
self,
|
| 27 |
-
x: torch.Tensor,
|
| 28 |
-
timestep: Optional[torch.Tensor] = None,
|
| 29 |
-
class_labels: Optional[torch.LongTensor] = None,
|
| 30 |
-
hidden_dtype: Optional[torch.dtype] = None,
|
| 31 |
-
emb: Optional[torch.Tensor] = None,
|
| 32 |
-
) -> Tuple[torch.Tensor, torch.Tensor, torch.Tensor, torch.Tensor, torch.Tensor]:
|
| 33 |
-
batch_size = x.shape[0]
|
| 34 |
-
return self.forward_old(
|
| 35 |
-
x,
|
| 36 |
-
timestep[:batch_size] if timestep is not None else None,
|
| 37 |
-
class_labels[:batch_size] if class_labels is not None else None,
|
| 38 |
-
hidden_dtype,
|
| 39 |
-
emb[:batch_size] if emb is not None else None,
|
| 40 |
-
)
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
class TruncSD35AdaLayerNormZeroX(SD35AdaLayerNormZeroX):
|
| 44 |
-
def forward(
|
| 45 |
-
self,
|
| 46 |
-
hidden_states: torch.Tensor,
|
| 47 |
-
emb: Optional[torch.Tensor] = None,
|
| 48 |
-
) -> Tuple[torch.Tensor, ...]:
|
| 49 |
-
batch_size = hidden_states.shape[0]
|
| 50 |
-
return self.forward_old(
|
| 51 |
-
hidden_states,
|
| 52 |
-
emb[:batch_size] if emb is not None else None,
|
| 53 |
-
)
|
| 54 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VSF/nasa/processor.py
DELETED
|
@@ -1,134 +0,0 @@
|
|
| 1 |
-
from typing import Optional
|
| 2 |
-
|
| 3 |
-
import torch
|
| 4 |
-
import torch.nn.functional as F
|
| 5 |
-
|
| 6 |
-
from diffusers.utils import deprecate
|
| 7 |
-
from diffusers.models.attention_processor import Attention
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
class NAGJointAttnProcessor2_0:
|
| 11 |
-
def __init__(self, nag_scale: float = 1.0, nag_tau: float = 2.5, nag_alpha:float = 0.125):
|
| 12 |
-
if not hasattr(F, "scaled_dot_product_attention"):
|
| 13 |
-
raise ImportError("AttnProcessor2_0 requires PyTorch 2.0, to use it, please upgrade PyTorch to 2.0.")
|
| 14 |
-
self.nag_scale = nag_scale
|
| 15 |
-
self.nag_tau = nag_tau
|
| 16 |
-
self.nag_alpha = nag_alpha
|
| 17 |
-
|
| 18 |
-
def __call__(
|
| 19 |
-
self,
|
| 20 |
-
attn: Attention,
|
| 21 |
-
hidden_states: torch.FloatTensor,
|
| 22 |
-
encoder_hidden_states: torch.FloatTensor = None,
|
| 23 |
-
attention_mask: Optional[torch.FloatTensor] = None,
|
| 24 |
-
*args,
|
| 25 |
-
**kwargs,
|
| 26 |
-
) -> torch.FloatTensor:
|
| 27 |
-
residual = hidden_states
|
| 28 |
-
|
| 29 |
-
batch_size = hidden_states.shape[0]
|
| 30 |
-
|
| 31 |
-
apply_guidance = self.nag_scale > 0 and encoder_hidden_states is not None
|
| 32 |
-
if apply_guidance:
|
| 33 |
-
origin_batch_size = len(encoder_hidden_states) - batch_size
|
| 34 |
-
assert len(encoder_hidden_states) / origin_batch_size in [2, 3, 4]
|
| 35 |
-
|
| 36 |
-
# `sample` projections.
|
| 37 |
-
query = attn.to_q(hidden_states)
|
| 38 |
-
key = attn.to_k(hidden_states)
|
| 39 |
-
value = attn.to_v(hidden_states)
|
| 40 |
-
|
| 41 |
-
inner_dim = key.shape[-1]
|
| 42 |
-
head_dim = inner_dim // attn.heads
|
| 43 |
-
|
| 44 |
-
query = query.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2)
|
| 45 |
-
key = key.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2)
|
| 46 |
-
value = value.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2)
|
| 47 |
-
|
| 48 |
-
if attn.norm_q is not None:
|
| 49 |
-
query = attn.norm_q(query)
|
| 50 |
-
if attn.norm_k is not None:
|
| 51 |
-
key = attn.norm_k(key)
|
| 52 |
-
|
| 53 |
-
if apply_guidance:
|
| 54 |
-
batch_size += origin_batch_size
|
| 55 |
-
if batch_size == 2 * origin_batch_size:
|
| 56 |
-
query = query.tile(2, 1, 1, 1)
|
| 57 |
-
key = key.tile(2, 1, 1, 1)
|
| 58 |
-
value = value.tile(2, 1, 1, 1)
|
| 59 |
-
else:
|
| 60 |
-
query = torch.cat([query, query[origin_batch_size:2 * origin_batch_size]], dim=0)
|
| 61 |
-
key = torch.cat([key, key[origin_batch_size:2 * origin_batch_size]], dim=0)
|
| 62 |
-
value = torch.cat([value, value[origin_batch_size:2 * origin_batch_size]], dim=0)
|
| 63 |
-
|
| 64 |
-
# `context` projections.
|
| 65 |
-
if encoder_hidden_states is not None:
|
| 66 |
-
encoder_hidden_states_query_proj = attn.add_q_proj(encoder_hidden_states)
|
| 67 |
-
encoder_hidden_states_key_proj = attn.add_k_proj(encoder_hidden_states)
|
| 68 |
-
encoder_hidden_states_value_proj = attn.add_v_proj(encoder_hidden_states)
|
| 69 |
-
|
| 70 |
-
encoder_hidden_states_query_proj = encoder_hidden_states_query_proj.view(
|
| 71 |
-
batch_size, -1, attn.heads, head_dim
|
| 72 |
-
).transpose(1, 2)
|
| 73 |
-
encoder_hidden_states_key_proj = encoder_hidden_states_key_proj.view(
|
| 74 |
-
batch_size, -1, attn.heads, head_dim
|
| 75 |
-
).transpose(1, 2)
|
| 76 |
-
encoder_hidden_states_value_proj = encoder_hidden_states_value_proj.view(
|
| 77 |
-
batch_size, -1, attn.heads, head_dim
|
| 78 |
-
).transpose(1, 2)
|
| 79 |
-
|
| 80 |
-
if attn.norm_added_q is not None:
|
| 81 |
-
encoder_hidden_states_query_proj = attn.norm_added_q(encoder_hidden_states_query_proj)
|
| 82 |
-
if attn.norm_added_k is not None:
|
| 83 |
-
encoder_hidden_states_key_proj = attn.norm_added_k(encoder_hidden_states_key_proj)
|
| 84 |
-
|
| 85 |
-
query = torch.cat([query, encoder_hidden_states_query_proj], dim=2)
|
| 86 |
-
key = torch.cat([key, encoder_hidden_states_key_proj], dim=2)
|
| 87 |
-
value = torch.cat([value, encoder_hidden_states_value_proj], dim=2)
|
| 88 |
-
|
| 89 |
-
hidden_states = F.scaled_dot_product_attention(query, key, value, dropout_p=0.0, is_causal=False)
|
| 90 |
-
hidden_states = hidden_states.transpose(1, 2).reshape(batch_size, -1, attn.heads * head_dim)
|
| 91 |
-
hidden_states = hidden_states.to(query.dtype)
|
| 92 |
-
|
| 93 |
-
if encoder_hidden_states is not None:
|
| 94 |
-
# Split the attention outputs.
|
| 95 |
-
hidden_states, encoder_hidden_states = (
|
| 96 |
-
hidden_states[:, : residual.shape[1]],
|
| 97 |
-
hidden_states[:, residual.shape[1] :],
|
| 98 |
-
)
|
| 99 |
-
if not attn.context_pre_only:
|
| 100 |
-
encoder_hidden_states = attn.to_add_out(encoder_hidden_states)
|
| 101 |
-
|
| 102 |
-
if apply_guidance:
|
| 103 |
-
hidden_states_negative = hidden_states[-origin_batch_size:]
|
| 104 |
-
if batch_size == 2 * origin_batch_size:
|
| 105 |
-
hidden_states_positive = hidden_states[:origin_batch_size]
|
| 106 |
-
else:
|
| 107 |
-
hidden_states_positive = hidden_states[origin_batch_size:2 * origin_batch_size]
|
| 108 |
-
|
| 109 |
-
hidden_states_guidance = hidden_states_positive - hidden_states_negative * self.nag_scale
|
| 110 |
-
# norm_positive = torch.norm(hidden_states_positive, p=1, dim=-1, keepdim=True).expand(*hidden_states_positive.shape)
|
| 111 |
-
# norm_guidance = torch.norm(hidden_states_guidance, p=1, dim=-1, keepdim=True).expand(*hidden_states_guidance.shape)
|
| 112 |
-
|
| 113 |
-
# scale = norm_guidance / norm_positive
|
| 114 |
-
# hidden_states_guidance = hidden_states_guidance * torch.minimum(scale, scale.new_ones(1) * self.nag_tau) / scale
|
| 115 |
-
|
| 116 |
-
# hidden_states_guidance = hidden_states_guidance * self.nag_alpha + hidden_states_positive * (1 - self.nag_alpha)
|
| 117 |
-
|
| 118 |
-
if batch_size == 2 * origin_batch_size:
|
| 119 |
-
hidden_states = hidden_states_guidance
|
| 120 |
-
elif batch_size == 3 * origin_batch_size:
|
| 121 |
-
hidden_states = torch.cat((hidden_states[:origin_batch_size], hidden_states_guidance), dim=0)
|
| 122 |
-
elif batch_size == 4 * origin_batch_size:
|
| 123 |
-
hidden_states = torch.cat((hidden_states[:origin_batch_size], hidden_states_guidance, hidden_states[2 * origin_batch_size:3 * origin_batch_size]), dim=0)
|
| 124 |
-
|
| 125 |
-
# linear proj
|
| 126 |
-
hidden_states = attn.to_out[0](hidden_states)
|
| 127 |
-
# dropout
|
| 128 |
-
hidden_states = attn.to_out[1](hidden_states)
|
| 129 |
-
|
| 130 |
-
if encoder_hidden_states is not None:
|
| 131 |
-
return hidden_states, encoder_hidden_states
|
| 132 |
-
else:
|
| 133 |
-
return hidden_states
|
| 134 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VSF/prompts/.ipynb_checkpoints/test_prompt-checkpoint.json
DELETED
|
@@ -1,1203 +0,0 @@
|
|
| 1 |
-
[
|
| 2 |
-
{
|
| 3 |
-
"prompt": "A sleek white sailboat drifting on calm azure waters, its tall mast rising plainly into the sky.",
|
| 4 |
-
"missing_element": "sails",
|
| 5 |
-
"question_1": "Is the image showing a sailboat, could be either with or without sails",
|
| 6 |
-
"question_2": "Are the sails missing"
|
| 7 |
-
},
|
| 8 |
-
{
|
| 9 |
-
"prompt": "A vintage red bicycle leaning against a brick wall, its pedals leading back to a solitary rear gear.",
|
| 10 |
-
"missing_element": "chain",
|
| 11 |
-
"question_1": "Is the image showing a bicycle, could be either with or without a chain",
|
| 12 |
-
"question_2": "Is the chain missing"
|
| 13 |
-
},
|
| 14 |
-
{
|
| 15 |
-
"prompt": "A short-haired gray cat sitting alert on a windowsill, its cheeks unusually smooth beneath attentive eyes.",
|
| 16 |
-
"missing_element": "whiskers",
|
| 17 |
-
"question_1": "Is the image showing a cat, could be either with or without whiskers",
|
| 18 |
-
"question_2": "Are the whiskers missing"
|
| 19 |
-
},
|
| 20 |
-
{
|
| 21 |
-
"prompt": "An ancient stone castle atop a grassy hill, the entrance arch yawning openly into the sunlit courtyard.",
|
| 22 |
-
"missing_element": "gates",
|
| 23 |
-
"question_1": "Is the image showing a castle, could be either with or without gates",
|
| 24 |
-
"question_2": "Are the gates missing"
|
| 25 |
-
},
|
| 26 |
-
{
|
| 27 |
-
"prompt": "A brightly colored hot-air balloon inflated at dawn, long tethers dangling toward the misty field below.",
|
| 28 |
-
"missing_element": "basket",
|
| 29 |
-
"question_1": "Is the image showing a hot-air balloon, could be either with or without a basket",
|
| 30 |
-
"question_2": "Is the basket missing"
|
| 31 |
-
},
|
| 32 |
-
{
|
| 33 |
-
"prompt": "A soft-skinned turtle crawling along a sandy shoreline, its limbs and head fully exposed under morning light.",
|
| 34 |
-
"missing_element": "shell",
|
| 35 |
-
"question_1": "Is the image showing a turtle, could be either with or without a shell",
|
| 36 |
-
"question_2": "Is the shell missing"
|
| 37 |
-
},
|
| 38 |
-
{
|
| 39 |
-
"prompt": "A sleek silver train resting at the station platform, its undercarriage hovering just above the rails.",
|
| 40 |
-
"missing_element": "wheels",
|
| 41 |
-
"question_1": "Is the image showing a train, could be either with or without wheels",
|
| 42 |
-
"question_2": "Are the wheels missing"
|
| 43 |
-
},
|
| 44 |
-
{
|
| 45 |
-
"prompt": "A pair of modern black-framed eyeglasses placed on a glossy table, the frames entirely empty inside.",
|
| 46 |
-
"missing_element": "lenses",
|
| 47 |
-
"question_1": "Is the image showing eyeglasses, could be either with or without lenses",
|
| 48 |
-
"question_2": "Are the lenses missing"
|
| 49 |
-
},
|
| 50 |
-
{
|
| 51 |
-
"prompt": "An elegant fountain pen lies uncapped on parchment, its polished grip narrowing to a hollow opening.",
|
| 52 |
-
"missing_element": "nib",
|
| 53 |
-
"question_1": "Is the image showing a fountain pen, could be either with or without a nib",
|
| 54 |
-
"question_2": "Is the nib missing"
|
| 55 |
-
},
|
| 56 |
-
{
|
| 57 |
-
"prompt": "A collapsed metal umbrella frame resting against a café chair, slender ribs splayed like spokes.",
|
| 58 |
-
"missing_element": "canopy",
|
| 59 |
-
"question_1": "Is the image showing an umbrella, could be either with or without a canopy",
|
| 60 |
-
"question_2": "Is the canopy missing"
|
| 61 |
-
},
|
| 62 |
-
{
|
| 63 |
-
"prompt": "An elongated airplane fuselage parked on the tarmac, twin engines hugging its smooth sides under cloudy skies.",
|
| 64 |
-
"missing_element": "wings",
|
| 65 |
-
"question_1": "Is the image showing an airplane, could be either with or without wings",
|
| 66 |
-
"question_2": "Are the wings missing"
|
| 67 |
-
},
|
| 68 |
-
{
|
| 69 |
-
"prompt": "A brass desk lamp arcs elegantly over an open book, its socket empty save for threaded metal.",
|
| 70 |
-
"missing_element": "bulb",
|
| 71 |
-
"question_1": "Is the image showing a desk lamp, could be either with or without a bulb",
|
| 72 |
-
"question_2": "Is the bulb missing"
|
| 73 |
-
},
|
| 74 |
-
{
|
| 75 |
-
"prompt": "A sunburst electric guitar body hanging on a studio wall, pickups and bridge gleaming under soft spotlights.",
|
| 76 |
-
"missing_element": "neck",
|
| 77 |
-
"question_1": "Is the image showing an electric guitar, could be either with or without a neck",
|
| 78 |
-
"question_2": "Is the neck missing"
|
| 79 |
-
},
|
| 80 |
-
{
|
| 81 |
-
"prompt": "A streamlined silver fish gliding through crystal water, its sleek profile unbroken by any protrusions.",
|
| 82 |
-
"missing_element": "fins",
|
| 83 |
-
"question_1": "Is the image showing a fish, could be either with or without fins",
|
| 84 |
-
"question_2": "Are the fins missing"
|
| 85 |
-
},
|
| 86 |
-
{
|
| 87 |
-
"prompt": "A quaint brick cottage sitting in a meadow, wooden rafters exposed beneath a clear blue sky.",
|
| 88 |
-
"missing_element": "roof",
|
| 89 |
-
"question_1": "Is the image showing a cottage, could be either with or without a roof",
|
| 90 |
-
"question_2": "Is the roof missing"
|
| 91 |
-
},
|
| 92 |
-
{
|
| 93 |
-
"prompt": "A vintage convertible displayed at a classic-car show, the dashboard stretching unobstructed toward the shining hood.",
|
| 94 |
-
"missing_element": "windshield",
|
| 95 |
-
"question_1": "Is the image showing a car, could be either with or without a windshield",
|
| 96 |
-
"question_2": "Is the windshield missing"
|
| 97 |
-
},
|
| 98 |
-
{
|
| 99 |
-
"prompt": "A mechanical keyboard lit by soft rainbow LEDs, a noticeable gap divides the bottom row of keys.",
|
| 100 |
-
"missing_element": "spacebar",
|
| 101 |
-
"question_1": "Is the image showing a keyboard, could be either with or without a spacebar",
|
| 102 |
-
"question_2": "Is the spacebar missing"
|
| 103 |
-
},
|
| 104 |
-
{
|
| 105 |
-
"prompt": "A wide-eyed owl perched on a branch under moonlight, smooth skin visible across its rounded body.",
|
| 106 |
-
"missing_element": "feathers",
|
| 107 |
-
"question_1": "Is the image showing an owl, could be either with or without feathers",
|
| 108 |
-
"question_2": "Are the feathers missing"
|
| 109 |
-
},
|
| 110 |
-
{
|
| 111 |
-
"prompt": "A leather-bound hardcover lies open on a wooden desk, the interior revealing only a hollow rectangular frame.",
|
| 112 |
-
"missing_element": "pages",
|
| 113 |
-
"question_1": "Is the image showing a book, could be either with or without pages",
|
| 114 |
-
"question_2": "Are the pages missing"
|
| 115 |
-
},
|
| 116 |
-
{
|
| 117 |
-
"prompt": "A tall white lighthouse stands on a stormy cliff, its lantern room dark and empty against gathering clouds.",
|
| 118 |
-
"missing_element": "lamp",
|
| 119 |
-
"question_1": "Is the image showing a lighthouse, could be either with or without a lamp",
|
| 120 |
-
"question_2": "Is the lamp missing"
|
| 121 |
-
},
|
| 122 |
-
{
|
| 123 |
-
"prompt": "A plush armchair positioned directly on a patterned rug, its cushioned seat resting unusually low to the floor.",
|
| 124 |
-
"missing_element": "legs",
|
| 125 |
-
"question_1": "Is the image showing an armchair, could be either with or without legs",
|
| 126 |
-
"question_2": "Are the legs missing"
|
| 127 |
-
},
|
| 128 |
-
{
|
| 129 |
-
"prompt": "A proud buck stands in a forest clearing at dawn, smooth forehead catching the first warm light.",
|
| 130 |
-
"missing_element": "antlers",
|
| 131 |
-
"question_1": "Is the image showing a deer, could be either with or without antlers",
|
| 132 |
-
"question_2": "Are the antlers missing"
|
| 133 |
-
},
|
| 134 |
-
{
|
| 135 |
-
"prompt": "A pale parchment envelope lies addressed on a marble tabletop, its top edge cut straight across.",
|
| 136 |
-
"missing_element": "flap",
|
| 137 |
-
"question_1": "Is the image showing an envelope, could be either with or without a flap",
|
| 138 |
-
"question_2": "Is the flap missing"
|
| 139 |
-
},
|
| 140 |
-
{
|
| 141 |
-
"prompt": "A minimalist wall clock hangs above the mantel, slender hands sweeping across a pristine white face.",
|
| 142 |
-
"missing_element": "numbers",
|
| 143 |
-
"question_1": "Is the image showing a wall clock, could be either with or without numbers",
|
| 144 |
-
"question_2": "Are the numbers missing"
|
| 145 |
-
},
|
| 146 |
-
{
|
| 147 |
-
"prompt": "A bulky white space suit floats in a training pool, the collar ring open to the surrounding water.",
|
| 148 |
-
"missing_element": "helmet",
|
| 149 |
-
"question_1": "Is the image showing a space suit, could be either with or without a helmet",
|
| 150 |
-
"question_2": "Is the helmet missing"
|
| 151 |
-
},
|
| 152 |
-
{
|
| 153 |
-
"prompt": "A towering windmill rises in a golden wheat field, only a solitary hub turning lazily in the breeze.",
|
| 154 |
-
"missing_element": "blades",
|
| 155 |
-
"question_1": "Is the image showing a windmill, could be either with or without blades",
|
| 156 |
-
"question_2": "Are the blades missing"
|
| 157 |
-
},
|
| 158 |
-
{
|
| 159 |
-
"prompt": "A tall oak stands in midsummer sunlight, countless bare branches weaving intricate patterns against the sky.",
|
| 160 |
-
"missing_element": "leaves",
|
| 161 |
-
"question_1": "Is the image showing a tree, could be either with or without leaves",
|
| 162 |
-
"question_2": "Are the leaves missing"
|
| 163 |
-
},
|
| 164 |
-
{
|
| 165 |
-
"prompt": "A yellow school bus is parked outside the depot, rectangular openings along its side reveal rows of seats.",
|
| 166 |
-
"missing_element": "doors",
|
| 167 |
-
"question_1": "Is the image showing a bus, could be either with or without doors",
|
| 168 |
-
"question_2": "Are the doors missing"
|
| 169 |
-
},
|
| 170 |
-
{
|
| 171 |
-
"prompt": "A sleek silver laptop sits open on a desk, the lid framing an empty bezel through which the wall is visible.",
|
| 172 |
-
"missing_element": "screen",
|
| 173 |
-
"question_1": "Is the image showing a laptop, could be either with or without a screen",
|
| 174 |
-
"question_2": "Is the screen missing"
|
| 175 |
-
},
|
| 176 |
-
{
|
| 177 |
-
"prompt": "A polished brass trumpet lies on deep red velvet, the leadpipe tapering to an unfinished rim.",
|
| 178 |
-
"missing_element": "mouthpiece",
|
| 179 |
-
"question_1": "Is the image showing a trumpet, could be either with or without a mouthpiece",
|
| 180 |
-
"question_2": "Is the mouthpiece missing"
|
| 181 |
-
},
|
| 182 |
-
{
|
| 183 |
-
"prompt": "A humanoid robot stands upright in a bright laboratory, cables protruding gently from a smooth collar plate.",
|
| 184 |
-
"missing_element": "head",
|
| 185 |
-
"question_1": "Is the image showing a robot, could be either with or without a head",
|
| 186 |
-
"question_2": "Is the head missing"
|
| 187 |
-
},
|
| 188 |
-
{
|
| 189 |
-
"prompt": "A tall pillar of ivory wax sits untouched on a silver tray, its top surface perfectly unbroken.",
|
| 190 |
-
"missing_element": "wick",
|
| 191 |
-
"question_1": "Is the image showing a candle, could be either with or without a wick",
|
| 192 |
-
"question_2": "Is the wick missing"
|
| 193 |
-
},
|
| 194 |
-
{
|
| 195 |
-
"prompt": "A freshly baked pizza crust layered with rich tomato sauce and scattered basil rests on a stone board.",
|
| 196 |
-
"missing_element": "cheese",
|
| 197 |
-
"question_1": "Is the image showing a pizza, could be either with or without cheese",
|
| 198 |
-
"question_2": "Is the cheese missing"
|
| 199 |
-
},
|
| 200 |
-
{
|
| 201 |
-
"prompt": "A black DSLR body stands on a wooden shelf, the circular mount exposing delicate inner mechanics to view.",
|
| 202 |
-
"missing_element": "lens",
|
| 203 |
-
"question_1": "Is the image showing a DSLR camera, could be either with or without a lens",
|
| 204 |
-
"question_2": "Is the lens missing"
|
| 205 |
-
},
|
| 206 |
-
{
|
| 207 |
-
"prompt": "A grand piano dominates an empty concert hall, a smooth ebony board stretching across the front.",
|
| 208 |
-
"missing_element": "keys",
|
| 209 |
-
"question_1": "Is the image showing a piano, could be either with or without keys",
|
| 210 |
-
"question_2": "Are the keys missing"
|
| 211 |
-
},
|
| 212 |
-
{
|
| 213 |
-
"prompt": "A slender wooden paintbrush rests beside a palette, its metal ferrule clasping only empty air.",
|
| 214 |
-
"missing_element": "bristles",
|
| 215 |
-
"question_1": "Is the image showing a paintbrush, could be either with or without bristles",
|
| 216 |
-
"question_2": "Are the bristles missing"
|
| 217 |
-
},
|
| 218 |
-
{
|
| 219 |
-
"prompt": "A sleek digital watch face sits on a granite countertop, lugs jutting out where something should secure it.",
|
| 220 |
-
"missing_element": "strap",
|
| 221 |
-
"question_1": "Is the image showing a watch, could be either with or without a strap",
|
| 222 |
-
"question_2": "Is the strap missing"
|
| 223 |
-
},
|
| 224 |
-
{
|
| 225 |
-
"prompt": "A young man opens his mouth for a dentist, the inner cavity appearing hollow and still.",
|
| 226 |
-
"missing_element": "tongue",
|
| 227 |
-
"question_1": "Is the image showing a mouth, could be either with or without a tongue",
|
| 228 |
-
"question_2": "Is the tongue missing"
|
| 229 |
-
},
|
| 230 |
-
{
|
| 231 |
-
"prompt": "A matte black motorcycle is parked under neon streetlights, cables stretching forward over the front wheel into empty air.",
|
| 232 |
-
"missing_element": "handlebars",
|
| 233 |
-
"question_1": "Is the image showing a motorcycle, could be either with or without handlebars",
|
| 234 |
-
"question_2": "Are the handlebars missing"
|
| 235 |
-
},
|
| 236 |
-
{
|
| 237 |
-
"prompt": "A retro wooden television cabinet stands in a living room, the front frame revealing intricate wiring and glowing tubes.",
|
| 238 |
-
"missing_element": "screen",
|
| 239 |
-
"question_1": "Is the image showing a television, could be either with or without a screen",
|
| 240 |
-
"question_2": "Is the screen missing"
|
| 241 |
-
},
|
| 242 |
-
{
|
| 243 |
-
"prompt": "A shaggy mountain goat balances on a rocky ledge, its forehead smooth under the midday sun.",
|
| 244 |
-
"missing_element": "horns",
|
| 245 |
-
"question_1": "Is the image showing a goat, could be either with or without horns",
|
| 246 |
-
"question_2": "Are the horns missing"
|
| 247 |
-
},
|
| 248 |
-
{
|
| 249 |
-
"prompt": "A bright red sneaker rests on a locker-room bench, eyelets neatly aligned along its padded tongue.",
|
| 250 |
-
"missing_element": "laces",
|
| 251 |
-
"question_1": "Is the image showing a sneaker, could be either with or without laces",
|
| 252 |
-
"question_2": "Are the laces missing"
|
| 253 |
-
},
|
| 254 |
-
{
|
| 255 |
-
"prompt": "A small green frog sits quietly on a lily pad, smooth domes occupying the front of its head.",
|
| 256 |
-
"missing_element": "eyes",
|
| 257 |
-
"question_1": "Is the image showing a frog, could be either with or without eyes",
|
| 258 |
-
"question_2": "Are the eyes missing"
|
| 259 |
-
},
|
| 260 |
-
{
|
| 261 |
-
"prompt": "A ceramic mug painted with blue floral patterns stands upright on a saucer, its circular shape perfectly continuous.",
|
| 262 |
-
"missing_element": "handle",
|
| 263 |
-
"question_1": "Is the image showing a mug, could be either with or without a handle",
|
| 264 |
-
"question_2": "Is the handle missing"
|
| 265 |
-
},
|
| 266 |
-
{
|
| 267 |
-
"prompt": "A curved golden saxophone rests on a music stand, rows of uncovered tone holes gleaming in the spotlight.",
|
| 268 |
-
"missing_element": "keys",
|
| 269 |
-
"question_1": "Is the image showing a saxophone, could be either with or without keys",
|
| 270 |
-
"question_2": "Are the keys missing"
|
| 271 |
-
},
|
| 272 |
-
{
|
| 273 |
-
"prompt": "A wooden skateboard deck balances across two bricks on the pavement, metal trucks pressed directly to the ground.",
|
| 274 |
-
"missing_element": "wheels",
|
| 275 |
-
"question_1": "Is the image showing a skateboard, could be either with or without wheels",
|
| 276 |
-
"question_2": "Are the wheels missing"
|
| 277 |
-
},
|
| 278 |
-
{
|
| 279 |
-
"prompt": "A felt fedora crown sits on a hat stand, its sides descending straight without any outward extension.",
|
| 280 |
-
"missing_element": "brim",
|
| 281 |
-
"question_1": "Is the image showing a fedora, could be either with or without a brim",
|
| 282 |
-
"question_2": "Is the brim missing"
|
| 283 |
-
},
|
| 284 |
-
{
|
| 285 |
-
"prompt": "A futuristic motorcycle helmet rests on a workbench, the front opening exposing cushioned interior padding.",
|
| 286 |
-
"missing_element": "visor",
|
| 287 |
-
"question_1": "Is the image showing a motorcycle helmet, could be either with or without a visor",
|
| 288 |
-
"question_2": "Is the visor missing"
|
| 289 |
-
},
|
| 290 |
-
{
|
| 291 |
-
"prompt": "An ornate wooden bedframe stands against a midnight-blue wall, evenly spaced slats visible across its width.",
|
| 292 |
-
"missing_element": "mattress",
|
| 293 |
-
"question_1": "Is the image showing a bedframe, could be either with or without a mattress",
|
| 294 |
-
"question_2": "Is the mattress missing"
|
| 295 |
-
},
|
| 296 |
-
{
|
| 297 |
-
"prompt": "A tall brick clock tower dominates the town square, a blank circular recess marking the place where time should be displayed.",
|
| 298 |
-
"missing_element": "clock face",
|
| 299 |
-
"question_1": "Is the image showing a clock tower, could be either with or without a clock face",
|
| 300 |
-
"question_2": "Is the clock face missing"
|
| 301 |
-
},
|
| 302 |
-
{
|
| 303 |
-
"prompt": "An antique pocket watch lies open on velvet, its enamel face gleaming beneath ornate Roman numerals, polished gears exposed.",
|
| 304 |
-
"missing_element": "hands",
|
| 305 |
-
"question_1": "Is the image showing a pocket watch, could be either with or without hands",
|
| 306 |
-
"question_2": "Are the hands missing from the pocket watch"
|
| 307 |
-
},
|
| 308 |
-
{
|
| 309 |
-
"prompt": "A sleek road bicycle leans against an old stone wall, lightweight frame painted crimson and chrome cranks resting above the asphalt.",
|
| 310 |
-
"missing_element": "pedals",
|
| 311 |
-
"question_1": "Is the image showing a bicycle, could be either with or without pedals",
|
| 312 |
-
"question_2": "Are the pedals missing from the bicycle"
|
| 313 |
-
},
|
| 314 |
-
{
|
| 315 |
-
"prompt": "A painted portrait of a young woman hangs in a quiet gallery, delicate features rendered in soft oils, the upper facial planes left as smooth, empty forms.",
|
| 316 |
-
"missing_element": "eyes",
|
| 317 |
-
"question_1": "Is the image showing a portrait of a woman, could be either with or without eyes",
|
| 318 |
-
"question_2": "Are the eyes missing from the portrait of the woman"
|
| 319 |
-
},
|
| 320 |
-
{
|
| 321 |
-
"prompt": "A concert grand piano stands under stage lights, lid propped high so the audience can see straight into a cavity that reveals felt-covered dampers but no striking mechanism.",
|
| 322 |
-
"missing_element": "hammers",
|
| 323 |
-
"question_1": "Is the image showing a grand piano, could be either with or without hammers",
|
| 324 |
-
"question_2": "Are the hammers missing from the grand piano"
|
| 325 |
-
},
|
| 326 |
-
{
|
| 327 |
-
"prompt": "An old wooden clipper drifts across a calm sea, towering masts stretching skyward with only rigging ropes swaying in the breeze.",
|
| 328 |
-
"missing_element": "sails",
|
| 329 |
-
"question_1": "Is the image showing a sailing ship, could be either with or without sails",
|
| 330 |
-
"question_2": "Are the sails missing from the sailing ship"
|
| 331 |
-
},
|
| 332 |
-
{
|
| 333 |
-
"prompt": "A mature oak tree rises against a bright summer sky, wide branches spreading like a skeletal silhouette despite the season.",
|
| 334 |
-
"missing_element": "leaves",
|
| 335 |
-
"question_1": "Is the image showing an oak tree, could be either with or without leaves",
|
| 336 |
-
"question_2": "Are the leaves missing from the oak tree"
|
| 337 |
-
},
|
| 338 |
-
{
|
| 339 |
-
"prompt": "A snug stone cottage nestles at the forest’s edge, ivy climbing across shuttered windows while a blank wall greets visiting guests.",
|
| 340 |
-
"missing_element": "door",
|
| 341 |
-
"question_1": "Is the image showing a cottage, could be either with or without a door",
|
| 342 |
-
"question_2": "Is the door missing from the cottage"
|
| 343 |
-
},
|
| 344 |
-
{
|
| 345 |
-
"prompt": "A streamlined passenger jet rests on the apron, engines mounted beneath a smooth fuselage that runs directly into a tall tail fin.",
|
| 346 |
-
"missing_element": "wings",
|
| 347 |
-
"question_1": "Is the image showing a passenger jet, could be either with or without wings",
|
| 348 |
-
"question_2": "Are the wings missing from the passenger jet"
|
| 349 |
-
},
|
| 350 |
-
{
|
| 351 |
-
"prompt": "A minimalist wristwatch sits on a leather tray, monochrome dial perfectly smooth except for two thin hands orbiting a blank circumference.",
|
| 352 |
-
"missing_element": "numbers",
|
| 353 |
-
"question_1": "Is the image showing a wristwatch, could be either with or without numbers",
|
| 354 |
-
"question_2": "Are the numbers missing from the wristwatch"
|
| 355 |
-
},
|
| 356 |
-
{
|
| 357 |
-
"prompt": "A freshly baked pizza rests on a wooden board, golden crust encircling a vibrant pool of red sauce topped by scattered basil leaves.",
|
| 358 |
-
"missing_element": "cheese",
|
| 359 |
-
"question_1": "Is the image showing a pizza, could be either with or without cheese",
|
| 360 |
-
"question_2": "Is the cheese missing from the pizza"
|
| 361 |
-
},
|
| 362 |
-
{
|
| 363 |
-
"prompt": "A bustling city intersection stretches beneath midday sun, tall signal heads looming overhead with dark glass panels that never change hue.",
|
| 364 |
-
"missing_element": "lights",
|
| 365 |
-
"question_1": "Is the image showing traffic signals, could be either with or without lights",
|
| 366 |
-
"question_2": "Are the lights missing from the traffic signals"
|
| 367 |
-
},
|
| 368 |
-
{
|
| 369 |
-
"prompt": "A colorful skateboard lies abandoned on smooth concrete, grip-taped deck and polished trucks casting neat shadows on the ground.",
|
| 370 |
-
"missing_element": "wheels",
|
| 371 |
-
"question_1": "Is the image showing a skateboard, could be either with or without wheels",
|
| 372 |
-
"question_2": "Are the wheels missing from the skateboard"
|
| 373 |
-
},
|
| 374 |
-
{
|
| 375 |
-
"prompt": "A chessboard is arranged atop a velvet tablecloth, thirty-two squares waiting while one side’s carved army stands alone in battle formation.",
|
| 376 |
-
"missing_element": "black pieces",
|
| 377 |
-
"question_1": "Is the image showing a chessboard, could be either with or without black pieces",
|
| 378 |
-
"question_2": "Are the black pieces missing from the chessboard"
|
| 379 |
-
},
|
| 380 |
-
{
|
| 381 |
-
"prompt": "A cherry-red sports car gleams under showroom lamps, sculpted alloys rotating freely behind open spokes that reveal only empty air.",
|
| 382 |
-
"missing_element": "brakes",
|
| 383 |
-
"question_1": "Is the image showing a sports car, could be either with or without brakes",
|
| 384 |
-
"question_2": "Are the brakes missing from the sports car"
|
| 385 |
-
},
|
| 386 |
-
{
|
| 387 |
-
"prompt": "An open hardcover book rests on a wooden desk, cream-colored pages stretching wide with nothing printed between the margins.",
|
| 388 |
-
"missing_element": "text",
|
| 389 |
-
"question_1": "Is the image showing a book, could be either with or without text",
|
| 390 |
-
"question_2": "Is the text missing from the book"
|
| 391 |
-
},
|
| 392 |
-
{
|
| 393 |
-
"prompt": "A modern desktop tower with tempered-glass side panel displays RGB-lit components, yet no spinning blades disturb the still interior.",
|
| 394 |
-
"missing_element": "fans",
|
| 395 |
-
"question_1": "Is the image showing a computer tower, could be either with or without fans",
|
| 396 |
-
"question_2": "Are the fans missing from the computer tower"
|
| 397 |
-
},
|
| 398 |
-
{
|
| 399 |
-
"prompt": "A straw-stuffed scarecrow stands in the middle of a golden field, flannel shirt hanging limp beside a torso supported by a single post.",
|
| 400 |
-
"missing_element": "arms",
|
| 401 |
-
"question_1": "Is the image showing a scarecrow, could be either with or without arms",
|
| 402 |
-
"question_2": "Are the arms missing from the scarecrow"
|
| 403 |
-
},
|
| 404 |
-
{
|
| 405 |
-
"prompt": "An oil painting depicts a medieval knight in shining armor, bold gaze steady while an empty leather baldric crosses his hip.",
|
| 406 |
-
"missing_element": "sword",
|
| 407 |
-
"question_1": "Is the image showing a knight, could be either with or without a sword",
|
| 408 |
-
"question_2": "Is the sword missing from the knight"
|
| 409 |
-
},
|
| 410 |
-
{
|
| 411 |
-
"prompt": "A delicate porcelain teapot sits on a bamboo tray, floral motifs curling around a rotund body that preserves a graceful spout but offers no side grip.",
|
| 412 |
-
"missing_element": "handle",
|
| 413 |
-
"question_1": "Is the image showing a teapot, could be either with or without a handle",
|
| 414 |
-
"question_2": "Is the handle missing from the teapot"
|
| 415 |
-
},
|
| 416 |
-
{
|
| 417 |
-
"prompt": "An outdoor basketball rim is mounted to a clear backboard, orange ring stark against blue sky with nothing suspended beneath it.",
|
| 418 |
-
"missing_element": "net",
|
| 419 |
-
"question_1": "Is the image showing a basketball hoop, could be either with or without a net",
|
| 420 |
-
"question_2": "Is the net missing from the basketball hoop"
|
| 421 |
-
},
|
| 422 |
-
{
|
| 423 |
-
"prompt": "A formal dining table is fully laid with silverware, porcelain plates and folded linen napkins, yet above each plate only empty space awaits a drink.",
|
| 424 |
-
"missing_element": "glasses",
|
| 425 |
-
"question_1": "Is the image showing a dining table, could be either with or without glasses",
|
| 426 |
-
"question_2": "Are the glasses missing from the dining table"
|
| 427 |
-
},
|
| 428 |
-
{
|
| 429 |
-
"prompt": "A vintage typewriter occupies an author’s desk, metal arms poised above pristine paper while twin spools sit idle and uncovered.",
|
| 430 |
-
"missing_element": "ribbon",
|
| 431 |
-
"question_1": "Is the image showing a typewriter, could be either with or without a ribbon",
|
| 432 |
-
"question_2": "Is the ribbon missing from the typewriter"
|
| 433 |
-
},
|
| 434 |
-
{
|
| 435 |
-
"prompt": "A thick winter parka hangs from a coat rack, quilted panels puffed with down, the front opening held shut only by overlapping fabric.",
|
| 436 |
-
"missing_element": "zipper",
|
| 437 |
-
"question_1": "Is the image showing a winter jacket, could be either with or without a zipper",
|
| 438 |
-
"question_2": "Is the zipper missing from the winter jacket"
|
| 439 |
-
},
|
| 440 |
-
{
|
| 441 |
-
"prompt": "A towering sunflower turns toward daylight, golden petals radiant around a smooth green disk unmarred by patterned specks.",
|
| 442 |
-
"missing_element": "seeds",
|
| 443 |
-
"question_1": "Is the image showing a sunflower, could be either with or without seeds",
|
| 444 |
-
"question_2": "Are the seeds missing from the sunflower"
|
| 445 |
-
},
|
| 446 |
-
{
|
| 447 |
-
"prompt": "A large elephant strides across the savanna, wrinkled hide dusted with red earth, its face ending abruptly below wide flapping ears.",
|
| 448 |
-
"missing_element": "trunk",
|
| 449 |
-
"question_1": "Is the image showing an elephant, could be either with or without a trunk",
|
| 450 |
-
"question_2": "Is the trunk missing from the elephant"
|
| 451 |
-
},
|
| 452 |
-
{
|
| 453 |
-
"prompt": "A painted wooden rowboat drifts on a calm lake, bench seats freshly varnished while the gunwales hold empty brass oarlocks.",
|
| 454 |
-
"missing_element": "oars",
|
| 455 |
-
"question_1": "Is the image showing a rowboat, could be either with or without oars",
|
| 456 |
-
"question_2": "Are the oars missing from the rowboat"
|
| 457 |
-
},
|
| 458 |
-
{
|
| 459 |
-
"prompt": "A snowman stands proudly in a suburban yard, three gleaming spheres stacked neatly, scarf and hat in place yet nothing dots the torso.",
|
| 460 |
-
"missing_element": "buttons",
|
| 461 |
-
"question_1": "Is the image showing a snowman, could be either with or without buttons",
|
| 462 |
-
"question_2": "Are the buttons missing from the snowman"
|
| 463 |
-
},
|
| 464 |
-
{
|
| 465 |
-
"prompt": "A lacquered fountain pen rests atop a journal, transparent reservoir completely clear above a gleaming gold nib.",
|
| 466 |
-
"missing_element": "ink",
|
| 467 |
-
"question_1": "Is the image showing a fountain pen, could be either with or without ink",
|
| 468 |
-
"question_2": "Is the ink missing from the fountain pen"
|
| 469 |
-
},
|
| 470 |
-
{
|
| 471 |
-
"prompt": "A wooden paintbrush handle with a shiny ferrule lies beside a palette, its tip ending in a hollow metal cylinder.",
|
| 472 |
-
"missing_element": "bristles",
|
| 473 |
-
"question_1": "Is the image showing a paintbrush, could be either with or without bristles",
|
| 474 |
-
"question_2": "Are the bristles missing from the paintbrush"
|
| 475 |
-
},
|
| 476 |
-
{
|
| 477 |
-
"prompt": "A pair of oval eyeglass frames sits on folded newsprint, front rims intact while nothing extends toward where ears would rest.",
|
| 478 |
-
"missing_element": "temples",
|
| 479 |
-
"question_1": "Is the image showing eyeglasses, could be either with or without temples",
|
| 480 |
-
"question_2": "Are the temples missing from the eyeglasses"
|
| 481 |
-
},
|
| 482 |
-
{
|
| 483 |
-
"prompt": "A city commuter holds an umbrella open in the rain, black canopy stretched over a central shaft without any visible spokes beneath.",
|
| 484 |
-
"missing_element": "ribs",
|
| 485 |
-
"question_1": "Is the image showing an umbrella, could be either with or without ribs",
|
| 486 |
-
"question_2": "Are the ribs missing from the umbrella"
|
| 487 |
-
},
|
| 488 |
-
{
|
| 489 |
-
"prompt": "A skeletonized wristwatch is showcased under a glass dome, gears whirring beside a sweeping second hand while the outer ring remains entirely blank.",
|
| 490 |
-
"missing_element": "hour markers",
|
| 491 |
-
"question_1": "Is the image showing a wristwatch, could be either with or without hour markers",
|
| 492 |
-
"question_2": "Are the hour markers missing from the wristwatch"
|
| 493 |
-
},
|
| 494 |
-
{
|
| 495 |
-
"prompt": "A nylon tent lies fully spread across a grassy clearing, rainfly attached and guy lines staked, yet the fabric sags flat on the ground.",
|
| 496 |
-
"missing_element": "poles",
|
| 497 |
-
"question_1": "Is the image showing a camping tent, could be either with or without poles",
|
| 498 |
-
"question_2": "Are the poles missing from the camping tent"
|
| 499 |
-
},
|
| 500 |
-
{
|
| 501 |
-
"prompt": "A wooden cuckoo clock hangs on a chalet wall, carved deer and leaves surrounding an ornate dial, but beneath the case no pine-cone ornaments dangle.",
|
| 502 |
-
"missing_element": "weights",
|
| 503 |
-
"question_1": "Is the image showing a cuckoo clock, could be either with or without weights",
|
| 504 |
-
"question_2": "Are the weights missing from the cuckoo clock"
|
| 505 |
-
},
|
| 506 |
-
{
|
| 507 |
-
"prompt": "A modern smartphone rests face-up on a table, edge-to-edge glass reflecting ceiling lights, its top bezel perfectly smooth without any tiny perforations.",
|
| 508 |
-
"missing_element": "speaker grille",
|
| 509 |
-
"question_1": "Is the image showing a smartphone, could be either with or without a speaker grille",
|
| 510 |
-
"question_2": "Is the speaker grille missing from the smartphone"
|
| 511 |
-
},
|
| 512 |
-
{
|
| 513 |
-
"prompt": "A café-style motorcycle waits beside a dusty road, chrome handlebars wide, while the round instrument cluster displays only a blank lens.",
|
| 514 |
-
"missing_element": "speedometer",
|
| 515 |
-
"question_1": "Is the image showing a motorcycle, could be either with or without a speedometer",
|
| 516 |
-
"question_2": "Is the speedometer missing from the motorcycle"
|
| 517 |
-
},
|
| 518 |
-
{
|
| 519 |
-
"prompt": "A slender violin bow lies on crimson velvet, ebony frog adjusted with a silver screw, yet the wooden stick spans unbroken from tip to grip.",
|
| 520 |
-
"missing_element": "hair",
|
| 521 |
-
"question_1": "Is the image showing a violin bow, could be either with or without hair",
|
| 522 |
-
"question_2": "Is the hair missing from the violin bow"
|
| 523 |
-
},
|
| 524 |
-
{
|
| 525 |
-
"prompt": "A gilded birdcage swings gently from a porch hook, domed roof catching afternoon sun, though the interior offers no horizontal bar for resting.",
|
| 526 |
-
"missing_element": "perch",
|
| 527 |
-
"question_1": "Is the image showing a birdcage, could be either with or without a perch",
|
| 528 |
-
"question_2": "Is the perch missing from the birdcage"
|
| 529 |
-
},
|
| 530 |
-
{
|
| 531 |
-
"prompt": "A marble statue of a robed goddess stands among museum columns, shoulders gracefully sloping upward to an abruptly smooth surface.",
|
| 532 |
-
"missing_element": "head",
|
| 533 |
-
"question_1": "Is the image showing a statue, could be either with or without a head",
|
| 534 |
-
"question_2": "Is the head missing from the statue"
|
| 535 |
-
},
|
| 536 |
-
{
|
| 537 |
-
"prompt": "A plush teddy bear sits on a child’s bed, round eyes glinting above a stitched smile while its muzzle remains flat and unadorned.",
|
| 538 |
-
"missing_element": "nose",
|
| 539 |
-
"question_1": "Is the image showing a teddy bear, could be either with or without a nose",
|
| 540 |
-
"question_2": "Is the nose missing from the teddy bear"
|
| 541 |
-
},
|
| 542 |
-
{
|
| 543 |
-
"prompt": "A pair of canvas sneakers stands upright on a doorway mat, metal eyelets neatly aligned along an empty tongue.",
|
| 544 |
-
"missing_element": "laces",
|
| 545 |
-
"question_1": "Is the image showing sneakers, could be either with or without laces",
|
| 546 |
-
"question_2": "Are the laces missing from the sneakers"
|
| 547 |
-
},
|
| 548 |
-
{
|
| 549 |
-
"prompt": "An open refrigerator hums quietly in a small kitchen, interior shelves glassy and clean, yet the door interior shows only blank white plastic.",
|
| 550 |
-
"missing_element": "door shelves",
|
| 551 |
-
"question_1": "Is the image showing a refrigerator, could be either with or without door shelves",
|
| 552 |
-
"question_2": "Are the door shelves missing from the refrigerator"
|
| 553 |
-
},
|
| 554 |
-
{
|
| 555 |
-
"prompt": "Friends sit around a circular stone ring in the dark, glowing embers faintly illuminate their faces while no tongues of light dance upward.",
|
| 556 |
-
"missing_element": "flames",
|
| 557 |
-
"question_1": "Is the image showing a campfire, could be either with or without flames",
|
| 558 |
-
"question_2": "Are the flames missing from the campfire"
|
| 559 |
-
},
|
| 560 |
-
{
|
| 561 |
-
"prompt": "A stainless drinking fountain stands beside a park path, polished button visible, but the curved nozzle yields only silence.",
|
| 562 |
-
"missing_element": "water",
|
| 563 |
-
"question_1": "Is the image showing a drinking fountain, could be either with or without water",
|
| 564 |
-
"question_2": "Is the water missing from the drinking fountain"
|
| 565 |
-
},
|
| 566 |
-
{
|
| 567 |
-
"prompt": "A vintage revolver lies on a green felt display pad, barrel polished and cylinder open, yet beneath the trigger there is nothing to encircle a finger.",
|
| 568 |
-
"missing_element": "trigger guard",
|
| 569 |
-
"question_1": "Is the image showing a revolver, could be either with or without a trigger guard",
|
| 570 |
-
"question_2": "Is the trigger guard missing from the revolver"
|
| 571 |
-
},
|
| 572 |
-
{
|
| 573 |
-
"prompt": "An elaborately drawn compass rose decorates an ancient map, lavish scrollwork filling the cardinal directions but no pointed indicator marks the prime heading.",
|
| 574 |
-
"missing_element": "north arrow",
|
| 575 |
-
"question_1": "Is the image showing a compass rose, could be either with or without a north arrow",
|
| 576 |
-
"question_2": "Is the north arrow missing from the compass rose"
|
| 577 |
-
},
|
| 578 |
-
{
|
| 579 |
-
"prompt": "Futuristic skyscrapers rise under neon twilight, reflective facades forming uninterrupted planes of glowing metal and glass.",
|
| 580 |
-
"missing_element": "windows",
|
| 581 |
-
"question_1": "Is the image showing skyscrapers, could be either with or without windows",
|
| 582 |
-
"question_2": "Are the windows missing from the skyscrapers"
|
| 583 |
-
},
|
| 584 |
-
{
|
| 585 |
-
"prompt": "An orchestra conductor stands on a podium, tuxedo crisp and arms moving fluidly while his raised hand remains empty.",
|
| 586 |
-
"missing_element": "baton",
|
| 587 |
-
"question_1": "Is the image showing a conductor, could be either with or without a baton",
|
| 588 |
-
"question_2": "Is the baton missing from the conductor"
|
| 589 |
-
},
|
| 590 |
-
{
|
| 591 |
-
"prompt": "A soccer field lies freshly mowed, two white uprights planted firmly at the end line, leaving an open rectangle above.",
|
| 592 |
-
"missing_element": "crossbar",
|
| 593 |
-
"question_1": "Is the image showing a soccer goal, could be either with or without a crossbar",
|
| 594 |
-
"question_2": "Is the crossbar missing from the soccer goal"
|
| 595 |
-
},
|
| 596 |
-
{
|
| 597 |
-
"prompt": "A laboratory microscope sits on a steel workbench, coarse and fine focus knobs present, yet the tubular body ends without any glass elements inside.",
|
| 598 |
-
"missing_element": "lenses",
|
| 599 |
-
"question_1": "Is the image showing a microscope, could be either with or without lenses",
|
| 600 |
-
"question_2": "Are the lenses missing from the microscope"
|
| 601 |
-
},
|
| 602 |
-
|
| 603 |
-
{
|
| 604 |
-
"prompt": "A sun-faded acoustic guitar leans against a rustic brick wall, its polished wooden body catching soft afternoon light while slender tuning pegs glint quietly.",
|
| 605 |
-
"missing_element": "strings",
|
| 606 |
-
"question_1": "Is the image showing a guitar , could be either with or without strings",
|
| 607 |
-
"question_2": "Are the strings absent"
|
| 608 |
-
},
|
| 609 |
-
{
|
| 610 |
-
"prompt": "A weathered bicycle stands upright beside a canal, chrome handlebars reflecting the sky and empty forks hovering just above cobblestones.",
|
| 611 |
-
"missing_element": "wheels",
|
| 612 |
-
"question_1": "Is the image showing a bicycle , could be either with or without wheels",
|
| 613 |
-
"question_2": "Are the wheels missing"
|
| 614 |
-
},
|
| 615 |
-
{
|
| 616 |
-
"prompt": "A barn owl perches on an old fence post under moonlight, heart-shaped face smooth and featureless save for delicate feathers.",
|
| 617 |
-
"missing_element": "eyes",
|
| 618 |
-
"question_1": "Is the image showing an owl , could be either with or without eyes",
|
| 619 |
-
"question_2": "Are the eyes absent"
|
| 620 |
-
},
|
| 621 |
-
{
|
| 622 |
-
"prompt": "A sleek silver sedan sits parked under a streetlamp, glossy panels reflecting neon signs yet the side frames reveal wide, open gaps.",
|
| 623 |
-
"missing_element": "doors",
|
| 624 |
-
"question_1": "Is the image showing a car , could be either with or without doors",
|
| 625 |
-
"question_2": "Are the doors missing"
|
| 626 |
-
},
|
| 627 |
-
{
|
| 628 |
-
"prompt": "A towering stone keep rises above a misty valley, its walls unbroken and austere beneath streaks of lichen.",
|
| 629 |
-
"missing_element": "windows",
|
| 630 |
-
"question_1": "Is the image showing a castle , could be either with or without windows",
|
| 631 |
-
"question_2": "Are the windows absent"
|
| 632 |
-
},
|
| 633 |
-
{
|
| 634 |
-
"prompt": "An antique brass pocket watch rests open on a velvet cushion, the ornate hands circling an entirely blank ring.",
|
| 635 |
-
"missing_element": "numbers",
|
| 636 |
-
"question_1": "Is the image showing a pocket watch , could be either with or without numbers",
|
| 637 |
-
"question_2": "Are the numbers missing"
|
| 638 |
-
},
|
| 639 |
-
{
|
| 640 |
-
"prompt": "A colossal amusement wheel stands against a fiery sunset, its skeletal steel rim arching over a silent fairground.",
|
| 641 |
-
"missing_element": "cabins",
|
| 642 |
-
"question_1": "Is the image showing a Ferris wheel , could be either with or without cabins",
|
| 643 |
-
"question_2": "Are the cabins missing"
|
| 644 |
-
},
|
| 645 |
-
{
|
| 646 |
-
"prompt": "A ginger cat naps on a windowsill, its fur puddled around a small, rounded hindquarters.",
|
| 647 |
-
"missing_element": "tail",
|
| 648 |
-
"question_1": "Is the image showing a cat , could be either with or without a tail",
|
| 649 |
-
"question_2": "Is the tail absent"
|
| 650 |
-
},
|
| 651 |
-
{
|
| 652 |
-
"prompt": "A massive African elephant stares calmly across the savanna, large ears fanning out over ivory tusks.",
|
| 653 |
-
"missing_element": "trunk",
|
| 654 |
-
"question_1": "Is the image showing an elephant , could be either with or without a trunk",
|
| 655 |
-
"question_2": "Is the trunk missing"
|
| 656 |
-
},
|
| 657 |
-
{
|
| 658 |
-
"prompt": "A solitary oak trunk rises from a mist-covered meadow, bark gnarled and roots sprawling into damp earth.",
|
| 659 |
-
"missing_element": "branches",
|
| 660 |
-
"question_1": "Is the image showing a tree , could be either with or without branches",
|
| 661 |
-
"question_2": "Are the branches absent"
|
| 662 |
-
},
|
| 663 |
-
{
|
| 664 |
-
"prompt": "A simple wooden chair stands in an empty gallery, its flat seat and upright backrest connected directly to the floor by a single low block.",
|
| 665 |
-
"missing_element": "legs",
|
| 666 |
-
"question_1": "Is the image showing a chair , could be either with or without legs",
|
| 667 |
-
"question_2": "Are the legs missing"
|
| 668 |
-
},
|
| 669 |
-
{
|
| 670 |
-
"prompt": "A tall sailing ship rests in calm harbor waters, dark masts piercing the sky but the rigging hangs slack against naked beams.",
|
| 671 |
-
"missing_element": "sails",
|
| 672 |
-
"question_1": "Is the image showing a ship , could be either with or without sails",
|
| 673 |
-
"question_2": "Are the sails missing"
|
| 674 |
-
},
|
| 675 |
-
{
|
| 676 |
-
"prompt": "A painter's oval palette lies atop a studio table, smeared thumb hole and dried bristles surrounding a pristine, untouched surface.",
|
| 677 |
-
"missing_element": "paint",
|
| 678 |
-
"question_1": "Is the image showing a painter's palette , could be either with or without paint",
|
| 679 |
-
"question_2": "Is the paint absent"
|
| 680 |
-
},
|
| 681 |
-
{
|
| 682 |
-
"prompt": "An old black typewriter sits on a mahogany desk, its metal arms raised above empty square holes where fingers would normally dance.",
|
| 683 |
-
"missing_element": "keys",
|
| 684 |
-
"question_1": "Is the image showing a typewriter , could be either with or without keys",
|
| 685 |
-
"question_2": "Are the keys missing"
|
| 686 |
-
},
|
| 687 |
-
{
|
| 688 |
-
"prompt": "A porcelain coffee mug releases gentle steam on a kitchen counter, its cylindrical body smooth and symmetrical but entirely unadorned on one side.",
|
| 689 |
-
"missing_element": "handle",
|
| 690 |
-
"question_1": "Is the image showing a mug , could be either with or without a handle",
|
| 691 |
-
"question_2": "Is the handle missing"
|
| 692 |
-
},
|
| 693 |
-
{
|
| 694 |
-
"prompt": "An ornate katana rests upon a lacquered stand, its lacquered scabbard parted to reveal only the hilt extending into empty space.",
|
| 695 |
-
"missing_element": "blade",
|
| 696 |
-
"question_1": "Is the image showing a katana , could be either with or without a blade",
|
| 697 |
-
"question_2": "Is the blade missing"
|
| 698 |
-
},
|
| 699 |
-
{
|
| 700 |
-
"prompt": "A modern smartphone lies on a marble tabletop, slim metallic frame enclosing an unbroken dark void.",
|
| 701 |
-
"missing_element": "screen",
|
| 702 |
-
"question_1": "Is the image showing a smartphone , could be either with or without a screen",
|
| 703 |
-
"question_2": "Is the screen missing"
|
| 704 |
-
},
|
| 705 |
-
{
|
| 706 |
-
"prompt": "A commercial jet is parked on the tarmac at dawn, cylindrical fuselage gleaming under floodlights as engines sit exposed beside stubby supports.",
|
| 707 |
-
"missing_element": "wings",
|
| 708 |
-
"question_1": "Is the image showing an airplane , could be either with or without wings",
|
| 709 |
-
"question_2": "Are the wings missing"
|
| 710 |
-
},
|
| 711 |
-
{
|
| 712 |
-
"prompt": "A weather-beaten cowboy hat hangs from a wall peg, tall crown stretching upward with an unusually vertical silhouette.",
|
| 713 |
-
"missing_element": "brim",
|
| 714 |
-
"question_1": "Is the image showing a cowboy hat , could be either with or without a brim",
|
| 715 |
-
"question_2": "Is the brim missing"
|
| 716 |
-
},
|
| 717 |
-
{
|
| 718 |
-
"prompt": "A plump green tree frog rests on a lily pad, smooth body pressed flat like a leaf against the water surface.",
|
| 719 |
-
"missing_element": "legs",
|
| 720 |
-
"question_1": "Is the image showing a frog , could be either with or without legs",
|
| 721 |
-
"question_2": "Are the legs missing"
|
| 722 |
-
},
|
| 723 |
-
{
|
| 724 |
-
"prompt": "A ceramic teapot sits atop a wooden tray, its round belly painted with blue florals and the lid slightly ajar.",
|
| 725 |
-
"missing_element": "spout",
|
| 726 |
-
"question_1": "Is the image showing a teapot , could be either with or without a spout",
|
| 727 |
-
"question_2": "Is the spout missing"
|
| 728 |
-
},
|
| 729 |
-
{
|
| 730 |
-
"prompt": "A snowman stands in a quiet yard at twilight, two round layers stacked neatly, scarf fluttering in a gentle breeze.",
|
| 731 |
-
"missing_element": "head",
|
| 732 |
-
"question_1": "Is the image showing a snowman , could be either with or without a head",
|
| 733 |
-
"question_2": "Is the head missing"
|
| 734 |
-
},
|
| 735 |
-
{
|
| 736 |
-
"prompt": "A silver laptop sits open on a conference table, glowing indicator lights framing a broad, vacant interior cavity.",
|
| 737 |
-
"missing_element": "keyboard",
|
| 738 |
-
"question_1": "Is the image showing a laptop , could be either with or without a keyboard",
|
| 739 |
-
"question_2": "Is the keyboard missing"
|
| 740 |
-
},
|
| 741 |
-
{
|
| 742 |
-
"prompt": "A pair of slender wire-rim glasses rests on a paperback novel, the arced frame shining under a reading lamp while circular openings remain completely clear.",
|
| 743 |
-
"missing_element": "lenses",
|
| 744 |
-
"question_1": "Is the image showing glasses , could be either with or without lenses",
|
| 745 |
-
"question_2": "Are the lenses absent"
|
| 746 |
-
},
|
| 747 |
-
{
|
| 748 |
-
"prompt": "A railroad stretches across golden prairie grass, evenly spaced wooden ties receding toward the horizon without any gleaming metal above.",
|
| 749 |
-
"missing_element": "rails",
|
| 750 |
-
"question_1": "Is the image showing railroad tracks , could be either with or without rails",
|
| 751 |
-
"question_2": "Are the rails missing"
|
| 752 |
-
},
|
| 753 |
-
{
|
| 754 |
-
"prompt": "A vintage streetlamp stands at the corner of a cobblestone alley, glass panes encircling a dark hollow space.",
|
| 755 |
-
"missing_element": "bulb",
|
| 756 |
-
"question_1": "Is the image showing a streetlamp , could be either with or without a bulb",
|
| 757 |
-
"question_2": "Is the bulb missing"
|
| 758 |
-
},
|
| 759 |
-
{
|
| 760 |
-
"prompt": "A children's swing hangs from an old oak branch, two sturdy ropes swaying gently in the breeze over a patch of grass.",
|
| 761 |
-
"missing_element": "seat",
|
| 762 |
-
"question_1": "Is the image showing a swing , could be either with or without a seat",
|
| 763 |
-
"question_2": "Is the seat missing"
|
| 764 |
-
},
|
| 765 |
-
{
|
| 766 |
-
"prompt": "A glossy black grand piano dominates a dim parlor, its lid propped open to reveal a smooth wooden cavity.",
|
| 767 |
-
"missing_element": "strings",
|
| 768 |
-
"question_1": "Is the image showing a piano , could be either with or without strings",
|
| 769 |
-
"question_2": "Are the strings absent"
|
| 770 |
-
},
|
| 771 |
-
{
|
| 772 |
-
"prompt": "A sturdy umbrella leans in a foyer corner, slender metal ribs fanning outward yet nothing spans between them.",
|
| 773 |
-
"missing_element": "fabric",
|
| 774 |
-
"question_1": "Is the image showing an umbrella , could be either with or without fabric",
|
| 775 |
-
"question_2": "Is the fabric missing"
|
| 776 |
-
},
|
| 777 |
-
{
|
| 778 |
-
"prompt": "A high-top sneaker rests on a locker-room bench, white leather panels forming a hollow shell that casts a faint shadow on the wooden slats.",
|
| 779 |
-
"missing_element": "sole",
|
| 780 |
-
"question_1": "Is the image showing a sneaker , could be either with or without a sole",
|
| 781 |
-
"question_2": "Is the sole missing"
|
| 782 |
-
},
|
| 783 |
-
{
|
| 784 |
-
"prompt": "A glossy red fire hydrant stands on a sidewalk, round body capped with nuts yet featuring only a smooth facade on every side.",
|
| 785 |
-
"missing_element": "outlets",
|
| 786 |
-
"question_1": "Is the image showing a fire hydrant , could be either with or without outlets",
|
| 787 |
-
"question_2": "Are the outlets missing"
|
| 788 |
-
},
|
| 789 |
-
{
|
| 790 |
-
"prompt": "A ripe banana sits on a cutting board, gentle curves glowing yellow without a telltale frilled topping.",
|
| 791 |
-
"missing_element": "stem",
|
| 792 |
-
"question_1": "Is the image showing a banana , could be either with or without a stem",
|
| 793 |
-
"question_2": "Is the stem missing"
|
| 794 |
-
},
|
| 795 |
-
{
|
| 796 |
-
"prompt": "A wall clock hangs above a classroom door, a silent disc whose reflective surface catches fluorescent lights but marks no moments.",
|
| 797 |
-
"missing_element": "hands",
|
| 798 |
-
"question_1": "Is the image showing a wall clock , could be either with or without hands",
|
| 799 |
-
"question_2": "Are the hands missing"
|
| 800 |
-
},
|
| 801 |
-
{
|
| 802 |
-
"prompt": "A majestic peacock struts across the palace courtyard, vibrant blues covering a slender body that ends abruptly behind.",
|
| 803 |
-
"missing_element": "tail feathers",
|
| 804 |
-
"question_1": "Is the image showing a peacock , could be either with or without tail feathers",
|
| 805 |
-
"question_2": "Are the tail feathers missing"
|
| 806 |
-
},
|
| 807 |
-
{
|
| 808 |
-
"prompt": "A shopping cart waits in an empty parking lot, metal basket intact atop a rigid axle pressed flat against asphalt.",
|
| 809 |
-
"missing_element": "wheels",
|
| 810 |
-
"question_1": "Is the image showing a shopping cart , could be either with or without wheels",
|
| 811 |
-
"question_2": "Are the wheels missing"
|
| 812 |
-
},
|
| 813 |
-
{
|
| 814 |
-
"prompt": "A classic sailing compass sits atop a nautical map, polished brass ring circling a plain mirrored circle.",
|
| 815 |
-
"missing_element": "needle",
|
| 816 |
-
"question_1": "Is the image showing a compass , could be either with or without a needle",
|
| 817 |
-
"question_2": "Is the needle missing"
|
| 818 |
-
},
|
| 819 |
-
{
|
| 820 |
-
"prompt": "A glossy violin rests on a velvet cloth, graceful curves gleaming beneath studio lights while the ebony fingerboard stretches over a hollow arch.",
|
| 821 |
-
"missing_element": "bridge",
|
| 822 |
-
"question_1": "Is the image showing a violin , could be either with or without a bridge",
|
| 823 |
-
"question_2": "Is the bridge missing"
|
| 824 |
-
},
|
| 825 |
-
{
|
| 826 |
-
"prompt": "A sleek motorcycle is displayed on a showroom pedestal, chrome handlebars gleaming above a suspended frame.",
|
| 827 |
-
"missing_element": "engine",
|
| 828 |
-
"question_1": "Is the image showing a motorcycle , could be either with or without an engine",
|
| 829 |
-
"question_2": "Is the engine missing"
|
| 830 |
-
},
|
| 831 |
-
{
|
| 832 |
-
"prompt": "A minimalist wristwatch lies on a marble vanity, thin leather strap wrapped around a circular case whose interior is pure white.",
|
| 833 |
-
"missing_element": "hands",
|
| 834 |
-
"question_1": "Is the image showing a wristwatch , could be either with or without hands",
|
| 835 |
-
"question_2": "Are the hands missing"
|
| 836 |
-
},
|
| 837 |
-
{
|
| 838 |
-
"prompt": "A passenger bus is parked at a coastal terminal, its length painted turquoise and silver, side panels stretching seamlessly from front to back.",
|
| 839 |
-
"missing_element": "windows",
|
| 840 |
-
"question_1": "Is the image showing a bus , could be either with or without windows",
|
| 841 |
-
"question_2": "Are the windows missing"
|
| 842 |
-
},
|
| 843 |
-
{
|
| 844 |
-
"prompt": "A pink flamingo stands among reeds in shallow water, slender neck curved gracefully but the silhouette seems oddly compact behind.",
|
| 845 |
-
"missing_element": "wings",
|
| 846 |
-
"question_1": "Is the image showing a flamingo , could be either with or without wings",
|
| 847 |
-
"question_2": "Are the wings missing"
|
| 848 |
-
},
|
| 849 |
-
{
|
| 850 |
-
"prompt": "A library shelf features an antique volume with a gilded spine, heavy cover creaking open to reveal a vacant hollow.",
|
| 851 |
-
"missing_element": "pages",
|
| 852 |
-
"question_1": "Is the image showing a book , could be either with or without pages",
|
| 853 |
-
"question_2": "Are the pages missing"
|
| 854 |
-
},
|
| 855 |
-
{
|
| 856 |
-
"prompt": "An armored knight statue stands in a museum alcove, gleaming breastplate reflecting spotlights while the gauntlets clasp nothing.",
|
| 857 |
-
"missing_element": "sword",
|
| 858 |
-
"question_1": "Is the image showing a knight statue , could be either with or without a sword",
|
| 859 |
-
"question_2": "Is the sword missing"
|
| 860 |
-
},
|
| 861 |
-
{
|
| 862 |
-
"prompt": "A sparkling diamond ring rests atop a burgundy velvet cushion, golden band curving smoothly around an empty prong setting.",
|
| 863 |
-
"missing_element": "gemstone",
|
| 864 |
-
"question_1": "Is the image showing a ring , could be either with or without a gemstone",
|
| 865 |
-
"question_2": "Is the gemstone missing"
|
| 866 |
-
},
|
| 867 |
-
{
|
| 868 |
-
"prompt": "A modern windmill rises over sunflower fields, tall white tower supporting a still, empty hub against the blue sky.",
|
| 869 |
-
"missing_element": "blades",
|
| 870 |
-
"question_1": "Is the image showing a windmill , could be either with or without blades",
|
| 871 |
-
"question_2": "Are the blades missing"
|
| 872 |
-
},
|
| 873 |
-
{
|
| 874 |
-
"prompt": "A sleek black skateboard rests on a concrete ramp, smooth underside reflecting sunlight as metal axles stand alone.",
|
| 875 |
-
"missing_element": "wheels",
|
| 876 |
-
"question_1": "Is the image showing a skateboard , could be either with or without wheels",
|
| 877 |
-
"question_2": "Are the wheels missing"
|
| 878 |
-
},
|
| 879 |
-
{
|
| 880 |
-
"prompt": "A small tortoise crawls across a sandy dune, wrinkled skin folding over a rounded back that shows only soft texture.",
|
| 881 |
-
"missing_element": "shell",
|
| 882 |
-
"question_1": "Is the image showing a tortoise , could be either with or without a shell",
|
| 883 |
-
"question_2": "Is the shell missing"
|
| 884 |
-
},
|
| 885 |
-
{
|
| 886 |
-
"prompt": "A camera sits on a tripod overlooking city lights, metallic body facing forward yet revealing a hollow circle where one would normally see glass.",
|
| 887 |
-
"missing_element": "lens",
|
| 888 |
-
"question_1": "Is the image showing a camera , could be either with or without a lens",
|
| 889 |
-
"question_2": "Is the lens missing"
|
| 890 |
-
},
|
| 891 |
-
{
|
| 892 |
-
"prompt": "A spacious greenhouse stands at the edge of a botanical garden, metal arches forming a broad vault that encloses only dusty air.",
|
| 893 |
-
"missing_element": "glass panels",
|
| 894 |
-
"question_1": "Is the image showing a greenhouse , could be either with or without glass panels",
|
| 895 |
-
"question_2": "Are the glass panels missing"
|
| 896 |
-
},
|
| 897 |
-
{
|
| 898 |
-
"prompt": "A firefighter's helmet rests on a polished bench, bright red dome shining under overhead lights without its typical curved protector at the front.",
|
| 899 |
-
"missing_element": "visor",
|
| 900 |
-
"question_1": "Is the image showing a firefighter's helmet , could be either with or without a visor",
|
| 901 |
-
"question_2": "Is the visor missing"
|
| 902 |
-
},
|
| 903 |
-
{
|
| 904 |
-
"prompt": "A vintage bicycle leans against a brick wall, its crimson frame chipped and speckled with rust under soft afternoon light.",
|
| 905 |
-
"missing_element": "wheels",
|
| 906 |
-
"question_1": "Is there a bicycle , could be either with or without wheels in the image",
|
| 907 |
-
"question_2": "Are the wheels missing"
|
| 908 |
-
},
|
| 909 |
-
{
|
| 910 |
-
"prompt": "An antique wristwatch rests on a velvet cushion, golden casing finely engraved and gleaming beneath museum spotlights.",
|
| 911 |
-
"missing_element": "hands",
|
| 912 |
-
"question_1": "Is there a wristwatch , could be either with or without hands in the image",
|
| 913 |
-
"question_2": "Are the hands missing"
|
| 914 |
-
},
|
| 915 |
-
{
|
| 916 |
-
"prompt": "A porcelain teapot sits upon a lace tablecloth, cobalt floral motifs swirling across its rounded body.",
|
| 917 |
-
"missing_element": "spout",
|
| 918 |
-
"question_1": "Is there a teapot , could be either with or without a spout in the image",
|
| 919 |
-
"question_2": "Is the spout missing"
|
| 920 |
-
},
|
| 921 |
-
{
|
| 922 |
-
"prompt": "Round-framed eyeglasses lie open on a memoir’s pages, slender metal rims catching a beam of sunlight.",
|
| 923 |
-
"missing_element": "lenses",
|
| 924 |
-
"question_1": "Are there eyeglasses , could be either with or without lenses in the image",
|
| 925 |
-
"question_2": "Are the lenses absent"
|
| 926 |
-
},
|
| 927 |
-
{
|
| 928 |
-
"prompt": "A weathered sailboat drifts beside a quiet dock, its wooden hull creaking gently against worn pilings.",
|
| 929 |
-
"missing_element": "mast",
|
| 930 |
-
"question_1": "Is there a sailboat , could be either with or without a mast in the image",
|
| 931 |
-
"question_2": "Is the mast missing"
|
| 932 |
-
},
|
| 933 |
-
{
|
| 934 |
-
"prompt": "A colorful classroom globe rests on a wooden desk, continents vividly painted against deep turquoise seas.",
|
| 935 |
-
"missing_element": "stand",
|
| 936 |
-
"question_1": "Is there a globe , could be either with or without a stand in the image",
|
| 937 |
-
"question_2": "Is the stand absent"
|
| 938 |
-
},
|
| 939 |
-
{
|
| 940 |
-
"prompt": "A collapsed umbrella lies beside a doorway, raindrops glistening on its exposed metal ribs.",
|
| 941 |
-
"missing_element": "canopy",
|
| 942 |
-
"question_1": "Is there an umbrella , could be either with or without a canopy in the image",
|
| 943 |
-
"question_2": "Is the canopy missing"
|
| 944 |
-
},
|
| 945 |
-
{
|
| 946 |
-
"prompt": "An acoustic guitar leans against a barstool under warm stage lights, its honey-coloured body polished to a mirror sheen.",
|
| 947 |
-
"missing_element": "strings",
|
| 948 |
-
"question_1": "Is there a guitar , could be either with or without strings in the image",
|
| 949 |
-
"question_2": "Are the strings missing"
|
| 950 |
-
},
|
| 951 |
-
{
|
| 952 |
-
"prompt": "A tall lighthouse towers above a misty headland, red and white stripes bold against the gray sky.",
|
| 953 |
-
"missing_element": "door",
|
| 954 |
-
"question_1": "Is there a lighthouse , could be either with or without a door in the image",
|
| 955 |
-
"question_2": "Is the door absent"
|
| 956 |
-
},
|
| 957 |
-
{
|
| 958 |
-
"prompt": "A retired jet airplane sits in a museum hangar, polished aluminum skin reflecting overhead lamps.",
|
| 959 |
-
"missing_element": "wings",
|
| 960 |
-
"question_1": "Is there an airplane , could be either with or without wings in the image",
|
| 961 |
-
"question_2": "Are the wings missing"
|
| 962 |
-
},
|
| 963 |
-
{
|
| 964 |
-
"prompt": "A medieval stone fortress stands overlooking a winding river, colorful banners fluttering from its rugged towers.",
|
| 965 |
-
"missing_element": "drawbridge",
|
| 966 |
-
"question_1": "Is there a fortress , could be either with or without a drawbridge in the image",
|
| 967 |
-
"question_2": "Is the drawbridge missing"
|
| 968 |
-
},
|
| 969 |
-
{
|
| 970 |
-
"prompt": "A classic sedan is parked beneath a lone streetlamp on a still night, chrome trim gleaming softly.",
|
| 971 |
-
"missing_element": "headlights",
|
| 972 |
-
"question_1": "Is there a sedan , could be either with or without headlights in the image",
|
| 973 |
-
"question_2": "Are the headlights missing"
|
| 974 |
-
},
|
| 975 |
-
{
|
| 976 |
-
"prompt": "A majestic oak rises from a sunny meadow, gnarled branches spreading wide against clear blue sky.",
|
| 977 |
-
"missing_element": "leaves",
|
| 978 |
-
"question_1": "Is there an oak tree , could be either with or without leaves in the image",
|
| 979 |
-
"question_2": "Are the leaves absent"
|
| 980 |
-
},
|
| 981 |
-
{
|
| 982 |
-
"prompt": "A green frog sits serenely on a lily pad amid gentle pond ripples.",
|
| 983 |
-
"missing_element": "legs",
|
| 984 |
-
"question_1": "Is there a frog , could be either with or without legs in the image",
|
| 985 |
-
"question_2": "Are the legs missing"
|
| 986 |
-
},
|
| 987 |
-
{
|
| 988 |
-
"prompt": "A wooden rocking chair rests on a weather-beaten porch, faded paint revealing layers of aging varnish.",
|
| 989 |
-
"missing_element": "seat",
|
| 990 |
-
"question_1": "Is there a rocking chair , could be either with or without a seat in the image",
|
| 991 |
-
"question_2": "Is the seat missing"
|
| 992 |
-
},
|
| 993 |
-
{
|
| 994 |
-
"prompt": "A vintage film camera is displayed on a glass shelf, its leather body pristine and meticulously polished.",
|
| 995 |
-
"missing_element": "lens",
|
| 996 |
-
"question_1": "Is there a film camera , could be either with or without a lens in the image",
|
| 997 |
-
"question_2": "Is the lens absent"
|
| 998 |
-
},
|
| 999 |
-
{
|
| 1000 |
-
"prompt": "A hardcover novel stands upright on a coffee table, its title embossed in ornate gold lettering.",
|
| 1001 |
-
"missing_element": "pages",
|
| 1002 |
-
"question_1": "Is there a book , could be either with or without pages in the image",
|
| 1003 |
-
"question_2": "Are the pages missing"
|
| 1004 |
-
},
|
| 1005 |
-
{
|
| 1006 |
-
"prompt": "An elegant hourglass rests on a mahogany desk, brass frame catching the glow of a desk lamp.",
|
| 1007 |
-
"missing_element": "sand",
|
| 1008 |
-
"question_1": "Is there an hourglass , could be either with or without sand in the image",
|
| 1009 |
-
"question_2": "Is the sand missing"
|
| 1010 |
-
},
|
| 1011 |
-
{
|
| 1012 |
-
"prompt": "A small sparrow is perched on a wooden fence post under a brooding sky.",
|
| 1013 |
-
"missing_element": "wings",
|
| 1014 |
-
"question_1": "Is there a sparrow , could be either with or without wings in the image",
|
| 1015 |
-
"question_2": "Are the wings absent"
|
| 1016 |
-
},
|
| 1017 |
-
{
|
| 1018 |
-
"prompt": "A tall brick clock tower rises above a bustling town square, its silhouette glowing in sunset light.",
|
| 1019 |
-
"missing_element": "clock face",
|
| 1020 |
-
"question_1": "Is there a clock tower , could be either with or without a clock face in the image",
|
| 1021 |
-
"question_2": "Is the clock face missing"
|
| 1022 |
-
},
|
| 1023 |
-
{
|
| 1024 |
-
"prompt": "A black ski mask is folded neatly on a wooden bench beside a locker.",
|
| 1025 |
-
"missing_element": "eye holes",
|
| 1026 |
-
"question_1": "Is there a ski mask , could be either with or without eye holes in the image",
|
| 1027 |
-
"question_2": "Are the eye holes missing"
|
| 1028 |
-
},
|
| 1029 |
-
{
|
| 1030 |
-
"prompt": "A cast-iron frying pan rests on a stovetop, its dark seasoned surface slightly glossy.",
|
| 1031 |
-
"missing_element": "handle",
|
| 1032 |
-
"question_1": "Is there a frying pan , could be either with or without a handle in the image",
|
| 1033 |
-
"question_2": "Is the handle missing"
|
| 1034 |
-
},
|
| 1035 |
-
{
|
| 1036 |
-
"prompt": "A bright red scooter stands on a cobblestone lane, its glossy body reflecting ambient city lights.",
|
| 1037 |
-
"missing_element": "handlebars",
|
| 1038 |
-
"question_1": "Is there a scooter , could be either with or without handlebars in the image",
|
| 1039 |
-
"question_2": "Are the handlebars missing"
|
| 1040 |
-
},
|
| 1041 |
-
{
|
| 1042 |
-
"prompt": "A snail glides slowly along a dew-covered garden leaf under morning light.",
|
| 1043 |
-
"missing_element": "shell",
|
| 1044 |
-
"question_1": "Is there a snail , could be either with or without a shell in the image",
|
| 1045 |
-
"question_2": "Is the shell absent"
|
| 1046 |
-
},
|
| 1047 |
-
{
|
| 1048 |
-
"prompt": "A rugged hiking backpack leans against a pine tree at the trail’s edge, fabric dusted with chalky dirt.",
|
| 1049 |
-
"missing_element": "straps",
|
| 1050 |
-
"question_1": "Is there a backpack , could be either with or without straps in the image",
|
| 1051 |
-
"question_2": "Are the straps missing"
|
| 1052 |
-
},
|
| 1053 |
-
{
|
| 1054 |
-
"prompt": "A roadside mailbox sits atop a weathered wooden post, its paint slightly chipped.",
|
| 1055 |
-
"missing_element": "flag",
|
| 1056 |
-
"question_1": "Is there a mailbox , could be either with or without a flag in the image",
|
| 1057 |
-
"question_2": "Is the flag absent"
|
| 1058 |
-
},
|
| 1059 |
-
{
|
| 1060 |
-
"prompt": "A retro television set stands on tapered legs in a mid-century living room, wood veneer polished to a warm glow.",
|
| 1061 |
-
"missing_element": "screen",
|
| 1062 |
-
"question_1": "Is there a television , could be either with or without a screen in the image",
|
| 1063 |
-
"question_2": "Is the screen missing"
|
| 1064 |
-
},
|
| 1065 |
-
{
|
| 1066 |
-
"prompt": "A brass desk lamp sits beside a stack of papers, its curved shade reflecting amber light.",
|
| 1067 |
-
"missing_element": "bulb",
|
| 1068 |
-
"question_1": "Is there a lamp , could be either with or without a bulb in the image",
|
| 1069 |
-
"question_2": "Is the bulb absent"
|
| 1070 |
-
},
|
| 1071 |
-
{
|
| 1072 |
-
"prompt": "A motorcycle helmet lies on a workbench, its glossy surface speckled with sawdust.",
|
| 1073 |
-
"missing_element": "visor",
|
| 1074 |
-
"question_1": "Is there a helmet , could be either with or without a visor in the image",
|
| 1075 |
-
"question_2": "Is the visor missing"
|
| 1076 |
-
},
|
| 1077 |
-
{
|
| 1078 |
-
"prompt": "A grand piano dominates a silent concert hall stage, black lacquer gleaming under spotlights.",
|
| 1079 |
-
"missing_element": "keys",
|
| 1080 |
-
"question_1": "Is there a piano , could be either with or without keys in the image",
|
| 1081 |
-
"question_2": "Are the keys missing"
|
| 1082 |
-
},
|
| 1083 |
-
{
|
| 1084 |
-
"prompt": "An old stone windmill stands amid golden wheat fields under an expansive blue sky.",
|
| 1085 |
-
"missing_element": "blades",
|
| 1086 |
-
"question_1": "Is there a windmill , could be either with or without blades in the image",
|
| 1087 |
-
"question_2": "Are the blades absent"
|
| 1088 |
-
},
|
| 1089 |
-
{
|
| 1090 |
-
"prompt": "A large observatory telescope is mounted on a sturdy tripod inside a domed chamber.",
|
| 1091 |
-
"missing_element": "eyepiece",
|
| 1092 |
-
"question_1": "Is there a telescope , could be either with or without an eyepiece in the image",
|
| 1093 |
-
"question_2": "Is the eyepiece missing"
|
| 1094 |
-
},
|
| 1095 |
-
{
|
| 1096 |
-
"prompt": "A baby stroller is parked beside a park bench, fabric hood casting a gentle shade.",
|
| 1097 |
-
"missing_element": "wheels",
|
| 1098 |
-
"question_1": "Is there a stroller , could be either with or without wheels in the image",
|
| 1099 |
-
"question_2": "Are the wheels missing"
|
| 1100 |
-
},
|
| 1101 |
-
{
|
| 1102 |
-
"prompt": "A ginger cat curls up on a sunlit windowsill, purring softly in the warm glow.",
|
| 1103 |
-
"missing_element": "tail",
|
| 1104 |
-
"question_1": "Is there a cat , could be either with or without a tail in the image",
|
| 1105 |
-
"question_2": "Is the tail absent"
|
| 1106 |
-
},
|
| 1107 |
-
{
|
| 1108 |
-
"prompt": "A smoking pipe rests atop a leather-bound journal, polished wood glowing softly.",
|
| 1109 |
-
"missing_element": "stem",
|
| 1110 |
-
"question_1": "Is there a pipe , could be either with or without a stem in the image",
|
| 1111 |
-
"question_2": "Is the stem missing"
|
| 1112 |
-
},
|
| 1113 |
-
{
|
| 1114 |
-
"prompt": "A fountain pen lies diagonally across parchment, its marbled barrel shimmering under lamplight.",
|
| 1115 |
-
"missing_element": "nib",
|
| 1116 |
-
"question_1": "Is there a fountain pen , could be either with or without a nib in the image",
|
| 1117 |
-
"question_2": "Is the nib absent"
|
| 1118 |
-
},
|
| 1119 |
-
{
|
| 1120 |
-
"prompt": "An ornate picture frame hangs on a gallery wall, intricate gilded borders catching overhead lighting.",
|
| 1121 |
-
"missing_element": "glass",
|
| 1122 |
-
"question_1": "Is there a picture frame , could be either with or without glass in the image",
|
| 1123 |
-
"question_2": "Is the glass missing"
|
| 1124 |
-
},
|
| 1125 |
-
{
|
| 1126 |
-
"prompt": "A skateboard rests on a graffiti-sprayed ramp, deck graphics vibrant and scuffed at the edges.",
|
| 1127 |
-
"missing_element": "wheels",
|
| 1128 |
-
"question_1": "Is there a skateboard , could be either with or without wheels in the image",
|
| 1129 |
-
"question_2": "Are the wheels missing"
|
| 1130 |
-
},
|
| 1131 |
-
{
|
| 1132 |
-
"prompt": "A platinum engagement ring sits in a velvet box under a small spotlight.",
|
| 1133 |
-
"missing_element": "gemstone",
|
| 1134 |
-
"question_1": "Is there a ring , could be either with or without a gemstone in the image",
|
| 1135 |
-
"question_2": "Is the gemstone absent"
|
| 1136 |
-
},
|
| 1137 |
-
{
|
| 1138 |
-
"prompt": "A white rocket stands upright on a launch pad against a pale dawn sky, service towers flanking it.",
|
| 1139 |
-
"missing_element": "fins",
|
| 1140 |
-
"question_1": "Is there a rocket , could be either with or without fins in the image",
|
| 1141 |
-
"question_2": "Are the fins missing"
|
| 1142 |
-
},
|
| 1143 |
-
{
|
| 1144 |
-
"prompt": "Over-ear headphones are draped across a mixing console, their matte black shells shining softly.",
|
| 1145 |
-
"missing_element": "ear pads",
|
| 1146 |
-
"question_1": "Are there headphones , could be either with or without ear pads in the image",
|
| 1147 |
-
"question_2": "Are the ear pads missing"
|
| 1148 |
-
},
|
| 1149 |
-
{
|
| 1150 |
-
"prompt": "A cotton T-shirt is neatly folded on a wooden shelf, its vibrant graphic centered on the chest.",
|
| 1151 |
-
"missing_element": "sleeves",
|
| 1152 |
-
"question_1": "Is there a T-shirt , could be either with or without sleeves in the image",
|
| 1153 |
-
"question_2": "Are the sleeves missing"
|
| 1154 |
-
},
|
| 1155 |
-
{
|
| 1156 |
-
"prompt": "A snowman stands in a quiet front yard, two coal eyes and a jaunty hat giving it character.",
|
| 1157 |
-
"missing_element": "nose",
|
| 1158 |
-
"question_1": "Is there a snowman , could be either with or without a nose in the image",
|
| 1159 |
-
"question_2": "Is the nose missing"
|
| 1160 |
-
},
|
| 1161 |
-
{
|
| 1162 |
-
"prompt": "A worn canvas sneaker lies abandoned on a beach boardwalk, sand sprinkled across its fabric.",
|
| 1163 |
-
"missing_element": "laces",
|
| 1164 |
-
"question_1": "Is there a sneaker , could be either with or without laces in the image",
|
| 1165 |
-
"question_2": "Are the laces absent"
|
| 1166 |
-
},
|
| 1167 |
-
{
|
| 1168 |
-
"prompt": "A rustic lantern hangs from a cabin beam, metal frame dark with age.",
|
| 1169 |
-
"missing_element": "glass panes",
|
| 1170 |
-
"question_1": "Is there a lantern , could be either with or without glass panes in the image",
|
| 1171 |
-
"question_2": "Are the glass panes missing"
|
| 1172 |
-
},
|
| 1173 |
-
{
|
| 1174 |
-
"prompt": "A mechanical keyboard rests on a neon-lit desk, keycaps glowing with colorful backlight.",
|
| 1175 |
-
"missing_element": "spacebar",
|
| 1176 |
-
"question_1": "Is there a keyboard , could be either with or without a spacebar in the image",
|
| 1177 |
-
"question_2": "Is the spacebar missing"
|
| 1178 |
-
},
|
| 1179 |
-
{
|
| 1180 |
-
"prompt": "A plush teddy bear is propped against a pillow in a child’s room, its fur softly illuminated by night-light glow.",
|
| 1181 |
-
"missing_element": "eyes",
|
| 1182 |
-
"question_1": "Is there a teddy bear , could be either with or without eyes in the image",
|
| 1183 |
-
"question_2": "Are the eyes absent"
|
| 1184 |
-
},
|
| 1185 |
-
{
|
| 1186 |
-
"prompt": "A basketball hoop hangs above a driveway, backboard edges chipped from years of play.",
|
| 1187 |
-
"missing_element": "net",
|
| 1188 |
-
"question_1": "Is there a basketball hoop , could be either with or without a net in the image",
|
| 1189 |
-
"question_2": "Is the net missing"
|
| 1190 |
-
},
|
| 1191 |
-
{
|
| 1192 |
-
"prompt": "A crystal wine glass stands atop a linen napkin beside polished silverware.",
|
| 1193 |
-
"missing_element": "stem",
|
| 1194 |
-
"question_1": "Is there a wine glass , could be either with or without a stem in the image",
|
| 1195 |
-
"question_2": "Is the stem absent"
|
| 1196 |
-
},
|
| 1197 |
-
{
|
| 1198 |
-
"prompt": "A decorative pocket mirror lies on a marble vanity, ornate silver backing engraved with curling vines.",
|
| 1199 |
-
"missing_element": "reflective surface",
|
| 1200 |
-
"question_1": "Is there a pocket mirror , could be either with or without a reflective surface in the image",
|
| 1201 |
-
"question_2": "Is the reflective surface missing"
|
| 1202 |
-
}
|
| 1203 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VSF/prompts/.ipynb_checkpoints/test_prompts.json-checkpoint.new
DELETED
|
@@ -1,1203 +0,0 @@
|
|
| 1 |
-
[
|
| 2 |
-
{
|
| 3 |
-
"prompt": "A sleek white sailboat drifting on calm azure waters, its tall mast rising plainly into the sky.",
|
| 4 |
-
"missing_element": "sails",
|
| 5 |
-
"question_1": "Is the image showing a sailboat, could be either with or without sails",
|
| 6 |
-
"question_2": "Are the sails missing"
|
| 7 |
-
},
|
| 8 |
-
{
|
| 9 |
-
"prompt": "A vintage red bicycle leaning against a brick wall, its pedals leading back to a solitary rear gear.",
|
| 10 |
-
"missing_element": "chain",
|
| 11 |
-
"question_1": "Is the image showing a bicycle, could be either with or without a chain",
|
| 12 |
-
"question_2": "Is the chain missing"
|
| 13 |
-
},
|
| 14 |
-
{
|
| 15 |
-
"prompt": "A short-haired gray cat sitting alert on a windowsill, its cheeks unusually smooth beneath attentive eyes.",
|
| 16 |
-
"missing_element": "whiskers",
|
| 17 |
-
"question_1": "Is the image showing a cat, could be either with or without whiskers",
|
| 18 |
-
"question_2": "Are the whiskers missing"
|
| 19 |
-
},
|
| 20 |
-
{
|
| 21 |
-
"prompt": "An ancient stone castle atop a grassy hill, the entrance arch yawning openly into the sunlit courtyard.",
|
| 22 |
-
"missing_element": "gates",
|
| 23 |
-
"question_1": "Is the image showing a castle, could be either with or without gates",
|
| 24 |
-
"question_2": "Are the gates missing"
|
| 25 |
-
},
|
| 26 |
-
{
|
| 27 |
-
"prompt": "A brightly colored hot-air balloon inflated at dawn, long tethers dangling toward the misty field below.",
|
| 28 |
-
"missing_element": "basket",
|
| 29 |
-
"question_1": "Is the image showing a hot-air balloon, could be either with or without a basket",
|
| 30 |
-
"question_2": "Is the basket missing"
|
| 31 |
-
},
|
| 32 |
-
{
|
| 33 |
-
"prompt": "A soft-skinned turtle crawling along a sandy shoreline, its limbs and head fully exposed under morning light.",
|
| 34 |
-
"missing_element": "shell",
|
| 35 |
-
"question_1": "Is the image showing a turtle, could be either with or without a shell",
|
| 36 |
-
"question_2": "Is the shell missing"
|
| 37 |
-
},
|
| 38 |
-
{
|
| 39 |
-
"prompt": "A sleek silver train resting at the station platform, its undercarriage hovering just above the rails.",
|
| 40 |
-
"missing_element": "wheels",
|
| 41 |
-
"question_1": "Is the image showing a train, could be either with or without wheels",
|
| 42 |
-
"question_2": "Are the wheels missing"
|
| 43 |
-
},
|
| 44 |
-
{
|
| 45 |
-
"prompt": "A pair of modern black-framed eyeglasses placed on a glossy table, the frames entirely empty inside.",
|
| 46 |
-
"missing_element": "lenses",
|
| 47 |
-
"question_1": "Is the image showing eyeglasses, could be either with or without lenses",
|
| 48 |
-
"question_2": "Are the lenses missing"
|
| 49 |
-
},
|
| 50 |
-
{
|
| 51 |
-
"prompt": "An elegant fountain pen lies uncapped on parchment, its polished grip narrowing to a hollow opening.",
|
| 52 |
-
"missing_element": "nib",
|
| 53 |
-
"question_1": "Is the image showing a fountain pen, could be either with or without a nib",
|
| 54 |
-
"question_2": "Is the nib missing"
|
| 55 |
-
},
|
| 56 |
-
{
|
| 57 |
-
"prompt": "A collapsed metal umbrella frame resting against a café chair, slender ribs splayed like spokes.",
|
| 58 |
-
"missing_element": "canopy",
|
| 59 |
-
"question_1": "Is the image showing an umbrella, could be either with or without a canopy",
|
| 60 |
-
"question_2": "Is the canopy missing"
|
| 61 |
-
},
|
| 62 |
-
{
|
| 63 |
-
"prompt": "An elongated airplane fuselage parked on the tarmac, twin engines hugging its smooth sides under cloudy skies.",
|
| 64 |
-
"missing_element": "wings",
|
| 65 |
-
"question_1": "Is the image showing an airplane, could be either with or without wings",
|
| 66 |
-
"question_2": "Are the wings missing"
|
| 67 |
-
},
|
| 68 |
-
{
|
| 69 |
-
"prompt": "A brass desk lamp arcs elegantly over an open book, its socket empty save for threaded metal.",
|
| 70 |
-
"missing_element": "bulb",
|
| 71 |
-
"question_1": "Is the image showing a desk lamp, could be either with or without a bulb",
|
| 72 |
-
"question_2": "Is the bulb missing"
|
| 73 |
-
},
|
| 74 |
-
{
|
| 75 |
-
"prompt": "A sunburst electric guitar body hanging on a studio wall, pickups and bridge gleaming under soft spotlights.",
|
| 76 |
-
"missing_element": "neck",
|
| 77 |
-
"question_1": "Is the image showing an electric guitar, could be either with or without a neck",
|
| 78 |
-
"question_2": "Is the neck missing"
|
| 79 |
-
},
|
| 80 |
-
{
|
| 81 |
-
"prompt": "A streamlined silver fish gliding through crystal water, its sleek profile unbroken by any protrusions.",
|
| 82 |
-
"missing_element": "fins",
|
| 83 |
-
"question_1": "Is the image showing a fish, could be either with or without fins",
|
| 84 |
-
"question_2": "Are the fins missing"
|
| 85 |
-
},
|
| 86 |
-
{
|
| 87 |
-
"prompt": "A quaint brick cottage sitting in a meadow, wooden rafters exposed beneath a clear blue sky.",
|
| 88 |
-
"missing_element": "roof",
|
| 89 |
-
"question_1": "Is the image showing a cottage, could be either with or without a roof",
|
| 90 |
-
"question_2": "Is the roof missing"
|
| 91 |
-
},
|
| 92 |
-
{
|
| 93 |
-
"prompt": "A vintage convertible displayed at a classic-car show, the dashboard stretching unobstructed toward the shining hood.",
|
| 94 |
-
"missing_element": "windshield",
|
| 95 |
-
"question_1": "Is the image showing a car, could be either with or without a windshield",
|
| 96 |
-
"question_2": "Is the windshield missing"
|
| 97 |
-
},
|
| 98 |
-
{
|
| 99 |
-
"prompt": "A mechanical keyboard lit by soft rainbow LEDs, a noticeable gap divides the bottom row of keys.",
|
| 100 |
-
"missing_element": "spacebar",
|
| 101 |
-
"question_1": "Is the image showing a keyboard, could be either with or without a spacebar",
|
| 102 |
-
"question_2": "Is the spacebar missing"
|
| 103 |
-
},
|
| 104 |
-
{
|
| 105 |
-
"prompt": "A wide-eyed owl perched on a branch under moonlight, smooth skin visible across its rounded body.",
|
| 106 |
-
"missing_element": "feathers",
|
| 107 |
-
"question_1": "Is the image showing an owl, could be either with or without feathers",
|
| 108 |
-
"question_2": "Are the feathers missing"
|
| 109 |
-
},
|
| 110 |
-
{
|
| 111 |
-
"prompt": "A leather-bound hardcover lies open on a wooden desk, the interior revealing only a hollow rectangular frame.",
|
| 112 |
-
"missing_element": "pages",
|
| 113 |
-
"question_1": "Is the image showing a book, could be either with or without pages",
|
| 114 |
-
"question_2": "Are the pages missing"
|
| 115 |
-
},
|
| 116 |
-
{
|
| 117 |
-
"prompt": "A tall white lighthouse stands on a stormy cliff, its lantern room dark and empty against gathering clouds.",
|
| 118 |
-
"missing_element": "lamp",
|
| 119 |
-
"question_1": "Is the image showing a lighthouse, could be either with or without a lamp",
|
| 120 |
-
"question_2": "Is the lamp missing"
|
| 121 |
-
},
|
| 122 |
-
{
|
| 123 |
-
"prompt": "A plush armchair positioned directly on a patterned rug, its cushioned seat resting unusually low to the floor.",
|
| 124 |
-
"missing_element": "legs",
|
| 125 |
-
"question_1": "Is the image showing an armchair, could be either with or without legs",
|
| 126 |
-
"question_2": "Are the legs missing"
|
| 127 |
-
},
|
| 128 |
-
{
|
| 129 |
-
"prompt": "A proud buck stands in a forest clearing at dawn, smooth forehead catching the first warm light.",
|
| 130 |
-
"missing_element": "antlers",
|
| 131 |
-
"question_1": "Is the image showing a deer, could be either with or without antlers",
|
| 132 |
-
"question_2": "Are the antlers missing"
|
| 133 |
-
},
|
| 134 |
-
{
|
| 135 |
-
"prompt": "A pale parchment envelope lies addressed on a marble tabletop, its top edge cut straight across.",
|
| 136 |
-
"missing_element": "flap",
|
| 137 |
-
"question_1": "Is the image showing an envelope, could be either with or without a flap",
|
| 138 |
-
"question_2": "Is the flap missing"
|
| 139 |
-
},
|
| 140 |
-
{
|
| 141 |
-
"prompt": "A minimalist wall clock hangs above the mantel, slender hands sweeping across a pristine white face.",
|
| 142 |
-
"missing_element": "numbers",
|
| 143 |
-
"question_1": "Is the image showing a wall clock, could be either with or without numbers",
|
| 144 |
-
"question_2": "Are the numbers missing"
|
| 145 |
-
},
|
| 146 |
-
{
|
| 147 |
-
"prompt": "A bulky white space suit floats in a training pool, the collar ring open to the surrounding water.",
|
| 148 |
-
"missing_element": "helmet",
|
| 149 |
-
"question_1": "Is the image showing a space suit, could be either with or without a helmet",
|
| 150 |
-
"question_2": "Is the helmet missing"
|
| 151 |
-
},
|
| 152 |
-
{
|
| 153 |
-
"prompt": "A towering windmill rises in a golden wheat field, only a solitary hub turning lazily in the breeze.",
|
| 154 |
-
"missing_element": "blades",
|
| 155 |
-
"question_1": "Is the image showing a windmill, could be either with or without blades",
|
| 156 |
-
"question_2": "Are the blades missing"
|
| 157 |
-
},
|
| 158 |
-
{
|
| 159 |
-
"prompt": "A tall oak stands in midsummer sunlight, countless bare branches weaving intricate patterns against the sky.",
|
| 160 |
-
"missing_element": "leaves",
|
| 161 |
-
"question_1": "Is the image showing a tree, could be either with or without leaves",
|
| 162 |
-
"question_2": "Are the leaves missing"
|
| 163 |
-
},
|
| 164 |
-
{
|
| 165 |
-
"prompt": "A yellow school bus is parked outside the depot, rectangular openings along its side reveal rows of seats.",
|
| 166 |
-
"missing_element": "doors",
|
| 167 |
-
"question_1": "Is the image showing a bus, could be either with or without doors",
|
| 168 |
-
"question_2": "Are the doors missing"
|
| 169 |
-
},
|
| 170 |
-
{
|
| 171 |
-
"prompt": "A sleek silver laptop sits open on a desk, the lid framing an empty bezel through which the wall is visible.",
|
| 172 |
-
"missing_element": "screen",
|
| 173 |
-
"question_1": "Is the image showing a laptop, could be either with or without a screen",
|
| 174 |
-
"question_2": "Is the screen missing"
|
| 175 |
-
},
|
| 176 |
-
{
|
| 177 |
-
"prompt": "A polished brass trumpet lies on deep red velvet, the leadpipe tapering to an unfinished rim.",
|
| 178 |
-
"missing_element": "mouthpiece",
|
| 179 |
-
"question_1": "Is the image showing a trumpet, could be either with or without a mouthpiece",
|
| 180 |
-
"question_2": "Is the mouthpiece missing"
|
| 181 |
-
},
|
| 182 |
-
{
|
| 183 |
-
"prompt": "A humanoid robot stands upright in a bright laboratory, cables protruding gently from a smooth collar plate.",
|
| 184 |
-
"missing_element": "head",
|
| 185 |
-
"question_1": "Is the image showing a robot, could be either with or without a head",
|
| 186 |
-
"question_2": "Is the head missing"
|
| 187 |
-
},
|
| 188 |
-
{
|
| 189 |
-
"prompt": "A tall pillar of ivory wax sits untouched on a silver tray, its top surface perfectly unbroken.",
|
| 190 |
-
"missing_element": "wick",
|
| 191 |
-
"question_1": "Is the image showing a candle, could be either with or without a wick",
|
| 192 |
-
"question_2": "Is the wick missing"
|
| 193 |
-
},
|
| 194 |
-
{
|
| 195 |
-
"prompt": "A freshly baked pizza crust layered with rich tomato sauce and scattered basil rests on a stone board.",
|
| 196 |
-
"missing_element": "cheese",
|
| 197 |
-
"question_1": "Is the image showing a pizza, could be either with or without cheese",
|
| 198 |
-
"question_2": "Is the cheese missing"
|
| 199 |
-
},
|
| 200 |
-
{
|
| 201 |
-
"prompt": "A black DSLR body stands on a wooden shelf, the circular mount exposing delicate inner mechanics to view.",
|
| 202 |
-
"missing_element": "lens",
|
| 203 |
-
"question_1": "Is the image showing a DSLR camera, could be either with or without a lens",
|
| 204 |
-
"question_2": "Is the lens missing"
|
| 205 |
-
},
|
| 206 |
-
{
|
| 207 |
-
"prompt": "A grand piano dominates an empty concert hall, a smooth ebony board stretching across the front.",
|
| 208 |
-
"missing_element": "keys",
|
| 209 |
-
"question_1": "Is the image showing a piano, could be either with or without keys",
|
| 210 |
-
"question_2": "Are the keys missing"
|
| 211 |
-
},
|
| 212 |
-
{
|
| 213 |
-
"prompt": "A slender wooden paintbrush rests beside a palette, its metal ferrule clasping only empty air.",
|
| 214 |
-
"missing_element": "bristles",
|
| 215 |
-
"question_1": "Is the image showing a paintbrush, could be either with or without bristles",
|
| 216 |
-
"question_2": "Are the bristles missing"
|
| 217 |
-
},
|
| 218 |
-
{
|
| 219 |
-
"prompt": "A sleek digital watch face sits on a granite countertop, lugs jutting out where something should secure it.",
|
| 220 |
-
"missing_element": "strap",
|
| 221 |
-
"question_1": "Is the image showing a watch, could be either with or without a strap",
|
| 222 |
-
"question_2": "Is the strap missing"
|
| 223 |
-
},
|
| 224 |
-
{
|
| 225 |
-
"prompt": "A young man opens his mouth for a dentist, the inner cavity appearing hollow and still.",
|
| 226 |
-
"missing_element": "tongue",
|
| 227 |
-
"question_1": "Is the image showing a mouth, could be either with or without a tongue",
|
| 228 |
-
"question_2": "Is the tongue missing"
|
| 229 |
-
},
|
| 230 |
-
{
|
| 231 |
-
"prompt": "A matte black motorcycle is parked under neon streetlights, cables stretching forward over the front wheel into empty air.",
|
| 232 |
-
"missing_element": "handlebars",
|
| 233 |
-
"question_1": "Is the image showing a motorcycle, could be either with or without handlebars",
|
| 234 |
-
"question_2": "Are the handlebars missing"
|
| 235 |
-
},
|
| 236 |
-
{
|
| 237 |
-
"prompt": "A retro wooden television cabinet stands in a living room, the front frame revealing intricate wiring and glowing tubes.",
|
| 238 |
-
"missing_element": "screen",
|
| 239 |
-
"question_1": "Is the image showing a television, could be either with or without a screen",
|
| 240 |
-
"question_2": "Is the screen missing"
|
| 241 |
-
},
|
| 242 |
-
{
|
| 243 |
-
"prompt": "A shaggy mountain goat balances on a rocky ledge, its forehead smooth under the midday sun.",
|
| 244 |
-
"missing_element": "horns",
|
| 245 |
-
"question_1": "Is the image showing a goat, could be either with or without horns",
|
| 246 |
-
"question_2": "Are the horns missing"
|
| 247 |
-
},
|
| 248 |
-
{
|
| 249 |
-
"prompt": "A bright red sneaker rests on a locker-room bench, eyelets neatly aligned along its padded tongue.",
|
| 250 |
-
"missing_element": "laces",
|
| 251 |
-
"question_1": "Is the image showing a sneaker, could be either with or without laces",
|
| 252 |
-
"question_2": "Are the laces missing"
|
| 253 |
-
},
|
| 254 |
-
{
|
| 255 |
-
"prompt": "A small green frog sits quietly on a lily pad, smooth domes occupying the front of its head.",
|
| 256 |
-
"missing_element": "eyes",
|
| 257 |
-
"question_1": "Is the image showing a frog, could be either with or without eyes",
|
| 258 |
-
"question_2": "Are the eyes missing"
|
| 259 |
-
},
|
| 260 |
-
{
|
| 261 |
-
"prompt": "A ceramic mug painted with blue floral patterns stands upright on a saucer, its circular shape perfectly continuous.",
|
| 262 |
-
"missing_element": "handle",
|
| 263 |
-
"question_1": "Is the image showing a mug, could be either with or without a handle",
|
| 264 |
-
"question_2": "Is the handle missing"
|
| 265 |
-
},
|
| 266 |
-
{
|
| 267 |
-
"prompt": "A curved golden saxophone rests on a music stand, rows of uncovered tone holes gleaming in the spotlight.",
|
| 268 |
-
"missing_element": "keys",
|
| 269 |
-
"question_1": "Is the image showing a saxophone, could be either with or without keys",
|
| 270 |
-
"question_2": "Are the keys missing"
|
| 271 |
-
},
|
| 272 |
-
{
|
| 273 |
-
"prompt": "A wooden skateboard deck balances across two bricks on the pavement, metal trucks pressed directly to the ground.",
|
| 274 |
-
"missing_element": "wheels",
|
| 275 |
-
"question_1": "Is the image showing a skateboard, could be either with or without wheels",
|
| 276 |
-
"question_2": "Are the wheels missing"
|
| 277 |
-
},
|
| 278 |
-
{
|
| 279 |
-
"prompt": "A felt fedora crown sits on a hat stand, its sides descending straight without any outward extension.",
|
| 280 |
-
"missing_element": "brim",
|
| 281 |
-
"question_1": "Is the image showing a fedora, could be either with or without a brim",
|
| 282 |
-
"question_2": "Is the brim missing"
|
| 283 |
-
},
|
| 284 |
-
{
|
| 285 |
-
"prompt": "A futuristic motorcycle helmet rests on a workbench, the front opening exposing cushioned interior padding.",
|
| 286 |
-
"missing_element": "visor",
|
| 287 |
-
"question_1": "Is the image showing a motorcycle helmet, could be either with or without a visor",
|
| 288 |
-
"question_2": "Is the visor missing"
|
| 289 |
-
},
|
| 290 |
-
{
|
| 291 |
-
"prompt": "An ornate wooden bedframe stands against a midnight-blue wall, evenly spaced slats visible across its width.",
|
| 292 |
-
"missing_element": "mattress",
|
| 293 |
-
"question_1": "Is the image showing a bedframe, could be either with or without a mattress",
|
| 294 |
-
"question_2": "Is the mattress missing"
|
| 295 |
-
},
|
| 296 |
-
{
|
| 297 |
-
"prompt": "A tall brick clock tower dominates the town square, a blank circular recess marking the place where time should be displayed.",
|
| 298 |
-
"missing_element": "clock face",
|
| 299 |
-
"question_1": "Is the image showing a clock tower, could be either with or without a clock face",
|
| 300 |
-
"question_2": "Is the clock face missing"
|
| 301 |
-
},
|
| 302 |
-
{
|
| 303 |
-
"prompt": "An antique pocket watch lies open on velvet, its enamel face gleaming beneath ornate Roman numerals, polished gears exposed.",
|
| 304 |
-
"missing_element": "hands",
|
| 305 |
-
"question_1": "Is the image showing a pocket watch, could be either with or without hands",
|
| 306 |
-
"question_2": "Are the hands missing from the pocket watch"
|
| 307 |
-
},
|
| 308 |
-
{
|
| 309 |
-
"prompt": "A sleek road bicycle leans against an old stone wall, lightweight frame painted crimson and chrome cranks resting above the asphalt.",
|
| 310 |
-
"missing_element": "pedals",
|
| 311 |
-
"question_1": "Is the image showing a bicycle, could be either with or without pedals",
|
| 312 |
-
"question_2": "Are the pedals missing from the bicycle"
|
| 313 |
-
},
|
| 314 |
-
{
|
| 315 |
-
"prompt": "A painted portrait of a young woman hangs in a quiet gallery, delicate features rendered in soft oils, the upper facial planes left as smooth, empty forms.",
|
| 316 |
-
"missing_element": "eyes",
|
| 317 |
-
"question_1": "Is the image showing a portrait of a woman, could be either with or without eyes",
|
| 318 |
-
"question_2": "Are the eyes missing from the portrait of the woman"
|
| 319 |
-
},
|
| 320 |
-
{
|
| 321 |
-
"prompt": "A concert grand piano stands under stage lights, lid propped high so the audience can see straight into a cavity that reveals felt-covered dampers but no striking mechanism.",
|
| 322 |
-
"missing_element": "hammers",
|
| 323 |
-
"question_1": "Is the image showing a grand piano, could be either with or without hammers",
|
| 324 |
-
"question_2": "Are the hammers missing from the grand piano"
|
| 325 |
-
},
|
| 326 |
-
{
|
| 327 |
-
"prompt": "An old wooden clipper drifts across a calm sea, towering masts stretching skyward with only rigging ropes swaying in the breeze.",
|
| 328 |
-
"missing_element": "sails",
|
| 329 |
-
"question_1": "Is the image showing a sailing ship, could be either with or without sails",
|
| 330 |
-
"question_2": "Are the sails missing from the sailing ship"
|
| 331 |
-
},
|
| 332 |
-
{
|
| 333 |
-
"prompt": "A mature oak tree rises against a bright summer sky, wide branches spreading like a skeletal silhouette despite the season.",
|
| 334 |
-
"missing_element": "leaves",
|
| 335 |
-
"question_1": "Is the image showing an oak tree, could be either with or without leaves",
|
| 336 |
-
"question_2": "Are the leaves missing from the oak tree"
|
| 337 |
-
},
|
| 338 |
-
{
|
| 339 |
-
"prompt": "A snug stone cottage nestles at the forest’s edge, ivy climbing across shuttered windows while a blank wall greets visiting guests.",
|
| 340 |
-
"missing_element": "door",
|
| 341 |
-
"question_1": "Is the image showing a cottage, could be either with or without a door",
|
| 342 |
-
"question_2": "Is the door missing from the cottage"
|
| 343 |
-
},
|
| 344 |
-
{
|
| 345 |
-
"prompt": "A streamlined passenger jet rests on the apron, engines mounted beneath a smooth fuselage that runs directly into a tall tail fin.",
|
| 346 |
-
"missing_element": "wings",
|
| 347 |
-
"question_1": "Is the image showing a passenger jet, could be either with or without wings",
|
| 348 |
-
"question_2": "Are the wings missing from the passenger jet"
|
| 349 |
-
},
|
| 350 |
-
{
|
| 351 |
-
"prompt": "A minimalist wristwatch sits on a leather tray, monochrome dial perfectly smooth except for two thin hands orbiting a blank circumference.",
|
| 352 |
-
"missing_element": "numbers",
|
| 353 |
-
"question_1": "Is the image showing a wristwatch, could be either with or without numbers",
|
| 354 |
-
"question_2": "Are the numbers missing from the wristwatch"
|
| 355 |
-
},
|
| 356 |
-
{
|
| 357 |
-
"prompt": "A freshly baked pizza rests on a wooden board, golden crust encircling a vibrant pool of red sauce topped by scattered basil leaves.",
|
| 358 |
-
"missing_element": "cheese",
|
| 359 |
-
"question_1": "Is the image showing a pizza, could be either with or without cheese",
|
| 360 |
-
"question_2": "Is the cheese missing from the pizza"
|
| 361 |
-
},
|
| 362 |
-
{
|
| 363 |
-
"prompt": "A bustling city intersection stretches beneath midday sun, tall signal heads looming overhead with dark glass panels that never change hue.",
|
| 364 |
-
"missing_element": "lights",
|
| 365 |
-
"question_1": "Is the image showing traffic signals, could be either with or without lights",
|
| 366 |
-
"question_2": "Are the lights missing from the traffic signals"
|
| 367 |
-
},
|
| 368 |
-
{
|
| 369 |
-
"prompt": "A colorful skateboard lies abandoned on smooth concrete, grip-taped deck and polished trucks casting neat shadows on the ground.",
|
| 370 |
-
"missing_element": "wheels",
|
| 371 |
-
"question_1": "Is the image showing a skateboard, could be either with or without wheels",
|
| 372 |
-
"question_2": "Are the wheels missing from the skateboard"
|
| 373 |
-
},
|
| 374 |
-
{
|
| 375 |
-
"prompt": "A chessboard is arranged atop a velvet tablecloth, thirty-two squares waiting while one side’s carved army stands alone in battle formation.",
|
| 376 |
-
"missing_element": "black pieces",
|
| 377 |
-
"question_1": "Is the image showing a chessboard, could be either with or without black pieces",
|
| 378 |
-
"question_2": "Are the black pieces missing from the chessboard"
|
| 379 |
-
},
|
| 380 |
-
{
|
| 381 |
-
"prompt": "A cherry-red sports car gleams under showroom lamps, sculpted alloys rotating freely behind open spokes that reveal only empty air.",
|
| 382 |
-
"missing_element": "brakes",
|
| 383 |
-
"question_1": "Is the image showing a sports car, could be either with or without brakes",
|
| 384 |
-
"question_2": "Are the brakes missing from the sports car"
|
| 385 |
-
},
|
| 386 |
-
{
|
| 387 |
-
"prompt": "An open hardcover book rests on a wooden desk, cream-colored pages stretching wide with nothing printed between the margins.",
|
| 388 |
-
"missing_element": "text",
|
| 389 |
-
"question_1": "Is the image showing a book, could be either with or without text",
|
| 390 |
-
"question_2": "Is the text missing from the book"
|
| 391 |
-
},
|
| 392 |
-
{
|
| 393 |
-
"prompt": "A modern desktop tower with tempered-glass side panel displays RGB-lit components, yet no spinning blades disturb the still interior.",
|
| 394 |
-
"missing_element": "fans",
|
| 395 |
-
"question_1": "Is the image showing a computer tower, could be either with or without fans",
|
| 396 |
-
"question_2": "Are the fans missing from the computer tower"
|
| 397 |
-
},
|
| 398 |
-
{
|
| 399 |
-
"prompt": "A straw-stuffed scarecrow stands in the middle of a golden field, flannel shirt hanging limp beside a torso supported by a single post.",
|
| 400 |
-
"missing_element": "arms",
|
| 401 |
-
"question_1": "Is the image showing a scarecrow, could be either with or without arms",
|
| 402 |
-
"question_2": "Are the arms missing from the scarecrow"
|
| 403 |
-
},
|
| 404 |
-
{
|
| 405 |
-
"prompt": "An oil painting depicts a medieval knight in shining armor, bold gaze steady while an empty leather baldric crosses his hip.",
|
| 406 |
-
"missing_element": "sword",
|
| 407 |
-
"question_1": "Is the image showing a knight, could be either with or without a sword",
|
| 408 |
-
"question_2": "Is the sword missing from the knight"
|
| 409 |
-
},
|
| 410 |
-
{
|
| 411 |
-
"prompt": "A delicate porcelain teapot sits on a bamboo tray, floral motifs curling around a rotund body that preserves a graceful spout but offers no side grip.",
|
| 412 |
-
"missing_element": "handle",
|
| 413 |
-
"question_1": "Is the image showing a teapot, could be either with or without a handle",
|
| 414 |
-
"question_2": "Is the handle missing from the teapot"
|
| 415 |
-
},
|
| 416 |
-
{
|
| 417 |
-
"prompt": "An outdoor basketball rim is mounted to a clear backboard, orange ring stark against blue sky with nothing suspended beneath it.",
|
| 418 |
-
"missing_element": "net",
|
| 419 |
-
"question_1": "Is the image showing a basketball hoop, could be either with or without a net",
|
| 420 |
-
"question_2": "Is the net missing from the basketball hoop"
|
| 421 |
-
},
|
| 422 |
-
{
|
| 423 |
-
"prompt": "A formal dining table is fully laid with silverware, porcelain plates and folded linen napkins, yet above each plate only empty space awaits a drink.",
|
| 424 |
-
"missing_element": "glasses",
|
| 425 |
-
"question_1": "Is the image showing a dining table, could be either with or without glasses",
|
| 426 |
-
"question_2": "Are the glasses missing from the dining table"
|
| 427 |
-
},
|
| 428 |
-
{
|
| 429 |
-
"prompt": "A vintage typewriter occupies an author’s desk, metal arms poised above pristine paper while twin spools sit idle and uncovered.",
|
| 430 |
-
"missing_element": "ribbon",
|
| 431 |
-
"question_1": "Is the image showing a typewriter, could be either with or without a ribbon",
|
| 432 |
-
"question_2": "Is the ribbon missing from the typewriter"
|
| 433 |
-
},
|
| 434 |
-
{
|
| 435 |
-
"prompt": "A thick winter parka hangs from a coat rack, quilted panels puffed with down, the front opening held shut only by overlapping fabric.",
|
| 436 |
-
"missing_element": "zipper",
|
| 437 |
-
"question_1": "Is the image showing a winter jacket, could be either with or without a zipper",
|
| 438 |
-
"question_2": "Is the zipper missing from the winter jacket"
|
| 439 |
-
},
|
| 440 |
-
{
|
| 441 |
-
"prompt": "A towering sunflower turns toward daylight, golden petals radiant around a smooth green disk unmarred by patterned specks.",
|
| 442 |
-
"missing_element": "seeds",
|
| 443 |
-
"question_1": "Is the image showing a sunflower, could be either with or without seeds",
|
| 444 |
-
"question_2": "Are the seeds missing from the sunflower"
|
| 445 |
-
},
|
| 446 |
-
{
|
| 447 |
-
"prompt": "A large elephant strides across the savanna, wrinkled hide dusted with red earth, its face ending abruptly below wide flapping ears.",
|
| 448 |
-
"missing_element": "trunk",
|
| 449 |
-
"question_1": "Is the image showing an elephant, could be either with or without a trunk",
|
| 450 |
-
"question_2": "Is the trunk missing from the elephant"
|
| 451 |
-
},
|
| 452 |
-
{
|
| 453 |
-
"prompt": "A painted wooden rowboat drifts on a calm lake, bench seats freshly varnished while the gunwales hold empty brass oarlocks.",
|
| 454 |
-
"missing_element": "oars",
|
| 455 |
-
"question_1": "Is the image showing a rowboat, could be either with or without oars",
|
| 456 |
-
"question_2": "Are the oars missing from the rowboat"
|
| 457 |
-
},
|
| 458 |
-
{
|
| 459 |
-
"prompt": "A snowman stands proudly in a suburban yard, three gleaming spheres stacked neatly, scarf and hat in place yet nothing dots the torso.",
|
| 460 |
-
"missing_element": "buttons",
|
| 461 |
-
"question_1": "Is the image showing a snowman, could be either with or without buttons",
|
| 462 |
-
"question_2": "Are the buttons missing from the snowman"
|
| 463 |
-
},
|
| 464 |
-
{
|
| 465 |
-
"prompt": "A lacquered fountain pen rests atop a journal, transparent reservoir completely clear above a gleaming gold nib.",
|
| 466 |
-
"missing_element": "ink",
|
| 467 |
-
"question_1": "Is the image showing a fountain pen, could be either with or without ink",
|
| 468 |
-
"question_2": "Is the ink missing from the fountain pen"
|
| 469 |
-
},
|
| 470 |
-
{
|
| 471 |
-
"prompt": "A wooden paintbrush handle with a shiny ferrule lies beside a palette, its tip ending in a hollow metal cylinder.",
|
| 472 |
-
"missing_element": "bristles",
|
| 473 |
-
"question_1": "Is the image showing a paintbrush, could be either with or without bristles",
|
| 474 |
-
"question_2": "Are the bristles missing from the paintbrush"
|
| 475 |
-
},
|
| 476 |
-
{
|
| 477 |
-
"prompt": "A pair of oval eyeglass frames sits on folded newsprint, front rims intact while nothing extends toward where ears would rest.",
|
| 478 |
-
"missing_element": "temples",
|
| 479 |
-
"question_1": "Is the image showing eyeglasses, could be either with or without temples",
|
| 480 |
-
"question_2": "Are the temples missing from the eyeglasses"
|
| 481 |
-
},
|
| 482 |
-
{
|
| 483 |
-
"prompt": "A city commuter holds an umbrella open in the rain, black canopy stretched over a central shaft without any visible spokes beneath.",
|
| 484 |
-
"missing_element": "ribs",
|
| 485 |
-
"question_1": "Is the image showing an umbrella, could be either with or without ribs",
|
| 486 |
-
"question_2": "Are the ribs missing from the umbrella"
|
| 487 |
-
},
|
| 488 |
-
{
|
| 489 |
-
"prompt": "A skeletonized wristwatch is showcased under a glass dome, gears whirring beside a sweeping second hand while the outer ring remains entirely blank.",
|
| 490 |
-
"missing_element": "hour markers",
|
| 491 |
-
"question_1": "Is the image showing a wristwatch, could be either with or without hour markers",
|
| 492 |
-
"question_2": "Are the hour markers missing from the wristwatch"
|
| 493 |
-
},
|
| 494 |
-
{
|
| 495 |
-
"prompt": "A nylon tent lies fully spread across a grassy clearing, rainfly attached and guy lines staked, yet the fabric sags flat on the ground.",
|
| 496 |
-
"missing_element": "poles",
|
| 497 |
-
"question_1": "Is the image showing a camping tent, could be either with or without poles",
|
| 498 |
-
"question_2": "Are the poles missing from the camping tent"
|
| 499 |
-
},
|
| 500 |
-
{
|
| 501 |
-
"prompt": "A wooden cuckoo clock hangs on a chalet wall, carved deer and leaves surrounding an ornate dial, but beneath the case no pine-cone ornaments dangle.",
|
| 502 |
-
"missing_element": "weights",
|
| 503 |
-
"question_1": "Is the image showing a cuckoo clock, could be either with or without weights",
|
| 504 |
-
"question_2": "Are the weights missing from the cuckoo clock"
|
| 505 |
-
},
|
| 506 |
-
{
|
| 507 |
-
"prompt": "A modern smartphone rests face-up on a table, edge-to-edge glass reflecting ceiling lights, its top bezel perfectly smooth without any tiny perforations.",
|
| 508 |
-
"missing_element": "speaker grille",
|
| 509 |
-
"question_1": "Is the image showing a smartphone, could be either with or without a speaker grille",
|
| 510 |
-
"question_2": "Is the speaker grille missing from the smartphone"
|
| 511 |
-
},
|
| 512 |
-
{
|
| 513 |
-
"prompt": "A café-style motorcycle waits beside a dusty road, chrome handlebars wide, while the round instrument cluster displays only a blank lens.",
|
| 514 |
-
"missing_element": "speedometer",
|
| 515 |
-
"question_1": "Is the image showing a motorcycle, could be either with or without a speedometer",
|
| 516 |
-
"question_2": "Is the speedometer missing from the motorcycle"
|
| 517 |
-
},
|
| 518 |
-
{
|
| 519 |
-
"prompt": "A slender violin bow lies on crimson velvet, ebony frog adjusted with a silver screw, yet the wooden stick spans unbroken from tip to grip.",
|
| 520 |
-
"missing_element": "hair",
|
| 521 |
-
"question_1": "Is the image showing a violin bow, could be either with or without hair",
|
| 522 |
-
"question_2": "Is the hair missing from the violin bow"
|
| 523 |
-
},
|
| 524 |
-
{
|
| 525 |
-
"prompt": "A gilded birdcage swings gently from a porch hook, domed roof catching afternoon sun, though the interior offers no horizontal bar for resting.",
|
| 526 |
-
"missing_element": "perch",
|
| 527 |
-
"question_1": "Is the image showing a birdcage, could be either with or without a perch",
|
| 528 |
-
"question_2": "Is the perch missing from the birdcage"
|
| 529 |
-
},
|
| 530 |
-
{
|
| 531 |
-
"prompt": "A marble statue of a robed goddess stands among museum columns, shoulders gracefully sloping upward to an abruptly smooth surface.",
|
| 532 |
-
"missing_element": "head",
|
| 533 |
-
"question_1": "Is the image showing a statue, could be either with or without a head",
|
| 534 |
-
"question_2": "Is the head missing from the statue"
|
| 535 |
-
},
|
| 536 |
-
{
|
| 537 |
-
"prompt": "A plush teddy bear sits on a child’s bed, round eyes glinting above a stitched smile while its muzzle remains flat and unadorned.",
|
| 538 |
-
"missing_element": "nose",
|
| 539 |
-
"question_1": "Is the image showing a teddy bear, could be either with or without a nose",
|
| 540 |
-
"question_2": "Is the nose missing from the teddy bear"
|
| 541 |
-
},
|
| 542 |
-
{
|
| 543 |
-
"prompt": "A pair of canvas sneakers stands upright on a doorway mat, metal eyelets neatly aligned along an empty tongue.",
|
| 544 |
-
"missing_element": "laces",
|
| 545 |
-
"question_1": "Is the image showing sneakers, could be either with or without laces",
|
| 546 |
-
"question_2": "Are the laces missing from the sneakers"
|
| 547 |
-
},
|
| 548 |
-
{
|
| 549 |
-
"prompt": "An open refrigerator hums quietly in a small kitchen, interior shelves glassy and clean, yet the door interior shows only blank white plastic.",
|
| 550 |
-
"missing_element": "door shelves",
|
| 551 |
-
"question_1": "Is the image showing a refrigerator, could be either with or without door shelves",
|
| 552 |
-
"question_2": "Are the door shelves missing from the refrigerator"
|
| 553 |
-
},
|
| 554 |
-
{
|
| 555 |
-
"prompt": "Friends sit around a circular stone ring in the dark, glowing embers faintly illuminate their faces while no tongues of light dance upward.",
|
| 556 |
-
"missing_element": "flames",
|
| 557 |
-
"question_1": "Is the image showing a campfire, could be either with or without flames",
|
| 558 |
-
"question_2": "Are the flames missing from the campfire"
|
| 559 |
-
},
|
| 560 |
-
{
|
| 561 |
-
"prompt": "A stainless drinking fountain stands beside a park path, polished button visible, but the curved nozzle yields only silence.",
|
| 562 |
-
"missing_element": "water",
|
| 563 |
-
"question_1": "Is the image showing a drinking fountain, could be either with or without water",
|
| 564 |
-
"question_2": "Is the water missing from the drinking fountain"
|
| 565 |
-
},
|
| 566 |
-
{
|
| 567 |
-
"prompt": "A vintage revolver lies on a green felt display pad, barrel polished and cylinder open, yet beneath the trigger there is nothing to encircle a finger.",
|
| 568 |
-
"missing_element": "trigger guard",
|
| 569 |
-
"question_1": "Is the image showing a revolver, could be either with or without a trigger guard",
|
| 570 |
-
"question_2": "Is the trigger guard missing from the revolver"
|
| 571 |
-
},
|
| 572 |
-
{
|
| 573 |
-
"prompt": "An elaborately drawn compass rose decorates an ancient map, lavish scrollwork filling the cardinal directions but no pointed indicator marks the prime heading.",
|
| 574 |
-
"missing_element": "north arrow",
|
| 575 |
-
"question_1": "Is the image showing a compass rose, could be either with or without a north arrow",
|
| 576 |
-
"question_2": "Is the north arrow missing from the compass rose"
|
| 577 |
-
},
|
| 578 |
-
{
|
| 579 |
-
"prompt": "Futuristic skyscrapers rise under neon twilight, reflective facades forming uninterrupted planes of glowing metal and glass.",
|
| 580 |
-
"missing_element": "windows",
|
| 581 |
-
"question_1": "Is the image showing skyscrapers, could be either with or without windows",
|
| 582 |
-
"question_2": "Are the windows missing from the skyscrapers"
|
| 583 |
-
},
|
| 584 |
-
{
|
| 585 |
-
"prompt": "An orchestra conductor stands on a podium, tuxedo crisp and arms moving fluidly while his raised hand remains empty.",
|
| 586 |
-
"missing_element": "baton",
|
| 587 |
-
"question_1": "Is the image showing a conductor, could be either with or without a baton",
|
| 588 |
-
"question_2": "Is the baton missing from the conductor"
|
| 589 |
-
},
|
| 590 |
-
{
|
| 591 |
-
"prompt": "A soccer field lies freshly mowed, two white uprights planted firmly at the end line, leaving an open rectangle above.",
|
| 592 |
-
"missing_element": "crossbar",
|
| 593 |
-
"question_1": "Is the image showing a soccer goal, could be either with or without a crossbar",
|
| 594 |
-
"question_2": "Is the crossbar missing from the soccer goal"
|
| 595 |
-
},
|
| 596 |
-
{
|
| 597 |
-
"prompt": "A laboratory microscope sits on a steel workbench, coarse and fine focus knobs present, yet the tubular body ends without any glass elements inside.",
|
| 598 |
-
"missing_element": "lenses",
|
| 599 |
-
"question_1": "Is the image showing a microscope, could be either with or without lenses",
|
| 600 |
-
"question_2": "Are the lenses missing from the microscope"
|
| 601 |
-
},
|
| 602 |
-
|
| 603 |
-
{
|
| 604 |
-
"prompt": "A sun-faded acoustic guitar leans against a rustic brick wall, its polished wooden body catching soft afternoon light while slender tuning pegs glint quietly.",
|
| 605 |
-
"missing_element": "strings",
|
| 606 |
-
"question_1": "Is the image showing a guitar , could be either with or without strings",
|
| 607 |
-
"question_2": "Are the strings absent"
|
| 608 |
-
},
|
| 609 |
-
{
|
| 610 |
-
"prompt": "A weathered bicycle stands upright beside a canal, chrome handlebars reflecting the sky and empty forks hovering just above cobblestones.",
|
| 611 |
-
"missing_element": "wheels",
|
| 612 |
-
"question_1": "Is the image showing a bicycle , could be either with or without wheels",
|
| 613 |
-
"question_2": "Are the wheels missing"
|
| 614 |
-
},
|
| 615 |
-
{
|
| 616 |
-
"prompt": "A barn owl perches on an old fence post under moonlight, heart-shaped face smooth and featureless save for delicate feathers.",
|
| 617 |
-
"missing_element": "eyes",
|
| 618 |
-
"question_1": "Is the image showing an owl , could be either with or without eyes",
|
| 619 |
-
"question_2": "Are the eyes absent"
|
| 620 |
-
},
|
| 621 |
-
{
|
| 622 |
-
"prompt": "A sleek silver sedan sits parked under a streetlamp, glossy panels reflecting neon signs yet the side frames reveal wide, open gaps.",
|
| 623 |
-
"missing_element": "doors",
|
| 624 |
-
"question_1": "Is the image showing a car , could be either with or without doors",
|
| 625 |
-
"question_2": "Are the doors missing"
|
| 626 |
-
},
|
| 627 |
-
{
|
| 628 |
-
"prompt": "A towering stone keep rises above a misty valley, its walls unbroken and austere beneath streaks of lichen.",
|
| 629 |
-
"missing_element": "windows",
|
| 630 |
-
"question_1": "Is the image showing a castle , could be either with or without windows",
|
| 631 |
-
"question_2": "Are the windows absent"
|
| 632 |
-
},
|
| 633 |
-
{
|
| 634 |
-
"prompt": "An antique brass pocket watch rests open on a velvet cushion, the ornate hands circling an entirely blank ring.",
|
| 635 |
-
"missing_element": "numbers",
|
| 636 |
-
"question_1": "Is the image showing a pocket watch , could be either with or without numbers",
|
| 637 |
-
"question_2": "Are the numbers missing"
|
| 638 |
-
},
|
| 639 |
-
{
|
| 640 |
-
"prompt": "A colossal amusement wheel stands against a fiery sunset, its skeletal steel rim arching over a silent fairground.",
|
| 641 |
-
"missing_element": "cabins",
|
| 642 |
-
"question_1": "Is the image showing a Ferris wheel , could be either with or without cabins",
|
| 643 |
-
"question_2": "Are the cabins missing"
|
| 644 |
-
},
|
| 645 |
-
{
|
| 646 |
-
"prompt": "A ginger cat naps on a windowsill, its fur puddled around a small, rounded hindquarters.",
|
| 647 |
-
"missing_element": "tail",
|
| 648 |
-
"question_1": "Is the image showing a cat , could be either with or without a tail",
|
| 649 |
-
"question_2": "Is the tail absent"
|
| 650 |
-
},
|
| 651 |
-
{
|
| 652 |
-
"prompt": "A massive African elephant stares calmly across the savanna, large ears fanning out over ivory tusks.",
|
| 653 |
-
"missing_element": "trunk",
|
| 654 |
-
"question_1": "Is the image showing an elephant , could be either with or without a trunk",
|
| 655 |
-
"question_2": "Is the trunk missing"
|
| 656 |
-
},
|
| 657 |
-
{
|
| 658 |
-
"prompt": "A solitary oak trunk rises from a mist-covered meadow, bark gnarled and roots sprawling into damp earth.",
|
| 659 |
-
"missing_element": "branches",
|
| 660 |
-
"question_1": "Is the image showing a tree , could be either with or without branches",
|
| 661 |
-
"question_2": "Are the branches absent"
|
| 662 |
-
},
|
| 663 |
-
{
|
| 664 |
-
"prompt": "A simple wooden chair stands in an empty gallery, its flat seat and upright backrest connected directly to the floor by a single low block.",
|
| 665 |
-
"missing_element": "legs",
|
| 666 |
-
"question_1": "Is the image showing a chair , could be either with or without legs",
|
| 667 |
-
"question_2": "Are the legs missing"
|
| 668 |
-
},
|
| 669 |
-
{
|
| 670 |
-
"prompt": "A tall sailing ship rests in calm harbor waters, dark masts piercing the sky but the rigging hangs slack against naked beams.",
|
| 671 |
-
"missing_element": "sails",
|
| 672 |
-
"question_1": "Is the image showing a ship , could be either with or without sails",
|
| 673 |
-
"question_2": "Are the sails missing"
|
| 674 |
-
},
|
| 675 |
-
{
|
| 676 |
-
"prompt": "A painter's oval palette lies atop a studio table, smeared thumb hole and dried bristles surrounding a pristine, untouched surface.",
|
| 677 |
-
"missing_element": "paint",
|
| 678 |
-
"question_1": "Is the image showing a painter's palette , could be either with or without paint",
|
| 679 |
-
"question_2": "Is the paint absent"
|
| 680 |
-
},
|
| 681 |
-
{
|
| 682 |
-
"prompt": "An old black typewriter sits on a mahogany desk, its metal arms raised above empty square holes where fingers would normally dance.",
|
| 683 |
-
"missing_element": "keys",
|
| 684 |
-
"question_1": "Is the image showing a typewriter , could be either with or without keys",
|
| 685 |
-
"question_2": "Are the keys missing"
|
| 686 |
-
},
|
| 687 |
-
{
|
| 688 |
-
"prompt": "A porcelain coffee mug releases gentle steam on a kitchen counter, its cylindrical body smooth and symmetrical but entirely unadorned on one side.",
|
| 689 |
-
"missing_element": "handle",
|
| 690 |
-
"question_1": "Is the image showing a mug , could be either with or without a handle",
|
| 691 |
-
"question_2": "Is the handle missing"
|
| 692 |
-
},
|
| 693 |
-
{
|
| 694 |
-
"prompt": "An ornate katana rests upon a lacquered stand, its lacquered scabbard parted to reveal only the hilt extending into empty space.",
|
| 695 |
-
"missing_element": "blade",
|
| 696 |
-
"question_1": "Is the image showing a katana , could be either with or without a blade",
|
| 697 |
-
"question_2": "Is the blade missing"
|
| 698 |
-
},
|
| 699 |
-
{
|
| 700 |
-
"prompt": "A modern smartphone lies on a marble tabletop, slim metallic frame enclosing an unbroken dark void.",
|
| 701 |
-
"missing_element": "screen",
|
| 702 |
-
"question_1": "Is the image showing a smartphone , could be either with or without a screen",
|
| 703 |
-
"question_2": "Is the screen missing"
|
| 704 |
-
},
|
| 705 |
-
{
|
| 706 |
-
"prompt": "A commercial jet is parked on the tarmac at dawn, cylindrical fuselage gleaming under floodlights as engines sit exposed beside stubby supports.",
|
| 707 |
-
"missing_element": "wings",
|
| 708 |
-
"question_1": "Is the image showing an airplane , could be either with or without wings",
|
| 709 |
-
"question_2": "Are the wings missing"
|
| 710 |
-
},
|
| 711 |
-
{
|
| 712 |
-
"prompt": "A weather-beaten cowboy hat hangs from a wall peg, tall crown stretching upward with an unusually vertical silhouette.",
|
| 713 |
-
"missing_element": "brim",
|
| 714 |
-
"question_1": "Is the image showing a cowboy hat , could be either with or without a brim",
|
| 715 |
-
"question_2": "Is the brim missing"
|
| 716 |
-
},
|
| 717 |
-
{
|
| 718 |
-
"prompt": "A plump green tree frog rests on a lily pad, smooth body pressed flat like a leaf against the water surface.",
|
| 719 |
-
"missing_element": "legs",
|
| 720 |
-
"question_1": "Is the image showing a frog , could be either with or without legs",
|
| 721 |
-
"question_2": "Are the legs missing"
|
| 722 |
-
},
|
| 723 |
-
{
|
| 724 |
-
"prompt": "A ceramic teapot sits atop a wooden tray, its round belly painted with blue florals and the lid slightly ajar.",
|
| 725 |
-
"missing_element": "spout",
|
| 726 |
-
"question_1": "Is the image showing a teapot , could be either with or without a spout",
|
| 727 |
-
"question_2": "Is the spout missing"
|
| 728 |
-
},
|
| 729 |
-
{
|
| 730 |
-
"prompt": "A snowman stands in a quiet yard at twilight, two round layers stacked neatly, scarf fluttering in a gentle breeze.",
|
| 731 |
-
"missing_element": "head",
|
| 732 |
-
"question_1": "Is the image showing a snowman , could be either with or without a head",
|
| 733 |
-
"question_2": "Is the head missing"
|
| 734 |
-
},
|
| 735 |
-
{
|
| 736 |
-
"prompt": "A silver laptop sits open on a conference table, glowing indicator lights framing a broad, vacant interior cavity.",
|
| 737 |
-
"missing_element": "keyboard",
|
| 738 |
-
"question_1": "Is the image showing a laptop , could be either with or without a keyboard",
|
| 739 |
-
"question_2": "Is the keyboard missing"
|
| 740 |
-
},
|
| 741 |
-
{
|
| 742 |
-
"prompt": "A pair of slender wire-rim glasses rests on a paperback novel, the arced frame shining under a reading lamp while circular openings remain completely clear.",
|
| 743 |
-
"missing_element": "lenses",
|
| 744 |
-
"question_1": "Is the image showing glasses , could be either with or without lenses",
|
| 745 |
-
"question_2": "Are the lenses absent"
|
| 746 |
-
},
|
| 747 |
-
{
|
| 748 |
-
"prompt": "A railroad stretches across golden prairie grass, evenly spaced wooden ties receding toward the horizon without any gleaming metal above.",
|
| 749 |
-
"missing_element": "rails",
|
| 750 |
-
"question_1": "Is the image showing railroad tracks , could be either with or without rails",
|
| 751 |
-
"question_2": "Are the rails missing"
|
| 752 |
-
},
|
| 753 |
-
{
|
| 754 |
-
"prompt": "A vintage streetlamp stands at the corner of a cobblestone alley, glass panes encircling a dark hollow space.",
|
| 755 |
-
"missing_element": "bulb",
|
| 756 |
-
"question_1": "Is the image showing a streetlamp , could be either with or without a bulb",
|
| 757 |
-
"question_2": "Is the bulb missing"
|
| 758 |
-
},
|
| 759 |
-
{
|
| 760 |
-
"prompt": "A children's swing hangs from an old oak branch, two sturdy ropes swaying gently in the breeze over a patch of grass.",
|
| 761 |
-
"missing_element": "seat",
|
| 762 |
-
"question_1": "Is the image showing a swing , could be either with or without a seat",
|
| 763 |
-
"question_2": "Is the seat missing"
|
| 764 |
-
},
|
| 765 |
-
{
|
| 766 |
-
"prompt": "A glossy black grand piano dominates a dim parlor, its lid propped open to reveal a smooth wooden cavity.",
|
| 767 |
-
"missing_element": "strings",
|
| 768 |
-
"question_1": "Is the image showing a piano , could be either with or without strings",
|
| 769 |
-
"question_2": "Are the strings absent"
|
| 770 |
-
},
|
| 771 |
-
{
|
| 772 |
-
"prompt": "A sturdy umbrella leans in a foyer corner, slender metal ribs fanning outward yet nothing spans between them.",
|
| 773 |
-
"missing_element": "fabric",
|
| 774 |
-
"question_1": "Is the image showing an umbrella , could be either with or without fabric",
|
| 775 |
-
"question_2": "Is the fabric missing"
|
| 776 |
-
},
|
| 777 |
-
{
|
| 778 |
-
"prompt": "A high-top sneaker rests on a locker-room bench, white leather panels forming a hollow shell that casts a faint shadow on the wooden slats.",
|
| 779 |
-
"missing_element": "sole",
|
| 780 |
-
"question_1": "Is the image showing a sneaker , could be either with or without a sole",
|
| 781 |
-
"question_2": "Is the sole missing"
|
| 782 |
-
},
|
| 783 |
-
{
|
| 784 |
-
"prompt": "A glossy red fire hydrant stands on a sidewalk, round body capped with nuts yet featuring only a smooth facade on every side.",
|
| 785 |
-
"missing_element": "outlets",
|
| 786 |
-
"question_1": "Is the image showing a fire hydrant , could be either with or without outlets",
|
| 787 |
-
"question_2": "Are the outlets missing"
|
| 788 |
-
},
|
| 789 |
-
{
|
| 790 |
-
"prompt": "A ripe banana sits on a cutting board, gentle curves glowing yellow without a telltale frilled topping.",
|
| 791 |
-
"missing_element": "stem",
|
| 792 |
-
"question_1": "Is the image showing a banana , could be either with or without a stem",
|
| 793 |
-
"question_2": "Is the stem missing"
|
| 794 |
-
},
|
| 795 |
-
{
|
| 796 |
-
"prompt": "A wall clock hangs above a classroom door, a silent disc whose reflective surface catches fluorescent lights but marks no moments.",
|
| 797 |
-
"missing_element": "hands",
|
| 798 |
-
"question_1": "Is the image showing a wall clock , could be either with or without hands",
|
| 799 |
-
"question_2": "Are the hands missing"
|
| 800 |
-
},
|
| 801 |
-
{
|
| 802 |
-
"prompt": "A majestic peacock struts across the palace courtyard, vibrant blues covering a slender body that ends abruptly behind.",
|
| 803 |
-
"missing_element": "tail feathers",
|
| 804 |
-
"question_1": "Is the image showing a peacock , could be either with or without tail feathers",
|
| 805 |
-
"question_2": "Are the tail feathers missing"
|
| 806 |
-
},
|
| 807 |
-
{
|
| 808 |
-
"prompt": "A shopping cart waits in an empty parking lot, metal basket intact atop a rigid axle pressed flat against asphalt.",
|
| 809 |
-
"missing_element": "wheels",
|
| 810 |
-
"question_1": "Is the image showing a shopping cart , could be either with or without wheels",
|
| 811 |
-
"question_2": "Are the wheels missing"
|
| 812 |
-
},
|
| 813 |
-
{
|
| 814 |
-
"prompt": "A classic sailing compass sits atop a nautical map, polished brass ring circling a plain mirrored circle.",
|
| 815 |
-
"missing_element": "needle",
|
| 816 |
-
"question_1": "Is the image showing a compass , could be either with or without a needle",
|
| 817 |
-
"question_2": "Is the needle missing"
|
| 818 |
-
},
|
| 819 |
-
{
|
| 820 |
-
"prompt": "A glossy violin rests on a velvet cloth, graceful curves gleaming beneath studio lights while the ebony fingerboard stretches over a hollow arch.",
|
| 821 |
-
"missing_element": "bridge",
|
| 822 |
-
"question_1": "Is the image showing a violin , could be either with or without a bridge",
|
| 823 |
-
"question_2": "Is the bridge missing"
|
| 824 |
-
},
|
| 825 |
-
{
|
| 826 |
-
"prompt": "A sleek motorcycle is displayed on a showroom pedestal, chrome handlebars gleaming above a suspended frame.",
|
| 827 |
-
"missing_element": "engine",
|
| 828 |
-
"question_1": "Is the image showing a motorcycle , could be either with or without an engine",
|
| 829 |
-
"question_2": "Is the engine missing"
|
| 830 |
-
},
|
| 831 |
-
{
|
| 832 |
-
"prompt": "A minimalist wristwatch lies on a marble vanity, thin leather strap wrapped around a circular case whose interior is pure white.",
|
| 833 |
-
"missing_element": "hands",
|
| 834 |
-
"question_1": "Is the image showing a wristwatch , could be either with or without hands",
|
| 835 |
-
"question_2": "Are the hands missing"
|
| 836 |
-
},
|
| 837 |
-
{
|
| 838 |
-
"prompt": "A passenger bus is parked at a coastal terminal, its length painted turquoise and silver, side panels stretching seamlessly from front to back.",
|
| 839 |
-
"missing_element": "windows",
|
| 840 |
-
"question_1": "Is the image showing a bus , could be either with or without windows",
|
| 841 |
-
"question_2": "Are the windows missing"
|
| 842 |
-
},
|
| 843 |
-
{
|
| 844 |
-
"prompt": "A pink flamingo stands among reeds in shallow water, slender neck curved gracefully but the silhouette seems oddly compact behind.",
|
| 845 |
-
"missing_element": "wings",
|
| 846 |
-
"question_1": "Is the image showing a flamingo , could be either with or without wings",
|
| 847 |
-
"question_2": "Are the wings missing"
|
| 848 |
-
},
|
| 849 |
-
{
|
| 850 |
-
"prompt": "A library shelf features an antique volume with a gilded spine, heavy cover creaking open to reveal a vacant hollow.",
|
| 851 |
-
"missing_element": "pages",
|
| 852 |
-
"question_1": "Is the image showing a book , could be either with or without pages",
|
| 853 |
-
"question_2": "Are the pages missing"
|
| 854 |
-
},
|
| 855 |
-
{
|
| 856 |
-
"prompt": "An armored knight statue stands in a museum alcove, gleaming breastplate reflecting spotlights while the gauntlets clasp nothing.",
|
| 857 |
-
"missing_element": "sword",
|
| 858 |
-
"question_1": "Is the image showing a knight statue , could be either with or without a sword",
|
| 859 |
-
"question_2": "Is the sword missing"
|
| 860 |
-
},
|
| 861 |
-
{
|
| 862 |
-
"prompt": "A sparkling diamond ring rests atop a burgundy velvet cushion, golden band curving smoothly around an empty prong setting.",
|
| 863 |
-
"missing_element": "gemstone",
|
| 864 |
-
"question_1": "Is the image showing a ring , could be either with or without a gemstone",
|
| 865 |
-
"question_2": "Is the gemstone missing"
|
| 866 |
-
},
|
| 867 |
-
{
|
| 868 |
-
"prompt": "A modern windmill rises over sunflower fields, tall white tower supporting a still, empty hub against the blue sky.",
|
| 869 |
-
"missing_element": "blades",
|
| 870 |
-
"question_1": "Is the image showing a windmill , could be either with or without blades",
|
| 871 |
-
"question_2": "Are the blades missing"
|
| 872 |
-
},
|
| 873 |
-
{
|
| 874 |
-
"prompt": "A sleek black skateboard rests on a concrete ramp, smooth underside reflecting sunlight as metal axles stand alone.",
|
| 875 |
-
"missing_element": "wheels",
|
| 876 |
-
"question_1": "Is the image showing a skateboard , could be either with or without wheels",
|
| 877 |
-
"question_2": "Are the wheels missing"
|
| 878 |
-
},
|
| 879 |
-
{
|
| 880 |
-
"prompt": "A small tortoise crawls across a sandy dune, wrinkled skin folding over a rounded back that shows only soft texture.",
|
| 881 |
-
"missing_element": "shell",
|
| 882 |
-
"question_1": "Is the image showing a tortoise , could be either with or without a shell",
|
| 883 |
-
"question_2": "Is the shell missing"
|
| 884 |
-
},
|
| 885 |
-
{
|
| 886 |
-
"prompt": "A camera sits on a tripod overlooking city lights, metallic body facing forward yet revealing a hollow circle where one would normally see glass.",
|
| 887 |
-
"missing_element": "lens",
|
| 888 |
-
"question_1": "Is the image showing a camera , could be either with or without a lens",
|
| 889 |
-
"question_2": "Is the lens missing"
|
| 890 |
-
},
|
| 891 |
-
{
|
| 892 |
-
"prompt": "A spacious greenhouse stands at the edge of a botanical garden, metal arches forming a broad vault that encloses only dusty air.",
|
| 893 |
-
"missing_element": "glass panels",
|
| 894 |
-
"question_1": "Is the image showing a greenhouse , could be either with or without glass panels",
|
| 895 |
-
"question_2": "Are the glass panels missing"
|
| 896 |
-
},
|
| 897 |
-
{
|
| 898 |
-
"prompt": "A firefighter's helmet rests on a polished bench, bright red dome shining under overhead lights without its typical curved protector at the front.",
|
| 899 |
-
"missing_element": "visor",
|
| 900 |
-
"question_1": "Is the image showing a firefighter's helmet , could be either with or without a visor",
|
| 901 |
-
"question_2": "Is the visor missing"
|
| 902 |
-
},
|
| 903 |
-
{
|
| 904 |
-
"prompt": "A vintage bicycle leans against a brick wall, its crimson frame chipped and speckled with rust under soft afternoon light.",
|
| 905 |
-
"missing_element": "wheels",
|
| 906 |
-
"question_1": "Is there a bicycle , could be either with or without wheels in the image",
|
| 907 |
-
"question_2": "Are the wheels missing"
|
| 908 |
-
},
|
| 909 |
-
{
|
| 910 |
-
"prompt": "An antique wristwatch rests on a velvet cushion, golden casing finely engraved and gleaming beneath museum spotlights.",
|
| 911 |
-
"missing_element": "hands",
|
| 912 |
-
"question_1": "Is there a wristwatch , could be either with or without hands in the image",
|
| 913 |
-
"question_2": "Are the hands missing"
|
| 914 |
-
},
|
| 915 |
-
{
|
| 916 |
-
"prompt": "A porcelain teapot sits upon a lace tablecloth, cobalt floral motifs swirling across its rounded body.",
|
| 917 |
-
"missing_element": "spout",
|
| 918 |
-
"question_1": "Is there a teapot , could be either with or without a spout in the image",
|
| 919 |
-
"question_2": "Is the spout missing"
|
| 920 |
-
},
|
| 921 |
-
{
|
| 922 |
-
"prompt": "Round-framed eyeglasses lie open on a memoir’s pages, slender metal rims catching a beam of sunlight.",
|
| 923 |
-
"missing_element": "lenses",
|
| 924 |
-
"question_1": "Are there eyeglasses , could be either with or without lenses in the image",
|
| 925 |
-
"question_2": "Are the lenses absent"
|
| 926 |
-
},
|
| 927 |
-
{
|
| 928 |
-
"prompt": "A weathered sailboat drifts beside a quiet dock, its wooden hull creaking gently against worn pilings.",
|
| 929 |
-
"missing_element": "mast",
|
| 930 |
-
"question_1": "Is there a sailboat , could be either with or without a mast in the image",
|
| 931 |
-
"question_2": "Is the mast missing"
|
| 932 |
-
},
|
| 933 |
-
{
|
| 934 |
-
"prompt": "A colorful classroom globe rests on a wooden desk, continents vividly painted against deep turquoise seas.",
|
| 935 |
-
"missing_element": "stand",
|
| 936 |
-
"question_1": "Is there a globe , could be either with or without a stand in the image",
|
| 937 |
-
"question_2": "Is the stand absent"
|
| 938 |
-
},
|
| 939 |
-
{
|
| 940 |
-
"prompt": "A collapsed umbrella lies beside a doorway, raindrops glistening on its exposed metal ribs.",
|
| 941 |
-
"missing_element": "canopy",
|
| 942 |
-
"question_1": "Is there an umbrella , could be either with or without a canopy in the image",
|
| 943 |
-
"question_2": "Is the canopy missing"
|
| 944 |
-
},
|
| 945 |
-
{
|
| 946 |
-
"prompt": "An acoustic guitar leans against a barstool under warm stage lights, its honey-coloured body polished to a mirror sheen.",
|
| 947 |
-
"missing_element": "strings",
|
| 948 |
-
"question_1": "Is there a guitar , could be either with or without strings in the image",
|
| 949 |
-
"question_2": "Are the strings missing"
|
| 950 |
-
},
|
| 951 |
-
{
|
| 952 |
-
"prompt": "A tall lighthouse towers above a misty headland, red and white stripes bold against the gray sky.",
|
| 953 |
-
"missing_element": "door",
|
| 954 |
-
"question_1": "Is there a lighthouse , could be either with or without a door in the image",
|
| 955 |
-
"question_2": "Is the door absent"
|
| 956 |
-
},
|
| 957 |
-
{
|
| 958 |
-
"prompt": "A retired jet airplane sits in a museum hangar, polished aluminum skin reflecting overhead lamps.",
|
| 959 |
-
"missing_element": "wings",
|
| 960 |
-
"question_1": "Is there an airplane , could be either with or without wings in the image",
|
| 961 |
-
"question_2": "Are the wings missing"
|
| 962 |
-
},
|
| 963 |
-
{
|
| 964 |
-
"prompt": "A medieval stone fortress stands overlooking a winding river, colorful banners fluttering from its rugged towers.",
|
| 965 |
-
"missing_element": "drawbridge",
|
| 966 |
-
"question_1": "Is there a fortress , could be either with or without a drawbridge in the image",
|
| 967 |
-
"question_2": "Is the drawbridge missing"
|
| 968 |
-
},
|
| 969 |
-
{
|
| 970 |
-
"prompt": "A classic sedan is parked beneath a lone streetlamp on a still night, chrome trim gleaming softly.",
|
| 971 |
-
"missing_element": "headlights",
|
| 972 |
-
"question_1": "Is there a sedan , could be either with or without headlights in the image",
|
| 973 |
-
"question_2": "Are the headlights missing"
|
| 974 |
-
},
|
| 975 |
-
{
|
| 976 |
-
"prompt": "A majestic oak rises from a sunny meadow, gnarled branches spreading wide against clear blue sky.",
|
| 977 |
-
"missing_element": "leaves",
|
| 978 |
-
"question_1": "Is there an oak tree , could be either with or without leaves in the image",
|
| 979 |
-
"question_2": "Are the leaves absent"
|
| 980 |
-
},
|
| 981 |
-
{
|
| 982 |
-
"prompt": "A green frog sits serenely on a lily pad amid gentle pond ripples.",
|
| 983 |
-
"missing_element": "legs",
|
| 984 |
-
"question_1": "Is there a frog , could be either with or without legs in the image",
|
| 985 |
-
"question_2": "Are the legs missing"
|
| 986 |
-
},
|
| 987 |
-
{
|
| 988 |
-
"prompt": "A wooden rocking chair rests on a weather-beaten porch, faded paint revealing layers of aging varnish.",
|
| 989 |
-
"missing_element": "seat",
|
| 990 |
-
"question_1": "Is there a rocking chair , could be either with or without a seat in the image",
|
| 991 |
-
"question_2": "Is the seat missing"
|
| 992 |
-
},
|
| 993 |
-
{
|
| 994 |
-
"prompt": "A vintage film camera is displayed on a glass shelf, its leather body pristine and meticulously polished.",
|
| 995 |
-
"missing_element": "lens",
|
| 996 |
-
"question_1": "Is there a film camera , could be either with or without a lens in the image",
|
| 997 |
-
"question_2": "Is the lens absent"
|
| 998 |
-
},
|
| 999 |
-
{
|
| 1000 |
-
"prompt": "A hardcover novel stands upright on a coffee table, its title embossed in ornate gold lettering.",
|
| 1001 |
-
"missing_element": "pages",
|
| 1002 |
-
"question_1": "Is there a book , could be either with or without pages in the image",
|
| 1003 |
-
"question_2": "Are the pages missing"
|
| 1004 |
-
},
|
| 1005 |
-
{
|
| 1006 |
-
"prompt": "An elegant hourglass rests on a mahogany desk, brass frame catching the glow of a desk lamp.",
|
| 1007 |
-
"missing_element": "sand",
|
| 1008 |
-
"question_1": "Is there an hourglass , could be either with or without sand in the image",
|
| 1009 |
-
"question_2": "Is the sand missing"
|
| 1010 |
-
},
|
| 1011 |
-
{
|
| 1012 |
-
"prompt": "A small sparrow is perched on a wooden fence post under a brooding sky.",
|
| 1013 |
-
"missing_element": "wings",
|
| 1014 |
-
"question_1": "Is there a sparrow , could be either with or without wings in the image",
|
| 1015 |
-
"question_2": "Are the wings absent"
|
| 1016 |
-
},
|
| 1017 |
-
{
|
| 1018 |
-
"prompt": "A tall brick clock tower rises above a bustling town square, its silhouette glowing in sunset light.",
|
| 1019 |
-
"missing_element": "clock face",
|
| 1020 |
-
"question_1": "Is there a clock tower , could be either with or without a clock face in the image",
|
| 1021 |
-
"question_2": "Is the clock face missing"
|
| 1022 |
-
},
|
| 1023 |
-
{
|
| 1024 |
-
"prompt": "A black ski mask is folded neatly on a wooden bench beside a locker.",
|
| 1025 |
-
"missing_element": "eye holes",
|
| 1026 |
-
"question_1": "Is there a ski mask , could be either with or without eye holes in the image",
|
| 1027 |
-
"question_2": "Are the eye holes missing"
|
| 1028 |
-
},
|
| 1029 |
-
{
|
| 1030 |
-
"prompt": "A cast-iron frying pan rests on a stovetop, its dark seasoned surface slightly glossy.",
|
| 1031 |
-
"missing_element": "handle",
|
| 1032 |
-
"question_1": "Is there a frying pan , could be either with or without a handle in the image",
|
| 1033 |
-
"question_2": "Is the handle missing"
|
| 1034 |
-
},
|
| 1035 |
-
{
|
| 1036 |
-
"prompt": "A bright red scooter stands on a cobblestone lane, its glossy body reflecting ambient city lights.",
|
| 1037 |
-
"missing_element": "handlebars",
|
| 1038 |
-
"question_1": "Is there a scooter , could be either with or without handlebars in the image",
|
| 1039 |
-
"question_2": "Are the handlebars missing"
|
| 1040 |
-
},
|
| 1041 |
-
{
|
| 1042 |
-
"prompt": "A snail glides slowly along a dew-covered garden leaf under morning light.",
|
| 1043 |
-
"missing_element": "shell",
|
| 1044 |
-
"question_1": "Is there a snail , could be either with or without a shell in the image",
|
| 1045 |
-
"question_2": "Is the shell absent"
|
| 1046 |
-
},
|
| 1047 |
-
{
|
| 1048 |
-
"prompt": "A rugged hiking backpack leans against a pine tree at the trail’s edge, fabric dusted with chalky dirt.",
|
| 1049 |
-
"missing_element": "straps",
|
| 1050 |
-
"question_1": "Is there a backpack , could be either with or without straps in the image",
|
| 1051 |
-
"question_2": "Are the straps missing"
|
| 1052 |
-
},
|
| 1053 |
-
{
|
| 1054 |
-
"prompt": "A roadside mailbox sits atop a weathered wooden post, its paint slightly chipped.",
|
| 1055 |
-
"missing_element": "flag",
|
| 1056 |
-
"question_1": "Is there a mailbox , could be either with or without a flag in the image",
|
| 1057 |
-
"question_2": "Is the flag absent"
|
| 1058 |
-
},
|
| 1059 |
-
{
|
| 1060 |
-
"prompt": "A retro television set stands on tapered legs in a mid-century living room, wood veneer polished to a warm glow.",
|
| 1061 |
-
"missing_element": "screen",
|
| 1062 |
-
"question_1": "Is there a television , could be either with or without a screen in the image",
|
| 1063 |
-
"question_2": "Is the screen missing"
|
| 1064 |
-
},
|
| 1065 |
-
{
|
| 1066 |
-
"prompt": "A brass desk lamp sits beside a stack of papers, its curved shade reflecting amber light.",
|
| 1067 |
-
"missing_element": "bulb",
|
| 1068 |
-
"question_1": "Is there a lamp , could be either with or without a bulb in the image",
|
| 1069 |
-
"question_2": "Is the bulb absent"
|
| 1070 |
-
},
|
| 1071 |
-
{
|
| 1072 |
-
"prompt": "A motorcycle helmet lies on a workbench, its glossy surface speckled with sawdust.",
|
| 1073 |
-
"missing_element": "visor",
|
| 1074 |
-
"question_1": "Is there a helmet , could be either with or without a visor in the image",
|
| 1075 |
-
"question_2": "Is the visor missing"
|
| 1076 |
-
},
|
| 1077 |
-
{
|
| 1078 |
-
"prompt": "A grand piano dominates a silent concert hall stage, black lacquer gleaming under spotlights.",
|
| 1079 |
-
"missing_element": "keys",
|
| 1080 |
-
"question_1": "Is there a piano , could be either with or without keys in the image",
|
| 1081 |
-
"question_2": "Are the keys missing"
|
| 1082 |
-
},
|
| 1083 |
-
{
|
| 1084 |
-
"prompt": "An old stone windmill stands amid golden wheat fields under an expansive blue sky.",
|
| 1085 |
-
"missing_element": "blades",
|
| 1086 |
-
"question_1": "Is there a windmill , could be either with or without blades in the image",
|
| 1087 |
-
"question_2": "Are the blades absent"
|
| 1088 |
-
},
|
| 1089 |
-
{
|
| 1090 |
-
"prompt": "A large observatory telescope is mounted on a sturdy tripod inside a domed chamber.",
|
| 1091 |
-
"missing_element": "eyepiece",
|
| 1092 |
-
"question_1": "Is there a telescope , could be either with or without an eyepiece in the image",
|
| 1093 |
-
"question_2": "Is the eyepiece missing"
|
| 1094 |
-
},
|
| 1095 |
-
{
|
| 1096 |
-
"prompt": "A baby stroller is parked beside a park bench, fabric hood casting a gentle shade.",
|
| 1097 |
-
"missing_element": "wheels",
|
| 1098 |
-
"question_1": "Is there a stroller , could be either with or without wheels in the image",
|
| 1099 |
-
"question_2": "Are the wheels missing"
|
| 1100 |
-
},
|
| 1101 |
-
{
|
| 1102 |
-
"prompt": "A ginger cat curls up on a sunlit windowsill, purring softly in the warm glow.",
|
| 1103 |
-
"missing_element": "tail",
|
| 1104 |
-
"question_1": "Is there a cat , could be either with or without a tail in the image",
|
| 1105 |
-
"question_2": "Is the tail absent"
|
| 1106 |
-
},
|
| 1107 |
-
{
|
| 1108 |
-
"prompt": "A smoking pipe rests atop a leather-bound journal, polished wood glowing softly.",
|
| 1109 |
-
"missing_element": "stem",
|
| 1110 |
-
"question_1": "Is there a pipe , could be either with or without a stem in the image",
|
| 1111 |
-
"question_2": "Is the stem missing"
|
| 1112 |
-
},
|
| 1113 |
-
{
|
| 1114 |
-
"prompt": "A fountain pen lies diagonally across parchment, its marbled barrel shimmering under lamplight.",
|
| 1115 |
-
"missing_element": "nib",
|
| 1116 |
-
"question_1": "Is there a fountain pen , could be either with or without a nib in the image",
|
| 1117 |
-
"question_2": "Is the nib absent"
|
| 1118 |
-
},
|
| 1119 |
-
{
|
| 1120 |
-
"prompt": "An ornate picture frame hangs on a gallery wall, intricate gilded borders catching overhead lighting.",
|
| 1121 |
-
"missing_element": "glass",
|
| 1122 |
-
"question_1": "Is there a picture frame , could be either with or without glass in the image",
|
| 1123 |
-
"question_2": "Is the glass missing"
|
| 1124 |
-
},
|
| 1125 |
-
{
|
| 1126 |
-
"prompt": "A skateboard rests on a graffiti-sprayed ramp, deck graphics vibrant and scuffed at the edges.",
|
| 1127 |
-
"missing_element": "wheels",
|
| 1128 |
-
"question_1": "Is there a skateboard , could be either with or without wheels in the image",
|
| 1129 |
-
"question_2": "Are the wheels missing"
|
| 1130 |
-
},
|
| 1131 |
-
{
|
| 1132 |
-
"prompt": "A platinum engagement ring sits in a velvet box under a small spotlight.",
|
| 1133 |
-
"missing_element": "gemstone",
|
| 1134 |
-
"question_1": "Is there a ring , could be either with or without a gemstone in the image",
|
| 1135 |
-
"question_2": "Is the gemstone absent"
|
| 1136 |
-
},
|
| 1137 |
-
{
|
| 1138 |
-
"prompt": "A white rocket stands upright on a launch pad against a pale dawn sky, service towers flanking it.",
|
| 1139 |
-
"missing_element": "fins",
|
| 1140 |
-
"question_1": "Is there a rocket , could be either with or without fins in the image",
|
| 1141 |
-
"question_2": "Are the fins missing"
|
| 1142 |
-
},
|
| 1143 |
-
{
|
| 1144 |
-
"prompt": "Over-ear headphones are draped across a mixing console, their matte black shells shining softly.",
|
| 1145 |
-
"missing_element": "ear pads",
|
| 1146 |
-
"question_1": "Are there headphones , could be either with or without ear pads in the image",
|
| 1147 |
-
"question_2": "Are the ear pads missing"
|
| 1148 |
-
},
|
| 1149 |
-
{
|
| 1150 |
-
"prompt": "A cotton T-shirt is neatly folded on a wooden shelf, its vibrant graphic centered on the chest.",
|
| 1151 |
-
"missing_element": "sleeves",
|
| 1152 |
-
"question_1": "Is there a T-shirt , could be either with or without sleeves in the image",
|
| 1153 |
-
"question_2": "Are the sleeves missing"
|
| 1154 |
-
},
|
| 1155 |
-
{
|
| 1156 |
-
"prompt": "A snowman stands in a quiet front yard, two coal eyes and a jaunty hat giving it character.",
|
| 1157 |
-
"missing_element": "nose",
|
| 1158 |
-
"question_1": "Is there a snowman , could be either with or without a nose in the image",
|
| 1159 |
-
"question_2": "Is the nose missing"
|
| 1160 |
-
},
|
| 1161 |
-
{
|
| 1162 |
-
"prompt": "A worn canvas sneaker lies abandoned on a beach boardwalk, sand sprinkled across its fabric.",
|
| 1163 |
-
"missing_element": "laces",
|
| 1164 |
-
"question_1": "Is there a sneaker , could be either with or without laces in the image",
|
| 1165 |
-
"question_2": "Are the laces absent"
|
| 1166 |
-
},
|
| 1167 |
-
{
|
| 1168 |
-
"prompt": "A rustic lantern hangs from a cabin beam, metal frame dark with age.",
|
| 1169 |
-
"missing_element": "glass panes",
|
| 1170 |
-
"question_1": "Is there a lantern , could be either with or without glass panes in the image",
|
| 1171 |
-
"question_2": "Are the glass panes missing"
|
| 1172 |
-
},
|
| 1173 |
-
{
|
| 1174 |
-
"prompt": "A mechanical keyboard rests on a neon-lit desk, keycaps glowing with colorful backlight.",
|
| 1175 |
-
"missing_element": "spacebar",
|
| 1176 |
-
"question_1": "Is there a keyboard , could be either with or without a spacebar in the image",
|
| 1177 |
-
"question_2": "Is the spacebar missing"
|
| 1178 |
-
},
|
| 1179 |
-
{
|
| 1180 |
-
"prompt": "A plush teddy bear is propped against a pillow in a child’s room, its fur softly illuminated by night-light glow.",
|
| 1181 |
-
"missing_element": "eyes",
|
| 1182 |
-
"question_1": "Is there a teddy bear , could be either with or without eyes in the image",
|
| 1183 |
-
"question_2": "Are the eyes absent"
|
| 1184 |
-
},
|
| 1185 |
-
{
|
| 1186 |
-
"prompt": "A basketball hoop hangs above a driveway, backboard edges chipped from years of play.",
|
| 1187 |
-
"missing_element": "net",
|
| 1188 |
-
"question_1": "Is there a basketball hoop , could be either with or without a net in the image",
|
| 1189 |
-
"question_2": "Is the net missing"
|
| 1190 |
-
},
|
| 1191 |
-
{
|
| 1192 |
-
"prompt": "A crystal wine glass stands atop a linen napkin beside polished silverware.",
|
| 1193 |
-
"missing_element": "stem",
|
| 1194 |
-
"question_1": "Is there a wine glass , could be either with or without a stem in the image",
|
| 1195 |
-
"question_2": "Is the stem absent"
|
| 1196 |
-
},
|
| 1197 |
-
{
|
| 1198 |
-
"prompt": "A decorative pocket mirror lies on a marble vanity, ornate silver backing engraved with curling vines.",
|
| 1199 |
-
"missing_element": "reflective surface",
|
| 1200 |
-
"question_1": "Is there a pocket mirror , could be either with or without a reflective surface in the image",
|
| 1201 |
-
"question_2": "Is the reflective surface missing"
|
| 1202 |
-
}
|
| 1203 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VSF/prompts/prompts_gen.py
DELETED
|
@@ -1,29 +0,0 @@
|
|
| 1 |
-
from openai import OpenAI
|
| 2 |
-
from pydantic import BaseModel
|
| 3 |
-
import dotenv
|
| 4 |
-
import tqdm
|
| 5 |
-
|
| 6 |
-
client = OpenAI()
|
| 7 |
-
|
| 8 |
-
class Prompt(BaseModel):
|
| 9 |
-
prompt: str
|
| 10 |
-
missing_element: str
|
| 11 |
-
question_1: str
|
| 12 |
-
question_2: str
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
class Prompts(BaseModel):
|
| 16 |
-
prompts: list[Prompt]
|
| 17 |
-
|
| 18 |
-
with open("test_prompt.jsonl", "w") as f:
|
| 19 |
-
for _ in range(2):
|
| 20 |
-
response = client.responses.parse(
|
| 21 |
-
model="o3",
|
| 22 |
-
input="Write a detailed but not long prompt for generating an image of any object, creature, or scene that is missing a typically expected component or feature. The result should remain visually and physically coherent. It must not create a contradiction or impossibility. For example, acceptable prompts might be: 'a violin without strings', 'a spider with no legs', or 'a staircase with no steps'. (do not repeat these) Do not include self-contradictory cases like 'a crowded dining hall without people' or 'a lit candle with no flame'. The prompt do not need to be physically plausible (i.e. you can have a melted iron without glow). The response should be a descriptive text not a imperative sentences. Put the description and the missing element in the two part of the JSON response. The first value should be the description of the object, creature, or scene, and the second value (just a few words) should be the missing element (e.g. 'cars', 'strings'). The missing element should NOT be mentioned in the first sentence, and put the missing item in 'missing_item' only, do not mention it in prompt. Do NOT repeat the given examples. Each time generate 50 prompts. Additionally, you should give 1, asking if the image fit your description and missing element, for example, if your prompt is 'a violin xyz' and missing element is 'string', the question should be something like 'Is the image showing a violin without strings?', make sure to use the same word for description and question if the object has multiple names, (e.g. football vs soccer ball). Frame the question in a two part question, first part asking if there is the described object in it (frame it like x with or without y, where x is the main element and y is the missing ite,), second part is if the element is missing. Put the first part in question_1 and the second part in question_2. The missing item should be something that is easy to confiem from the generated image. ",
|
| 23 |
-
text_format=Prompts,
|
| 24 |
-
reasoning={"effort": "high"}
|
| 25 |
-
)
|
| 26 |
-
|
| 27 |
-
f.write(response.output_text + "\n")
|
| 28 |
-
f.flush()
|
| 29 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VSF/prompts/test_prompt.json
DELETED
|
@@ -1,1203 +0,0 @@
|
|
| 1 |
-
[
|
| 2 |
-
{
|
| 3 |
-
"prompt": "A sleek white sailboat drifting on calm azure waters, its tall mast rising plainly into the sky.",
|
| 4 |
-
"missing_element": "sails",
|
| 5 |
-
"question_1": "Is the image showing a sailboat, could be either with or without sails",
|
| 6 |
-
"question_2": "Are the sails missing"
|
| 7 |
-
},
|
| 8 |
-
{
|
| 9 |
-
"prompt": "A vintage red bicycle leaning against a brick wall, its pedals leading back to a solitary rear gear.",
|
| 10 |
-
"missing_element": "chain",
|
| 11 |
-
"question_1": "Is the image showing a bicycle, could be either with or without a chain",
|
| 12 |
-
"question_2": "Is the chain missing"
|
| 13 |
-
},
|
| 14 |
-
{
|
| 15 |
-
"prompt": "A short-haired gray cat sitting alert on a windowsill, its cheeks unusually smooth beneath attentive eyes.",
|
| 16 |
-
"missing_element": "whiskers",
|
| 17 |
-
"question_1": "Is the image showing a cat, could be either with or without whiskers",
|
| 18 |
-
"question_2": "Are the whiskers missing"
|
| 19 |
-
},
|
| 20 |
-
{
|
| 21 |
-
"prompt": "An ancient stone castle atop a grassy hill, the entrance arch yawning openly into the sunlit courtyard.",
|
| 22 |
-
"missing_element": "gates",
|
| 23 |
-
"question_1": "Is the image showing a castle, could be either with or without gates",
|
| 24 |
-
"question_2": "Are the gates missing"
|
| 25 |
-
},
|
| 26 |
-
{
|
| 27 |
-
"prompt": "A brightly colored hot-air balloon inflated at dawn, long tethers dangling toward the misty field below.",
|
| 28 |
-
"missing_element": "basket",
|
| 29 |
-
"question_1": "Is the image showing a hot-air balloon, could be either with or without a basket",
|
| 30 |
-
"question_2": "Is the basket missing"
|
| 31 |
-
},
|
| 32 |
-
{
|
| 33 |
-
"prompt": "A soft-skinned turtle crawling along a sandy shoreline, its limbs and head fully exposed under morning light.",
|
| 34 |
-
"missing_element": "shell",
|
| 35 |
-
"question_1": "Is the image showing a turtle, could be either with or without a shell",
|
| 36 |
-
"question_2": "Is the shell missing"
|
| 37 |
-
},
|
| 38 |
-
{
|
| 39 |
-
"prompt": "A sleek silver train resting at the station platform, its undercarriage hovering just above the rails.",
|
| 40 |
-
"missing_element": "wheels",
|
| 41 |
-
"question_1": "Is the image showing a train, could be either with or without wheels",
|
| 42 |
-
"question_2": "Are the wheels missing"
|
| 43 |
-
},
|
| 44 |
-
{
|
| 45 |
-
"prompt": "A pair of modern black-framed eyeglasses placed on a glossy table, the frames entirely empty inside.",
|
| 46 |
-
"missing_element": "lenses",
|
| 47 |
-
"question_1": "Is the image showing eyeglasses, could be either with or without lenses",
|
| 48 |
-
"question_2": "Are the lenses missing"
|
| 49 |
-
},
|
| 50 |
-
{
|
| 51 |
-
"prompt": "An elegant fountain pen lies uncapped on parchment, its polished grip narrowing to a hollow opening.",
|
| 52 |
-
"missing_element": "nib",
|
| 53 |
-
"question_1": "Is the image showing a fountain pen, could be either with or without a nib",
|
| 54 |
-
"question_2": "Is the nib missing"
|
| 55 |
-
},
|
| 56 |
-
{
|
| 57 |
-
"prompt": "A collapsed metal umbrella frame resting against a café chair, slender ribs splayed like spokes.",
|
| 58 |
-
"missing_element": "canopy",
|
| 59 |
-
"question_1": "Is the image showing an umbrella, could be either with or without a canopy",
|
| 60 |
-
"question_2": "Is the canopy missing"
|
| 61 |
-
},
|
| 62 |
-
{
|
| 63 |
-
"prompt": "An elongated airplane fuselage parked on the tarmac, twin engines hugging its smooth sides under cloudy skies.",
|
| 64 |
-
"missing_element": "wings",
|
| 65 |
-
"question_1": "Is the image showing an airplane, could be either with or without wings",
|
| 66 |
-
"question_2": "Are the wings missing"
|
| 67 |
-
},
|
| 68 |
-
{
|
| 69 |
-
"prompt": "A brass desk lamp arcs elegantly over an open book, its socket empty save for threaded metal.",
|
| 70 |
-
"missing_element": "bulb",
|
| 71 |
-
"question_1": "Is the image showing a desk lamp, could be either with or without a bulb",
|
| 72 |
-
"question_2": "Is the bulb missing"
|
| 73 |
-
},
|
| 74 |
-
{
|
| 75 |
-
"prompt": "A sunburst electric guitar body hanging on a studio wall, pickups and bridge gleaming under soft spotlights.",
|
| 76 |
-
"missing_element": "neck",
|
| 77 |
-
"question_1": "Is the image showing an electric guitar, could be either with or without a neck",
|
| 78 |
-
"question_2": "Is the neck missing"
|
| 79 |
-
},
|
| 80 |
-
{
|
| 81 |
-
"prompt": "A streamlined silver fish gliding through crystal water, its sleek profile unbroken by any protrusions.",
|
| 82 |
-
"missing_element": "fins",
|
| 83 |
-
"question_1": "Is the image showing a fish, could be either with or without fins",
|
| 84 |
-
"question_2": "Are the fins missing"
|
| 85 |
-
},
|
| 86 |
-
{
|
| 87 |
-
"prompt": "A quaint brick cottage sitting in a meadow, wooden rafters exposed beneath a clear blue sky.",
|
| 88 |
-
"missing_element": "roof",
|
| 89 |
-
"question_1": "Is the image showing a cottage, could be either with or without a roof",
|
| 90 |
-
"question_2": "Is the roof missing"
|
| 91 |
-
},
|
| 92 |
-
{
|
| 93 |
-
"prompt": "A vintage convertible displayed at a classic-car show, the dashboard stretching unobstructed toward the shining hood.",
|
| 94 |
-
"missing_element": "windshield",
|
| 95 |
-
"question_1": "Is the image showing a car, could be either with or without a windshield",
|
| 96 |
-
"question_2": "Is the windshield missing"
|
| 97 |
-
},
|
| 98 |
-
{
|
| 99 |
-
"prompt": "A mechanical keyboard lit by soft rainbow LEDs, a noticeable gap divides the bottom row of keys.",
|
| 100 |
-
"missing_element": "spacebar",
|
| 101 |
-
"question_1": "Is the image showing a keyboard, could be either with or without a spacebar",
|
| 102 |
-
"question_2": "Is the spacebar missing"
|
| 103 |
-
},
|
| 104 |
-
{
|
| 105 |
-
"prompt": "A wide-eyed owl perched on a branch under moonlight, smooth skin visible across its rounded body.",
|
| 106 |
-
"missing_element": "feathers",
|
| 107 |
-
"question_1": "Is the image showing an owl, could be either with or without feathers",
|
| 108 |
-
"question_2": "Are the feathers missing"
|
| 109 |
-
},
|
| 110 |
-
{
|
| 111 |
-
"prompt": "A leather-bound hardcover lies open on a wooden desk, the interior revealing only a hollow rectangular frame.",
|
| 112 |
-
"missing_element": "pages",
|
| 113 |
-
"question_1": "Is the image showing a book, could be either with or without pages",
|
| 114 |
-
"question_2": "Are the pages missing"
|
| 115 |
-
},
|
| 116 |
-
{
|
| 117 |
-
"prompt": "A tall white lighthouse stands on a stormy cliff, its lantern room dark and empty against gathering clouds.",
|
| 118 |
-
"missing_element": "lamp",
|
| 119 |
-
"question_1": "Is the image showing a lighthouse, could be either with or without a lamp",
|
| 120 |
-
"question_2": "Is the lamp missing"
|
| 121 |
-
},
|
| 122 |
-
{
|
| 123 |
-
"prompt": "A plush armchair positioned directly on a patterned rug, its cushioned seat resting unusually low to the floor.",
|
| 124 |
-
"missing_element": "legs",
|
| 125 |
-
"question_1": "Is the image showing an armchair, could be either with or without legs",
|
| 126 |
-
"question_2": "Are the legs missing"
|
| 127 |
-
},
|
| 128 |
-
{
|
| 129 |
-
"prompt": "A proud buck stands in a forest clearing at dawn, smooth forehead catching the first warm light.",
|
| 130 |
-
"missing_element": "antlers",
|
| 131 |
-
"question_1": "Is the image showing a deer, could be either with or without antlers",
|
| 132 |
-
"question_2": "Are the antlers missing"
|
| 133 |
-
},
|
| 134 |
-
{
|
| 135 |
-
"prompt": "A pale parchment envelope lies addressed on a marble tabletop, its top edge cut straight across.",
|
| 136 |
-
"missing_element": "flap",
|
| 137 |
-
"question_1": "Is the image showing an envelope, could be either with or without a flap",
|
| 138 |
-
"question_2": "Is the flap missing"
|
| 139 |
-
},
|
| 140 |
-
{
|
| 141 |
-
"prompt": "A minimalist wall clock hangs above the mantel, slender hands sweeping across a pristine white face.",
|
| 142 |
-
"missing_element": "numbers",
|
| 143 |
-
"question_1": "Is the image showing a wall clock, could be either with or without numbers",
|
| 144 |
-
"question_2": "Are the numbers missing"
|
| 145 |
-
},
|
| 146 |
-
{
|
| 147 |
-
"prompt": "A bulky white space suit floats in a training pool, the collar ring open to the surrounding water.",
|
| 148 |
-
"missing_element": "helmet",
|
| 149 |
-
"question_1": "Is the image showing a space suit, could be either with or without a helmet",
|
| 150 |
-
"question_2": "Is the helmet missing"
|
| 151 |
-
},
|
| 152 |
-
{
|
| 153 |
-
"prompt": "A towering windmill rises in a golden wheat field, only a solitary hub turning lazily in the breeze.",
|
| 154 |
-
"missing_element": "blades",
|
| 155 |
-
"question_1": "Is the image showing a windmill, could be either with or without blades",
|
| 156 |
-
"question_2": "Are the blades missing"
|
| 157 |
-
},
|
| 158 |
-
{
|
| 159 |
-
"prompt": "A tall oak stands in midsummer sunlight, countless bare branches weaving intricate patterns against the sky.",
|
| 160 |
-
"missing_element": "leaves",
|
| 161 |
-
"question_1": "Is the image showing a tree, could be either with or without leaves",
|
| 162 |
-
"question_2": "Are the leaves missing"
|
| 163 |
-
},
|
| 164 |
-
{
|
| 165 |
-
"prompt": "A yellow school bus is parked outside the depot, rectangular openings along its side reveal rows of seats.",
|
| 166 |
-
"missing_element": "doors",
|
| 167 |
-
"question_1": "Is the image showing a bus, could be either with or without doors",
|
| 168 |
-
"question_2": "Are the doors missing"
|
| 169 |
-
},
|
| 170 |
-
{
|
| 171 |
-
"prompt": "A sleek silver laptop sits open on a desk, the lid framing an empty bezel through which the wall is visible.",
|
| 172 |
-
"missing_element": "screen",
|
| 173 |
-
"question_1": "Is the image showing a laptop, could be either with or without a screen",
|
| 174 |
-
"question_2": "Is the screen missing"
|
| 175 |
-
},
|
| 176 |
-
{
|
| 177 |
-
"prompt": "A polished brass trumpet lies on deep red velvet, the leadpipe tapering to an unfinished rim.",
|
| 178 |
-
"missing_element": "mouthpiece",
|
| 179 |
-
"question_1": "Is the image showing a trumpet, could be either with or without a mouthpiece",
|
| 180 |
-
"question_2": "Is the mouthpiece missing"
|
| 181 |
-
},
|
| 182 |
-
{
|
| 183 |
-
"prompt": "A humanoid robot stands upright in a bright laboratory, cables protruding gently from a smooth collar plate.",
|
| 184 |
-
"missing_element": "head",
|
| 185 |
-
"question_1": "Is the image showing a robot, could be either with or without a head",
|
| 186 |
-
"question_2": "Is the head missing"
|
| 187 |
-
},
|
| 188 |
-
{
|
| 189 |
-
"prompt": "A tall pillar of ivory wax sits untouched on a silver tray, its top surface perfectly unbroken.",
|
| 190 |
-
"missing_element": "wick",
|
| 191 |
-
"question_1": "Is the image showing a candle, could be either with or without a wick",
|
| 192 |
-
"question_2": "Is the wick missing"
|
| 193 |
-
},
|
| 194 |
-
{
|
| 195 |
-
"prompt": "A freshly baked pizza crust layered with rich tomato sauce and scattered basil rests on a stone board.",
|
| 196 |
-
"missing_element": "cheese",
|
| 197 |
-
"question_1": "Is the image showing a pizza, could be either with or without cheese",
|
| 198 |
-
"question_2": "Is the cheese missing"
|
| 199 |
-
},
|
| 200 |
-
{
|
| 201 |
-
"prompt": "A black DSLR body stands on a wooden shelf, the circular mount exposing delicate inner mechanics to view.",
|
| 202 |
-
"missing_element": "lens",
|
| 203 |
-
"question_1": "Is the image showing a DSLR camera, could be either with or without a lens",
|
| 204 |
-
"question_2": "Is the lens missing"
|
| 205 |
-
},
|
| 206 |
-
{
|
| 207 |
-
"prompt": "A grand piano dominates an empty concert hall, a smooth ebony board stretching across the front.",
|
| 208 |
-
"missing_element": "keys",
|
| 209 |
-
"question_1": "Is the image showing a piano, could be either with or without keys",
|
| 210 |
-
"question_2": "Are the keys missing"
|
| 211 |
-
},
|
| 212 |
-
{
|
| 213 |
-
"prompt": "A slender wooden paintbrush rests beside a palette, its metal ferrule clasping only empty air.",
|
| 214 |
-
"missing_element": "bristles",
|
| 215 |
-
"question_1": "Is the image showing a paintbrush, could be either with or without bristles",
|
| 216 |
-
"question_2": "Are the bristles missing"
|
| 217 |
-
},
|
| 218 |
-
{
|
| 219 |
-
"prompt": "A sleek digital watch face sits on a granite countertop, lugs jutting out where something should secure it.",
|
| 220 |
-
"missing_element": "strap",
|
| 221 |
-
"question_1": "Is the image showing a watch, could be either with or without a strap",
|
| 222 |
-
"question_2": "Is the strap missing"
|
| 223 |
-
},
|
| 224 |
-
{
|
| 225 |
-
"prompt": "A young man opens his mouth for a dentist, the inner cavity appearing hollow and still.",
|
| 226 |
-
"missing_element": "tongue",
|
| 227 |
-
"question_1": "Is the image showing a mouth, could be either with or without a tongue",
|
| 228 |
-
"question_2": "Is the tongue missing"
|
| 229 |
-
},
|
| 230 |
-
{
|
| 231 |
-
"prompt": "A matte black motorcycle is parked under neon streetlights, cables stretching forward over the front wheel into empty air.",
|
| 232 |
-
"missing_element": "handlebars",
|
| 233 |
-
"question_1": "Is the image showing a motorcycle, could be either with or without handlebars",
|
| 234 |
-
"question_2": "Are the handlebars missing"
|
| 235 |
-
},
|
| 236 |
-
{
|
| 237 |
-
"prompt": "A retro wooden television cabinet stands in a living room, the front frame revealing intricate wiring and glowing tubes.",
|
| 238 |
-
"missing_element": "screen",
|
| 239 |
-
"question_1": "Is the image showing a television, could be either with or without a screen",
|
| 240 |
-
"question_2": "Is the screen missing"
|
| 241 |
-
},
|
| 242 |
-
{
|
| 243 |
-
"prompt": "A shaggy mountain goat balances on a rocky ledge, its forehead smooth under the midday sun.",
|
| 244 |
-
"missing_element": "horns",
|
| 245 |
-
"question_1": "Is the image showing a goat, could be either with or without horns",
|
| 246 |
-
"question_2": "Are the horns missing"
|
| 247 |
-
},
|
| 248 |
-
{
|
| 249 |
-
"prompt": "A bright red sneaker rests on a locker-room bench, eyelets neatly aligned along its padded tongue.",
|
| 250 |
-
"missing_element": "laces",
|
| 251 |
-
"question_1": "Is the image showing a sneaker, could be either with or without laces",
|
| 252 |
-
"question_2": "Are the laces missing"
|
| 253 |
-
},
|
| 254 |
-
{
|
| 255 |
-
"prompt": "A small green frog sits quietly on a lily pad, smooth domes occupying the front of its head.",
|
| 256 |
-
"missing_element": "eyes",
|
| 257 |
-
"question_1": "Is the image showing a frog, could be either with or without eyes",
|
| 258 |
-
"question_2": "Are the eyes missing"
|
| 259 |
-
},
|
| 260 |
-
{
|
| 261 |
-
"prompt": "A ceramic mug painted with blue floral patterns stands upright on a saucer, its circular shape perfectly continuous.",
|
| 262 |
-
"missing_element": "handle",
|
| 263 |
-
"question_1": "Is the image showing a mug, could be either with or without a handle",
|
| 264 |
-
"question_2": "Is the handle missing"
|
| 265 |
-
},
|
| 266 |
-
{
|
| 267 |
-
"prompt": "A curved golden saxophone rests on a music stand, rows of uncovered tone holes gleaming in the spotlight.",
|
| 268 |
-
"missing_element": "keys",
|
| 269 |
-
"question_1": "Is the image showing a saxophone, could be either with or without keys",
|
| 270 |
-
"question_2": "Are the keys missing"
|
| 271 |
-
},
|
| 272 |
-
{
|
| 273 |
-
"prompt": "A wooden skateboard deck balances across two bricks on the pavement, metal trucks pressed directly to the ground.",
|
| 274 |
-
"missing_element": "wheels",
|
| 275 |
-
"question_1": "Is the image showing a skateboard, could be either with or without wheels",
|
| 276 |
-
"question_2": "Are the wheels missing"
|
| 277 |
-
},
|
| 278 |
-
{
|
| 279 |
-
"prompt": "A felt fedora crown sits on a hat stand, its sides descending straight without any outward extension.",
|
| 280 |
-
"missing_element": "brim",
|
| 281 |
-
"question_1": "Is the image showing a fedora, could be either with or without a brim",
|
| 282 |
-
"question_2": "Is the brim missing"
|
| 283 |
-
},
|
| 284 |
-
{
|
| 285 |
-
"prompt": "A futuristic motorcycle helmet rests on a workbench, the front opening exposing cushioned interior padding.",
|
| 286 |
-
"missing_element": "visor",
|
| 287 |
-
"question_1": "Is the image showing a motorcycle helmet, could be either with or without a visor",
|
| 288 |
-
"question_2": "Is the visor missing"
|
| 289 |
-
},
|
| 290 |
-
{
|
| 291 |
-
"prompt": "An ornate wooden bedframe stands against a midnight-blue wall, evenly spaced slats visible across its width.",
|
| 292 |
-
"missing_element": "mattress",
|
| 293 |
-
"question_1": "Is the image showing a bedframe, could be either with or without a mattress",
|
| 294 |
-
"question_2": "Is the mattress missing"
|
| 295 |
-
},
|
| 296 |
-
{
|
| 297 |
-
"prompt": "A tall brick clock tower dominates the town square, a blank circular recess marking the place where time should be displayed.",
|
| 298 |
-
"missing_element": "clock face",
|
| 299 |
-
"question_1": "Is the image showing a clock tower, could be either with or without a clock face",
|
| 300 |
-
"question_2": "Is the clock face missing"
|
| 301 |
-
},
|
| 302 |
-
{
|
| 303 |
-
"prompt": "An antique pocket watch lies open on velvet, its enamel face gleaming beneath ornate Roman numerals, polished gears exposed.",
|
| 304 |
-
"missing_element": "hands",
|
| 305 |
-
"question_1": "Is the image showing a pocket watch, could be either with or without hands",
|
| 306 |
-
"question_2": "Are the hands missing from the pocket watch"
|
| 307 |
-
},
|
| 308 |
-
{
|
| 309 |
-
"prompt": "A sleek road bicycle leans against an old stone wall, lightweight frame painted crimson and chrome cranks resting above the asphalt.",
|
| 310 |
-
"missing_element": "pedals",
|
| 311 |
-
"question_1": "Is the image showing a bicycle, could be either with or without pedals",
|
| 312 |
-
"question_2": "Are the pedals missing from the bicycle"
|
| 313 |
-
},
|
| 314 |
-
{
|
| 315 |
-
"prompt": "A painted portrait of a young woman hangs in a quiet gallery, delicate features rendered in soft oils, the upper facial planes left as smooth, empty forms.",
|
| 316 |
-
"missing_element": "eyes",
|
| 317 |
-
"question_1": "Is the image showing a portrait of a woman, could be either with or without eyes",
|
| 318 |
-
"question_2": "Are the eyes missing from the portrait of the woman"
|
| 319 |
-
},
|
| 320 |
-
{
|
| 321 |
-
"prompt": "A concert grand piano stands under stage lights, lid propped high so the audience can see straight into a cavity that reveals felt-covered dampers but no striking mechanism.",
|
| 322 |
-
"missing_element": "hammers",
|
| 323 |
-
"question_1": "Is the image showing a grand piano, could be either with or without hammers",
|
| 324 |
-
"question_2": "Are the hammers missing from the grand piano"
|
| 325 |
-
},
|
| 326 |
-
{
|
| 327 |
-
"prompt": "An old wooden clipper drifts across a calm sea, towering masts stretching skyward with only rigging ropes swaying in the breeze.",
|
| 328 |
-
"missing_element": "sails",
|
| 329 |
-
"question_1": "Is the image showing a sailing ship, could be either with or without sails",
|
| 330 |
-
"question_2": "Are the sails missing from the sailing ship"
|
| 331 |
-
},
|
| 332 |
-
{
|
| 333 |
-
"prompt": "A mature oak tree rises against a bright summer sky, wide branches spreading like a skeletal silhouette despite the season.",
|
| 334 |
-
"missing_element": "leaves",
|
| 335 |
-
"question_1": "Is the image showing an oak tree, could be either with or without leaves",
|
| 336 |
-
"question_2": "Are the leaves missing from the oak tree"
|
| 337 |
-
},
|
| 338 |
-
{
|
| 339 |
-
"prompt": "A snug stone cottage nestles at the forest’s edge, ivy climbing across shuttered windows while a blank wall greets visiting guests.",
|
| 340 |
-
"missing_element": "door",
|
| 341 |
-
"question_1": "Is the image showing a cottage, could be either with or without a door",
|
| 342 |
-
"question_2": "Is the door missing from the cottage"
|
| 343 |
-
},
|
| 344 |
-
{
|
| 345 |
-
"prompt": "A streamlined passenger jet rests on the apron, engines mounted beneath a smooth fuselage that runs directly into a tall tail fin.",
|
| 346 |
-
"missing_element": "wings",
|
| 347 |
-
"question_1": "Is the image showing a passenger jet, could be either with or without wings",
|
| 348 |
-
"question_2": "Are the wings missing from the passenger jet"
|
| 349 |
-
},
|
| 350 |
-
{
|
| 351 |
-
"prompt": "A minimalist wristwatch sits on a leather tray, monochrome dial perfectly smooth except for two thin hands orbiting a blank circumference.",
|
| 352 |
-
"missing_element": "numbers",
|
| 353 |
-
"question_1": "Is the image showing a wristwatch, could be either with or without numbers",
|
| 354 |
-
"question_2": "Are the numbers missing from the wristwatch"
|
| 355 |
-
},
|
| 356 |
-
{
|
| 357 |
-
"prompt": "A freshly baked pizza rests on a wooden board, golden crust encircling a vibrant pool of red sauce topped by scattered basil leaves.",
|
| 358 |
-
"missing_element": "cheese",
|
| 359 |
-
"question_1": "Is the image showing a pizza, could be either with or without cheese",
|
| 360 |
-
"question_2": "Is the cheese missing from the pizza"
|
| 361 |
-
},
|
| 362 |
-
{
|
| 363 |
-
"prompt": "A bustling city intersection stretches beneath midday sun, tall signal heads looming overhead with dark glass panels that never change hue.",
|
| 364 |
-
"missing_element": "lights",
|
| 365 |
-
"question_1": "Is the image showing traffic signals, could be either with or without lights",
|
| 366 |
-
"question_2": "Are the lights missing from the traffic signals"
|
| 367 |
-
},
|
| 368 |
-
{
|
| 369 |
-
"prompt": "A colorful skateboard lies abandoned on smooth concrete, grip-taped deck and polished trucks casting neat shadows on the ground.",
|
| 370 |
-
"missing_element": "wheels",
|
| 371 |
-
"question_1": "Is the image showing a skateboard, could be either with or without wheels",
|
| 372 |
-
"question_2": "Are the wheels missing from the skateboard"
|
| 373 |
-
},
|
| 374 |
-
{
|
| 375 |
-
"prompt": "A chessboard is arranged atop a velvet tablecloth, thirty-two squares waiting while one side’s carved army stands alone in battle formation.",
|
| 376 |
-
"missing_element": "black pieces",
|
| 377 |
-
"question_1": "Is the image showing a chessboard, could be either with or without black pieces",
|
| 378 |
-
"question_2": "Are the black pieces missing from the chessboard"
|
| 379 |
-
},
|
| 380 |
-
{
|
| 381 |
-
"prompt": "A cherry-red sports car gleams under showroom lamps, sculpted alloys rotating freely behind open spokes that reveal only empty air.",
|
| 382 |
-
"missing_element": "brakes",
|
| 383 |
-
"question_1": "Is the image showing a sports car, could be either with or without brakes",
|
| 384 |
-
"question_2": "Are the brakes missing from the sports car"
|
| 385 |
-
},
|
| 386 |
-
{
|
| 387 |
-
"prompt": "An open hardcover book rests on a wooden desk, cream-colored pages stretching wide with nothing printed between the margins.",
|
| 388 |
-
"missing_element": "text",
|
| 389 |
-
"question_1": "Is the image showing a book, could be either with or without text",
|
| 390 |
-
"question_2": "Is the text missing from the book"
|
| 391 |
-
},
|
| 392 |
-
{
|
| 393 |
-
"prompt": "A modern desktop tower with tempered-glass side panel displays RGB-lit components, yet no spinning blades disturb the still interior.",
|
| 394 |
-
"missing_element": "fans",
|
| 395 |
-
"question_1": "Is the image showing a computer tower, could be either with or without fans",
|
| 396 |
-
"question_2": "Are the fans missing from the computer tower"
|
| 397 |
-
},
|
| 398 |
-
{
|
| 399 |
-
"prompt": "A straw-stuffed scarecrow stands in the middle of a golden field, flannel shirt hanging limp beside a torso supported by a single post.",
|
| 400 |
-
"missing_element": "arms",
|
| 401 |
-
"question_1": "Is the image showing a scarecrow, could be either with or without arms",
|
| 402 |
-
"question_2": "Are the arms missing from the scarecrow"
|
| 403 |
-
},
|
| 404 |
-
{
|
| 405 |
-
"prompt": "An oil painting depicts a medieval knight in shining armor, bold gaze steady while an empty leather baldric crosses his hip.",
|
| 406 |
-
"missing_element": "sword",
|
| 407 |
-
"question_1": "Is the image showing a knight, could be either with or without a sword",
|
| 408 |
-
"question_2": "Is the sword missing from the knight"
|
| 409 |
-
},
|
| 410 |
-
{
|
| 411 |
-
"prompt": "A delicate porcelain teapot sits on a bamboo tray, floral motifs curling around a rotund body that preserves a graceful spout but offers no side grip.",
|
| 412 |
-
"missing_element": "handle",
|
| 413 |
-
"question_1": "Is the image showing a teapot, could be either with or without a handle",
|
| 414 |
-
"question_2": "Is the handle missing from the teapot"
|
| 415 |
-
},
|
| 416 |
-
{
|
| 417 |
-
"prompt": "An outdoor basketball rim is mounted to a clear backboard, orange ring stark against blue sky with nothing suspended beneath it.",
|
| 418 |
-
"missing_element": "net",
|
| 419 |
-
"question_1": "Is the image showing a basketball hoop, could be either with or without a net",
|
| 420 |
-
"question_2": "Is the net missing from the basketball hoop"
|
| 421 |
-
},
|
| 422 |
-
{
|
| 423 |
-
"prompt": "A formal dining table is fully laid with silverware, porcelain plates and folded linen napkins, yet above each plate only empty space awaits a drink.",
|
| 424 |
-
"missing_element": "glasses",
|
| 425 |
-
"question_1": "Is the image showing a dining table, could be either with or without glasses",
|
| 426 |
-
"question_2": "Are the glasses missing from the dining table"
|
| 427 |
-
},
|
| 428 |
-
{
|
| 429 |
-
"prompt": "A vintage typewriter occupies an author’s desk, metal arms poised above pristine paper while twin spools sit idle and uncovered.",
|
| 430 |
-
"missing_element": "ribbon",
|
| 431 |
-
"question_1": "Is the image showing a typewriter, could be either with or without a ribbon",
|
| 432 |
-
"question_2": "Is the ribbon missing from the typewriter"
|
| 433 |
-
},
|
| 434 |
-
{
|
| 435 |
-
"prompt": "A thick winter parka hangs from a coat rack, quilted panels puffed with down, the front opening held shut only by overlapping fabric.",
|
| 436 |
-
"missing_element": "zipper",
|
| 437 |
-
"question_1": "Is the image showing a winter jacket, could be either with or without a zipper",
|
| 438 |
-
"question_2": "Is the zipper missing from the winter jacket"
|
| 439 |
-
},
|
| 440 |
-
{
|
| 441 |
-
"prompt": "A towering sunflower turns toward daylight, golden petals radiant around a smooth green disk unmarred by patterned specks.",
|
| 442 |
-
"missing_element": "seeds",
|
| 443 |
-
"question_1": "Is the image showing a sunflower, could be either with or without seeds",
|
| 444 |
-
"question_2": "Are the seeds missing from the sunflower"
|
| 445 |
-
},
|
| 446 |
-
{
|
| 447 |
-
"prompt": "A large elephant strides across the savanna, wrinkled hide dusted with red earth, its face ending abruptly below wide flapping ears.",
|
| 448 |
-
"missing_element": "trunk",
|
| 449 |
-
"question_1": "Is the image showing an elephant, could be either with or without a trunk",
|
| 450 |
-
"question_2": "Is the trunk missing from the elephant"
|
| 451 |
-
},
|
| 452 |
-
{
|
| 453 |
-
"prompt": "A painted wooden rowboat drifts on a calm lake, bench seats freshly varnished while the gunwales hold empty brass oarlocks.",
|
| 454 |
-
"missing_element": "oars",
|
| 455 |
-
"question_1": "Is the image showing a rowboat, could be either with or without oars",
|
| 456 |
-
"question_2": "Are the oars missing from the rowboat"
|
| 457 |
-
},
|
| 458 |
-
{
|
| 459 |
-
"prompt": "A snowman stands proudly in a suburban yard, three gleaming spheres stacked neatly, scarf and hat in place yet nothing dots the torso.",
|
| 460 |
-
"missing_element": "buttons",
|
| 461 |
-
"question_1": "Is the image showing a snowman, could be either with or without buttons",
|
| 462 |
-
"question_2": "Are the buttons missing from the snowman"
|
| 463 |
-
},
|
| 464 |
-
{
|
| 465 |
-
"prompt": "A lacquered fountain pen rests atop a journal, transparent reservoir completely clear above a gleaming gold nib.",
|
| 466 |
-
"missing_element": "ink",
|
| 467 |
-
"question_1": "Is the image showing a fountain pen, could be either with or without ink",
|
| 468 |
-
"question_2": "Is the ink missing from the fountain pen"
|
| 469 |
-
},
|
| 470 |
-
{
|
| 471 |
-
"prompt": "A wooden paintbrush handle with a shiny ferrule lies beside a palette, its tip ending in a hollow metal cylinder.",
|
| 472 |
-
"missing_element": "bristles",
|
| 473 |
-
"question_1": "Is the image showing a paintbrush, could be either with or without bristles",
|
| 474 |
-
"question_2": "Are the bristles missing from the paintbrush"
|
| 475 |
-
},
|
| 476 |
-
{
|
| 477 |
-
"prompt": "A pair of oval eyeglass frames sits on folded newsprint, front rims intact while nothing extends toward where ears would rest.",
|
| 478 |
-
"missing_element": "temples",
|
| 479 |
-
"question_1": "Is the image showing eyeglasses, could be either with or without temples",
|
| 480 |
-
"question_2": "Are the temples missing from the eyeglasses"
|
| 481 |
-
},
|
| 482 |
-
{
|
| 483 |
-
"prompt": "A city commuter holds an umbrella open in the rain, black canopy stretched over a central shaft without any visible spokes beneath.",
|
| 484 |
-
"missing_element": "ribs",
|
| 485 |
-
"question_1": "Is the image showing an umbrella, could be either with or without ribs",
|
| 486 |
-
"question_2": "Are the ribs missing from the umbrella"
|
| 487 |
-
},
|
| 488 |
-
{
|
| 489 |
-
"prompt": "A skeletonized wristwatch is showcased under a glass dome, gears whirring beside a sweeping second hand while the outer ring remains entirely blank.",
|
| 490 |
-
"missing_element": "hour markers",
|
| 491 |
-
"question_1": "Is the image showing a wristwatch, could be either with or without hour markers",
|
| 492 |
-
"question_2": "Are the hour markers missing from the wristwatch"
|
| 493 |
-
},
|
| 494 |
-
{
|
| 495 |
-
"prompt": "A nylon tent lies fully spread across a grassy clearing, rainfly attached and guy lines staked, yet the fabric sags flat on the ground.",
|
| 496 |
-
"missing_element": "poles",
|
| 497 |
-
"question_1": "Is the image showing a camping tent, could be either with or without poles",
|
| 498 |
-
"question_2": "Are the poles missing from the camping tent"
|
| 499 |
-
},
|
| 500 |
-
{
|
| 501 |
-
"prompt": "A wooden cuckoo clock hangs on a chalet wall, carved deer and leaves surrounding an ornate dial, but beneath the case no pine-cone ornaments dangle.",
|
| 502 |
-
"missing_element": "weights",
|
| 503 |
-
"question_1": "Is the image showing a cuckoo clock, could be either with or without weights",
|
| 504 |
-
"question_2": "Are the weights missing from the cuckoo clock"
|
| 505 |
-
},
|
| 506 |
-
{
|
| 507 |
-
"prompt": "A modern smartphone rests face-up on a table, edge-to-edge glass reflecting ceiling lights, its top bezel perfectly smooth without any tiny perforations.",
|
| 508 |
-
"missing_element": "speaker grille",
|
| 509 |
-
"question_1": "Is the image showing a smartphone, could be either with or without a speaker grille",
|
| 510 |
-
"question_2": "Is the speaker grille missing from the smartphone"
|
| 511 |
-
},
|
| 512 |
-
{
|
| 513 |
-
"prompt": "A café-style motorcycle waits beside a dusty road, chrome handlebars wide, while the round instrument cluster displays only a blank lens.",
|
| 514 |
-
"missing_element": "speedometer",
|
| 515 |
-
"question_1": "Is the image showing a motorcycle, could be either with or without a speedometer",
|
| 516 |
-
"question_2": "Is the speedometer missing from the motorcycle"
|
| 517 |
-
},
|
| 518 |
-
{
|
| 519 |
-
"prompt": "A slender violin bow lies on crimson velvet, ebony frog adjusted with a silver screw, yet the wooden stick spans unbroken from tip to grip.",
|
| 520 |
-
"missing_element": "hair",
|
| 521 |
-
"question_1": "Is the image showing a violin bow, could be either with or without hair",
|
| 522 |
-
"question_2": "Is the hair missing from the violin bow"
|
| 523 |
-
},
|
| 524 |
-
{
|
| 525 |
-
"prompt": "A gilded birdcage swings gently from a porch hook, domed roof catching afternoon sun, though the interior offers no horizontal bar for resting.",
|
| 526 |
-
"missing_element": "perch",
|
| 527 |
-
"question_1": "Is the image showing a birdcage, could be either with or without a perch",
|
| 528 |
-
"question_2": "Is the perch missing from the birdcage"
|
| 529 |
-
},
|
| 530 |
-
{
|
| 531 |
-
"prompt": "A marble statue of a robed goddess stands among museum columns, shoulders gracefully sloping upward to an abruptly smooth surface.",
|
| 532 |
-
"missing_element": "head",
|
| 533 |
-
"question_1": "Is the image showing a statue, could be either with or without a head",
|
| 534 |
-
"question_2": "Is the head missing from the statue"
|
| 535 |
-
},
|
| 536 |
-
{
|
| 537 |
-
"prompt": "A plush teddy bear sits on a child’s bed, round eyes glinting above a stitched smile while its muzzle remains flat and unadorned.",
|
| 538 |
-
"missing_element": "nose",
|
| 539 |
-
"question_1": "Is the image showing a teddy bear, could be either with or without a nose",
|
| 540 |
-
"question_2": "Is the nose missing from the teddy bear"
|
| 541 |
-
},
|
| 542 |
-
{
|
| 543 |
-
"prompt": "A pair of canvas sneakers stands upright on a doorway mat, metal eyelets neatly aligned along an empty tongue.",
|
| 544 |
-
"missing_element": "laces",
|
| 545 |
-
"question_1": "Is the image showing sneakers, could be either with or without laces",
|
| 546 |
-
"question_2": "Are the laces missing from the sneakers"
|
| 547 |
-
},
|
| 548 |
-
{
|
| 549 |
-
"prompt": "An open refrigerator hums quietly in a small kitchen, interior shelves glassy and clean, yet the door interior shows only blank white plastic.",
|
| 550 |
-
"missing_element": "door shelves",
|
| 551 |
-
"question_1": "Is the image showing a refrigerator, could be either with or without door shelves",
|
| 552 |
-
"question_2": "Are the door shelves missing from the refrigerator"
|
| 553 |
-
},
|
| 554 |
-
{
|
| 555 |
-
"prompt": "Friends sit around a circular stone ring in the dark, glowing embers faintly illuminate their faces while no tongues of light dance upward.",
|
| 556 |
-
"missing_element": "flames",
|
| 557 |
-
"question_1": "Is the image showing a campfire, could be either with or without flames",
|
| 558 |
-
"question_2": "Are the flames missing from the campfire"
|
| 559 |
-
},
|
| 560 |
-
{
|
| 561 |
-
"prompt": "A stainless drinking fountain stands beside a park path, polished button visible, but the curved nozzle yields only silence.",
|
| 562 |
-
"missing_element": "water",
|
| 563 |
-
"question_1": "Is the image showing a drinking fountain, could be either with or without water",
|
| 564 |
-
"question_2": "Is the water missing from the drinking fountain"
|
| 565 |
-
},
|
| 566 |
-
{
|
| 567 |
-
"prompt": "A vintage revolver lies on a green felt display pad, barrel polished and cylinder open, yet beneath the trigger there is nothing to encircle a finger.",
|
| 568 |
-
"missing_element": "trigger guard",
|
| 569 |
-
"question_1": "Is the image showing a revolver, could be either with or without a trigger guard",
|
| 570 |
-
"question_2": "Is the trigger guard missing from the revolver"
|
| 571 |
-
},
|
| 572 |
-
{
|
| 573 |
-
"prompt": "An elaborately drawn compass rose decorates an ancient map, lavish scrollwork filling the cardinal directions but no pointed indicator marks the prime heading.",
|
| 574 |
-
"missing_element": "north arrow",
|
| 575 |
-
"question_1": "Is the image showing a compass rose, could be either with or without a north arrow",
|
| 576 |
-
"question_2": "Is the north arrow missing from the compass rose"
|
| 577 |
-
},
|
| 578 |
-
{
|
| 579 |
-
"prompt": "Futuristic skyscrapers rise under neon twilight, reflective facades forming uninterrupted planes of glowing metal and glass.",
|
| 580 |
-
"missing_element": "windows",
|
| 581 |
-
"question_1": "Is the image showing skyscrapers, could be either with or without windows",
|
| 582 |
-
"question_2": "Are the windows missing from the skyscrapers"
|
| 583 |
-
},
|
| 584 |
-
{
|
| 585 |
-
"prompt": "An orchestra conductor stands on a podium, tuxedo crisp and arms moving fluidly while his raised hand remains empty.",
|
| 586 |
-
"missing_element": "baton",
|
| 587 |
-
"question_1": "Is the image showing a conductor, could be either with or without a baton",
|
| 588 |
-
"question_2": "Is the baton missing from the conductor"
|
| 589 |
-
},
|
| 590 |
-
{
|
| 591 |
-
"prompt": "A soccer field lies freshly mowed, two white uprights planted firmly at the end line, leaving an open rectangle above.",
|
| 592 |
-
"missing_element": "crossbar",
|
| 593 |
-
"question_1": "Is the image showing a soccer goal, could be either with or without a crossbar",
|
| 594 |
-
"question_2": "Is the crossbar missing from the soccer goal"
|
| 595 |
-
},
|
| 596 |
-
{
|
| 597 |
-
"prompt": "A laboratory microscope sits on a steel workbench, coarse and fine focus knobs present, yet the tubular body ends without any glass elements inside.",
|
| 598 |
-
"missing_element": "lenses",
|
| 599 |
-
"question_1": "Is the image showing a microscope, could be either with or without lenses",
|
| 600 |
-
"question_2": "Are the lenses missing from the microscope"
|
| 601 |
-
},
|
| 602 |
-
|
| 603 |
-
{
|
| 604 |
-
"prompt": "A sun-faded acoustic guitar leans against a rustic brick wall, its polished wooden body catching soft afternoon light while slender tuning pegs glint quietly.",
|
| 605 |
-
"missing_element": "strings",
|
| 606 |
-
"question_1": "Is the image showing a guitar , could be either with or without strings",
|
| 607 |
-
"question_2": "Are the strings absent"
|
| 608 |
-
},
|
| 609 |
-
{
|
| 610 |
-
"prompt": "A weathered bicycle stands upright beside a canal, chrome handlebars reflecting the sky and empty forks hovering just above cobblestones.",
|
| 611 |
-
"missing_element": "wheels",
|
| 612 |
-
"question_1": "Is the image showing a bicycle , could be either with or without wheels",
|
| 613 |
-
"question_2": "Are the wheels missing"
|
| 614 |
-
},
|
| 615 |
-
{
|
| 616 |
-
"prompt": "A barn owl perches on an old fence post under moonlight, heart-shaped face smooth and featureless save for delicate feathers.",
|
| 617 |
-
"missing_element": "eyes",
|
| 618 |
-
"question_1": "Is the image showing an owl , could be either with or without eyes",
|
| 619 |
-
"question_2": "Are the eyes absent"
|
| 620 |
-
},
|
| 621 |
-
{
|
| 622 |
-
"prompt": "A sleek silver sedan sits parked under a streetlamp, glossy panels reflecting neon signs yet the side frames reveal wide, open gaps.",
|
| 623 |
-
"missing_element": "doors",
|
| 624 |
-
"question_1": "Is the image showing a car , could be either with or without doors",
|
| 625 |
-
"question_2": "Are the doors missing"
|
| 626 |
-
},
|
| 627 |
-
{
|
| 628 |
-
"prompt": "A towering stone keep rises above a misty valley, its walls unbroken and austere beneath streaks of lichen.",
|
| 629 |
-
"missing_element": "windows",
|
| 630 |
-
"question_1": "Is the image showing a castle , could be either with or without windows",
|
| 631 |
-
"question_2": "Are the windows absent"
|
| 632 |
-
},
|
| 633 |
-
{
|
| 634 |
-
"prompt": "An antique brass pocket watch rests open on a velvet cushion, the ornate hands circling an entirely blank ring.",
|
| 635 |
-
"missing_element": "numbers",
|
| 636 |
-
"question_1": "Is the image showing a pocket watch , could be either with or without numbers",
|
| 637 |
-
"question_2": "Are the numbers missing"
|
| 638 |
-
},
|
| 639 |
-
{
|
| 640 |
-
"prompt": "A colossal amusement wheel stands against a fiery sunset, its skeletal steel rim arching over a silent fairground.",
|
| 641 |
-
"missing_element": "cabins",
|
| 642 |
-
"question_1": "Is the image showing a Ferris wheel , could be either with or without cabins",
|
| 643 |
-
"question_2": "Are the cabins missing"
|
| 644 |
-
},
|
| 645 |
-
{
|
| 646 |
-
"prompt": "A ginger cat naps on a windowsill, its fur puddled around a small, rounded hindquarters.",
|
| 647 |
-
"missing_element": "tail",
|
| 648 |
-
"question_1": "Is the image showing a cat , could be either with or without a tail",
|
| 649 |
-
"question_2": "Is the tail absent"
|
| 650 |
-
},
|
| 651 |
-
{
|
| 652 |
-
"prompt": "A massive African elephant stares calmly across the savanna, large ears fanning out over ivory tusks.",
|
| 653 |
-
"missing_element": "trunk",
|
| 654 |
-
"question_1": "Is the image showing an elephant , could be either with or without a trunk",
|
| 655 |
-
"question_2": "Is the trunk missing"
|
| 656 |
-
},
|
| 657 |
-
{
|
| 658 |
-
"prompt": "A solitary oak trunk rises from a mist-covered meadow, bark gnarled and roots sprawling into damp earth.",
|
| 659 |
-
"missing_element": "branches",
|
| 660 |
-
"question_1": "Is the image showing a tree , could be either with or without branches",
|
| 661 |
-
"question_2": "Are the branches absent"
|
| 662 |
-
},
|
| 663 |
-
{
|
| 664 |
-
"prompt": "A simple wooden chair stands in an empty gallery, its flat seat and upright backrest connected directly to the floor by a single low block.",
|
| 665 |
-
"missing_element": "legs",
|
| 666 |
-
"question_1": "Is the image showing a chair , could be either with or without legs",
|
| 667 |
-
"question_2": "Are the legs missing"
|
| 668 |
-
},
|
| 669 |
-
{
|
| 670 |
-
"prompt": "A tall sailing ship rests in calm harbor waters, dark masts piercing the sky but the rigging hangs slack against naked beams.",
|
| 671 |
-
"missing_element": "sails",
|
| 672 |
-
"question_1": "Is the image showing a ship , could be either with or without sails",
|
| 673 |
-
"question_2": "Are the sails missing"
|
| 674 |
-
},
|
| 675 |
-
{
|
| 676 |
-
"prompt": "A painter's oval palette lies atop a studio table, smeared thumb hole and dried bristles surrounding a pristine, untouched surface.",
|
| 677 |
-
"missing_element": "paint",
|
| 678 |
-
"question_1": "Is the image showing a painter's palette , could be either with or without paint",
|
| 679 |
-
"question_2": "Is the paint absent"
|
| 680 |
-
},
|
| 681 |
-
{
|
| 682 |
-
"prompt": "An old black typewriter sits on a mahogany desk, its metal arms raised above empty square holes where fingers would normally dance.",
|
| 683 |
-
"missing_element": "keys",
|
| 684 |
-
"question_1": "Is the image showing a typewriter , could be either with or without keys",
|
| 685 |
-
"question_2": "Are the keys missing"
|
| 686 |
-
},
|
| 687 |
-
{
|
| 688 |
-
"prompt": "A porcelain coffee mug releases gentle steam on a kitchen counter, its cylindrical body smooth and symmetrical but entirely unadorned on one side.",
|
| 689 |
-
"missing_element": "handle",
|
| 690 |
-
"question_1": "Is the image showing a mug , could be either with or without a handle",
|
| 691 |
-
"question_2": "Is the handle missing"
|
| 692 |
-
},
|
| 693 |
-
{
|
| 694 |
-
"prompt": "An ornate katana rests upon a lacquered stand, its lacquered scabbard parted to reveal only the hilt extending into empty space.",
|
| 695 |
-
"missing_element": "blade",
|
| 696 |
-
"question_1": "Is the image showing a katana , could be either with or without a blade",
|
| 697 |
-
"question_2": "Is the blade missing"
|
| 698 |
-
},
|
| 699 |
-
{
|
| 700 |
-
"prompt": "A modern smartphone lies on a marble tabletop, slim metallic frame enclosing an unbroken dark void.",
|
| 701 |
-
"missing_element": "screen",
|
| 702 |
-
"question_1": "Is the image showing a smartphone , could be either with or without a screen",
|
| 703 |
-
"question_2": "Is the screen missing"
|
| 704 |
-
},
|
| 705 |
-
{
|
| 706 |
-
"prompt": "A commercial jet is parked on the tarmac at dawn, cylindrical fuselage gleaming under floodlights as engines sit exposed beside stubby supports.",
|
| 707 |
-
"missing_element": "wings",
|
| 708 |
-
"question_1": "Is the image showing an airplane , could be either with or without wings",
|
| 709 |
-
"question_2": "Are the wings missing"
|
| 710 |
-
},
|
| 711 |
-
{
|
| 712 |
-
"prompt": "A weather-beaten cowboy hat hangs from a wall peg, tall crown stretching upward with an unusually vertical silhouette.",
|
| 713 |
-
"missing_element": "brim",
|
| 714 |
-
"question_1": "Is the image showing a cowboy hat , could be either with or without a brim",
|
| 715 |
-
"question_2": "Is the brim missing"
|
| 716 |
-
},
|
| 717 |
-
{
|
| 718 |
-
"prompt": "A plump green tree frog rests on a lily pad, smooth body pressed flat like a leaf against the water surface.",
|
| 719 |
-
"missing_element": "legs",
|
| 720 |
-
"question_1": "Is the image showing a frog , could be either with or without legs",
|
| 721 |
-
"question_2": "Are the legs missing"
|
| 722 |
-
},
|
| 723 |
-
{
|
| 724 |
-
"prompt": "A ceramic teapot sits atop a wooden tray, its round belly painted with blue florals and the lid slightly ajar.",
|
| 725 |
-
"missing_element": "spout",
|
| 726 |
-
"question_1": "Is the image showing a teapot , could be either with or without a spout",
|
| 727 |
-
"question_2": "Is the spout missing"
|
| 728 |
-
},
|
| 729 |
-
{
|
| 730 |
-
"prompt": "A snowman stands in a quiet yard at twilight, two round layers stacked neatly, scarf fluttering in a gentle breeze.",
|
| 731 |
-
"missing_element": "head",
|
| 732 |
-
"question_1": "Is the image showing a snowman , could be either with or without a head",
|
| 733 |
-
"question_2": "Is the head missing"
|
| 734 |
-
},
|
| 735 |
-
{
|
| 736 |
-
"prompt": "A silver laptop sits open on a conference table, glowing indicator lights framing a broad, vacant interior cavity.",
|
| 737 |
-
"missing_element": "keyboard",
|
| 738 |
-
"question_1": "Is the image showing a laptop , could be either with or without a keyboard",
|
| 739 |
-
"question_2": "Is the keyboard missing"
|
| 740 |
-
},
|
| 741 |
-
{
|
| 742 |
-
"prompt": "A pair of slender wire-rim glasses rests on a paperback novel, the arced frame shining under a reading lamp while circular openings remain completely clear.",
|
| 743 |
-
"missing_element": "lenses",
|
| 744 |
-
"question_1": "Is the image showing glasses , could be either with or without lenses",
|
| 745 |
-
"question_2": "Are the lenses absent"
|
| 746 |
-
},
|
| 747 |
-
{
|
| 748 |
-
"prompt": "A railroad stretches across golden prairie grass, evenly spaced wooden ties receding toward the horizon without any gleaming metal above.",
|
| 749 |
-
"missing_element": "rails",
|
| 750 |
-
"question_1": "Is the image showing railroad tracks , could be either with or without rails",
|
| 751 |
-
"question_2": "Are the rails missing"
|
| 752 |
-
},
|
| 753 |
-
{
|
| 754 |
-
"prompt": "A vintage streetlamp stands at the corner of a cobblestone alley, glass panes encircling a dark hollow space.",
|
| 755 |
-
"missing_element": "bulb",
|
| 756 |
-
"question_1": "Is the image showing a streetlamp , could be either with or without a bulb",
|
| 757 |
-
"question_2": "Is the bulb missing"
|
| 758 |
-
},
|
| 759 |
-
{
|
| 760 |
-
"prompt": "A children's swing hangs from an old oak branch, two sturdy ropes swaying gently in the breeze over a patch of grass.",
|
| 761 |
-
"missing_element": "seat",
|
| 762 |
-
"question_1": "Is the image showing a swing , could be either with or without a seat",
|
| 763 |
-
"question_2": "Is the seat missing"
|
| 764 |
-
},
|
| 765 |
-
{
|
| 766 |
-
"prompt": "A glossy black grand piano dominates a dim parlor, its lid propped open to reveal a smooth wooden cavity.",
|
| 767 |
-
"missing_element": "strings",
|
| 768 |
-
"question_1": "Is the image showing a piano , could be either with or without strings",
|
| 769 |
-
"question_2": "Are the strings absent"
|
| 770 |
-
},
|
| 771 |
-
{
|
| 772 |
-
"prompt": "A sturdy umbrella leans in a foyer corner, slender metal ribs fanning outward yet nothing spans between them.",
|
| 773 |
-
"missing_element": "fabric",
|
| 774 |
-
"question_1": "Is the image showing an umbrella , could be either with or without fabric",
|
| 775 |
-
"question_2": "Is the fabric missing"
|
| 776 |
-
},
|
| 777 |
-
{
|
| 778 |
-
"prompt": "A high-top sneaker rests on a locker-room bench, white leather panels forming a hollow shell that casts a faint shadow on the wooden slats.",
|
| 779 |
-
"missing_element": "sole",
|
| 780 |
-
"question_1": "Is the image showing a sneaker , could be either with or without a sole",
|
| 781 |
-
"question_2": "Is the sole missing"
|
| 782 |
-
},
|
| 783 |
-
{
|
| 784 |
-
"prompt": "A glossy red fire hydrant stands on a sidewalk, round body capped with nuts yet featuring only a smooth facade on every side.",
|
| 785 |
-
"missing_element": "outlets",
|
| 786 |
-
"question_1": "Is the image showing a fire hydrant , could be either with or without outlets",
|
| 787 |
-
"question_2": "Are the outlets missing"
|
| 788 |
-
},
|
| 789 |
-
{
|
| 790 |
-
"prompt": "A ripe banana sits on a cutting board, gentle curves glowing yellow without a telltale frilled topping.",
|
| 791 |
-
"missing_element": "stem",
|
| 792 |
-
"question_1": "Is the image showing a banana , could be either with or without a stem",
|
| 793 |
-
"question_2": "Is the stem missing"
|
| 794 |
-
},
|
| 795 |
-
{
|
| 796 |
-
"prompt": "A wall clock hangs above a classroom door, a silent disc whose reflective surface catches fluorescent lights but marks no moments.",
|
| 797 |
-
"missing_element": "hands",
|
| 798 |
-
"question_1": "Is the image showing a wall clock , could be either with or without hands",
|
| 799 |
-
"question_2": "Are the hands missing"
|
| 800 |
-
},
|
| 801 |
-
{
|
| 802 |
-
"prompt": "A majestic peacock struts across the palace courtyard, vibrant blues covering a slender body that ends abruptly behind.",
|
| 803 |
-
"missing_element": "tail feathers",
|
| 804 |
-
"question_1": "Is the image showing a peacock , could be either with or without tail feathers",
|
| 805 |
-
"question_2": "Are the tail feathers missing"
|
| 806 |
-
},
|
| 807 |
-
{
|
| 808 |
-
"prompt": "A shopping cart waits in an empty parking lot, metal basket intact atop a rigid axle pressed flat against asphalt.",
|
| 809 |
-
"missing_element": "wheels",
|
| 810 |
-
"question_1": "Is the image showing a shopping cart , could be either with or without wheels",
|
| 811 |
-
"question_2": "Are the wheels missing"
|
| 812 |
-
},
|
| 813 |
-
{
|
| 814 |
-
"prompt": "A classic sailing compass sits atop a nautical map, polished brass ring circling a plain mirrored circle.",
|
| 815 |
-
"missing_element": "needle",
|
| 816 |
-
"question_1": "Is the image showing a compass , could be either with or without a needle",
|
| 817 |
-
"question_2": "Is the needle missing"
|
| 818 |
-
},
|
| 819 |
-
{
|
| 820 |
-
"prompt": "A glossy violin rests on a velvet cloth, graceful curves gleaming beneath studio lights while the ebony fingerboard stretches over a hollow arch.",
|
| 821 |
-
"missing_element": "bridge",
|
| 822 |
-
"question_1": "Is the image showing a violin , could be either with or without a bridge",
|
| 823 |
-
"question_2": "Is the bridge missing"
|
| 824 |
-
},
|
| 825 |
-
{
|
| 826 |
-
"prompt": "A sleek motorcycle is displayed on a showroom pedestal, chrome handlebars gleaming above a suspended frame.",
|
| 827 |
-
"missing_element": "engine",
|
| 828 |
-
"question_1": "Is the image showing a motorcycle , could be either with or without an engine",
|
| 829 |
-
"question_2": "Is the engine missing"
|
| 830 |
-
},
|
| 831 |
-
{
|
| 832 |
-
"prompt": "A minimalist wristwatch lies on a marble vanity, thin leather strap wrapped around a circular case whose interior is pure white.",
|
| 833 |
-
"missing_element": "hands",
|
| 834 |
-
"question_1": "Is the image showing a wristwatch , could be either with or without hands",
|
| 835 |
-
"question_2": "Are the hands missing"
|
| 836 |
-
},
|
| 837 |
-
{
|
| 838 |
-
"prompt": "A passenger bus is parked at a coastal terminal, its length painted turquoise and silver, side panels stretching seamlessly from front to back.",
|
| 839 |
-
"missing_element": "windows",
|
| 840 |
-
"question_1": "Is the image showing a bus , could be either with or without windows",
|
| 841 |
-
"question_2": "Are the windows missing"
|
| 842 |
-
},
|
| 843 |
-
{
|
| 844 |
-
"prompt": "A pink flamingo stands among reeds in shallow water, slender neck curved gracefully but the silhouette seems oddly compact behind.",
|
| 845 |
-
"missing_element": "wings",
|
| 846 |
-
"question_1": "Is the image showing a flamingo , could be either with or without wings",
|
| 847 |
-
"question_2": "Are the wings missing"
|
| 848 |
-
},
|
| 849 |
-
{
|
| 850 |
-
"prompt": "A library shelf features an antique volume with a gilded spine, heavy cover creaking open to reveal a vacant hollow.",
|
| 851 |
-
"missing_element": "pages",
|
| 852 |
-
"question_1": "Is the image showing a book , could be either with or without pages",
|
| 853 |
-
"question_2": "Are the pages missing"
|
| 854 |
-
},
|
| 855 |
-
{
|
| 856 |
-
"prompt": "An armored knight statue stands in a museum alcove, gleaming breastplate reflecting spotlights while the gauntlets clasp nothing.",
|
| 857 |
-
"missing_element": "sword",
|
| 858 |
-
"question_1": "Is the image showing a knight statue , could be either with or without a sword",
|
| 859 |
-
"question_2": "Is the sword missing"
|
| 860 |
-
},
|
| 861 |
-
{
|
| 862 |
-
"prompt": "A sparkling diamond ring rests atop a burgundy velvet cushion, golden band curving smoothly around an empty prong setting.",
|
| 863 |
-
"missing_element": "gemstone",
|
| 864 |
-
"question_1": "Is the image showing a ring , could be either with or without a gemstone",
|
| 865 |
-
"question_2": "Is the gemstone missing"
|
| 866 |
-
},
|
| 867 |
-
{
|
| 868 |
-
"prompt": "A modern windmill rises over sunflower fields, tall white tower supporting a still, empty hub against the blue sky.",
|
| 869 |
-
"missing_element": "blades",
|
| 870 |
-
"question_1": "Is the image showing a windmill , could be either with or without blades",
|
| 871 |
-
"question_2": "Are the blades missing"
|
| 872 |
-
},
|
| 873 |
-
{
|
| 874 |
-
"prompt": "A sleek black skateboard rests on a concrete ramp, smooth underside reflecting sunlight as metal axles stand alone.",
|
| 875 |
-
"missing_element": "wheels",
|
| 876 |
-
"question_1": "Is the image showing a skateboard , could be either with or without wheels",
|
| 877 |
-
"question_2": "Are the wheels missing"
|
| 878 |
-
},
|
| 879 |
-
{
|
| 880 |
-
"prompt": "A small tortoise crawls across a sandy dune, wrinkled skin folding over a rounded back that shows only soft texture.",
|
| 881 |
-
"missing_element": "shell",
|
| 882 |
-
"question_1": "Is the image showing a tortoise , could be either with or without a shell",
|
| 883 |
-
"question_2": "Is the shell missing"
|
| 884 |
-
},
|
| 885 |
-
{
|
| 886 |
-
"prompt": "A camera sits on a tripod overlooking city lights, metallic body facing forward yet revealing a hollow circle where one would normally see glass.",
|
| 887 |
-
"missing_element": "lens",
|
| 888 |
-
"question_1": "Is the image showing a camera , could be either with or without a lens",
|
| 889 |
-
"question_2": "Is the lens missing"
|
| 890 |
-
},
|
| 891 |
-
{
|
| 892 |
-
"prompt": "A spacious greenhouse stands at the edge of a botanical garden, metal arches forming a broad vault that encloses only dusty air.",
|
| 893 |
-
"missing_element": "glass panels",
|
| 894 |
-
"question_1": "Is the image showing a greenhouse , could be either with or without glass panels",
|
| 895 |
-
"question_2": "Are the glass panels missing"
|
| 896 |
-
},
|
| 897 |
-
{
|
| 898 |
-
"prompt": "A firefighter's helmet rests on a polished bench, bright red dome shining under overhead lights without its typical curved protector at the front.",
|
| 899 |
-
"missing_element": "visor",
|
| 900 |
-
"question_1": "Is the image showing a firefighter's helmet , could be either with or without a visor",
|
| 901 |
-
"question_2": "Is the visor missing"
|
| 902 |
-
},
|
| 903 |
-
{
|
| 904 |
-
"prompt": "A vintage bicycle leans against a brick wall, its crimson frame chipped and speckled with rust under soft afternoon light.",
|
| 905 |
-
"missing_element": "wheels",
|
| 906 |
-
"question_1": "Is there a bicycle , could be either with or without wheels in the image",
|
| 907 |
-
"question_2": "Are the wheels missing"
|
| 908 |
-
},
|
| 909 |
-
{
|
| 910 |
-
"prompt": "An antique wristwatch rests on a velvet cushion, golden casing finely engraved and gleaming beneath museum spotlights.",
|
| 911 |
-
"missing_element": "hands",
|
| 912 |
-
"question_1": "Is there a wristwatch , could be either with or without hands in the image",
|
| 913 |
-
"question_2": "Are the hands missing"
|
| 914 |
-
},
|
| 915 |
-
{
|
| 916 |
-
"prompt": "A porcelain teapot sits upon a lace tablecloth, cobalt floral motifs swirling across its rounded body.",
|
| 917 |
-
"missing_element": "spout",
|
| 918 |
-
"question_1": "Is there a teapot , could be either with or without a spout in the image",
|
| 919 |
-
"question_2": "Is the spout missing"
|
| 920 |
-
},
|
| 921 |
-
{
|
| 922 |
-
"prompt": "Round-framed eyeglasses lie open on a memoir’s pages, slender metal rims catching a beam of sunlight.",
|
| 923 |
-
"missing_element": "lenses",
|
| 924 |
-
"question_1": "Are there eyeglasses , could be either with or without lenses in the image",
|
| 925 |
-
"question_2": "Are the lenses absent"
|
| 926 |
-
},
|
| 927 |
-
{
|
| 928 |
-
"prompt": "A weathered sailboat drifts beside a quiet dock, its wooden hull creaking gently against worn pilings.",
|
| 929 |
-
"missing_element": "mast",
|
| 930 |
-
"question_1": "Is there a sailboat , could be either with or without a mast in the image",
|
| 931 |
-
"question_2": "Is the mast missing"
|
| 932 |
-
},
|
| 933 |
-
{
|
| 934 |
-
"prompt": "A colorful classroom globe rests on a wooden desk, continents vividly painted against deep turquoise seas.",
|
| 935 |
-
"missing_element": "stand",
|
| 936 |
-
"question_1": "Is there a globe , could be either with or without a stand in the image",
|
| 937 |
-
"question_2": "Is the stand absent"
|
| 938 |
-
},
|
| 939 |
-
{
|
| 940 |
-
"prompt": "A collapsed umbrella lies beside a doorway, raindrops glistening on its exposed metal ribs.",
|
| 941 |
-
"missing_element": "canopy",
|
| 942 |
-
"question_1": "Is there an umbrella , could be either with or without a canopy in the image",
|
| 943 |
-
"question_2": "Is the canopy missing"
|
| 944 |
-
},
|
| 945 |
-
{
|
| 946 |
-
"prompt": "An acoustic guitar leans against a barstool under warm stage lights, its honey-coloured body polished to a mirror sheen.",
|
| 947 |
-
"missing_element": "strings",
|
| 948 |
-
"question_1": "Is there a guitar , could be either with or without strings in the image",
|
| 949 |
-
"question_2": "Are the strings missing"
|
| 950 |
-
},
|
| 951 |
-
{
|
| 952 |
-
"prompt": "A tall lighthouse towers above a misty headland, red and white stripes bold against the gray sky.",
|
| 953 |
-
"missing_element": "door",
|
| 954 |
-
"question_1": "Is there a lighthouse , could be either with or without a door in the image",
|
| 955 |
-
"question_2": "Is the door absent"
|
| 956 |
-
},
|
| 957 |
-
{
|
| 958 |
-
"prompt": "A retired jet airplane sits in a museum hangar, polished aluminum skin reflecting overhead lamps.",
|
| 959 |
-
"missing_element": "wings",
|
| 960 |
-
"question_1": "Is there an airplane , could be either with or without wings in the image",
|
| 961 |
-
"question_2": "Are the wings missing"
|
| 962 |
-
},
|
| 963 |
-
{
|
| 964 |
-
"prompt": "A medieval stone fortress stands overlooking a winding river, colorful banners fluttering from its rugged towers.",
|
| 965 |
-
"missing_element": "drawbridge",
|
| 966 |
-
"question_1": "Is there a fortress , could be either with or without a drawbridge in the image",
|
| 967 |
-
"question_2": "Is the drawbridge missing"
|
| 968 |
-
},
|
| 969 |
-
{
|
| 970 |
-
"prompt": "A classic sedan is parked beneath a lone streetlamp on a still night, chrome trim gleaming softly.",
|
| 971 |
-
"missing_element": "headlights",
|
| 972 |
-
"question_1": "Is there a sedan , could be either with or without headlights in the image",
|
| 973 |
-
"question_2": "Are the headlights missing"
|
| 974 |
-
},
|
| 975 |
-
{
|
| 976 |
-
"prompt": "A majestic oak rises from a sunny meadow, gnarled branches spreading wide against clear blue sky.",
|
| 977 |
-
"missing_element": "leaves",
|
| 978 |
-
"question_1": "Is there an oak tree , could be either with or without leaves in the image",
|
| 979 |
-
"question_2": "Are the leaves absent"
|
| 980 |
-
},
|
| 981 |
-
{
|
| 982 |
-
"prompt": "A green frog sits serenely on a lily pad amid gentle pond ripples.",
|
| 983 |
-
"missing_element": "legs",
|
| 984 |
-
"question_1": "Is there a frog , could be either with or without legs in the image",
|
| 985 |
-
"question_2": "Are the legs missing"
|
| 986 |
-
},
|
| 987 |
-
{
|
| 988 |
-
"prompt": "A wooden rocking chair rests on a weather-beaten porch, faded paint revealing layers of aging varnish.",
|
| 989 |
-
"missing_element": "seat",
|
| 990 |
-
"question_1": "Is there a rocking chair , could be either with or without a seat in the image",
|
| 991 |
-
"question_2": "Is the seat missing"
|
| 992 |
-
},
|
| 993 |
-
{
|
| 994 |
-
"prompt": "A vintage film camera is displayed on a glass shelf, its leather body pristine and meticulously polished.",
|
| 995 |
-
"missing_element": "lens",
|
| 996 |
-
"question_1": "Is there a film camera , could be either with or without a lens in the image",
|
| 997 |
-
"question_2": "Is the lens absent"
|
| 998 |
-
},
|
| 999 |
-
{
|
| 1000 |
-
"prompt": "A hardcover novel stands upright on a coffee table, its title embossed in ornate gold lettering.",
|
| 1001 |
-
"missing_element": "pages",
|
| 1002 |
-
"question_1": "Is there a book , could be either with or without pages in the image",
|
| 1003 |
-
"question_2": "Are the pages missing"
|
| 1004 |
-
},
|
| 1005 |
-
{
|
| 1006 |
-
"prompt": "An elegant hourglass rests on a mahogany desk, brass frame catching the glow of a desk lamp.",
|
| 1007 |
-
"missing_element": "sand",
|
| 1008 |
-
"question_1": "Is there an hourglass , could be either with or without sand in the image",
|
| 1009 |
-
"question_2": "Is the sand missing"
|
| 1010 |
-
},
|
| 1011 |
-
{
|
| 1012 |
-
"prompt": "A small sparrow is perched on a wooden fence post under a brooding sky.",
|
| 1013 |
-
"missing_element": "wings",
|
| 1014 |
-
"question_1": "Is there a sparrow , could be either with or without wings in the image",
|
| 1015 |
-
"question_2": "Are the wings absent"
|
| 1016 |
-
},
|
| 1017 |
-
{
|
| 1018 |
-
"prompt": "A tall brick clock tower rises above a bustling town square, its silhouette glowing in sunset light.",
|
| 1019 |
-
"missing_element": "clock face",
|
| 1020 |
-
"question_1": "Is there a clock tower , could be either with or without a clock face in the image",
|
| 1021 |
-
"question_2": "Is the clock face missing"
|
| 1022 |
-
},
|
| 1023 |
-
{
|
| 1024 |
-
"prompt": "A black ski mask is folded neatly on a wooden bench beside a locker.",
|
| 1025 |
-
"missing_element": "eye holes",
|
| 1026 |
-
"question_1": "Is there a ski mask , could be either with or without eye holes in the image",
|
| 1027 |
-
"question_2": "Are the eye holes missing"
|
| 1028 |
-
},
|
| 1029 |
-
{
|
| 1030 |
-
"prompt": "A cast-iron frying pan rests on a stovetop, its dark seasoned surface slightly glossy.",
|
| 1031 |
-
"missing_element": "handle",
|
| 1032 |
-
"question_1": "Is there a frying pan , could be either with or without a handle in the image",
|
| 1033 |
-
"question_2": "Is the handle missing"
|
| 1034 |
-
},
|
| 1035 |
-
{
|
| 1036 |
-
"prompt": "A bright red scooter stands on a cobblestone lane, its glossy body reflecting ambient city lights.",
|
| 1037 |
-
"missing_element": "handlebars",
|
| 1038 |
-
"question_1": "Is there a scooter , could be either with or without handlebars in the image",
|
| 1039 |
-
"question_2": "Are the handlebars missing"
|
| 1040 |
-
},
|
| 1041 |
-
{
|
| 1042 |
-
"prompt": "A snail glides slowly along a dew-covered garden leaf under morning light.",
|
| 1043 |
-
"missing_element": "shell",
|
| 1044 |
-
"question_1": "Is there a snail , could be either with or without a shell in the image",
|
| 1045 |
-
"question_2": "Is the shell absent"
|
| 1046 |
-
},
|
| 1047 |
-
{
|
| 1048 |
-
"prompt": "A rugged hiking backpack leans against a pine tree at the trail’s edge, fabric dusted with chalky dirt.",
|
| 1049 |
-
"missing_element": "straps",
|
| 1050 |
-
"question_1": "Is there a backpack , could be either with or without straps in the image",
|
| 1051 |
-
"question_2": "Are the straps missing"
|
| 1052 |
-
},
|
| 1053 |
-
{
|
| 1054 |
-
"prompt": "A roadside mailbox sits atop a weathered wooden post, its paint slightly chipped.",
|
| 1055 |
-
"missing_element": "flag",
|
| 1056 |
-
"question_1": "Is there a mailbox , could be either with or without a flag in the image",
|
| 1057 |
-
"question_2": "Is the flag absent"
|
| 1058 |
-
},
|
| 1059 |
-
{
|
| 1060 |
-
"prompt": "A retro television set stands on tapered legs in a mid-century living room, wood veneer polished to a warm glow.",
|
| 1061 |
-
"missing_element": "screen",
|
| 1062 |
-
"question_1": "Is there a television , could be either with or without a screen in the image",
|
| 1063 |
-
"question_2": "Is the screen missing"
|
| 1064 |
-
},
|
| 1065 |
-
{
|
| 1066 |
-
"prompt": "A brass desk lamp sits beside a stack of papers, its curved shade reflecting amber light.",
|
| 1067 |
-
"missing_element": "bulb",
|
| 1068 |
-
"question_1": "Is there a lamp , could be either with or without a bulb in the image",
|
| 1069 |
-
"question_2": "Is the bulb absent"
|
| 1070 |
-
},
|
| 1071 |
-
{
|
| 1072 |
-
"prompt": "A motorcycle helmet lies on a workbench, its glossy surface speckled with sawdust.",
|
| 1073 |
-
"missing_element": "visor",
|
| 1074 |
-
"question_1": "Is there a helmet , could be either with or without a visor in the image",
|
| 1075 |
-
"question_2": "Is the visor missing"
|
| 1076 |
-
},
|
| 1077 |
-
{
|
| 1078 |
-
"prompt": "A grand piano dominates a silent concert hall stage, black lacquer gleaming under spotlights.",
|
| 1079 |
-
"missing_element": "keys",
|
| 1080 |
-
"question_1": "Is there a piano , could be either with or without keys in the image",
|
| 1081 |
-
"question_2": "Are the keys missing"
|
| 1082 |
-
},
|
| 1083 |
-
{
|
| 1084 |
-
"prompt": "An old stone windmill stands amid golden wheat fields under an expansive blue sky.",
|
| 1085 |
-
"missing_element": "blades",
|
| 1086 |
-
"question_1": "Is there a windmill , could be either with or without blades in the image",
|
| 1087 |
-
"question_2": "Are the blades absent"
|
| 1088 |
-
},
|
| 1089 |
-
{
|
| 1090 |
-
"prompt": "A large observatory telescope is mounted on a sturdy tripod inside a domed chamber.",
|
| 1091 |
-
"missing_element": "eyepiece",
|
| 1092 |
-
"question_1": "Is there a telescope , could be either with or without an eyepiece in the image",
|
| 1093 |
-
"question_2": "Is the eyepiece missing"
|
| 1094 |
-
},
|
| 1095 |
-
{
|
| 1096 |
-
"prompt": "A baby stroller is parked beside a park bench, fabric hood casting a gentle shade.",
|
| 1097 |
-
"missing_element": "wheels",
|
| 1098 |
-
"question_1": "Is there a stroller , could be either with or without wheels in the image",
|
| 1099 |
-
"question_2": "Are the wheels missing"
|
| 1100 |
-
},
|
| 1101 |
-
{
|
| 1102 |
-
"prompt": "A ginger cat curls up on a sunlit windowsill, purring softly in the warm glow.",
|
| 1103 |
-
"missing_element": "tail",
|
| 1104 |
-
"question_1": "Is there a cat , could be either with or without a tail in the image",
|
| 1105 |
-
"question_2": "Is the tail absent"
|
| 1106 |
-
},
|
| 1107 |
-
{
|
| 1108 |
-
"prompt": "A smoking pipe rests atop a leather-bound journal, polished wood glowing softly.",
|
| 1109 |
-
"missing_element": "stem",
|
| 1110 |
-
"question_1": "Is there a pipe , could be either with or without a stem in the image",
|
| 1111 |
-
"question_2": "Is the stem missing"
|
| 1112 |
-
},
|
| 1113 |
-
{
|
| 1114 |
-
"prompt": "A fountain pen lies diagonally across parchment, its marbled barrel shimmering under lamplight.",
|
| 1115 |
-
"missing_element": "nib",
|
| 1116 |
-
"question_1": "Is there a fountain pen , could be either with or without a nib in the image",
|
| 1117 |
-
"question_2": "Is the nib absent"
|
| 1118 |
-
},
|
| 1119 |
-
{
|
| 1120 |
-
"prompt": "An ornate picture frame hangs on a gallery wall, intricate gilded borders catching overhead lighting.",
|
| 1121 |
-
"missing_element": "glass",
|
| 1122 |
-
"question_1": "Is there a picture frame , could be either with or without glass in the image",
|
| 1123 |
-
"question_2": "Is the glass missing"
|
| 1124 |
-
},
|
| 1125 |
-
{
|
| 1126 |
-
"prompt": "A skateboard rests on a graffiti-sprayed ramp, deck graphics vibrant and scuffed at the edges.",
|
| 1127 |
-
"missing_element": "wheels",
|
| 1128 |
-
"question_1": "Is there a skateboard , could be either with or without wheels in the image",
|
| 1129 |
-
"question_2": "Are the wheels missing"
|
| 1130 |
-
},
|
| 1131 |
-
{
|
| 1132 |
-
"prompt": "A platinum engagement ring sits in a velvet box under a small spotlight.",
|
| 1133 |
-
"missing_element": "gemstone",
|
| 1134 |
-
"question_1": "Is there a ring , could be either with or without a gemstone in the image",
|
| 1135 |
-
"question_2": "Is the gemstone absent"
|
| 1136 |
-
},
|
| 1137 |
-
{
|
| 1138 |
-
"prompt": "A white rocket stands upright on a launch pad against a pale dawn sky, service towers flanking it.",
|
| 1139 |
-
"missing_element": "fins",
|
| 1140 |
-
"question_1": "Is there a rocket , could be either with or without fins in the image",
|
| 1141 |
-
"question_2": "Are the fins missing"
|
| 1142 |
-
},
|
| 1143 |
-
{
|
| 1144 |
-
"prompt": "Over-ear headphones are draped across a mixing console, their matte black shells shining softly.",
|
| 1145 |
-
"missing_element": "ear pads",
|
| 1146 |
-
"question_1": "Are there headphones , could be either with or without ear pads in the image",
|
| 1147 |
-
"question_2": "Are the ear pads missing"
|
| 1148 |
-
},
|
| 1149 |
-
{
|
| 1150 |
-
"prompt": "A cotton T-shirt is neatly folded on a wooden shelf, its vibrant graphic centered on the chest.",
|
| 1151 |
-
"missing_element": "sleeves",
|
| 1152 |
-
"question_1": "Is there a T-shirt , could be either with or without sleeves in the image",
|
| 1153 |
-
"question_2": "Are the sleeves missing"
|
| 1154 |
-
},
|
| 1155 |
-
{
|
| 1156 |
-
"prompt": "A snowman stands in a quiet front yard, two coal eyes and a jaunty hat giving it character.",
|
| 1157 |
-
"missing_element": "nose",
|
| 1158 |
-
"question_1": "Is there a snowman , could be either with or without a nose in the image",
|
| 1159 |
-
"question_2": "Is the nose missing"
|
| 1160 |
-
},
|
| 1161 |
-
{
|
| 1162 |
-
"prompt": "A worn canvas sneaker lies abandoned on a beach boardwalk, sand sprinkled across its fabric.",
|
| 1163 |
-
"missing_element": "laces",
|
| 1164 |
-
"question_1": "Is there a sneaker , could be either with or without laces in the image",
|
| 1165 |
-
"question_2": "Are the laces absent"
|
| 1166 |
-
},
|
| 1167 |
-
{
|
| 1168 |
-
"prompt": "A rustic lantern hangs from a cabin beam, metal frame dark with age.",
|
| 1169 |
-
"missing_element": "glass panes",
|
| 1170 |
-
"question_1": "Is there a lantern , could be either with or without glass panes in the image",
|
| 1171 |
-
"question_2": "Are the glass panes missing"
|
| 1172 |
-
},
|
| 1173 |
-
{
|
| 1174 |
-
"prompt": "A mechanical keyboard rests on a neon-lit desk, keycaps glowing with colorful backlight.",
|
| 1175 |
-
"missing_element": "spacebar",
|
| 1176 |
-
"question_1": "Is there a keyboard , could be either with or without a spacebar in the image",
|
| 1177 |
-
"question_2": "Is the spacebar missing"
|
| 1178 |
-
},
|
| 1179 |
-
{
|
| 1180 |
-
"prompt": "A plush teddy bear is propped against a pillow in a child’s room, its fur softly illuminated by night-light glow.",
|
| 1181 |
-
"missing_element": "eyes",
|
| 1182 |
-
"question_1": "Is there a teddy bear , could be either with or without eyes in the image",
|
| 1183 |
-
"question_2": "Are the eyes absent"
|
| 1184 |
-
},
|
| 1185 |
-
{
|
| 1186 |
-
"prompt": "A basketball hoop hangs above a driveway, backboard edges chipped from years of play.",
|
| 1187 |
-
"missing_element": "net",
|
| 1188 |
-
"question_1": "Is there a basketball hoop , could be either with or without a net in the image",
|
| 1189 |
-
"question_2": "Is the net missing"
|
| 1190 |
-
},
|
| 1191 |
-
{
|
| 1192 |
-
"prompt": "A crystal wine glass stands atop a linen napkin beside polished silverware.",
|
| 1193 |
-
"missing_element": "stem",
|
| 1194 |
-
"question_1": "Is there a wine glass , could be either with or without a stem in the image",
|
| 1195 |
-
"question_2": "Is the stem absent"
|
| 1196 |
-
},
|
| 1197 |
-
{
|
| 1198 |
-
"prompt": "A decorative pocket mirror lies on a marble vanity, ornate silver backing engraved with curling vines.",
|
| 1199 |
-
"missing_element": "reflective surface",
|
| 1200 |
-
"question_1": "Is there a pocket mirror , could be either with or without a reflective surface in the image",
|
| 1201 |
-
"question_2": "Is the reflective surface missing"
|
| 1202 |
-
}
|
| 1203 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VSF/prompts/test_prompts.json.new
DELETED
|
@@ -1,1203 +0,0 @@
|
|
| 1 |
-
[
|
| 2 |
-
{
|
| 3 |
-
"prompt": "A sleek white sailboat drifting on calm azure waters, its tall mast rising plainly into the sky.",
|
| 4 |
-
"missing_element": "sails",
|
| 5 |
-
"question_1": "Is the image showing a sailboat, could be either with or without sails",
|
| 6 |
-
"question_2": "Are the sails missing"
|
| 7 |
-
},
|
| 8 |
-
{
|
| 9 |
-
"prompt": "A vintage red bicycle leaning against a brick wall, its pedals leading back to a solitary rear gear.",
|
| 10 |
-
"missing_element": "chain",
|
| 11 |
-
"question_1": "Is the image showing a bicycle, could be either with or without a chain",
|
| 12 |
-
"question_2": "Is the chain missing"
|
| 13 |
-
},
|
| 14 |
-
{
|
| 15 |
-
"prompt": "A short-haired gray cat sitting alert on a windowsill, its cheeks unusually smooth beneath attentive eyes.",
|
| 16 |
-
"missing_element": "whiskers",
|
| 17 |
-
"question_1": "Is the image showing a cat, could be either with or without whiskers",
|
| 18 |
-
"question_2": "Are the whiskers missing"
|
| 19 |
-
},
|
| 20 |
-
{
|
| 21 |
-
"prompt": "An ancient stone castle atop a grassy hill, the entrance arch yawning openly into the sunlit courtyard.",
|
| 22 |
-
"missing_element": "gates",
|
| 23 |
-
"question_1": "Is the image showing a castle, could be either with or without gates",
|
| 24 |
-
"question_2": "Are the gates missing"
|
| 25 |
-
},
|
| 26 |
-
{
|
| 27 |
-
"prompt": "A brightly colored hot-air balloon inflated at dawn, long tethers dangling toward the misty field below.",
|
| 28 |
-
"missing_element": "basket",
|
| 29 |
-
"question_1": "Is the image showing a hot-air balloon, could be either with or without a basket",
|
| 30 |
-
"question_2": "Is the basket missing"
|
| 31 |
-
},
|
| 32 |
-
{
|
| 33 |
-
"prompt": "A soft-skinned turtle crawling along a sandy shoreline, its limbs and head fully exposed under morning light.",
|
| 34 |
-
"missing_element": "shell",
|
| 35 |
-
"question_1": "Is the image showing a turtle, could be either with or without a shell",
|
| 36 |
-
"question_2": "Is the shell missing"
|
| 37 |
-
},
|
| 38 |
-
{
|
| 39 |
-
"prompt": "A sleek silver train resting at the station platform, its undercarriage hovering just above the rails.",
|
| 40 |
-
"missing_element": "wheels",
|
| 41 |
-
"question_1": "Is the image showing a train, could be either with or without wheels",
|
| 42 |
-
"question_2": "Are the wheels missing"
|
| 43 |
-
},
|
| 44 |
-
{
|
| 45 |
-
"prompt": "A pair of modern black-framed eyeglasses placed on a glossy table, the frames entirely empty inside.",
|
| 46 |
-
"missing_element": "lenses",
|
| 47 |
-
"question_1": "Is the image showing eyeglasses, could be either with or without lenses",
|
| 48 |
-
"question_2": "Are the lenses missing"
|
| 49 |
-
},
|
| 50 |
-
{
|
| 51 |
-
"prompt": "An elegant fountain pen lies uncapped on parchment, its polished grip narrowing to a hollow opening.",
|
| 52 |
-
"missing_element": "nib",
|
| 53 |
-
"question_1": "Is the image showing a fountain pen, could be either with or without a nib",
|
| 54 |
-
"question_2": "Is the nib missing"
|
| 55 |
-
},
|
| 56 |
-
{
|
| 57 |
-
"prompt": "A collapsed metal umbrella frame resting against a café chair, slender ribs splayed like spokes.",
|
| 58 |
-
"missing_element": "canopy",
|
| 59 |
-
"question_1": "Is the image showing an umbrella, could be either with or without a canopy",
|
| 60 |
-
"question_2": "Is the canopy missing"
|
| 61 |
-
},
|
| 62 |
-
{
|
| 63 |
-
"prompt": "An elongated airplane fuselage parked on the tarmac, twin engines hugging its smooth sides under cloudy skies.",
|
| 64 |
-
"missing_element": "wings",
|
| 65 |
-
"question_1": "Is the image showing an airplane, could be either with or without wings",
|
| 66 |
-
"question_2": "Are the wings missing"
|
| 67 |
-
},
|
| 68 |
-
{
|
| 69 |
-
"prompt": "A brass desk lamp arcs elegantly over an open book, its socket empty save for threaded metal.",
|
| 70 |
-
"missing_element": "bulb",
|
| 71 |
-
"question_1": "Is the image showing a desk lamp, could be either with or without a bulb",
|
| 72 |
-
"question_2": "Is the bulb missing"
|
| 73 |
-
},
|
| 74 |
-
{
|
| 75 |
-
"prompt": "A sunburst electric guitar body hanging on a studio wall, pickups and bridge gleaming under soft spotlights.",
|
| 76 |
-
"missing_element": "neck",
|
| 77 |
-
"question_1": "Is the image showing an electric guitar, could be either with or without a neck",
|
| 78 |
-
"question_2": "Is the neck missing"
|
| 79 |
-
},
|
| 80 |
-
{
|
| 81 |
-
"prompt": "A streamlined silver fish gliding through crystal water, its sleek profile unbroken by any protrusions.",
|
| 82 |
-
"missing_element": "fins",
|
| 83 |
-
"question_1": "Is the image showing a fish, could be either with or without fins",
|
| 84 |
-
"question_2": "Are the fins missing"
|
| 85 |
-
},
|
| 86 |
-
{
|
| 87 |
-
"prompt": "A quaint brick cottage sitting in a meadow, wooden rafters exposed beneath a clear blue sky.",
|
| 88 |
-
"missing_element": "roof",
|
| 89 |
-
"question_1": "Is the image showing a cottage, could be either with or without a roof",
|
| 90 |
-
"question_2": "Is the roof missing"
|
| 91 |
-
},
|
| 92 |
-
{
|
| 93 |
-
"prompt": "A vintage convertible displayed at a classic-car show, the dashboard stretching unobstructed toward the shining hood.",
|
| 94 |
-
"missing_element": "windshield",
|
| 95 |
-
"question_1": "Is the image showing a car, could be either with or without a windshield",
|
| 96 |
-
"question_2": "Is the windshield missing"
|
| 97 |
-
},
|
| 98 |
-
{
|
| 99 |
-
"prompt": "A mechanical keyboard lit by soft rainbow LEDs, a noticeable gap divides the bottom row of keys.",
|
| 100 |
-
"missing_element": "spacebar",
|
| 101 |
-
"question_1": "Is the image showing a keyboard, could be either with or without a spacebar",
|
| 102 |
-
"question_2": "Is the spacebar missing"
|
| 103 |
-
},
|
| 104 |
-
{
|
| 105 |
-
"prompt": "A wide-eyed owl perched on a branch under moonlight, smooth skin visible across its rounded body.",
|
| 106 |
-
"missing_element": "feathers",
|
| 107 |
-
"question_1": "Is the image showing an owl, could be either with or without feathers",
|
| 108 |
-
"question_2": "Are the feathers missing"
|
| 109 |
-
},
|
| 110 |
-
{
|
| 111 |
-
"prompt": "A leather-bound hardcover lies open on a wooden desk, the interior revealing only a hollow rectangular frame.",
|
| 112 |
-
"missing_element": "pages",
|
| 113 |
-
"question_1": "Is the image showing a book, could be either with or without pages",
|
| 114 |
-
"question_2": "Are the pages missing"
|
| 115 |
-
},
|
| 116 |
-
{
|
| 117 |
-
"prompt": "A tall white lighthouse stands on a stormy cliff, its lantern room dark and empty against gathering clouds.",
|
| 118 |
-
"missing_element": "lamp",
|
| 119 |
-
"question_1": "Is the image showing a lighthouse, could be either with or without a lamp",
|
| 120 |
-
"question_2": "Is the lamp missing"
|
| 121 |
-
},
|
| 122 |
-
{
|
| 123 |
-
"prompt": "A plush armchair positioned directly on a patterned rug, its cushioned seat resting unusually low to the floor.",
|
| 124 |
-
"missing_element": "legs",
|
| 125 |
-
"question_1": "Is the image showing an armchair, could be either with or without legs",
|
| 126 |
-
"question_2": "Are the legs missing"
|
| 127 |
-
},
|
| 128 |
-
{
|
| 129 |
-
"prompt": "A proud buck stands in a forest clearing at dawn, smooth forehead catching the first warm light.",
|
| 130 |
-
"missing_element": "antlers",
|
| 131 |
-
"question_1": "Is the image showing a deer, could be either with or without antlers",
|
| 132 |
-
"question_2": "Are the antlers missing"
|
| 133 |
-
},
|
| 134 |
-
{
|
| 135 |
-
"prompt": "A pale parchment envelope lies addressed on a marble tabletop, its top edge cut straight across.",
|
| 136 |
-
"missing_element": "flap",
|
| 137 |
-
"question_1": "Is the image showing an envelope, could be either with or without a flap",
|
| 138 |
-
"question_2": "Is the flap missing"
|
| 139 |
-
},
|
| 140 |
-
{
|
| 141 |
-
"prompt": "A minimalist wall clock hangs above the mantel, slender hands sweeping across a pristine white face.",
|
| 142 |
-
"missing_element": "numbers",
|
| 143 |
-
"question_1": "Is the image showing a wall clock, could be either with or without numbers",
|
| 144 |
-
"question_2": "Are the numbers missing"
|
| 145 |
-
},
|
| 146 |
-
{
|
| 147 |
-
"prompt": "A bulky white space suit floats in a training pool, the collar ring open to the surrounding water.",
|
| 148 |
-
"missing_element": "helmet",
|
| 149 |
-
"question_1": "Is the image showing a space suit, could be either with or without a helmet",
|
| 150 |
-
"question_2": "Is the helmet missing"
|
| 151 |
-
},
|
| 152 |
-
{
|
| 153 |
-
"prompt": "A towering windmill rises in a golden wheat field, only a solitary hub turning lazily in the breeze.",
|
| 154 |
-
"missing_element": "blades",
|
| 155 |
-
"question_1": "Is the image showing a windmill, could be either with or without blades",
|
| 156 |
-
"question_2": "Are the blades missing"
|
| 157 |
-
},
|
| 158 |
-
{
|
| 159 |
-
"prompt": "A tall oak stands in midsummer sunlight, countless bare branches weaving intricate patterns against the sky.",
|
| 160 |
-
"missing_element": "leaves",
|
| 161 |
-
"question_1": "Is the image showing a tree, could be either with or without leaves",
|
| 162 |
-
"question_2": "Are the leaves missing"
|
| 163 |
-
},
|
| 164 |
-
{
|
| 165 |
-
"prompt": "A yellow school bus is parked outside the depot, rectangular openings along its side reveal rows of seats.",
|
| 166 |
-
"missing_element": "doors",
|
| 167 |
-
"question_1": "Is the image showing a bus, could be either with or without doors",
|
| 168 |
-
"question_2": "Are the doors missing"
|
| 169 |
-
},
|
| 170 |
-
{
|
| 171 |
-
"prompt": "A sleek silver laptop sits open on a desk, the lid framing an empty bezel through which the wall is visible.",
|
| 172 |
-
"missing_element": "screen",
|
| 173 |
-
"question_1": "Is the image showing a laptop, could be either with or without a screen",
|
| 174 |
-
"question_2": "Is the screen missing"
|
| 175 |
-
},
|
| 176 |
-
{
|
| 177 |
-
"prompt": "A polished brass trumpet lies on deep red velvet, the leadpipe tapering to an unfinished rim.",
|
| 178 |
-
"missing_element": "mouthpiece",
|
| 179 |
-
"question_1": "Is the image showing a trumpet, could be either with or without a mouthpiece",
|
| 180 |
-
"question_2": "Is the mouthpiece missing"
|
| 181 |
-
},
|
| 182 |
-
{
|
| 183 |
-
"prompt": "A humanoid robot stands upright in a bright laboratory, cables protruding gently from a smooth collar plate.",
|
| 184 |
-
"missing_element": "head",
|
| 185 |
-
"question_1": "Is the image showing a robot, could be either with or without a head",
|
| 186 |
-
"question_2": "Is the head missing"
|
| 187 |
-
},
|
| 188 |
-
{
|
| 189 |
-
"prompt": "A tall pillar of ivory wax sits untouched on a silver tray, its top surface perfectly unbroken.",
|
| 190 |
-
"missing_element": "wick",
|
| 191 |
-
"question_1": "Is the image showing a candle, could be either with or without a wick",
|
| 192 |
-
"question_2": "Is the wick missing"
|
| 193 |
-
},
|
| 194 |
-
{
|
| 195 |
-
"prompt": "A freshly baked pizza crust layered with rich tomato sauce and scattered basil rests on a stone board.",
|
| 196 |
-
"missing_element": "cheese",
|
| 197 |
-
"question_1": "Is the image showing a pizza, could be either with or without cheese",
|
| 198 |
-
"question_2": "Is the cheese missing"
|
| 199 |
-
},
|
| 200 |
-
{
|
| 201 |
-
"prompt": "A black DSLR body stands on a wooden shelf, the circular mount exposing delicate inner mechanics to view.",
|
| 202 |
-
"missing_element": "lens",
|
| 203 |
-
"question_1": "Is the image showing a DSLR camera, could be either with or without a lens",
|
| 204 |
-
"question_2": "Is the lens missing"
|
| 205 |
-
},
|
| 206 |
-
{
|
| 207 |
-
"prompt": "A grand piano dominates an empty concert hall, a smooth ebony board stretching across the front.",
|
| 208 |
-
"missing_element": "keys",
|
| 209 |
-
"question_1": "Is the image showing a piano, could be either with or without keys",
|
| 210 |
-
"question_2": "Are the keys missing"
|
| 211 |
-
},
|
| 212 |
-
{
|
| 213 |
-
"prompt": "A slender wooden paintbrush rests beside a palette, its metal ferrule clasping only empty air.",
|
| 214 |
-
"missing_element": "bristles",
|
| 215 |
-
"question_1": "Is the image showing a paintbrush, could be either with or without bristles",
|
| 216 |
-
"question_2": "Are the bristles missing"
|
| 217 |
-
},
|
| 218 |
-
{
|
| 219 |
-
"prompt": "A sleek digital watch face sits on a granite countertop, lugs jutting out where something should secure it.",
|
| 220 |
-
"missing_element": "strap",
|
| 221 |
-
"question_1": "Is the image showing a watch, could be either with or without a strap",
|
| 222 |
-
"question_2": "Is the strap missing"
|
| 223 |
-
},
|
| 224 |
-
{
|
| 225 |
-
"prompt": "A young man opens his mouth for a dentist, the inner cavity appearing hollow and still.",
|
| 226 |
-
"missing_element": "tongue",
|
| 227 |
-
"question_1": "Is the image showing a mouth, could be either with or without a tongue",
|
| 228 |
-
"question_2": "Is the tongue missing"
|
| 229 |
-
},
|
| 230 |
-
{
|
| 231 |
-
"prompt": "A matte black motorcycle is parked under neon streetlights, cables stretching forward over the front wheel into empty air.",
|
| 232 |
-
"missing_element": "handlebars",
|
| 233 |
-
"question_1": "Is the image showing a motorcycle, could be either with or without handlebars",
|
| 234 |
-
"question_2": "Are the handlebars missing"
|
| 235 |
-
},
|
| 236 |
-
{
|
| 237 |
-
"prompt": "A retro wooden television cabinet stands in a living room, the front frame revealing intricate wiring and glowing tubes.",
|
| 238 |
-
"missing_element": "screen",
|
| 239 |
-
"question_1": "Is the image showing a television, could be either with or without a screen",
|
| 240 |
-
"question_2": "Is the screen missing"
|
| 241 |
-
},
|
| 242 |
-
{
|
| 243 |
-
"prompt": "A shaggy mountain goat balances on a rocky ledge, its forehead smooth under the midday sun.",
|
| 244 |
-
"missing_element": "horns",
|
| 245 |
-
"question_1": "Is the image showing a goat, could be either with or without horns",
|
| 246 |
-
"question_2": "Are the horns missing"
|
| 247 |
-
},
|
| 248 |
-
{
|
| 249 |
-
"prompt": "A bright red sneaker rests on a locker-room bench, eyelets neatly aligned along its padded tongue.",
|
| 250 |
-
"missing_element": "laces",
|
| 251 |
-
"question_1": "Is the image showing a sneaker, could be either with or without laces",
|
| 252 |
-
"question_2": "Are the laces missing"
|
| 253 |
-
},
|
| 254 |
-
{
|
| 255 |
-
"prompt": "A small green frog sits quietly on a lily pad, smooth domes occupying the front of its head.",
|
| 256 |
-
"missing_element": "eyes",
|
| 257 |
-
"question_1": "Is the image showing a frog, could be either with or without eyes",
|
| 258 |
-
"question_2": "Are the eyes missing"
|
| 259 |
-
},
|
| 260 |
-
{
|
| 261 |
-
"prompt": "A ceramic mug painted with blue floral patterns stands upright on a saucer, its circular shape perfectly continuous.",
|
| 262 |
-
"missing_element": "handle",
|
| 263 |
-
"question_1": "Is the image showing a mug, could be either with or without a handle",
|
| 264 |
-
"question_2": "Is the handle missing"
|
| 265 |
-
},
|
| 266 |
-
{
|
| 267 |
-
"prompt": "A curved golden saxophone rests on a music stand, rows of uncovered tone holes gleaming in the spotlight.",
|
| 268 |
-
"missing_element": "keys",
|
| 269 |
-
"question_1": "Is the image showing a saxophone, could be either with or without keys",
|
| 270 |
-
"question_2": "Are the keys missing"
|
| 271 |
-
},
|
| 272 |
-
{
|
| 273 |
-
"prompt": "A wooden skateboard deck balances across two bricks on the pavement, metal trucks pressed directly to the ground.",
|
| 274 |
-
"missing_element": "wheels",
|
| 275 |
-
"question_1": "Is the image showing a skateboard, could be either with or without wheels",
|
| 276 |
-
"question_2": "Are the wheels missing"
|
| 277 |
-
},
|
| 278 |
-
{
|
| 279 |
-
"prompt": "A felt fedora crown sits on a hat stand, its sides descending straight without any outward extension.",
|
| 280 |
-
"missing_element": "brim",
|
| 281 |
-
"question_1": "Is the image showing a fedora, could be either with or without a brim",
|
| 282 |
-
"question_2": "Is the brim missing"
|
| 283 |
-
},
|
| 284 |
-
{
|
| 285 |
-
"prompt": "A futuristic motorcycle helmet rests on a workbench, the front opening exposing cushioned interior padding.",
|
| 286 |
-
"missing_element": "visor",
|
| 287 |
-
"question_1": "Is the image showing a motorcycle helmet, could be either with or without a visor",
|
| 288 |
-
"question_2": "Is the visor missing"
|
| 289 |
-
},
|
| 290 |
-
{
|
| 291 |
-
"prompt": "An ornate wooden bedframe stands against a midnight-blue wall, evenly spaced slats visible across its width.",
|
| 292 |
-
"missing_element": "mattress",
|
| 293 |
-
"question_1": "Is the image showing a bedframe, could be either with or without a mattress",
|
| 294 |
-
"question_2": "Is the mattress missing"
|
| 295 |
-
},
|
| 296 |
-
{
|
| 297 |
-
"prompt": "A tall brick clock tower dominates the town square, a blank circular recess marking the place where time should be displayed.",
|
| 298 |
-
"missing_element": "clock face",
|
| 299 |
-
"question_1": "Is the image showing a clock tower, could be either with or without a clock face",
|
| 300 |
-
"question_2": "Is the clock face missing"
|
| 301 |
-
},
|
| 302 |
-
{
|
| 303 |
-
"prompt": "An antique pocket watch lies open on velvet, its enamel face gleaming beneath ornate Roman numerals, polished gears exposed.",
|
| 304 |
-
"missing_element": "hands",
|
| 305 |
-
"question_1": "Is the image showing a pocket watch, could be either with or without hands",
|
| 306 |
-
"question_2": "Are the hands missing from the pocket watch"
|
| 307 |
-
},
|
| 308 |
-
{
|
| 309 |
-
"prompt": "A sleek road bicycle leans against an old stone wall, lightweight frame painted crimson and chrome cranks resting above the asphalt.",
|
| 310 |
-
"missing_element": "pedals",
|
| 311 |
-
"question_1": "Is the image showing a bicycle, could be either with or without pedals",
|
| 312 |
-
"question_2": "Are the pedals missing from the bicycle"
|
| 313 |
-
},
|
| 314 |
-
{
|
| 315 |
-
"prompt": "A painted portrait of a young woman hangs in a quiet gallery, delicate features rendered in soft oils, the upper facial planes left as smooth, empty forms.",
|
| 316 |
-
"missing_element": "eyes",
|
| 317 |
-
"question_1": "Is the image showing a portrait of a woman, could be either with or without eyes",
|
| 318 |
-
"question_2": "Are the eyes missing from the portrait of the woman"
|
| 319 |
-
},
|
| 320 |
-
{
|
| 321 |
-
"prompt": "A concert grand piano stands under stage lights, lid propped high so the audience can see straight into a cavity that reveals felt-covered dampers but no striking mechanism.",
|
| 322 |
-
"missing_element": "hammers",
|
| 323 |
-
"question_1": "Is the image showing a grand piano, could be either with or without hammers",
|
| 324 |
-
"question_2": "Are the hammers missing from the grand piano"
|
| 325 |
-
},
|
| 326 |
-
{
|
| 327 |
-
"prompt": "An old wooden clipper drifts across a calm sea, towering masts stretching skyward with only rigging ropes swaying in the breeze.",
|
| 328 |
-
"missing_element": "sails",
|
| 329 |
-
"question_1": "Is the image showing a sailing ship, could be either with or without sails",
|
| 330 |
-
"question_2": "Are the sails missing from the sailing ship"
|
| 331 |
-
},
|
| 332 |
-
{
|
| 333 |
-
"prompt": "A mature oak tree rises against a bright summer sky, wide branches spreading like a skeletal silhouette despite the season.",
|
| 334 |
-
"missing_element": "leaves",
|
| 335 |
-
"question_1": "Is the image showing an oak tree, could be either with or without leaves",
|
| 336 |
-
"question_2": "Are the leaves missing from the oak tree"
|
| 337 |
-
},
|
| 338 |
-
{
|
| 339 |
-
"prompt": "A snug stone cottage nestles at the forest’s edge, ivy climbing across shuttered windows while a blank wall greets visiting guests.",
|
| 340 |
-
"missing_element": "door",
|
| 341 |
-
"question_1": "Is the image showing a cottage, could be either with or without a door",
|
| 342 |
-
"question_2": "Is the door missing from the cottage"
|
| 343 |
-
},
|
| 344 |
-
{
|
| 345 |
-
"prompt": "A streamlined passenger jet rests on the apron, engines mounted beneath a smooth fuselage that runs directly into a tall tail fin.",
|
| 346 |
-
"missing_element": "wings",
|
| 347 |
-
"question_1": "Is the image showing a passenger jet, could be either with or without wings",
|
| 348 |
-
"question_2": "Are the wings missing from the passenger jet"
|
| 349 |
-
},
|
| 350 |
-
{
|
| 351 |
-
"prompt": "A minimalist wristwatch sits on a leather tray, monochrome dial perfectly smooth except for two thin hands orbiting a blank circumference.",
|
| 352 |
-
"missing_element": "numbers",
|
| 353 |
-
"question_1": "Is the image showing a wristwatch, could be either with or without numbers",
|
| 354 |
-
"question_2": "Are the numbers missing from the wristwatch"
|
| 355 |
-
},
|
| 356 |
-
{
|
| 357 |
-
"prompt": "A freshly baked pizza rests on a wooden board, golden crust encircling a vibrant pool of red sauce topped by scattered basil leaves.",
|
| 358 |
-
"missing_element": "cheese",
|
| 359 |
-
"question_1": "Is the image showing a pizza, could be either with or without cheese",
|
| 360 |
-
"question_2": "Is the cheese missing from the pizza"
|
| 361 |
-
},
|
| 362 |
-
{
|
| 363 |
-
"prompt": "A bustling city intersection stretches beneath midday sun, tall signal heads looming overhead with dark glass panels that never change hue.",
|
| 364 |
-
"missing_element": "lights",
|
| 365 |
-
"question_1": "Is the image showing traffic signals, could be either with or without lights",
|
| 366 |
-
"question_2": "Are the lights missing from the traffic signals"
|
| 367 |
-
},
|
| 368 |
-
{
|
| 369 |
-
"prompt": "A colorful skateboard lies abandoned on smooth concrete, grip-taped deck and polished trucks casting neat shadows on the ground.",
|
| 370 |
-
"missing_element": "wheels",
|
| 371 |
-
"question_1": "Is the image showing a skateboard, could be either with or without wheels",
|
| 372 |
-
"question_2": "Are the wheels missing from the skateboard"
|
| 373 |
-
},
|
| 374 |
-
{
|
| 375 |
-
"prompt": "A chessboard is arranged atop a velvet tablecloth, thirty-two squares waiting while one side’s carved army stands alone in battle formation.",
|
| 376 |
-
"missing_element": "black pieces",
|
| 377 |
-
"question_1": "Is the image showing a chessboard, could be either with or without black pieces",
|
| 378 |
-
"question_2": "Are the black pieces missing from the chessboard"
|
| 379 |
-
},
|
| 380 |
-
{
|
| 381 |
-
"prompt": "A cherry-red sports car gleams under showroom lamps, sculpted alloys rotating freely behind open spokes that reveal only empty air.",
|
| 382 |
-
"missing_element": "brakes",
|
| 383 |
-
"question_1": "Is the image showing a sports car, could be either with or without brakes",
|
| 384 |
-
"question_2": "Are the brakes missing from the sports car"
|
| 385 |
-
},
|
| 386 |
-
{
|
| 387 |
-
"prompt": "An open hardcover book rests on a wooden desk, cream-colored pages stretching wide with nothing printed between the margins.",
|
| 388 |
-
"missing_element": "text",
|
| 389 |
-
"question_1": "Is the image showing a book, could be either with or without text",
|
| 390 |
-
"question_2": "Is the text missing from the book"
|
| 391 |
-
},
|
| 392 |
-
{
|
| 393 |
-
"prompt": "A modern desktop tower with tempered-glass side panel displays RGB-lit components, yet no spinning blades disturb the still interior.",
|
| 394 |
-
"missing_element": "fans",
|
| 395 |
-
"question_1": "Is the image showing a computer tower, could be either with or without fans",
|
| 396 |
-
"question_2": "Are the fans missing from the computer tower"
|
| 397 |
-
},
|
| 398 |
-
{
|
| 399 |
-
"prompt": "A straw-stuffed scarecrow stands in the middle of a golden field, flannel shirt hanging limp beside a torso supported by a single post.",
|
| 400 |
-
"missing_element": "arms",
|
| 401 |
-
"question_1": "Is the image showing a scarecrow, could be either with or without arms",
|
| 402 |
-
"question_2": "Are the arms missing from the scarecrow"
|
| 403 |
-
},
|
| 404 |
-
{
|
| 405 |
-
"prompt": "An oil painting depicts a medieval knight in shining armor, bold gaze steady while an empty leather baldric crosses his hip.",
|
| 406 |
-
"missing_element": "sword",
|
| 407 |
-
"question_1": "Is the image showing a knight, could be either with or without a sword",
|
| 408 |
-
"question_2": "Is the sword missing from the knight"
|
| 409 |
-
},
|
| 410 |
-
{
|
| 411 |
-
"prompt": "A delicate porcelain teapot sits on a bamboo tray, floral motifs curling around a rotund body that preserves a graceful spout but offers no side grip.",
|
| 412 |
-
"missing_element": "handle",
|
| 413 |
-
"question_1": "Is the image showing a teapot, could be either with or without a handle",
|
| 414 |
-
"question_2": "Is the handle missing from the teapot"
|
| 415 |
-
},
|
| 416 |
-
{
|
| 417 |
-
"prompt": "An outdoor basketball rim is mounted to a clear backboard, orange ring stark against blue sky with nothing suspended beneath it.",
|
| 418 |
-
"missing_element": "net",
|
| 419 |
-
"question_1": "Is the image showing a basketball hoop, could be either with or without a net",
|
| 420 |
-
"question_2": "Is the net missing from the basketball hoop"
|
| 421 |
-
},
|
| 422 |
-
{
|
| 423 |
-
"prompt": "A formal dining table is fully laid with silverware, porcelain plates and folded linen napkins, yet above each plate only empty space awaits a drink.",
|
| 424 |
-
"missing_element": "glasses",
|
| 425 |
-
"question_1": "Is the image showing a dining table, could be either with or without glasses",
|
| 426 |
-
"question_2": "Are the glasses missing from the dining table"
|
| 427 |
-
},
|
| 428 |
-
{
|
| 429 |
-
"prompt": "A vintage typewriter occupies an author’s desk, metal arms poised above pristine paper while twin spools sit idle and uncovered.",
|
| 430 |
-
"missing_element": "ribbon",
|
| 431 |
-
"question_1": "Is the image showing a typewriter, could be either with or without a ribbon",
|
| 432 |
-
"question_2": "Is the ribbon missing from the typewriter"
|
| 433 |
-
},
|
| 434 |
-
{
|
| 435 |
-
"prompt": "A thick winter parka hangs from a coat rack, quilted panels puffed with down, the front opening held shut only by overlapping fabric.",
|
| 436 |
-
"missing_element": "zipper",
|
| 437 |
-
"question_1": "Is the image showing a winter jacket, could be either with or without a zipper",
|
| 438 |
-
"question_2": "Is the zipper missing from the winter jacket"
|
| 439 |
-
},
|
| 440 |
-
{
|
| 441 |
-
"prompt": "A towering sunflower turns toward daylight, golden petals radiant around a smooth green disk unmarred by patterned specks.",
|
| 442 |
-
"missing_element": "seeds",
|
| 443 |
-
"question_1": "Is the image showing a sunflower, could be either with or without seeds",
|
| 444 |
-
"question_2": "Are the seeds missing from the sunflower"
|
| 445 |
-
},
|
| 446 |
-
{
|
| 447 |
-
"prompt": "A large elephant strides across the savanna, wrinkled hide dusted with red earth, its face ending abruptly below wide flapping ears.",
|
| 448 |
-
"missing_element": "trunk",
|
| 449 |
-
"question_1": "Is the image showing an elephant, could be either with or without a trunk",
|
| 450 |
-
"question_2": "Is the trunk missing from the elephant"
|
| 451 |
-
},
|
| 452 |
-
{
|
| 453 |
-
"prompt": "A painted wooden rowboat drifts on a calm lake, bench seats freshly varnished while the gunwales hold empty brass oarlocks.",
|
| 454 |
-
"missing_element": "oars",
|
| 455 |
-
"question_1": "Is the image showing a rowboat, could be either with or without oars",
|
| 456 |
-
"question_2": "Are the oars missing from the rowboat"
|
| 457 |
-
},
|
| 458 |
-
{
|
| 459 |
-
"prompt": "A snowman stands proudly in a suburban yard, three gleaming spheres stacked neatly, scarf and hat in place yet nothing dots the torso.",
|
| 460 |
-
"missing_element": "buttons",
|
| 461 |
-
"question_1": "Is the image showing a snowman, could be either with or without buttons",
|
| 462 |
-
"question_2": "Are the buttons missing from the snowman"
|
| 463 |
-
},
|
| 464 |
-
{
|
| 465 |
-
"prompt": "A lacquered fountain pen rests atop a journal, transparent reservoir completely clear above a gleaming gold nib.",
|
| 466 |
-
"missing_element": "ink",
|
| 467 |
-
"question_1": "Is the image showing a fountain pen, could be either with or without ink",
|
| 468 |
-
"question_2": "Is the ink missing from the fountain pen"
|
| 469 |
-
},
|
| 470 |
-
{
|
| 471 |
-
"prompt": "A wooden paintbrush handle with a shiny ferrule lies beside a palette, its tip ending in a hollow metal cylinder.",
|
| 472 |
-
"missing_element": "bristles",
|
| 473 |
-
"question_1": "Is the image showing a paintbrush, could be either with or without bristles",
|
| 474 |
-
"question_2": "Are the bristles missing from the paintbrush"
|
| 475 |
-
},
|
| 476 |
-
{
|
| 477 |
-
"prompt": "A pair of oval eyeglass frames sits on folded newsprint, front rims intact while nothing extends toward where ears would rest.",
|
| 478 |
-
"missing_element": "temples",
|
| 479 |
-
"question_1": "Is the image showing eyeglasses, could be either with or without temples",
|
| 480 |
-
"question_2": "Are the temples missing from the eyeglasses"
|
| 481 |
-
},
|
| 482 |
-
{
|
| 483 |
-
"prompt": "A city commuter holds an umbrella open in the rain, black canopy stretched over a central shaft without any visible spokes beneath.",
|
| 484 |
-
"missing_element": "ribs",
|
| 485 |
-
"question_1": "Is the image showing an umbrella, could be either with or without ribs",
|
| 486 |
-
"question_2": "Are the ribs missing from the umbrella"
|
| 487 |
-
},
|
| 488 |
-
{
|
| 489 |
-
"prompt": "A skeletonized wristwatch is showcased under a glass dome, gears whirring beside a sweeping second hand while the outer ring remains entirely blank.",
|
| 490 |
-
"missing_element": "hour markers",
|
| 491 |
-
"question_1": "Is the image showing a wristwatch, could be either with or without hour markers",
|
| 492 |
-
"question_2": "Are the hour markers missing from the wristwatch"
|
| 493 |
-
},
|
| 494 |
-
{
|
| 495 |
-
"prompt": "A nylon tent lies fully spread across a grassy clearing, rainfly attached and guy lines staked, yet the fabric sags flat on the ground.",
|
| 496 |
-
"missing_element": "poles",
|
| 497 |
-
"question_1": "Is the image showing a camping tent, could be either with or without poles",
|
| 498 |
-
"question_2": "Are the poles missing from the camping tent"
|
| 499 |
-
},
|
| 500 |
-
{
|
| 501 |
-
"prompt": "A wooden cuckoo clock hangs on a chalet wall, carved deer and leaves surrounding an ornate dial, but beneath the case no pine-cone ornaments dangle.",
|
| 502 |
-
"missing_element": "weights",
|
| 503 |
-
"question_1": "Is the image showing a cuckoo clock, could be either with or without weights",
|
| 504 |
-
"question_2": "Are the weights missing from the cuckoo clock"
|
| 505 |
-
},
|
| 506 |
-
{
|
| 507 |
-
"prompt": "A modern smartphone rests face-up on a table, edge-to-edge glass reflecting ceiling lights, its top bezel perfectly smooth without any tiny perforations.",
|
| 508 |
-
"missing_element": "speaker grille",
|
| 509 |
-
"question_1": "Is the image showing a smartphone, could be either with or without a speaker grille",
|
| 510 |
-
"question_2": "Is the speaker grille missing from the smartphone"
|
| 511 |
-
},
|
| 512 |
-
{
|
| 513 |
-
"prompt": "A café-style motorcycle waits beside a dusty road, chrome handlebars wide, while the round instrument cluster displays only a blank lens.",
|
| 514 |
-
"missing_element": "speedometer",
|
| 515 |
-
"question_1": "Is the image showing a motorcycle, could be either with or without a speedometer",
|
| 516 |
-
"question_2": "Is the speedometer missing from the motorcycle"
|
| 517 |
-
},
|
| 518 |
-
{
|
| 519 |
-
"prompt": "A slender violin bow lies on crimson velvet, ebony frog adjusted with a silver screw, yet the wooden stick spans unbroken from tip to grip.",
|
| 520 |
-
"missing_element": "hair",
|
| 521 |
-
"question_1": "Is the image showing a violin bow, could be either with or without hair",
|
| 522 |
-
"question_2": "Is the hair missing from the violin bow"
|
| 523 |
-
},
|
| 524 |
-
{
|
| 525 |
-
"prompt": "A gilded birdcage swings gently from a porch hook, domed roof catching afternoon sun, though the interior offers no horizontal bar for resting.",
|
| 526 |
-
"missing_element": "perch",
|
| 527 |
-
"question_1": "Is the image showing a birdcage, could be either with or without a perch",
|
| 528 |
-
"question_2": "Is the perch missing from the birdcage"
|
| 529 |
-
},
|
| 530 |
-
{
|
| 531 |
-
"prompt": "A marble statue of a robed goddess stands among museum columns, shoulders gracefully sloping upward to an abruptly smooth surface.",
|
| 532 |
-
"missing_element": "head",
|
| 533 |
-
"question_1": "Is the image showing a statue, could be either with or without a head",
|
| 534 |
-
"question_2": "Is the head missing from the statue"
|
| 535 |
-
},
|
| 536 |
-
{
|
| 537 |
-
"prompt": "A plush teddy bear sits on a child’s bed, round eyes glinting above a stitched smile while its muzzle remains flat and unadorned.",
|
| 538 |
-
"missing_element": "nose",
|
| 539 |
-
"question_1": "Is the image showing a teddy bear, could be either with or without a nose",
|
| 540 |
-
"question_2": "Is the nose missing from the teddy bear"
|
| 541 |
-
},
|
| 542 |
-
{
|
| 543 |
-
"prompt": "A pair of canvas sneakers stands upright on a doorway mat, metal eyelets neatly aligned along an empty tongue.",
|
| 544 |
-
"missing_element": "laces",
|
| 545 |
-
"question_1": "Is the image showing sneakers, could be either with or without laces",
|
| 546 |
-
"question_2": "Are the laces missing from the sneakers"
|
| 547 |
-
},
|
| 548 |
-
{
|
| 549 |
-
"prompt": "An open refrigerator hums quietly in a small kitchen, interior shelves glassy and clean, yet the door interior shows only blank white plastic.",
|
| 550 |
-
"missing_element": "door shelves",
|
| 551 |
-
"question_1": "Is the image showing a refrigerator, could be either with or without door shelves",
|
| 552 |
-
"question_2": "Are the door shelves missing from the refrigerator"
|
| 553 |
-
},
|
| 554 |
-
{
|
| 555 |
-
"prompt": "Friends sit around a circular stone ring in the dark, glowing embers faintly illuminate their faces while no tongues of light dance upward.",
|
| 556 |
-
"missing_element": "flames",
|
| 557 |
-
"question_1": "Is the image showing a campfire, could be either with or without flames",
|
| 558 |
-
"question_2": "Are the flames missing from the campfire"
|
| 559 |
-
},
|
| 560 |
-
{
|
| 561 |
-
"prompt": "A stainless drinking fountain stands beside a park path, polished button visible, but the curved nozzle yields only silence.",
|
| 562 |
-
"missing_element": "water",
|
| 563 |
-
"question_1": "Is the image showing a drinking fountain, could be either with or without water",
|
| 564 |
-
"question_2": "Is the water missing from the drinking fountain"
|
| 565 |
-
},
|
| 566 |
-
{
|
| 567 |
-
"prompt": "A vintage revolver lies on a green felt display pad, barrel polished and cylinder open, yet beneath the trigger there is nothing to encircle a finger.",
|
| 568 |
-
"missing_element": "trigger guard",
|
| 569 |
-
"question_1": "Is the image showing a revolver, could be either with or without a trigger guard",
|
| 570 |
-
"question_2": "Is the trigger guard missing from the revolver"
|
| 571 |
-
},
|
| 572 |
-
{
|
| 573 |
-
"prompt": "An elaborately drawn compass rose decorates an ancient map, lavish scrollwork filling the cardinal directions but no pointed indicator marks the prime heading.",
|
| 574 |
-
"missing_element": "north arrow",
|
| 575 |
-
"question_1": "Is the image showing a compass rose, could be either with or without a north arrow",
|
| 576 |
-
"question_2": "Is the north arrow missing from the compass rose"
|
| 577 |
-
},
|
| 578 |
-
{
|
| 579 |
-
"prompt": "Futuristic skyscrapers rise under neon twilight, reflective facades forming uninterrupted planes of glowing metal and glass.",
|
| 580 |
-
"missing_element": "windows",
|
| 581 |
-
"question_1": "Is the image showing skyscrapers, could be either with or without windows",
|
| 582 |
-
"question_2": "Are the windows missing from the skyscrapers"
|
| 583 |
-
},
|
| 584 |
-
{
|
| 585 |
-
"prompt": "An orchestra conductor stands on a podium, tuxedo crisp and arms moving fluidly while his raised hand remains empty.",
|
| 586 |
-
"missing_element": "baton",
|
| 587 |
-
"question_1": "Is the image showing a conductor, could be either with or without a baton",
|
| 588 |
-
"question_2": "Is the baton missing from the conductor"
|
| 589 |
-
},
|
| 590 |
-
{
|
| 591 |
-
"prompt": "A soccer field lies freshly mowed, two white uprights planted firmly at the end line, leaving an open rectangle above.",
|
| 592 |
-
"missing_element": "crossbar",
|
| 593 |
-
"question_1": "Is the image showing a soccer goal, could be either with or without a crossbar",
|
| 594 |
-
"question_2": "Is the crossbar missing from the soccer goal"
|
| 595 |
-
},
|
| 596 |
-
{
|
| 597 |
-
"prompt": "A laboratory microscope sits on a steel workbench, coarse and fine focus knobs present, yet the tubular body ends without any glass elements inside.",
|
| 598 |
-
"missing_element": "lenses",
|
| 599 |
-
"question_1": "Is the image showing a microscope, could be either with or without lenses",
|
| 600 |
-
"question_2": "Are the lenses missing from the microscope"
|
| 601 |
-
},
|
| 602 |
-
|
| 603 |
-
{
|
| 604 |
-
"prompt": "A sun-faded acoustic guitar leans against a rustic brick wall, its polished wooden body catching soft afternoon light while slender tuning pegs glint quietly.",
|
| 605 |
-
"missing_element": "strings",
|
| 606 |
-
"question_1": "Is the image showing a guitar , could be either with or without strings",
|
| 607 |
-
"question_2": "Are the strings absent"
|
| 608 |
-
},
|
| 609 |
-
{
|
| 610 |
-
"prompt": "A weathered bicycle stands upright beside a canal, chrome handlebars reflecting the sky and empty forks hovering just above cobblestones.",
|
| 611 |
-
"missing_element": "wheels",
|
| 612 |
-
"question_1": "Is the image showing a bicycle , could be either with or without wheels",
|
| 613 |
-
"question_2": "Are the wheels missing"
|
| 614 |
-
},
|
| 615 |
-
{
|
| 616 |
-
"prompt": "A barn owl perches on an old fence post under moonlight, heart-shaped face smooth and featureless save for delicate feathers.",
|
| 617 |
-
"missing_element": "eyes",
|
| 618 |
-
"question_1": "Is the image showing an owl , could be either with or without eyes",
|
| 619 |
-
"question_2": "Are the eyes absent"
|
| 620 |
-
},
|
| 621 |
-
{
|
| 622 |
-
"prompt": "A sleek silver sedan sits parked under a streetlamp, glossy panels reflecting neon signs yet the side frames reveal wide, open gaps.",
|
| 623 |
-
"missing_element": "doors",
|
| 624 |
-
"question_1": "Is the image showing a car , could be either with or without doors",
|
| 625 |
-
"question_2": "Are the doors missing"
|
| 626 |
-
},
|
| 627 |
-
{
|
| 628 |
-
"prompt": "A towering stone keep rises above a misty valley, its walls unbroken and austere beneath streaks of lichen.",
|
| 629 |
-
"missing_element": "windows",
|
| 630 |
-
"question_1": "Is the image showing a castle , could be either with or without windows",
|
| 631 |
-
"question_2": "Are the windows absent"
|
| 632 |
-
},
|
| 633 |
-
{
|
| 634 |
-
"prompt": "An antique brass pocket watch rests open on a velvet cushion, the ornate hands circling an entirely blank ring.",
|
| 635 |
-
"missing_element": "numbers",
|
| 636 |
-
"question_1": "Is the image showing a pocket watch , could be either with or without numbers",
|
| 637 |
-
"question_2": "Are the numbers missing"
|
| 638 |
-
},
|
| 639 |
-
{
|
| 640 |
-
"prompt": "A colossal amusement wheel stands against a fiery sunset, its skeletal steel rim arching over a silent fairground.",
|
| 641 |
-
"missing_element": "cabins",
|
| 642 |
-
"question_1": "Is the image showing a Ferris wheel , could be either with or without cabins",
|
| 643 |
-
"question_2": "Are the cabins missing"
|
| 644 |
-
},
|
| 645 |
-
{
|
| 646 |
-
"prompt": "A ginger cat naps on a windowsill, its fur puddled around a small, rounded hindquarters.",
|
| 647 |
-
"missing_element": "tail",
|
| 648 |
-
"question_1": "Is the image showing a cat , could be either with or without a tail",
|
| 649 |
-
"question_2": "Is the tail absent"
|
| 650 |
-
},
|
| 651 |
-
{
|
| 652 |
-
"prompt": "A massive African elephant stares calmly across the savanna, large ears fanning out over ivory tusks.",
|
| 653 |
-
"missing_element": "trunk",
|
| 654 |
-
"question_1": "Is the image showing an elephant , could be either with or without a trunk",
|
| 655 |
-
"question_2": "Is the trunk missing"
|
| 656 |
-
},
|
| 657 |
-
{
|
| 658 |
-
"prompt": "A solitary oak trunk rises from a mist-covered meadow, bark gnarled and roots sprawling into damp earth.",
|
| 659 |
-
"missing_element": "branches",
|
| 660 |
-
"question_1": "Is the image showing a tree , could be either with or without branches",
|
| 661 |
-
"question_2": "Are the branches absent"
|
| 662 |
-
},
|
| 663 |
-
{
|
| 664 |
-
"prompt": "A simple wooden chair stands in an empty gallery, its flat seat and upright backrest connected directly to the floor by a single low block.",
|
| 665 |
-
"missing_element": "legs",
|
| 666 |
-
"question_1": "Is the image showing a chair , could be either with or without legs",
|
| 667 |
-
"question_2": "Are the legs missing"
|
| 668 |
-
},
|
| 669 |
-
{
|
| 670 |
-
"prompt": "A tall sailing ship rests in calm harbor waters, dark masts piercing the sky but the rigging hangs slack against naked beams.",
|
| 671 |
-
"missing_element": "sails",
|
| 672 |
-
"question_1": "Is the image showing a ship , could be either with or without sails",
|
| 673 |
-
"question_2": "Are the sails missing"
|
| 674 |
-
},
|
| 675 |
-
{
|
| 676 |
-
"prompt": "A painter's oval palette lies atop a studio table, smeared thumb hole and dried bristles surrounding a pristine, untouched surface.",
|
| 677 |
-
"missing_element": "paint",
|
| 678 |
-
"question_1": "Is the image showing a painter's palette , could be either with or without paint",
|
| 679 |
-
"question_2": "Is the paint absent"
|
| 680 |
-
},
|
| 681 |
-
{
|
| 682 |
-
"prompt": "An old black typewriter sits on a mahogany desk, its metal arms raised above empty square holes where fingers would normally dance.",
|
| 683 |
-
"missing_element": "keys",
|
| 684 |
-
"question_1": "Is the image showing a typewriter , could be either with or without keys",
|
| 685 |
-
"question_2": "Are the keys missing"
|
| 686 |
-
},
|
| 687 |
-
{
|
| 688 |
-
"prompt": "A porcelain coffee mug releases gentle steam on a kitchen counter, its cylindrical body smooth and symmetrical but entirely unadorned on one side.",
|
| 689 |
-
"missing_element": "handle",
|
| 690 |
-
"question_1": "Is the image showing a mug , could be either with or without a handle",
|
| 691 |
-
"question_2": "Is the handle missing"
|
| 692 |
-
},
|
| 693 |
-
{
|
| 694 |
-
"prompt": "An ornate katana rests upon a lacquered stand, its lacquered scabbard parted to reveal only the hilt extending into empty space.",
|
| 695 |
-
"missing_element": "blade",
|
| 696 |
-
"question_1": "Is the image showing a katana , could be either with or without a blade",
|
| 697 |
-
"question_2": "Is the blade missing"
|
| 698 |
-
},
|
| 699 |
-
{
|
| 700 |
-
"prompt": "A modern smartphone lies on a marble tabletop, slim metallic frame enclosing an unbroken dark void.",
|
| 701 |
-
"missing_element": "screen",
|
| 702 |
-
"question_1": "Is the image showing a smartphone , could be either with or without a screen",
|
| 703 |
-
"question_2": "Is the screen missing"
|
| 704 |
-
},
|
| 705 |
-
{
|
| 706 |
-
"prompt": "A commercial jet is parked on the tarmac at dawn, cylindrical fuselage gleaming under floodlights as engines sit exposed beside stubby supports.",
|
| 707 |
-
"missing_element": "wings",
|
| 708 |
-
"question_1": "Is the image showing an airplane , could be either with or without wings",
|
| 709 |
-
"question_2": "Are the wings missing"
|
| 710 |
-
},
|
| 711 |
-
{
|
| 712 |
-
"prompt": "A weather-beaten cowboy hat hangs from a wall peg, tall crown stretching upward with an unusually vertical silhouette.",
|
| 713 |
-
"missing_element": "brim",
|
| 714 |
-
"question_1": "Is the image showing a cowboy hat , could be either with or without a brim",
|
| 715 |
-
"question_2": "Is the brim missing"
|
| 716 |
-
},
|
| 717 |
-
{
|
| 718 |
-
"prompt": "A plump green tree frog rests on a lily pad, smooth body pressed flat like a leaf against the water surface.",
|
| 719 |
-
"missing_element": "legs",
|
| 720 |
-
"question_1": "Is the image showing a frog , could be either with or without legs",
|
| 721 |
-
"question_2": "Are the legs missing"
|
| 722 |
-
},
|
| 723 |
-
{
|
| 724 |
-
"prompt": "A ceramic teapot sits atop a wooden tray, its round belly painted with blue florals and the lid slightly ajar.",
|
| 725 |
-
"missing_element": "spout",
|
| 726 |
-
"question_1": "Is the image showing a teapot , could be either with or without a spout",
|
| 727 |
-
"question_2": "Is the spout missing"
|
| 728 |
-
},
|
| 729 |
-
{
|
| 730 |
-
"prompt": "A snowman stands in a quiet yard at twilight, two round layers stacked neatly, scarf fluttering in a gentle breeze.",
|
| 731 |
-
"missing_element": "head",
|
| 732 |
-
"question_1": "Is the image showing a snowman , could be either with or without a head",
|
| 733 |
-
"question_2": "Is the head missing"
|
| 734 |
-
},
|
| 735 |
-
{
|
| 736 |
-
"prompt": "A silver laptop sits open on a conference table, glowing indicator lights framing a broad, vacant interior cavity.",
|
| 737 |
-
"missing_element": "keyboard",
|
| 738 |
-
"question_1": "Is the image showing a laptop , could be either with or without a keyboard",
|
| 739 |
-
"question_2": "Is the keyboard missing"
|
| 740 |
-
},
|
| 741 |
-
{
|
| 742 |
-
"prompt": "A pair of slender wire-rim glasses rests on a paperback novel, the arced frame shining under a reading lamp while circular openings remain completely clear.",
|
| 743 |
-
"missing_element": "lenses",
|
| 744 |
-
"question_1": "Is the image showing glasses , could be either with or without lenses",
|
| 745 |
-
"question_2": "Are the lenses absent"
|
| 746 |
-
},
|
| 747 |
-
{
|
| 748 |
-
"prompt": "A railroad stretches across golden prairie grass, evenly spaced wooden ties receding toward the horizon without any gleaming metal above.",
|
| 749 |
-
"missing_element": "rails",
|
| 750 |
-
"question_1": "Is the image showing railroad tracks , could be either with or without rails",
|
| 751 |
-
"question_2": "Are the rails missing"
|
| 752 |
-
},
|
| 753 |
-
{
|
| 754 |
-
"prompt": "A vintage streetlamp stands at the corner of a cobblestone alley, glass panes encircling a dark hollow space.",
|
| 755 |
-
"missing_element": "bulb",
|
| 756 |
-
"question_1": "Is the image showing a streetlamp , could be either with or without a bulb",
|
| 757 |
-
"question_2": "Is the bulb missing"
|
| 758 |
-
},
|
| 759 |
-
{
|
| 760 |
-
"prompt": "A children's swing hangs from an old oak branch, two sturdy ropes swaying gently in the breeze over a patch of grass.",
|
| 761 |
-
"missing_element": "seat",
|
| 762 |
-
"question_1": "Is the image showing a swing , could be either with or without a seat",
|
| 763 |
-
"question_2": "Is the seat missing"
|
| 764 |
-
},
|
| 765 |
-
{
|
| 766 |
-
"prompt": "A glossy black grand piano dominates a dim parlor, its lid propped open to reveal a smooth wooden cavity.",
|
| 767 |
-
"missing_element": "strings",
|
| 768 |
-
"question_1": "Is the image showing a piano , could be either with or without strings",
|
| 769 |
-
"question_2": "Are the strings absent"
|
| 770 |
-
},
|
| 771 |
-
{
|
| 772 |
-
"prompt": "A sturdy umbrella leans in a foyer corner, slender metal ribs fanning outward yet nothing spans between them.",
|
| 773 |
-
"missing_element": "fabric",
|
| 774 |
-
"question_1": "Is the image showing an umbrella , could be either with or without fabric",
|
| 775 |
-
"question_2": "Is the fabric missing"
|
| 776 |
-
},
|
| 777 |
-
{
|
| 778 |
-
"prompt": "A high-top sneaker rests on a locker-room bench, white leather panels forming a hollow shell that casts a faint shadow on the wooden slats.",
|
| 779 |
-
"missing_element": "sole",
|
| 780 |
-
"question_1": "Is the image showing a sneaker , could be either with or without a sole",
|
| 781 |
-
"question_2": "Is the sole missing"
|
| 782 |
-
},
|
| 783 |
-
{
|
| 784 |
-
"prompt": "A glossy red fire hydrant stands on a sidewalk, round body capped with nuts yet featuring only a smooth facade on every side.",
|
| 785 |
-
"missing_element": "outlets",
|
| 786 |
-
"question_1": "Is the image showing a fire hydrant , could be either with or without outlets",
|
| 787 |
-
"question_2": "Are the outlets missing"
|
| 788 |
-
},
|
| 789 |
-
{
|
| 790 |
-
"prompt": "A ripe banana sits on a cutting board, gentle curves glowing yellow without a telltale frilled topping.",
|
| 791 |
-
"missing_element": "stem",
|
| 792 |
-
"question_1": "Is the image showing a banana , could be either with or without a stem",
|
| 793 |
-
"question_2": "Is the stem missing"
|
| 794 |
-
},
|
| 795 |
-
{
|
| 796 |
-
"prompt": "A wall clock hangs above a classroom door, a silent disc whose reflective surface catches fluorescent lights but marks no moments.",
|
| 797 |
-
"missing_element": "hands",
|
| 798 |
-
"question_1": "Is the image showing a wall clock , could be either with or without hands",
|
| 799 |
-
"question_2": "Are the hands missing"
|
| 800 |
-
},
|
| 801 |
-
{
|
| 802 |
-
"prompt": "A majestic peacock struts across the palace courtyard, vibrant blues covering a slender body that ends abruptly behind.",
|
| 803 |
-
"missing_element": "tail feathers",
|
| 804 |
-
"question_1": "Is the image showing a peacock , could be either with or without tail feathers",
|
| 805 |
-
"question_2": "Are the tail feathers missing"
|
| 806 |
-
},
|
| 807 |
-
{
|
| 808 |
-
"prompt": "A shopping cart waits in an empty parking lot, metal basket intact atop a rigid axle pressed flat against asphalt.",
|
| 809 |
-
"missing_element": "wheels",
|
| 810 |
-
"question_1": "Is the image showing a shopping cart , could be either with or without wheels",
|
| 811 |
-
"question_2": "Are the wheels missing"
|
| 812 |
-
},
|
| 813 |
-
{
|
| 814 |
-
"prompt": "A classic sailing compass sits atop a nautical map, polished brass ring circling a plain mirrored circle.",
|
| 815 |
-
"missing_element": "needle",
|
| 816 |
-
"question_1": "Is the image showing a compass , could be either with or without a needle",
|
| 817 |
-
"question_2": "Is the needle missing"
|
| 818 |
-
},
|
| 819 |
-
{
|
| 820 |
-
"prompt": "A glossy violin rests on a velvet cloth, graceful curves gleaming beneath studio lights while the ebony fingerboard stretches over a hollow arch.",
|
| 821 |
-
"missing_element": "bridge",
|
| 822 |
-
"question_1": "Is the image showing a violin , could be either with or without a bridge",
|
| 823 |
-
"question_2": "Is the bridge missing"
|
| 824 |
-
},
|
| 825 |
-
{
|
| 826 |
-
"prompt": "A sleek motorcycle is displayed on a showroom pedestal, chrome handlebars gleaming above a suspended frame.",
|
| 827 |
-
"missing_element": "engine",
|
| 828 |
-
"question_1": "Is the image showing a motorcycle , could be either with or without an engine",
|
| 829 |
-
"question_2": "Is the engine missing"
|
| 830 |
-
},
|
| 831 |
-
{
|
| 832 |
-
"prompt": "A minimalist wristwatch lies on a marble vanity, thin leather strap wrapped around a circular case whose interior is pure white.",
|
| 833 |
-
"missing_element": "hands",
|
| 834 |
-
"question_1": "Is the image showing a wristwatch , could be either with or without hands",
|
| 835 |
-
"question_2": "Are the hands missing"
|
| 836 |
-
},
|
| 837 |
-
{
|
| 838 |
-
"prompt": "A passenger bus is parked at a coastal terminal, its length painted turquoise and silver, side panels stretching seamlessly from front to back.",
|
| 839 |
-
"missing_element": "windows",
|
| 840 |
-
"question_1": "Is the image showing a bus , could be either with or without windows",
|
| 841 |
-
"question_2": "Are the windows missing"
|
| 842 |
-
},
|
| 843 |
-
{
|
| 844 |
-
"prompt": "A pink flamingo stands among reeds in shallow water, slender neck curved gracefully but the silhouette seems oddly compact behind.",
|
| 845 |
-
"missing_element": "wings",
|
| 846 |
-
"question_1": "Is the image showing a flamingo , could be either with or without wings",
|
| 847 |
-
"question_2": "Are the wings missing"
|
| 848 |
-
},
|
| 849 |
-
{
|
| 850 |
-
"prompt": "A library shelf features an antique volume with a gilded spine, heavy cover creaking open to reveal a vacant hollow.",
|
| 851 |
-
"missing_element": "pages",
|
| 852 |
-
"question_1": "Is the image showing a book , could be either with or without pages",
|
| 853 |
-
"question_2": "Are the pages missing"
|
| 854 |
-
},
|
| 855 |
-
{
|
| 856 |
-
"prompt": "An armored knight statue stands in a museum alcove, gleaming breastplate reflecting spotlights while the gauntlets clasp nothing.",
|
| 857 |
-
"missing_element": "sword",
|
| 858 |
-
"question_1": "Is the image showing a knight statue , could be either with or without a sword",
|
| 859 |
-
"question_2": "Is the sword missing"
|
| 860 |
-
},
|
| 861 |
-
{
|
| 862 |
-
"prompt": "A sparkling diamond ring rests atop a burgundy velvet cushion, golden band curving smoothly around an empty prong setting.",
|
| 863 |
-
"missing_element": "gemstone",
|
| 864 |
-
"question_1": "Is the image showing a ring , could be either with or without a gemstone",
|
| 865 |
-
"question_2": "Is the gemstone missing"
|
| 866 |
-
},
|
| 867 |
-
{
|
| 868 |
-
"prompt": "A modern windmill rises over sunflower fields, tall white tower supporting a still, empty hub against the blue sky.",
|
| 869 |
-
"missing_element": "blades",
|
| 870 |
-
"question_1": "Is the image showing a windmill , could be either with or without blades",
|
| 871 |
-
"question_2": "Are the blades missing"
|
| 872 |
-
},
|
| 873 |
-
{
|
| 874 |
-
"prompt": "A sleek black skateboard rests on a concrete ramp, smooth underside reflecting sunlight as metal axles stand alone.",
|
| 875 |
-
"missing_element": "wheels",
|
| 876 |
-
"question_1": "Is the image showing a skateboard , could be either with or without wheels",
|
| 877 |
-
"question_2": "Are the wheels missing"
|
| 878 |
-
},
|
| 879 |
-
{
|
| 880 |
-
"prompt": "A small tortoise crawls across a sandy dune, wrinkled skin folding over a rounded back that shows only soft texture.",
|
| 881 |
-
"missing_element": "shell",
|
| 882 |
-
"question_1": "Is the image showing a tortoise , could be either with or without a shell",
|
| 883 |
-
"question_2": "Is the shell missing"
|
| 884 |
-
},
|
| 885 |
-
{
|
| 886 |
-
"prompt": "A camera sits on a tripod overlooking city lights, metallic body facing forward yet revealing a hollow circle where one would normally see glass.",
|
| 887 |
-
"missing_element": "lens",
|
| 888 |
-
"question_1": "Is the image showing a camera , could be either with or without a lens",
|
| 889 |
-
"question_2": "Is the lens missing"
|
| 890 |
-
},
|
| 891 |
-
{
|
| 892 |
-
"prompt": "A spacious greenhouse stands at the edge of a botanical garden, metal arches forming a broad vault that encloses only dusty air.",
|
| 893 |
-
"missing_element": "glass panels",
|
| 894 |
-
"question_1": "Is the image showing a greenhouse , could be either with or without glass panels",
|
| 895 |
-
"question_2": "Are the glass panels missing"
|
| 896 |
-
},
|
| 897 |
-
{
|
| 898 |
-
"prompt": "A firefighter's helmet rests on a polished bench, bright red dome shining under overhead lights without its typical curved protector at the front.",
|
| 899 |
-
"missing_element": "visor",
|
| 900 |
-
"question_1": "Is the image showing a firefighter's helmet , could be either with or without a visor",
|
| 901 |
-
"question_2": "Is the visor missing"
|
| 902 |
-
},
|
| 903 |
-
{
|
| 904 |
-
"prompt": "A vintage bicycle leans against a brick wall, its crimson frame chipped and speckled with rust under soft afternoon light.",
|
| 905 |
-
"missing_element": "wheels",
|
| 906 |
-
"question_1": "Is there a bicycle , could be either with or without wheels in the image",
|
| 907 |
-
"question_2": "Are the wheels missing"
|
| 908 |
-
},
|
| 909 |
-
{
|
| 910 |
-
"prompt": "An antique wristwatch rests on a velvet cushion, golden casing finely engraved and gleaming beneath museum spotlights.",
|
| 911 |
-
"missing_element": "hands",
|
| 912 |
-
"question_1": "Is there a wristwatch , could be either with or without hands in the image",
|
| 913 |
-
"question_2": "Are the hands missing"
|
| 914 |
-
},
|
| 915 |
-
{
|
| 916 |
-
"prompt": "A porcelain teapot sits upon a lace tablecloth, cobalt floral motifs swirling across its rounded body.",
|
| 917 |
-
"missing_element": "spout",
|
| 918 |
-
"question_1": "Is there a teapot , could be either with or without a spout in the image",
|
| 919 |
-
"question_2": "Is the spout missing"
|
| 920 |
-
},
|
| 921 |
-
{
|
| 922 |
-
"prompt": "Round-framed eyeglasses lie open on a memoir’s pages, slender metal rims catching a beam of sunlight.",
|
| 923 |
-
"missing_element": "lenses",
|
| 924 |
-
"question_1": "Are there eyeglasses , could be either with or without lenses in the image",
|
| 925 |
-
"question_2": "Are the lenses absent"
|
| 926 |
-
},
|
| 927 |
-
{
|
| 928 |
-
"prompt": "A weathered sailboat drifts beside a quiet dock, its wooden hull creaking gently against worn pilings.",
|
| 929 |
-
"missing_element": "mast",
|
| 930 |
-
"question_1": "Is there a sailboat , could be either with or without a mast in the image",
|
| 931 |
-
"question_2": "Is the mast missing"
|
| 932 |
-
},
|
| 933 |
-
{
|
| 934 |
-
"prompt": "A colorful classroom globe rests on a wooden desk, continents vividly painted against deep turquoise seas.",
|
| 935 |
-
"missing_element": "stand",
|
| 936 |
-
"question_1": "Is there a globe , could be either with or without a stand in the image",
|
| 937 |
-
"question_2": "Is the stand absent"
|
| 938 |
-
},
|
| 939 |
-
{
|
| 940 |
-
"prompt": "A collapsed umbrella lies beside a doorway, raindrops glistening on its exposed metal ribs.",
|
| 941 |
-
"missing_element": "canopy",
|
| 942 |
-
"question_1": "Is there an umbrella , could be either with or without a canopy in the image",
|
| 943 |
-
"question_2": "Is the canopy missing"
|
| 944 |
-
},
|
| 945 |
-
{
|
| 946 |
-
"prompt": "An acoustic guitar leans against a barstool under warm stage lights, its honey-coloured body polished to a mirror sheen.",
|
| 947 |
-
"missing_element": "strings",
|
| 948 |
-
"question_1": "Is there a guitar , could be either with or without strings in the image",
|
| 949 |
-
"question_2": "Are the strings missing"
|
| 950 |
-
},
|
| 951 |
-
{
|
| 952 |
-
"prompt": "A tall lighthouse towers above a misty headland, red and white stripes bold against the gray sky.",
|
| 953 |
-
"missing_element": "door",
|
| 954 |
-
"question_1": "Is there a lighthouse , could be either with or without a door in the image",
|
| 955 |
-
"question_2": "Is the door absent"
|
| 956 |
-
},
|
| 957 |
-
{
|
| 958 |
-
"prompt": "A retired jet airplane sits in a museum hangar, polished aluminum skin reflecting overhead lamps.",
|
| 959 |
-
"missing_element": "wings",
|
| 960 |
-
"question_1": "Is there an airplane , could be either with or without wings in the image",
|
| 961 |
-
"question_2": "Are the wings missing"
|
| 962 |
-
},
|
| 963 |
-
{
|
| 964 |
-
"prompt": "A medieval stone fortress stands overlooking a winding river, colorful banners fluttering from its rugged towers.",
|
| 965 |
-
"missing_element": "drawbridge",
|
| 966 |
-
"question_1": "Is there a fortress , could be either with or without a drawbridge in the image",
|
| 967 |
-
"question_2": "Is the drawbridge missing"
|
| 968 |
-
},
|
| 969 |
-
{
|
| 970 |
-
"prompt": "A classic sedan is parked beneath a lone streetlamp on a still night, chrome trim gleaming softly.",
|
| 971 |
-
"missing_element": "headlights",
|
| 972 |
-
"question_1": "Is there a sedan , could be either with or without headlights in the image",
|
| 973 |
-
"question_2": "Are the headlights missing"
|
| 974 |
-
},
|
| 975 |
-
{
|
| 976 |
-
"prompt": "A majestic oak rises from a sunny meadow, gnarled branches spreading wide against clear blue sky.",
|
| 977 |
-
"missing_element": "leaves",
|
| 978 |
-
"question_1": "Is there an oak tree , could be either with or without leaves in the image",
|
| 979 |
-
"question_2": "Are the leaves absent"
|
| 980 |
-
},
|
| 981 |
-
{
|
| 982 |
-
"prompt": "A green frog sits serenely on a lily pad amid gentle pond ripples.",
|
| 983 |
-
"missing_element": "legs",
|
| 984 |
-
"question_1": "Is there a frog , could be either with or without legs in the image",
|
| 985 |
-
"question_2": "Are the legs missing"
|
| 986 |
-
},
|
| 987 |
-
{
|
| 988 |
-
"prompt": "A wooden rocking chair rests on a weather-beaten porch, faded paint revealing layers of aging varnish.",
|
| 989 |
-
"missing_element": "seat",
|
| 990 |
-
"question_1": "Is there a rocking chair , could be either with or without a seat in the image",
|
| 991 |
-
"question_2": "Is the seat missing"
|
| 992 |
-
},
|
| 993 |
-
{
|
| 994 |
-
"prompt": "A vintage film camera is displayed on a glass shelf, its leather body pristine and meticulously polished.",
|
| 995 |
-
"missing_element": "lens",
|
| 996 |
-
"question_1": "Is there a film camera , could be either with or without a lens in the image",
|
| 997 |
-
"question_2": "Is the lens absent"
|
| 998 |
-
},
|
| 999 |
-
{
|
| 1000 |
-
"prompt": "A hardcover novel stands upright on a coffee table, its title embossed in ornate gold lettering.",
|
| 1001 |
-
"missing_element": "pages",
|
| 1002 |
-
"question_1": "Is there a book , could be either with or without pages in the image",
|
| 1003 |
-
"question_2": "Are the pages missing"
|
| 1004 |
-
},
|
| 1005 |
-
{
|
| 1006 |
-
"prompt": "An elegant hourglass rests on a mahogany desk, brass frame catching the glow of a desk lamp.",
|
| 1007 |
-
"missing_element": "sand",
|
| 1008 |
-
"question_1": "Is there an hourglass , could be either with or without sand in the image",
|
| 1009 |
-
"question_2": "Is the sand missing"
|
| 1010 |
-
},
|
| 1011 |
-
{
|
| 1012 |
-
"prompt": "A small sparrow is perched on a wooden fence post under a brooding sky.",
|
| 1013 |
-
"missing_element": "wings",
|
| 1014 |
-
"question_1": "Is there a sparrow , could be either with or without wings in the image",
|
| 1015 |
-
"question_2": "Are the wings absent"
|
| 1016 |
-
},
|
| 1017 |
-
{
|
| 1018 |
-
"prompt": "A tall brick clock tower rises above a bustling town square, its silhouette glowing in sunset light.",
|
| 1019 |
-
"missing_element": "clock face",
|
| 1020 |
-
"question_1": "Is there a clock tower , could be either with or without a clock face in the image",
|
| 1021 |
-
"question_2": "Is the clock face missing"
|
| 1022 |
-
},
|
| 1023 |
-
{
|
| 1024 |
-
"prompt": "A black ski mask is folded neatly on a wooden bench beside a locker.",
|
| 1025 |
-
"missing_element": "eye holes",
|
| 1026 |
-
"question_1": "Is there a ski mask , could be either with or without eye holes in the image",
|
| 1027 |
-
"question_2": "Are the eye holes missing"
|
| 1028 |
-
},
|
| 1029 |
-
{
|
| 1030 |
-
"prompt": "A cast-iron frying pan rests on a stovetop, its dark seasoned surface slightly glossy.",
|
| 1031 |
-
"missing_element": "handle",
|
| 1032 |
-
"question_1": "Is there a frying pan , could be either with or without a handle in the image",
|
| 1033 |
-
"question_2": "Is the handle missing"
|
| 1034 |
-
},
|
| 1035 |
-
{
|
| 1036 |
-
"prompt": "A bright red scooter stands on a cobblestone lane, its glossy body reflecting ambient city lights.",
|
| 1037 |
-
"missing_element": "handlebars",
|
| 1038 |
-
"question_1": "Is there a scooter , could be either with or without handlebars in the image",
|
| 1039 |
-
"question_2": "Are the handlebars missing"
|
| 1040 |
-
},
|
| 1041 |
-
{
|
| 1042 |
-
"prompt": "A snail glides slowly along a dew-covered garden leaf under morning light.",
|
| 1043 |
-
"missing_element": "shell",
|
| 1044 |
-
"question_1": "Is there a snail , could be either with or without a shell in the image",
|
| 1045 |
-
"question_2": "Is the shell absent"
|
| 1046 |
-
},
|
| 1047 |
-
{
|
| 1048 |
-
"prompt": "A rugged hiking backpack leans against a pine tree at the trail’s edge, fabric dusted with chalky dirt.",
|
| 1049 |
-
"missing_element": "straps",
|
| 1050 |
-
"question_1": "Is there a backpack , could be either with or without straps in the image",
|
| 1051 |
-
"question_2": "Are the straps missing"
|
| 1052 |
-
},
|
| 1053 |
-
{
|
| 1054 |
-
"prompt": "A roadside mailbox sits atop a weathered wooden post, its paint slightly chipped.",
|
| 1055 |
-
"missing_element": "flag",
|
| 1056 |
-
"question_1": "Is there a mailbox , could be either with or without a flag in the image",
|
| 1057 |
-
"question_2": "Is the flag absent"
|
| 1058 |
-
},
|
| 1059 |
-
{
|
| 1060 |
-
"prompt": "A retro television set stands on tapered legs in a mid-century living room, wood veneer polished to a warm glow.",
|
| 1061 |
-
"missing_element": "screen",
|
| 1062 |
-
"question_1": "Is there a television , could be either with or without a screen in the image",
|
| 1063 |
-
"question_2": "Is the screen missing"
|
| 1064 |
-
},
|
| 1065 |
-
{
|
| 1066 |
-
"prompt": "A brass desk lamp sits beside a stack of papers, its curved shade reflecting amber light.",
|
| 1067 |
-
"missing_element": "bulb",
|
| 1068 |
-
"question_1": "Is there a lamp , could be either with or without a bulb in the image",
|
| 1069 |
-
"question_2": "Is the bulb absent"
|
| 1070 |
-
},
|
| 1071 |
-
{
|
| 1072 |
-
"prompt": "A motorcycle helmet lies on a workbench, its glossy surface speckled with sawdust.",
|
| 1073 |
-
"missing_element": "visor",
|
| 1074 |
-
"question_1": "Is there a helmet , could be either with or without a visor in the image",
|
| 1075 |
-
"question_2": "Is the visor missing"
|
| 1076 |
-
},
|
| 1077 |
-
{
|
| 1078 |
-
"prompt": "A grand piano dominates a silent concert hall stage, black lacquer gleaming under spotlights.",
|
| 1079 |
-
"missing_element": "keys",
|
| 1080 |
-
"question_1": "Is there a piano , could be either with or without keys in the image",
|
| 1081 |
-
"question_2": "Are the keys missing"
|
| 1082 |
-
},
|
| 1083 |
-
{
|
| 1084 |
-
"prompt": "An old stone windmill stands amid golden wheat fields under an expansive blue sky.",
|
| 1085 |
-
"missing_element": "blades",
|
| 1086 |
-
"question_1": "Is there a windmill , could be either with or without blades in the image",
|
| 1087 |
-
"question_2": "Are the blades absent"
|
| 1088 |
-
},
|
| 1089 |
-
{
|
| 1090 |
-
"prompt": "A large observatory telescope is mounted on a sturdy tripod inside a domed chamber.",
|
| 1091 |
-
"missing_element": "eyepiece",
|
| 1092 |
-
"question_1": "Is there a telescope , could be either with or without an eyepiece in the image",
|
| 1093 |
-
"question_2": "Is the eyepiece missing"
|
| 1094 |
-
},
|
| 1095 |
-
{
|
| 1096 |
-
"prompt": "A baby stroller is parked beside a park bench, fabric hood casting a gentle shade.",
|
| 1097 |
-
"missing_element": "wheels",
|
| 1098 |
-
"question_1": "Is there a stroller , could be either with or without wheels in the image",
|
| 1099 |
-
"question_2": "Are the wheels missing"
|
| 1100 |
-
},
|
| 1101 |
-
{
|
| 1102 |
-
"prompt": "A ginger cat curls up on a sunlit windowsill, purring softly in the warm glow.",
|
| 1103 |
-
"missing_element": "tail",
|
| 1104 |
-
"question_1": "Is there a cat , could be either with or without a tail in the image",
|
| 1105 |
-
"question_2": "Is the tail absent"
|
| 1106 |
-
},
|
| 1107 |
-
{
|
| 1108 |
-
"prompt": "A smoking pipe rests atop a leather-bound journal, polished wood glowing softly.",
|
| 1109 |
-
"missing_element": "stem",
|
| 1110 |
-
"question_1": "Is there a pipe , could be either with or without a stem in the image",
|
| 1111 |
-
"question_2": "Is the stem missing"
|
| 1112 |
-
},
|
| 1113 |
-
{
|
| 1114 |
-
"prompt": "A fountain pen lies diagonally across parchment, its marbled barrel shimmering under lamplight.",
|
| 1115 |
-
"missing_element": "nib",
|
| 1116 |
-
"question_1": "Is there a fountain pen , could be either with or without a nib in the image",
|
| 1117 |
-
"question_2": "Is the nib absent"
|
| 1118 |
-
},
|
| 1119 |
-
{
|
| 1120 |
-
"prompt": "An ornate picture frame hangs on a gallery wall, intricate gilded borders catching overhead lighting.",
|
| 1121 |
-
"missing_element": "glass",
|
| 1122 |
-
"question_1": "Is there a picture frame , could be either with or without glass in the image",
|
| 1123 |
-
"question_2": "Is the glass missing"
|
| 1124 |
-
},
|
| 1125 |
-
{
|
| 1126 |
-
"prompt": "A skateboard rests on a graffiti-sprayed ramp, deck graphics vibrant and scuffed at the edges.",
|
| 1127 |
-
"missing_element": "wheels",
|
| 1128 |
-
"question_1": "Is there a skateboard , could be either with or without wheels in the image",
|
| 1129 |
-
"question_2": "Are the wheels missing"
|
| 1130 |
-
},
|
| 1131 |
-
{
|
| 1132 |
-
"prompt": "A platinum engagement ring sits in a velvet box under a small spotlight.",
|
| 1133 |
-
"missing_element": "gemstone",
|
| 1134 |
-
"question_1": "Is there a ring , could be either with or without a gemstone in the image",
|
| 1135 |
-
"question_2": "Is the gemstone absent"
|
| 1136 |
-
},
|
| 1137 |
-
{
|
| 1138 |
-
"prompt": "A white rocket stands upright on a launch pad against a pale dawn sky, service towers flanking it.",
|
| 1139 |
-
"missing_element": "fins",
|
| 1140 |
-
"question_1": "Is there a rocket , could be either with or without fins in the image",
|
| 1141 |
-
"question_2": "Are the fins missing"
|
| 1142 |
-
},
|
| 1143 |
-
{
|
| 1144 |
-
"prompt": "Over-ear headphones are draped across a mixing console, their matte black shells shining softly.",
|
| 1145 |
-
"missing_element": "ear pads",
|
| 1146 |
-
"question_1": "Are there headphones , could be either with or without ear pads in the image",
|
| 1147 |
-
"question_2": "Are the ear pads missing"
|
| 1148 |
-
},
|
| 1149 |
-
{
|
| 1150 |
-
"prompt": "A cotton T-shirt is neatly folded on a wooden shelf, its vibrant graphic centered on the chest.",
|
| 1151 |
-
"missing_element": "sleeves",
|
| 1152 |
-
"question_1": "Is there a T-shirt , could be either with or without sleeves in the image",
|
| 1153 |
-
"question_2": "Are the sleeves missing"
|
| 1154 |
-
},
|
| 1155 |
-
{
|
| 1156 |
-
"prompt": "A snowman stands in a quiet front yard, two coal eyes and a jaunty hat giving it character.",
|
| 1157 |
-
"missing_element": "nose",
|
| 1158 |
-
"question_1": "Is there a snowman , could be either with or without a nose in the image",
|
| 1159 |
-
"question_2": "Is the nose missing"
|
| 1160 |
-
},
|
| 1161 |
-
{
|
| 1162 |
-
"prompt": "A worn canvas sneaker lies abandoned on a beach boardwalk, sand sprinkled across its fabric.",
|
| 1163 |
-
"missing_element": "laces",
|
| 1164 |
-
"question_1": "Is there a sneaker , could be either with or without laces in the image",
|
| 1165 |
-
"question_2": "Are the laces absent"
|
| 1166 |
-
},
|
| 1167 |
-
{
|
| 1168 |
-
"prompt": "A rustic lantern hangs from a cabin beam, metal frame dark with age.",
|
| 1169 |
-
"missing_element": "glass panes",
|
| 1170 |
-
"question_1": "Is there a lantern , could be either with or without glass panes in the image",
|
| 1171 |
-
"question_2": "Are the glass panes missing"
|
| 1172 |
-
},
|
| 1173 |
-
{
|
| 1174 |
-
"prompt": "A mechanical keyboard rests on a neon-lit desk, keycaps glowing with colorful backlight.",
|
| 1175 |
-
"missing_element": "spacebar",
|
| 1176 |
-
"question_1": "Is there a keyboard , could be either with or without a spacebar in the image",
|
| 1177 |
-
"question_2": "Is the spacebar missing"
|
| 1178 |
-
},
|
| 1179 |
-
{
|
| 1180 |
-
"prompt": "A plush teddy bear is propped against a pillow in a child’s room, its fur softly illuminated by night-light glow.",
|
| 1181 |
-
"missing_element": "eyes",
|
| 1182 |
-
"question_1": "Is there a teddy bear , could be either with or without eyes in the image",
|
| 1183 |
-
"question_2": "Are the eyes absent"
|
| 1184 |
-
},
|
| 1185 |
-
{
|
| 1186 |
-
"prompt": "A basketball hoop hangs above a driveway, backboard edges chipped from years of play.",
|
| 1187 |
-
"missing_element": "net",
|
| 1188 |
-
"question_1": "Is there a basketball hoop , could be either with or without a net in the image",
|
| 1189 |
-
"question_2": "Is the net missing"
|
| 1190 |
-
},
|
| 1191 |
-
{
|
| 1192 |
-
"prompt": "A crystal wine glass stands atop a linen napkin beside polished silverware.",
|
| 1193 |
-
"missing_element": "stem",
|
| 1194 |
-
"question_1": "Is there a wine glass , could be either with or without a stem in the image",
|
| 1195 |
-
"question_2": "Is the stem absent"
|
| 1196 |
-
},
|
| 1197 |
-
{
|
| 1198 |
-
"prompt": "A decorative pocket mirror lies on a marble vanity, ornate silver backing engraved with curling vines.",
|
| 1199 |
-
"missing_element": "reflective surface",
|
| 1200 |
-
"question_1": "Is there a pocket mirror , could be either with or without a reflective surface in the image",
|
| 1201 |
-
"question_2": "Is the reflective surface missing"
|
| 1202 |
-
}
|
| 1203 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VSF/qwen.ipynb
DELETED
|
@@ -1,118 +0,0 @@
|
|
| 1 |
-
{
|
| 2 |
-
"cells": [
|
| 3 |
-
{
|
| 4 |
-
"cell_type": "code",
|
| 5 |
-
"execution_count": 1,
|
| 6 |
-
"id": "1c33a1fe",
|
| 7 |
-
"metadata": {},
|
| 8 |
-
"outputs": [],
|
| 9 |
-
"source": [
|
| 10 |
-
"from qwen_image.pipeline import VSFQwenImagePipeline"
|
| 11 |
-
]
|
| 12 |
-
},
|
| 13 |
-
{
|
| 14 |
-
"cell_type": "code",
|
| 15 |
-
"execution_count": 2,
|
| 16 |
-
"id": "549eb442",
|
| 17 |
-
"metadata": {},
|
| 18 |
-
"outputs": [
|
| 19 |
-
{
|
| 20 |
-
"data": {
|
| 21 |
-
"application/vnd.jupyter.widget-view+json": {
|
| 22 |
-
"model_id": "f9e26dfa78e94f91bcfe52de37aed7bc",
|
| 23 |
-
"version_major": 2,
|
| 24 |
-
"version_minor": 0
|
| 25 |
-
},
|
| 26 |
-
"text/plain": [
|
| 27 |
-
"Loading pipeline components...: 0%| | 0/5 [00:00<?, ?it/s]"
|
| 28 |
-
]
|
| 29 |
-
},
|
| 30 |
-
"metadata": {},
|
| 31 |
-
"output_type": "display_data"
|
| 32 |
-
},
|
| 33 |
-
{
|
| 34 |
-
"name": "stderr",
|
| 35 |
-
"output_type": "stream",
|
| 36 |
-
"text": [
|
| 37 |
-
"The config attributes {'pooled_projection_dim': 768} were passed to QwenImageTransformer2DModel, but are not expected and will be ignored. Please verify your config.json configuration file.\n"
|
| 38 |
-
]
|
| 39 |
-
},
|
| 40 |
-
{
|
| 41 |
-
"data": {
|
| 42 |
-
"application/vnd.jupyter.widget-view+json": {
|
| 43 |
-
"model_id": "aad68592c7584ccab1478b8deb41b076",
|
| 44 |
-
"version_major": 2,
|
| 45 |
-
"version_minor": 0
|
| 46 |
-
},
|
| 47 |
-
"text/plain": [
|
| 48 |
-
"Loading checkpoint shards: 0%| | 0/9 [00:00<?, ?it/s]"
|
| 49 |
-
]
|
| 50 |
-
},
|
| 51 |
-
"metadata": {},
|
| 52 |
-
"output_type": "display_data"
|
| 53 |
-
},
|
| 54 |
-
{
|
| 55 |
-
"data": {
|
| 56 |
-
"application/vnd.jupyter.widget-view+json": {
|
| 57 |
-
"model_id": "10620ec86d4049edae7341f0f4168b6c",
|
| 58 |
-
"version_major": 2,
|
| 59 |
-
"version_minor": 0
|
| 60 |
-
},
|
| 61 |
-
"text/plain": [
|
| 62 |
-
"Loading checkpoint shards: 0%| | 0/4 [00:00<?, ?it/s]"
|
| 63 |
-
]
|
| 64 |
-
},
|
| 65 |
-
"metadata": {},
|
| 66 |
-
"output_type": "display_data"
|
| 67 |
-
}
|
| 68 |
-
],
|
| 69 |
-
"source": [
|
| 70 |
-
"import torch\n",
|
| 71 |
-
"model_name = \"Qwen/Qwen-Image\"\n",
|
| 72 |
-
"pipe = VSFQwenImagePipeline.from_pretrained(model_name, torch_dtype=torch.bfloat16)"
|
| 73 |
-
]
|
| 74 |
-
},
|
| 75 |
-
{
|
| 76 |
-
"cell_type": "code",
|
| 77 |
-
"execution_count": null,
|
| 78 |
-
"id": "057b7159",
|
| 79 |
-
"metadata": {},
|
| 80 |
-
"outputs": [
|
| 81 |
-
{
|
| 82 |
-
"data": {
|
| 83 |
-
"text/plain": [
|
| 84 |
-
"torch.Size([1, 10, 3584])"
|
| 85 |
-
]
|
| 86 |
-
},
|
| 87 |
-
"execution_count": 5,
|
| 88 |
-
"metadata": {},
|
| 89 |
-
"output_type": "execute_result"
|
| 90 |
-
}
|
| 91 |
-
],
|
| 92 |
-
"source": [
|
| 93 |
-
"pipe.encode_prompt(\"hello\")[0].shape"
|
| 94 |
-
]
|
| 95 |
-
}
|
| 96 |
-
],
|
| 97 |
-
"metadata": {
|
| 98 |
-
"kernelspec": {
|
| 99 |
-
"display_name": "neg",
|
| 100 |
-
"language": "python",
|
| 101 |
-
"name": "python3"
|
| 102 |
-
},
|
| 103 |
-
"language_info": {
|
| 104 |
-
"codemirror_mode": {
|
| 105 |
-
"name": "ipython",
|
| 106 |
-
"version": 3
|
| 107 |
-
},
|
| 108 |
-
"file_extension": ".py",
|
| 109 |
-
"mimetype": "text/x-python",
|
| 110 |
-
"name": "python",
|
| 111 |
-
"nbconvert_exporter": "python",
|
| 112 |
-
"pygments_lexer": "ipython3",
|
| 113 |
-
"version": "3.10.17"
|
| 114 |
-
}
|
| 115 |
-
},
|
| 116 |
-
"nbformat": 4,
|
| 117 |
-
"nbformat_minor": 5
|
| 118 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VSF/qwen.py
DELETED
|
@@ -1,15 +0,0 @@
|
|
| 1 |
-
from diffusers import DiffusionPipeline
|
| 2 |
-
import torch
|
| 3 |
-
|
| 4 |
-
model_name = "Qwen/Qwen-Image"
|
| 5 |
-
|
| 6 |
-
# Load the pipeline
|
| 7 |
-
if torch.cuda.is_available():
|
| 8 |
-
torch_dtype = torch.bfloat16
|
| 9 |
-
device = "cuda"
|
| 10 |
-
else:
|
| 11 |
-
torch_dtype = torch.float32
|
| 12 |
-
device = "cpu"
|
| 13 |
-
|
| 14 |
-
pipe = DiffusionPipeline.from_pretrained(model_name, torch_dtype=torch_dtype)
|
| 15 |
-
pipe = pipe.to(device)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VSF/qwen_image/pipeline.py
DELETED
|
@@ -1,334 +0,0 @@
|
|
| 1 |
-
import inspect
|
| 2 |
-
from typing import Any, Callable, Dict, List, Optional, Union
|
| 3 |
-
|
| 4 |
-
import numpy as np
|
| 5 |
-
import torch
|
| 6 |
-
from transformers import Qwen2_5_VLForConditionalGeneration, Qwen2Tokenizer
|
| 7 |
-
|
| 8 |
-
from diffusers.image_processor import VaeImageProcessor
|
| 9 |
-
from diffusers.models import AutoencoderKLQwenImage, QwenImageTransformer2DModel
|
| 10 |
-
from diffusers.schedulers import FlowMatchEulerDiscreteScheduler
|
| 11 |
-
from diffusers.utils import is_torch_xla_available, logging, replace_example_docstring
|
| 12 |
-
from diffusers.utils.torch_utils import randn_tensor
|
| 13 |
-
from diffusers.pipelines.pipeline_utils import DiffusionPipeline
|
| 14 |
-
|
| 15 |
-
from diffusers.pipelines.qwenimage import QwenImagePipeline
|
| 16 |
-
from diffusers.pipelines.qwenimage import QwenImagePipelineOutput
|
| 17 |
-
from dataclasses import dataclass
|
| 18 |
-
from typing import List, Union
|
| 19 |
-
logger = logging.get_logger(__name__) # pylint: disable=invalid-name
|
| 20 |
-
|
| 21 |
-
import numpy as np
|
| 22 |
-
import PIL.Image
|
| 23 |
-
|
| 24 |
-
from diffusers.utils import BaseOutput
|
| 25 |
-
|
| 26 |
-
EXAMPLE_DOC_STRING = """
|
| 27 |
-
Examples:
|
| 28 |
-
```py
|
| 29 |
-
>>> import torch
|
| 30 |
-
>>> from diffusers import QwenImagePipeline
|
| 31 |
-
|
| 32 |
-
>>> pipe = QwenImagePipeline.from_pretrained("Qwen/Qwen-Image", torch_dtype=torch.bfloat16)
|
| 33 |
-
>>> pipe.to("cuda")
|
| 34 |
-
>>> prompt = "A cat holding a sign that says hello world"
|
| 35 |
-
>>> # Depending on the variant being used, the pipeline call will slightly vary.
|
| 36 |
-
>>> # Refer to the pipeline documentation for more details.
|
| 37 |
-
>>> image = pipe(prompt, num_inference_steps=50).images[0]
|
| 38 |
-
>>> image.save("qwenimage.png")
|
| 39 |
-
```
|
| 40 |
-
"""
|
| 41 |
-
class VSFQwenImagePipeline(QwenImagePipeline):
|
| 42 |
-
@torch.no_grad()
|
| 43 |
-
@replace_example_docstring(EXAMPLE_DOC_STRING)
|
| 44 |
-
def __call__(
|
| 45 |
-
self,
|
| 46 |
-
prompt: Union[str, List[str]] = None,
|
| 47 |
-
negative_prompt: Union[str, List[str]] = None,
|
| 48 |
-
true_cfg_scale: float = 4.0,
|
| 49 |
-
height: Optional[int] = None,
|
| 50 |
-
width: Optional[int] = None,
|
| 51 |
-
num_inference_steps: int = 50,
|
| 52 |
-
sigmas: Optional[List[float]] = None,
|
| 53 |
-
guidance_scale: float = 1.0,
|
| 54 |
-
num_images_per_prompt: int = 1,
|
| 55 |
-
generator: Optional[Union[torch.Generator, List[torch.Generator]]] = None,
|
| 56 |
-
latents: Optional[torch.Tensor] = None,
|
| 57 |
-
prompt_embeds: Optional[torch.Tensor] = None,
|
| 58 |
-
prompt_embeds_mask: Optional[torch.Tensor] = None,
|
| 59 |
-
negative_prompt_embeds: Optional[torch.Tensor] = None,
|
| 60 |
-
negative_prompt_embeds_mask: Optional[torch.Tensor] = None,
|
| 61 |
-
output_type: Optional[str] = "pil",
|
| 62 |
-
return_dict: bool = True,
|
| 63 |
-
attention_kwargs: Optional[Dict[str, Any]] = None,
|
| 64 |
-
callback_on_step_end: Optional[Callable[[int, int, Dict], None]] = None,
|
| 65 |
-
callback_on_step_end_tensor_inputs: List[str] = ["latents"],
|
| 66 |
-
max_sequence_length: int = 512,
|
| 67 |
-
):
|
| 68 |
-
r"""
|
| 69 |
-
Function invoked when calling the pipeline for generation.
|
| 70 |
-
|
| 71 |
-
Args:
|
| 72 |
-
prompt (`str` or `List[str]`, *optional*):
|
| 73 |
-
The prompt or prompts to guide the image generation. If not defined, one has to pass `prompt_embeds`.
|
| 74 |
-
instead.
|
| 75 |
-
negative_prompt (`str` or `List[str]`, *optional*):
|
| 76 |
-
The prompt or prompts not to guide the image generation. If not defined, one has to pass
|
| 77 |
-
`negative_prompt_embeds` instead. Ignored when not using guidance (i.e., ignored if `true_cfg_scale` is
|
| 78 |
-
not greater than `1`).
|
| 79 |
-
true_cfg_scale (`float`, *optional*, defaults to 1.0):
|
| 80 |
-
When > 1.0 and a provided `negative_prompt`, enables true classifier-free guidance.
|
| 81 |
-
height (`int`, *optional*, defaults to self.unet.config.sample_size * self.vae_scale_factor):
|
| 82 |
-
The height in pixels of the generated image. This is set to 1024 by default for the best results.
|
| 83 |
-
width (`int`, *optional*, defaults to self.unet.config.sample_size * self.vae_scale_factor):
|
| 84 |
-
The width in pixels of the generated image. This is set to 1024 by default for the best results.
|
| 85 |
-
num_inference_steps (`int`, *optional*, defaults to 50):
|
| 86 |
-
The number of denoising steps. More denoising steps usually lead to a higher quality image at the
|
| 87 |
-
expense of slower inference.
|
| 88 |
-
sigmas (`List[float]`, *optional*):
|
| 89 |
-
Custom sigmas to use for the denoising process with schedulers which support a `sigmas` argument in
|
| 90 |
-
their `set_timesteps` method. If not defined, the default behavior when `num_inference_steps` is passed
|
| 91 |
-
will be used.
|
| 92 |
-
guidance_scale (`float`, *optional*, defaults to 3.5):
|
| 93 |
-
Guidance scale as defined in [Classifier-Free Diffusion
|
| 94 |
-
Guidance](https://huggingface.co/papers/2207.12598). `guidance_scale` is defined as `w` of equation 2.
|
| 95 |
-
of [Imagen Paper](https://huggingface.co/papers/2205.11487). Guidance scale is enabled by setting
|
| 96 |
-
`guidance_scale > 1`. Higher guidance scale encourages to generate images that are closely linked to
|
| 97 |
-
the text `prompt`, usually at the expense of lower image quality.
|
| 98 |
-
num_images_per_prompt (`int`, *optional*, defaults to 1):
|
| 99 |
-
The number of images to generate per prompt.
|
| 100 |
-
generator (`torch.Generator` or `List[torch.Generator]`, *optional*):
|
| 101 |
-
One or a list of [torch generator(s)](https://pytorch.org/docs/stable/generated/torch.Generator.html)
|
| 102 |
-
to make generation deterministic.
|
| 103 |
-
latents (`torch.Tensor`, *optional*):
|
| 104 |
-
Pre-generated noisy latents, sampled from a Gaussian distribution, to be used as inputs for image
|
| 105 |
-
generation. Can be used to tweak the same generation with different prompts. If not provided, a latents
|
| 106 |
-
tensor will be generated by sampling using the supplied random `generator`.
|
| 107 |
-
prompt_embeds (`torch.Tensor`, *optional*):
|
| 108 |
-
Pre-generated text embeddings. Can be used to easily tweak text inputs, *e.g.* prompt weighting. If not
|
| 109 |
-
provided, text embeddings will be generated from `prompt` input argument.
|
| 110 |
-
negative_prompt_embeds (`torch.Tensor`, *optional*):
|
| 111 |
-
Pre-generated negative text embeddings. Can be used to easily tweak text inputs, *e.g.* prompt
|
| 112 |
-
weighting. If not provided, negative_prompt_embeds will be generated from `negative_prompt` input
|
| 113 |
-
argument.
|
| 114 |
-
output_type (`str`, *optional*, defaults to `"pil"`):
|
| 115 |
-
The output format of the generate image. Choose between
|
| 116 |
-
[PIL](https://pillow.readthedocs.io/en/stable/): `PIL.Image.Image` or `np.array`.
|
| 117 |
-
return_dict (`bool`, *optional*, defaults to `True`):
|
| 118 |
-
Whether or not to return a [`~pipelines.qwenimage.QwenImagePipelineOutput`] instead of a plain tuple.
|
| 119 |
-
attention_kwargs (`dict`, *optional*):
|
| 120 |
-
A kwargs dictionary that if specified is passed along to the `AttentionProcessor` as defined under
|
| 121 |
-
`self.processor` in
|
| 122 |
-
[diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py).
|
| 123 |
-
callback_on_step_end (`Callable`, *optional*):
|
| 124 |
-
A function that calls at the end of each denoising steps during the inference. The function is called
|
| 125 |
-
with the following arguments: `callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int,
|
| 126 |
-
callback_kwargs: Dict)`. `callback_kwargs` will include a list of all tensors as specified by
|
| 127 |
-
`callback_on_step_end_tensor_inputs`.
|
| 128 |
-
callback_on_step_end_tensor_inputs (`List`, *optional*):
|
| 129 |
-
The list of tensor inputs for the `callback_on_step_end` function. The tensors specified in the list
|
| 130 |
-
will be passed as `callback_kwargs` argument. You will only be able to include variables listed in the
|
| 131 |
-
`._callback_tensor_inputs` attribute of your pipeline class.
|
| 132 |
-
max_sequence_length (`int` defaults to 512): Maximum sequence length to use with the `prompt`.
|
| 133 |
-
|
| 134 |
-
Examples:
|
| 135 |
-
|
| 136 |
-
Returns:
|
| 137 |
-
[`~pipelines.qwenimage.QwenImagePipelineOutput`] or `tuple`:
|
| 138 |
-
[`~pipelines.qwenimage.QwenImagePipelineOutput`] if `return_dict` is True, otherwise a `tuple`. When
|
| 139 |
-
returning a tuple, the first element is a list with the generated images.
|
| 140 |
-
"""
|
| 141 |
-
|
| 142 |
-
height = height or self.default_sample_size * self.vae_scale_factor
|
| 143 |
-
width = width or self.default_sample_size * self.vae_scale_factor
|
| 144 |
-
|
| 145 |
-
# 1. Check inputs. Raise error if not correct
|
| 146 |
-
self.check_inputs(
|
| 147 |
-
prompt,
|
| 148 |
-
height,
|
| 149 |
-
width,
|
| 150 |
-
negative_prompt=negative_prompt,
|
| 151 |
-
prompt_embeds=prompt_embeds,
|
| 152 |
-
negative_prompt_embeds=negative_prompt_embeds,
|
| 153 |
-
prompt_embeds_mask=prompt_embeds_mask,
|
| 154 |
-
negative_prompt_embeds_mask=negative_prompt_embeds_mask,
|
| 155 |
-
callback_on_step_end_tensor_inputs=callback_on_step_end_tensor_inputs,
|
| 156 |
-
max_sequence_length=max_sequence_length,
|
| 157 |
-
)
|
| 158 |
-
|
| 159 |
-
self._guidance_scale = guidance_scale
|
| 160 |
-
self._attention_kwargs = attention_kwargs
|
| 161 |
-
self._current_timestep = None
|
| 162 |
-
self._interrupt = False
|
| 163 |
-
|
| 164 |
-
# 2. Define call parameters
|
| 165 |
-
if prompt is not None and isinstance(prompt, str):
|
| 166 |
-
batch_size = 1
|
| 167 |
-
elif prompt is not None and isinstance(prompt, list):
|
| 168 |
-
batch_size = len(prompt)
|
| 169 |
-
else:
|
| 170 |
-
batch_size = prompt_embeds.shape[0]
|
| 171 |
-
|
| 172 |
-
device = self._execution_device
|
| 173 |
-
|
| 174 |
-
has_neg_prompt = negative_prompt is not None or (
|
| 175 |
-
negative_prompt_embeds is not None and negative_prompt_embeds_mask is not None
|
| 176 |
-
)
|
| 177 |
-
do_true_cfg = true_cfg_scale > 1 and has_neg_prompt
|
| 178 |
-
prompt_embeds, prompt_embeds_mask = self.encode_prompt(
|
| 179 |
-
prompt=prompt,
|
| 180 |
-
prompt_embeds=prompt_embeds,
|
| 181 |
-
prompt_embeds_mask=prompt_embeds_mask,
|
| 182 |
-
device=device,
|
| 183 |
-
num_images_per_prompt=num_images_per_prompt,
|
| 184 |
-
max_sequence_length=max_sequence_length,
|
| 185 |
-
)
|
| 186 |
-
if do_true_cfg:
|
| 187 |
-
negative_prompt_embeds, negative_prompt_embeds_mask = self.encode_prompt(
|
| 188 |
-
prompt=negative_prompt,
|
| 189 |
-
prompt_embeds=negative_prompt_embeds,
|
| 190 |
-
prompt_embeds_mask=negative_prompt_embeds_mask,
|
| 191 |
-
device=device,
|
| 192 |
-
num_images_per_prompt=num_images_per_prompt,
|
| 193 |
-
max_sequence_length=max_sequence_length,
|
| 194 |
-
)
|
| 195 |
-
|
| 196 |
-
# 4. Prepare latent variables
|
| 197 |
-
num_channels_latents = self.transformer.config.in_channels // 4
|
| 198 |
-
latents, latent_image_ids = self.prepare_latents(
|
| 199 |
-
batch_size * num_images_per_prompt,
|
| 200 |
-
num_channels_latents,
|
| 201 |
-
height,
|
| 202 |
-
width,
|
| 203 |
-
prompt_embeds.dtype,
|
| 204 |
-
device,
|
| 205 |
-
generator,
|
| 206 |
-
latents,
|
| 207 |
-
)
|
| 208 |
-
img_shapes = [(1, height // self.vae_scale_factor // 2, width // self.vae_scale_factor // 2)] * batch_size
|
| 209 |
-
|
| 210 |
-
# 5. Prepare timesteps
|
| 211 |
-
sigmas = np.linspace(1.0, 1 / num_inference_steps, num_inference_steps) if sigmas is None else sigmas
|
| 212 |
-
image_seq_len = latents.shape[1]
|
| 213 |
-
mu = calculate_shift(
|
| 214 |
-
image_seq_len,
|
| 215 |
-
self.scheduler.config.get("base_image_seq_len", 256),
|
| 216 |
-
self.scheduler.config.get("max_image_seq_len", 4096),
|
| 217 |
-
self.scheduler.config.get("base_shift", 0.5),
|
| 218 |
-
self.scheduler.config.get("max_shift", 1.15),
|
| 219 |
-
)
|
| 220 |
-
timesteps, num_inference_steps = retrieve_timesteps(
|
| 221 |
-
self.scheduler,
|
| 222 |
-
num_inference_steps,
|
| 223 |
-
device,
|
| 224 |
-
sigmas=sigmas,
|
| 225 |
-
mu=mu,
|
| 226 |
-
)
|
| 227 |
-
num_warmup_steps = max(len(timesteps) - num_inference_steps * self.scheduler.order, 0)
|
| 228 |
-
self._num_timesteps = len(timesteps)
|
| 229 |
-
|
| 230 |
-
# handle guidance
|
| 231 |
-
if self.transformer.config.guidance_embeds:
|
| 232 |
-
guidance = torch.full([1], guidance_scale, device=device, dtype=torch.float32)
|
| 233 |
-
guidance = guidance.expand(latents.shape[0])
|
| 234 |
-
else:
|
| 235 |
-
guidance = None
|
| 236 |
-
|
| 237 |
-
if self.attention_kwargs is None:
|
| 238 |
-
self._attention_kwargs = {}
|
| 239 |
-
|
| 240 |
-
txt_seq_lens = prompt_embeds_mask.sum(dim=1).tolist() if prompt_embeds_mask is not None else None
|
| 241 |
-
negative_txt_seq_lens = (
|
| 242 |
-
negative_prompt_embeds_mask.sum(dim=1).tolist() if negative_prompt_embeds_mask is not None else None
|
| 243 |
-
)
|
| 244 |
-
|
| 245 |
-
# 6. Denoising loop
|
| 246 |
-
self.scheduler.set_begin_index(0)
|
| 247 |
-
with self.progress_bar(total=num_inference_steps) as progress_bar:
|
| 248 |
-
for i, t in enumerate(timesteps):
|
| 249 |
-
if self.interrupt:
|
| 250 |
-
continue
|
| 251 |
-
|
| 252 |
-
self._current_timestep = t
|
| 253 |
-
# broadcast to batch dimension in a way that's compatible with ONNX/Core ML
|
| 254 |
-
timestep = t.expand(latents.shape[0]).to(latents.dtype)
|
| 255 |
-
with self.transformer.cache_context("cond"):
|
| 256 |
-
noise_pred = self.transformer(
|
| 257 |
-
hidden_states=latents,
|
| 258 |
-
timestep=timestep / 1000,
|
| 259 |
-
guidance=guidance,
|
| 260 |
-
encoder_hidden_states_mask=prompt_embeds_mask,
|
| 261 |
-
encoder_hidden_states=prompt_embeds,
|
| 262 |
-
img_shapes=img_shapes,
|
| 263 |
-
txt_seq_lens=txt_seq_lens,
|
| 264 |
-
attention_kwargs=self.attention_kwargs,
|
| 265 |
-
return_dict=False,
|
| 266 |
-
)[0]
|
| 267 |
-
|
| 268 |
-
if do_true_cfg:
|
| 269 |
-
with self.transformer.cache_context("uncond"):
|
| 270 |
-
neg_noise_pred = self.transformer(
|
| 271 |
-
hidden_states=latents,
|
| 272 |
-
timestep=timestep / 1000,
|
| 273 |
-
guidance=guidance,
|
| 274 |
-
encoder_hidden_states_mask=negative_prompt_embeds_mask,
|
| 275 |
-
encoder_hidden_states=negative_prompt_embeds,
|
| 276 |
-
img_shapes=img_shapes,
|
| 277 |
-
txt_seq_lens=negative_txt_seq_lens,
|
| 278 |
-
attention_kwargs=self.attention_kwargs,
|
| 279 |
-
return_dict=False,
|
| 280 |
-
)[0]
|
| 281 |
-
comb_pred = neg_noise_pred + true_cfg_scale * (noise_pred - neg_noise_pred)
|
| 282 |
-
|
| 283 |
-
cond_norm = torch.norm(noise_pred, dim=-1, keepdim=True)
|
| 284 |
-
noise_norm = torch.norm(comb_pred, dim=-1, keepdim=True)
|
| 285 |
-
noise_pred = comb_pred * (cond_norm / noise_norm)
|
| 286 |
-
|
| 287 |
-
# compute the previous noisy sample x_t -> x_t-1
|
| 288 |
-
latents_dtype = latents.dtype
|
| 289 |
-
latents = self.scheduler.step(noise_pred, t, latents, return_dict=False)[0]
|
| 290 |
-
|
| 291 |
-
if latents.dtype != latents_dtype:
|
| 292 |
-
if torch.backends.mps.is_available():
|
| 293 |
-
# some platforms (eg. apple mps) misbehave due to a pytorch bug: https://github.com/pytorch/pytorch/pull/99272
|
| 294 |
-
latents = latents.to(latents_dtype)
|
| 295 |
-
|
| 296 |
-
if callback_on_step_end is not None:
|
| 297 |
-
callback_kwargs = {}
|
| 298 |
-
for k in callback_on_step_end_tensor_inputs:
|
| 299 |
-
callback_kwargs[k] = locals()[k]
|
| 300 |
-
callback_outputs = callback_on_step_end(self, i, t, callback_kwargs)
|
| 301 |
-
|
| 302 |
-
latents = callback_outputs.pop("latents", latents)
|
| 303 |
-
prompt_embeds = callback_outputs.pop("prompt_embeds", prompt_embeds)
|
| 304 |
-
|
| 305 |
-
# call the callback, if provided
|
| 306 |
-
if i == len(timesteps) - 1 or ((i + 1) > num_warmup_steps and (i + 1) % self.scheduler.order == 0):
|
| 307 |
-
progress_bar.update()
|
| 308 |
-
|
| 309 |
-
|
| 310 |
-
self._current_timestep = None
|
| 311 |
-
if output_type == "latent":
|
| 312 |
-
image = latents
|
| 313 |
-
else:
|
| 314 |
-
latents = self._unpack_latents(latents, height, width, self.vae_scale_factor)
|
| 315 |
-
latents = latents.to(self.vae.dtype)
|
| 316 |
-
latents_mean = (
|
| 317 |
-
torch.tensor(self.vae.config.latents_mean)
|
| 318 |
-
.view(1, self.vae.config.z_dim, 1, 1, 1)
|
| 319 |
-
.to(latents.device, latents.dtype)
|
| 320 |
-
)
|
| 321 |
-
latents_std = 1.0 / torch.tensor(self.vae.config.latents_std).view(1, self.vae.config.z_dim, 1, 1, 1).to(
|
| 322 |
-
latents.device, latents.dtype
|
| 323 |
-
)
|
| 324 |
-
latents = latents / latents_std + latents_mean
|
| 325 |
-
image = self.vae.decode(latents, return_dict=False)[0][:, :, 0]
|
| 326 |
-
image = self.image_processor.postprocess(image, output_type=output_type)
|
| 327 |
-
|
| 328 |
-
# Offload all models
|
| 329 |
-
self.maybe_free_model_hooks()
|
| 330 |
-
|
| 331 |
-
if not return_dict:
|
| 332 |
-
return (image,)
|
| 333 |
-
|
| 334 |
-
return QwenImagePipelineOutput(images=image)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VSF/qwen_image/processor.py
DELETED
|
@@ -1,119 +0,0 @@
|
|
| 1 |
-
|
| 2 |
-
import math
|
| 3 |
-
from typing import Any, Dict, List, Optional, Tuple, Union
|
| 4 |
-
|
| 5 |
-
import torch
|
| 6 |
-
import torch.nn as nn
|
| 7 |
-
import torch.nn.functional as F
|
| 8 |
-
|
| 9 |
-
from diffusers.configuration_utils import ConfigMixin, register_to_config
|
| 10 |
-
from diffusers.loaders import FromOriginalModelMixin, PeftAdapterMixin
|
| 11 |
-
from diffusers.utils import USE_PEFT_BACKEND, logging, scale_lora_layers, unscale_lora_layers
|
| 12 |
-
from diffusers.utils.torch_utils import maybe_allow_in_graph
|
| 13 |
-
from diffusers.models.attention import FeedForward
|
| 14 |
-
from diffusers.models.attention_dispatch import dispatch_attention_fn
|
| 15 |
-
from diffusers.models.attention_processor import Attention
|
| 16 |
-
from diffusers.models.cache_utils import CacheMixin
|
| 17 |
-
from diffusers.models.embeddings import TimestepEmbedding, Timesteps
|
| 18 |
-
from diffusers.models.modeling_outputs import Transformer2DModelOutput
|
| 19 |
-
from diffusers.models.modeling_utils import ModelMixin
|
| 20 |
-
from diffusers.models.normalization import AdaLayerNormContinuous, RMSNorm
|
| 21 |
-
|
| 22 |
-
class QwenDoubleStreamAttnProcessor2_0:
|
| 23 |
-
"""
|
| 24 |
-
Attention processor for Qwen double-stream architecture, matching DoubleStreamLayerMegatron logic. This processor
|
| 25 |
-
implements joint attention computation where text and image streams are processed together.
|
| 26 |
-
"""
|
| 27 |
-
|
| 28 |
-
_attention_backend = None
|
| 29 |
-
|
| 30 |
-
def __init__(self):
|
| 31 |
-
if not hasattr(F, "scaled_dot_product_attention"):
|
| 32 |
-
raise ImportError(
|
| 33 |
-
"QwenDoubleStreamAttnProcessor2_0 requires PyTorch 2.0, to use it, please upgrade PyTorch to 2.0."
|
| 34 |
-
)
|
| 35 |
-
|
| 36 |
-
def __call__(
|
| 37 |
-
self,
|
| 38 |
-
attn: Attention,
|
| 39 |
-
hidden_states: torch.FloatTensor, # Image stream
|
| 40 |
-
encoder_hidden_states: torch.FloatTensor = None, # Text stream
|
| 41 |
-
encoder_hidden_states_mask: torch.FloatTensor = None,
|
| 42 |
-
attention_mask: Optional[torch.FloatTensor] = None,
|
| 43 |
-
image_rotary_emb: Optional[torch.Tensor] = None,
|
| 44 |
-
) -> torch.FloatTensor:
|
| 45 |
-
if encoder_hidden_states is None:
|
| 46 |
-
raise ValueError("QwenDoubleStreamAttnProcessor2_0 requires encoder_hidden_states (text stream)")
|
| 47 |
-
|
| 48 |
-
seq_txt = encoder_hidden_states.shape[1]
|
| 49 |
-
|
| 50 |
-
# Compute QKV for image stream (sample projections)
|
| 51 |
-
img_query = attn.to_q(hidden_states)
|
| 52 |
-
img_key = attn.to_k(hidden_states)
|
| 53 |
-
img_value = attn.to_v(hidden_states)
|
| 54 |
-
|
| 55 |
-
# Compute QKV for text stream (context projections)
|
| 56 |
-
txt_query = attn.add_q_proj(encoder_hidden_states)
|
| 57 |
-
txt_key = attn.add_k_proj(encoder_hidden_states)
|
| 58 |
-
txt_value = attn.add_v_proj(encoder_hidden_states)
|
| 59 |
-
|
| 60 |
-
# Reshape for multi-head attention
|
| 61 |
-
img_query = img_query.unflatten(-1, (attn.heads, -1))
|
| 62 |
-
img_key = img_key.unflatten(-1, (attn.heads, -1))
|
| 63 |
-
img_value = img_value.unflatten(-1, (attn.heads, -1))
|
| 64 |
-
|
| 65 |
-
txt_query = txt_query.unflatten(-1, (attn.heads, -1))
|
| 66 |
-
txt_key = txt_key.unflatten(-1, (attn.heads, -1))
|
| 67 |
-
txt_value = txt_value.unflatten(-1, (attn.heads, -1))
|
| 68 |
-
|
| 69 |
-
# Apply QK normalization
|
| 70 |
-
if attn.norm_q is not None:
|
| 71 |
-
img_query = attn.norm_q(img_query)
|
| 72 |
-
if attn.norm_k is not None:
|
| 73 |
-
img_key = attn.norm_k(img_key)
|
| 74 |
-
if attn.norm_added_q is not None:
|
| 75 |
-
txt_query = attn.norm_added_q(txt_query)
|
| 76 |
-
if attn.norm_added_k is not None:
|
| 77 |
-
txt_key = attn.norm_added_k(txt_key)
|
| 78 |
-
|
| 79 |
-
# Apply RoPE
|
| 80 |
-
if image_rotary_emb is not None:
|
| 81 |
-
img_freqs, txt_freqs = image_rotary_emb
|
| 82 |
-
img_query = apply_rotary_emb_qwen(img_query, img_freqs, use_real=False)
|
| 83 |
-
img_key = apply_rotary_emb_qwen(img_key, img_freqs, use_real=False)
|
| 84 |
-
txt_query = apply_rotary_emb_qwen(txt_query, txt_freqs, use_real=False)
|
| 85 |
-
txt_key = apply_rotary_emb_qwen(txt_key, txt_freqs, use_real=False)
|
| 86 |
-
|
| 87 |
-
# Concatenate for joint attention
|
| 88 |
-
# Order: [text, image]
|
| 89 |
-
joint_query = torch.cat([txt_query, img_query], dim=1)
|
| 90 |
-
joint_key = torch.cat([txt_key, img_key], dim=1)
|
| 91 |
-
joint_value = torch.cat([txt_value, img_value], dim=1)
|
| 92 |
-
|
| 93 |
-
# Compute joint attention
|
| 94 |
-
joint_hidden_states = dispatch_attention_fn(
|
| 95 |
-
joint_query,
|
| 96 |
-
joint_key,
|
| 97 |
-
joint_value,
|
| 98 |
-
attn_mask=attention_mask,
|
| 99 |
-
dropout_p=0.0,
|
| 100 |
-
is_causal=False,
|
| 101 |
-
backend=self._attention_backend,
|
| 102 |
-
)
|
| 103 |
-
|
| 104 |
-
# Reshape back
|
| 105 |
-
joint_hidden_states = joint_hidden_states.flatten(2, 3)
|
| 106 |
-
joint_hidden_states = joint_hidden_states.to(joint_query.dtype)
|
| 107 |
-
|
| 108 |
-
# Split attention outputs back
|
| 109 |
-
txt_attn_output = joint_hidden_states[:, :seq_txt, :] # Text part
|
| 110 |
-
img_attn_output = joint_hidden_states[:, seq_txt:, :] # Image part
|
| 111 |
-
|
| 112 |
-
# Apply output projections
|
| 113 |
-
img_attn_output = attn.to_out[0](img_attn_output)
|
| 114 |
-
if len(attn.to_out) > 1:
|
| 115 |
-
img_attn_output = attn.to_out[1](img_attn_output) # dropout
|
| 116 |
-
|
| 117 |
-
txt_attn_output = attn.to_add_out(txt_attn_output)
|
| 118 |
-
|
| 119 |
-
return img_attn_output, txt_attn_output
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VSF/requirements.txt
DELETED
|
@@ -1,14 +0,0 @@
|
|
| 1 |
-
git+https://github.com/ChenDarYen/Normalized-Attention-Guidance.git
|
| 2 |
-
diffusers
|
| 3 |
-
transformers
|
| 4 |
-
wandb
|
| 5 |
-
openai
|
| 6 |
-
dotenv
|
| 7 |
-
numpy
|
| 8 |
-
Pillow
|
| 9 |
-
git+https://github.com/huggingface/diffusers
|
| 10 |
-
accelerate
|
| 11 |
-
ftfy
|
| 12 |
-
imageio
|
| 13 |
-
peft
|
| 14 |
-
dfloat11
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VSF/src/__init__.py
DELETED
|
File without changes
|
VSF/vsfwan/__init__.py
DELETED
|
File without changes
|
VSF/vsfwan/main.ipynb
DELETED
|
@@ -1,205 +0,0 @@
|
|
| 1 |
-
{
|
| 2 |
-
"cells": [
|
| 3 |
-
{
|
| 4 |
-
"cell_type": "code",
|
| 5 |
-
"execution_count": null,
|
| 6 |
-
"id": "b53f5b58",
|
| 7 |
-
"metadata": {},
|
| 8 |
-
"outputs": [
|
| 9 |
-
{
|
| 10 |
-
"data": {
|
| 11 |
-
"application/vnd.jupyter.widget-view+json": {
|
| 12 |
-
"model_id": "e3c8361d88484d9984ecd3746399940f",
|
| 13 |
-
"version_major": 2,
|
| 14 |
-
"version_minor": 0
|
| 15 |
-
},
|
| 16 |
-
"text/plain": [
|
| 17 |
-
"Loading pipeline components...: 0%| | 0/5 [00:00<?, ?it/s]"
|
| 18 |
-
]
|
| 19 |
-
},
|
| 20 |
-
"metadata": {},
|
| 21 |
-
"output_type": "display_data"
|
| 22 |
-
},
|
| 23 |
-
{
|
| 24 |
-
"data": {
|
| 25 |
-
"application/vnd.jupyter.widget-view+json": {
|
| 26 |
-
"model_id": "d82356db6da94c5cb78b8f5681f87304",
|
| 27 |
-
"version_major": 2,
|
| 28 |
-
"version_minor": 0
|
| 29 |
-
},
|
| 30 |
-
"text/plain": [
|
| 31 |
-
"Loading checkpoint shards: 0%| | 0/2 [00:00<?, ?it/s]"
|
| 32 |
-
]
|
| 33 |
-
},
|
| 34 |
-
"metadata": {},
|
| 35 |
-
"output_type": "display_data"
|
| 36 |
-
},
|
| 37 |
-
{
|
| 38 |
-
"data": {
|
| 39 |
-
"application/vnd.jupyter.widget-view+json": {
|
| 40 |
-
"model_id": "5052153c971542aa9dc0a9561f040bc5",
|
| 41 |
-
"version_major": 2,
|
| 42 |
-
"version_minor": 0
|
| 43 |
-
},
|
| 44 |
-
"text/plain": [
|
| 45 |
-
"Loading checkpoint shards: 0%| | 0/5 [00:00<?, ?it/s]"
|
| 46 |
-
]
|
| 47 |
-
},
|
| 48 |
-
"metadata": {},
|
| 49 |
-
"output_type": "display_data"
|
| 50 |
-
}
|
| 51 |
-
],
|
| 52 |
-
"source": [
|
| 53 |
-
"import torch\n",
|
| 54 |
-
"from diffusers import AutoencoderKLWan\n",
|
| 55 |
-
"from pipeline import WanPipeline\n",
|
| 56 |
-
"from diffusers.utils import export_to_video\n",
|
| 57 |
-
"\n",
|
| 58 |
-
"model_id = \"Wan-AI/Wan2.1-T2V-1.3B-Diffusers\"\n",
|
| 59 |
-
"vae = AutoencoderKLWan.from_pretrained(model_id, subfolder=\"vae\", torch_dtype=torch.float32)\n",
|
| 60 |
-
"pipe = WanPipeline.from_pretrained(model_id, vae=vae, torch_dtype=torch.bfloat16)\n",
|
| 61 |
-
"pipe.load_lora_weights(\n",
|
| 62 |
-
" \"Kijai/WanVideo_comfy\",\n",
|
| 63 |
-
" weight_name=\"Wan21_CausVid_bidirect2_T2V_1_3B_lora_rank32.safetensors\",\n",
|
| 64 |
-
" adapter_name=\"lora\"\n",
|
| 65 |
-
") \n",
|
| 66 |
-
"pipe = pipe.to(\"cuda\")"
|
| 67 |
-
]
|
| 68 |
-
},
|
| 69 |
-
{
|
| 70 |
-
"cell_type": "code",
|
| 71 |
-
"execution_count": 20,
|
| 72 |
-
"id": "cc3c8947",
|
| 73 |
-
"metadata": {},
|
| 74 |
-
"outputs": [
|
| 75 |
-
{
|
| 76 |
-
"name": "stdout",
|
| 77 |
-
"output_type": "stream",
|
| 78 |
-
"text": [
|
| 79 |
-
"False\n",
|
| 80 |
-
"True\n",
|
| 81 |
-
"2 510\n",
|
| 82 |
-
"32760\n"
|
| 83 |
-
]
|
| 84 |
-
},
|
| 85 |
-
{
|
| 86 |
-
"name": "stderr",
|
| 87 |
-
"output_type": "stream",
|
| 88 |
-
"text": [
|
| 89 |
-
"`num_frames - 1` has to be divisible by 4. Rounding to the nearest number.\n"
|
| 90 |
-
]
|
| 91 |
-
},
|
| 92 |
-
{
|
| 93 |
-
"data": {
|
| 94 |
-
"application/vnd.jupyter.widget-view+json": {
|
| 95 |
-
"model_id": "2f9f2e39d9584aab8cc0f27e4f061dc1",
|
| 96 |
-
"version_major": 2,
|
| 97 |
-
"version_minor": 0
|
| 98 |
-
},
|
| 99 |
-
"text/plain": [
|
| 100 |
-
" 0%| | 0/12 [00:00<?, ?it/s]"
|
| 101 |
-
]
|
| 102 |
-
},
|
| 103 |
-
"metadata": {},
|
| 104 |
-
"output_type": "display_data"
|
| 105 |
-
},
|
| 106 |
-
{
|
| 107 |
-
"name": "stderr",
|
| 108 |
-
"output_type": "stream",
|
| 109 |
-
"text": [
|
| 110 |
-
"huggingface/tokenizers: The current process just got forked, after parallelism has already been used. Disabling parallelism to avoid deadlocks...\n",
|
| 111 |
-
"To disable this warning, you can either:\n",
|
| 112 |
-
"\t- Avoid using `tokenizers` before the fork if possible\n",
|
| 113 |
-
"\t- Explicitly set the environment variable TOKENIZERS_PARALLELISM=(true | false)\n"
|
| 114 |
-
]
|
| 115 |
-
},
|
| 116 |
-
{
|
| 117 |
-
"data": {
|
| 118 |
-
"text/plain": [
|
| 119 |
-
"'vsf.mp4'"
|
| 120 |
-
]
|
| 121 |
-
},
|
| 122 |
-
"execution_count": 20,
|
| 123 |
-
"metadata": {},
|
| 124 |
-
"output_type": "execute_result"
|
| 125 |
-
}
|
| 126 |
-
],
|
| 127 |
-
"source": [
|
| 128 |
-
"from processor import WanAttnProcessor2_0\n",
|
| 129 |
-
"\n",
|
| 130 |
-
"# prompt = \"A chef cat and a dog baking a cake together in a kitchen. The cat is carefully measuring flour, while the dog is stirring the batter with a wooden spoon. The cat is wearing a chef suit\"\n",
|
| 131 |
-
"# neg_prompt = \"chef hat\"\n",
|
| 132 |
-
"prompt = \"A cessna flying over a snowy mountain landscape, with a clear blue sky and fluffy white clouds. The plane is flying at a low altitude, casting a shadow on the snow-covered ground below. The mountains are rugged and steep, with patches of evergreen trees visible in the foreground.\"\n",
|
| 133 |
-
"neg_prompt = \"trees\"\n",
|
| 134 |
-
"\n",
|
| 135 |
-
"neg_prompt_embeds, _ = pipe.encode_prompt(\n",
|
| 136 |
-
" prompt=neg_prompt,\n",
|
| 137 |
-
" padding=False,\n",
|
| 138 |
-
" do_classifier_free_guidance=False,\n",
|
| 139 |
-
")\n",
|
| 140 |
-
"\n",
|
| 141 |
-
"pos_prompt_embeds, _ = pipe.encode_prompt( \n",
|
| 142 |
-
" prompt=prompt,\n",
|
| 143 |
-
" do_classifier_free_guidance=False, \n",
|
| 144 |
-
" max_sequence_length=512 - neg_prompt_embeds.shape[1],\n",
|
| 145 |
-
")\n",
|
| 146 |
-
"pipe.set_adapters(\"lora\", 0.5)\n",
|
| 147 |
-
"\n",
|
| 148 |
-
"\n",
|
| 149 |
-
"\n",
|
| 150 |
-
"neg_len = neg_prompt_embeds.shape[1]\n",
|
| 151 |
-
"pos_len = pos_prompt_embeds.shape[1]\n",
|
| 152 |
-
"print(neg_len, pos_len)\n",
|
| 153 |
-
"height = 480\n",
|
| 154 |
-
"width = 832\n",
|
| 155 |
-
"frames = 81\n",
|
| 156 |
-
"\n",
|
| 157 |
-
"img_len = (height//8) * (width//8) * 3 * (frames // 4 + 1) // 12\n",
|
| 158 |
-
"print(img_len)\n",
|
| 159 |
-
"mask = torch.zeros((1, img_len, pos_len+neg_len)).cuda()\n",
|
| 160 |
-
"mask[:, :, -neg_len:] = -torch.inf # this should be negative -torch.inf #\n",
|
| 161 |
-
"# mask[:, :, -neg_len:] = -0.2 # this should be negative -torch.inf #\n",
|
| 162 |
-
"\n",
|
| 163 |
-
"for block in pipe.transformer.blocks:\n",
|
| 164 |
-
" block.attn2.processor = WanAttnProcessor2_0(scale=1.7, neg_prompt_length=neg_len, attn_mask=mask)\n",
|
| 165 |
-
"# should we still do exploation in space \n",
|
| 166 |
-
"\n",
|
| 167 |
-
"prompt_embeds = torch.cat([pos_prompt_embeds, neg_prompt_embeds], dim=1)\n",
|
| 168 |
-
"\n",
|
| 169 |
-
"output = pipe(\n",
|
| 170 |
-
" prompt_embeds=prompt_embeds,\n",
|
| 171 |
-
" # prompt_embeds=pos_prompt_embeds,\n",
|
| 172 |
-
" negative_prompt=neg_prompt,\n",
|
| 173 |
-
" height=height,\n",
|
| 174 |
-
" width=width,\n",
|
| 175 |
-
" num_frames=frames + 1,\n",
|
| 176 |
-
" num_inference_steps=12,\n",
|
| 177 |
-
" guidance_scale=0.0, \n",
|
| 178 |
-
" generator=torch.Generator(device=\"cuda\").manual_seed(42),\n",
|
| 179 |
-
").frames[0]\n",
|
| 180 |
-
"export_to_video(output, \"vsf.mp4\", fps=15)\n"
|
| 181 |
-
]
|
| 182 |
-
}
|
| 183 |
-
],
|
| 184 |
-
"metadata": {
|
| 185 |
-
"kernelspec": {
|
| 186 |
-
"display_name": "neg",
|
| 187 |
-
"language": "python",
|
| 188 |
-
"name": "python3"
|
| 189 |
-
},
|
| 190 |
-
"language_info": {
|
| 191 |
-
"codemirror_mode": {
|
| 192 |
-
"name": "ipython",
|
| 193 |
-
"version": 3
|
| 194 |
-
},
|
| 195 |
-
"file_extension": ".py",
|
| 196 |
-
"mimetype": "text/x-python",
|
| 197 |
-
"name": "python",
|
| 198 |
-
"nbconvert_exporter": "python",
|
| 199 |
-
"pygments_lexer": "ipython3",
|
| 200 |
-
"version": "3.10.17"
|
| 201 |
-
}
|
| 202 |
-
},
|
| 203 |
-
"nbformat": 4,
|
| 204 |
-
"nbformat_minor": 5
|
| 205 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VSF/vsfwan/pipeline.py
DELETED
|
@@ -1,612 +0,0 @@
|
|
| 1 |
-
# Copyright 2025 The Wan Team and The HuggingFace Team. All rights reserved.
|
| 2 |
-
#
|
| 3 |
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
| 4 |
-
# you may not use this file except in compliance with the License.
|
| 5 |
-
# You may obtain a copy of the License at
|
| 6 |
-
#
|
| 7 |
-
# http://www.apache.org/licenses/LICENSE-2.0
|
| 8 |
-
#
|
| 9 |
-
# Unless required by applicable law or agreed to in writing, software
|
| 10 |
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
| 11 |
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 12 |
-
# See the License for the specific language governing permissions and
|
| 13 |
-
# limitations under the License.
|
| 14 |
-
|
| 15 |
-
import html
|
| 16 |
-
from typing import Any, Callable, Dict, List, Optional, Union
|
| 17 |
-
|
| 18 |
-
import regex as re
|
| 19 |
-
import torch
|
| 20 |
-
from transformers import AutoTokenizer, UMT5EncoderModel
|
| 21 |
-
|
| 22 |
-
from diffusers.callbacks import MultiPipelineCallbacks, PipelineCallback
|
| 23 |
-
from diffusers.loaders import WanLoraLoaderMixin
|
| 24 |
-
from diffusers.models import AutoencoderKLWan, WanTransformer3DModel
|
| 25 |
-
from diffusers.schedulers import FlowMatchEulerDiscreteScheduler
|
| 26 |
-
from diffusers.utils import is_ftfy_available, is_torch_xla_available, logging, replace_example_docstring
|
| 27 |
-
from diffusers.utils.torch_utils import randn_tensor
|
| 28 |
-
from diffusers.video_processor import VideoProcessor
|
| 29 |
-
from diffusers.pipelines.pipeline_utils import DiffusionPipeline
|
| 30 |
-
from diffusers.pipelines.wan.pipeline_output import WanPipelineOutput
|
| 31 |
-
|
| 32 |
-
|
| 33 |
-
if is_torch_xla_available():
|
| 34 |
-
import torch_xla.core.xla_model as xm
|
| 35 |
-
|
| 36 |
-
XLA_AVAILABLE = True
|
| 37 |
-
else:
|
| 38 |
-
XLA_AVAILABLE = False
|
| 39 |
-
|
| 40 |
-
logger = logging.get_logger(__name__) # pylint: disable=invalid-name
|
| 41 |
-
|
| 42 |
-
if is_ftfy_available():
|
| 43 |
-
import ftfy
|
| 44 |
-
|
| 45 |
-
|
| 46 |
-
EXAMPLE_DOC_STRING = """
|
| 47 |
-
Examples:
|
| 48 |
-
```python
|
| 49 |
-
>>> import torch
|
| 50 |
-
>>> from diffusers.utils import export_to_video
|
| 51 |
-
>>> from diffusers import AutoencoderKLWan, WanPipeline
|
| 52 |
-
>>> from diffusers.schedulers.scheduling_unipc_multistep import UniPCMultistepScheduler
|
| 53 |
-
|
| 54 |
-
>>> # Available models: Wan-AI/Wan2.1-T2V-14B-Diffusers, Wan-AI/Wan2.1-T2V-1.3B-Diffusers
|
| 55 |
-
>>> model_id = "Wan-AI/Wan2.1-T2V-14B-Diffusers"
|
| 56 |
-
>>> vae = AutoencoderKLWan.from_pretrained(model_id, subfolder="vae", torch_dtype=torch.float32)
|
| 57 |
-
>>> pipe = WanPipeline.from_pretrained(model_id, vae=vae, torch_dtype=torch.bfloat16)
|
| 58 |
-
>>> flow_shift = 5.0 # 5.0 for 720P, 3.0 for 480P
|
| 59 |
-
>>> pipe.scheduler = UniPCMultistepScheduler.from_config(pipe.scheduler.config, flow_shift=flow_shift)
|
| 60 |
-
>>> pipe.to("cuda")
|
| 61 |
-
|
| 62 |
-
>>> prompt = "A cat and a dog baking a cake together in a kitchen. The cat is carefully measuring flour, while the dog is stirring the batter with a wooden spoon. The kitchen is cozy, with sunlight streaming through the window."
|
| 63 |
-
>>> negative_prompt = "Bright tones, overexposed, static, blurred details, subtitles, style, works, paintings, images, static, overall gray, worst quality, low quality, JPEG compression residue, ugly, incomplete, extra fingers, poorly drawn hands, poorly drawn faces, deformed, disfigured, misshapen limbs, fused fingers, still picture, messy background, three legs, many people in the background, walking backwards"
|
| 64 |
-
|
| 65 |
-
>>> output = pipe(
|
| 66 |
-
... prompt=prompt,
|
| 67 |
-
... negative_prompt=negative_prompt,
|
| 68 |
-
... height=720,
|
| 69 |
-
... width=1280,
|
| 70 |
-
... num_frames=81,
|
| 71 |
-
... guidance_scale=5.0,
|
| 72 |
-
... ).frames[0]
|
| 73 |
-
>>> export_to_video(output, "output.mp4", fps=16)
|
| 74 |
-
```
|
| 75 |
-
"""
|
| 76 |
-
|
| 77 |
-
|
| 78 |
-
def basic_clean(text):
|
| 79 |
-
text = ftfy.fix_text(text)
|
| 80 |
-
text = html.unescape(html.unescape(text))
|
| 81 |
-
return text.strip()
|
| 82 |
-
|
| 83 |
-
|
| 84 |
-
def whitespace_clean(text):
|
| 85 |
-
text = re.sub(r"\s+", " ", text)
|
| 86 |
-
text = text.strip()
|
| 87 |
-
return text
|
| 88 |
-
|
| 89 |
-
|
| 90 |
-
def prompt_clean(text):
|
| 91 |
-
text = whitespace_clean(basic_clean(text))
|
| 92 |
-
return text
|
| 93 |
-
|
| 94 |
-
|
| 95 |
-
class WanPipeline(DiffusionPipeline, WanLoraLoaderMixin):
|
| 96 |
-
r"""
|
| 97 |
-
Pipeline for text-to-video generation using Wan.
|
| 98 |
-
|
| 99 |
-
This model inherits from [`DiffusionPipeline`]. Check the superclass documentation for the generic methods
|
| 100 |
-
implemented for all pipelines (downloading, saving, running on a particular device, etc.).
|
| 101 |
-
|
| 102 |
-
Args:
|
| 103 |
-
tokenizer ([`T5Tokenizer`]):
|
| 104 |
-
Tokenizer from [T5](https://huggingface.co/docs/transformers/en/model_doc/t5#transformers.T5Tokenizer),
|
| 105 |
-
specifically the [google/umt5-xxl](https://huggingface.co/google/umt5-xxl) variant.
|
| 106 |
-
text_encoder ([`T5EncoderModel`]):
|
| 107 |
-
[T5](https://huggingface.co/docs/transformers/en/model_doc/t5#transformers.T5EncoderModel), specifically
|
| 108 |
-
the [google/umt5-xxl](https://huggingface.co/google/umt5-xxl) variant.
|
| 109 |
-
transformer ([`WanTransformer3DModel`]):
|
| 110 |
-
Conditional Transformer to denoise the input latents.
|
| 111 |
-
scheduler ([`UniPCMultistepScheduler`]):
|
| 112 |
-
A scheduler to be used in combination with `transformer` to denoise the encoded image latents.
|
| 113 |
-
vae ([`AutoencoderKLWan`]):
|
| 114 |
-
Variational Auto-Encoder (VAE) Model to encode and decode videos to and from latent representations.
|
| 115 |
-
"""
|
| 116 |
-
|
| 117 |
-
model_cpu_offload_seq = "text_encoder->transformer->vae"
|
| 118 |
-
_callback_tensor_inputs = ["latents", "prompt_embeds", "negative_prompt_embeds"]
|
| 119 |
-
|
| 120 |
-
def __init__(
|
| 121 |
-
self,
|
| 122 |
-
tokenizer: AutoTokenizer,
|
| 123 |
-
text_encoder: UMT5EncoderModel,
|
| 124 |
-
transformer: WanTransformer3DModel,
|
| 125 |
-
vae: AutoencoderKLWan,
|
| 126 |
-
scheduler: FlowMatchEulerDiscreteScheduler,
|
| 127 |
-
):
|
| 128 |
-
super().__init__()
|
| 129 |
-
|
| 130 |
-
self.register_modules(
|
| 131 |
-
vae=vae,
|
| 132 |
-
text_encoder=text_encoder,
|
| 133 |
-
tokenizer=tokenizer,
|
| 134 |
-
transformer=transformer,
|
| 135 |
-
scheduler=scheduler,
|
| 136 |
-
)
|
| 137 |
-
|
| 138 |
-
self.vae_scale_factor_temporal = 2 ** sum(self.vae.temperal_downsample) if getattr(self, "vae", None) else 4
|
| 139 |
-
self.vae_scale_factor_spatial = 2 ** len(self.vae.temperal_downsample) if getattr(self, "vae", None) else 8
|
| 140 |
-
self.video_processor = VideoProcessor(vae_scale_factor=self.vae_scale_factor_spatial)
|
| 141 |
-
|
| 142 |
-
def _get_t5_prompt_embeds(
|
| 143 |
-
self,
|
| 144 |
-
prompt: Union[str, List[str]] = None,
|
| 145 |
-
num_videos_per_prompt: int = 1,
|
| 146 |
-
max_sequence_length: int = 226,
|
| 147 |
-
device: Optional[torch.device] = None,
|
| 148 |
-
dtype: Optional[torch.dtype] = None,
|
| 149 |
-
padding: bool = True,
|
| 150 |
-
):
|
| 151 |
-
device = device or self._execution_device
|
| 152 |
-
dtype = dtype or self.text_encoder.dtype
|
| 153 |
-
|
| 154 |
-
prompt = [prompt] if isinstance(prompt, str) else prompt
|
| 155 |
-
prompt = [prompt_clean(u) for u in prompt]
|
| 156 |
-
batch_size = len(prompt)
|
| 157 |
-
print(padding)
|
| 158 |
-
text_inputs = self.tokenizer(
|
| 159 |
-
prompt,
|
| 160 |
-
padding="max_length" if padding else False,
|
| 161 |
-
max_length=max_sequence_length,
|
| 162 |
-
truncation=True,
|
| 163 |
-
add_special_tokens=True,
|
| 164 |
-
return_attention_mask=True,
|
| 165 |
-
return_tensors="pt",
|
| 166 |
-
)
|
| 167 |
-
text_input_ids, mask = text_inputs.input_ids, text_inputs.attention_mask
|
| 168 |
-
seq_lens = mask.gt(0).sum(dim=1).long()
|
| 169 |
-
|
| 170 |
-
prompt_embeds = self.text_encoder(text_input_ids.to(device), mask.to(device)).last_hidden_state
|
| 171 |
-
prompt_embeds = prompt_embeds.to(dtype=dtype, device=device)
|
| 172 |
-
prompt_embeds = [u[:v] for u, v in zip(prompt_embeds, seq_lens)]
|
| 173 |
-
if padding:
|
| 174 |
-
prompt_embeds = torch.stack(
|
| 175 |
-
[torch.cat([u, u.new_zeros(max_sequence_length - u.size(0), u.size(1))]) for u in prompt_embeds], dim=0
|
| 176 |
-
)
|
| 177 |
-
else:
|
| 178 |
-
prompt_embeds = torch.stack(
|
| 179 |
-
[torch.cat([u]) for u in prompt_embeds], dim=0
|
| 180 |
-
)
|
| 181 |
-
|
| 182 |
-
# duplicate text embeddings for each generation per prompt, using mps friendly method
|
| 183 |
-
_, seq_len, _ = prompt_embeds.shape
|
| 184 |
-
prompt_embeds = prompt_embeds.repeat(1, num_videos_per_prompt, 1)
|
| 185 |
-
prompt_embeds = prompt_embeds.view(batch_size * num_videos_per_prompt, seq_len, -1)
|
| 186 |
-
|
| 187 |
-
return prompt_embeds
|
| 188 |
-
|
| 189 |
-
def encode_prompt(
|
| 190 |
-
self,
|
| 191 |
-
prompt: Union[str, List[str]],
|
| 192 |
-
negative_prompt: Optional[Union[str, List[str]]] = None,
|
| 193 |
-
do_classifier_free_guidance: bool = True,
|
| 194 |
-
num_videos_per_prompt: int = 1,
|
| 195 |
-
prompt_embeds: Optional[torch.Tensor] = None,
|
| 196 |
-
negative_prompt_embeds: Optional[torch.Tensor] = None,
|
| 197 |
-
max_sequence_length: int = 226,
|
| 198 |
-
device: Optional[torch.device] = None,
|
| 199 |
-
dtype: Optional[torch.dtype] = None,
|
| 200 |
-
padding: bool = True,
|
| 201 |
-
):
|
| 202 |
-
r"""
|
| 203 |
-
Encodes the prompt into text encoder hidden states.
|
| 204 |
-
|
| 205 |
-
Args:
|
| 206 |
-
prompt (`str` or `List[str]`, *optional*):
|
| 207 |
-
prompt to be encoded
|
| 208 |
-
negative_prompt (`str` or `List[str]`, *optional*):
|
| 209 |
-
The prompt or prompts not to guide the image generation. If not defined, one has to pass
|
| 210 |
-
`negative_prompt_embeds` instead. Ignored when not using guidance (i.e., ignored if `guidance_scale` is
|
| 211 |
-
less than `1`).
|
| 212 |
-
do_classifier_free_guidance (`bool`, *optional*, defaults to `True`):
|
| 213 |
-
Whether to use classifier free guidance or not.
|
| 214 |
-
num_videos_per_prompt (`int`, *optional*, defaults to 1):
|
| 215 |
-
Number of videos that should be generated per prompt. torch device to place the resulting embeddings on
|
| 216 |
-
prompt_embeds (`torch.Tensor`, *optional*):
|
| 217 |
-
Pre-generated text embeddings. Can be used to easily tweak text inputs, *e.g.* prompt weighting. If not
|
| 218 |
-
provided, text embeddings will be generated from `prompt` input argument.
|
| 219 |
-
negative_prompt_embeds (`torch.Tensor`, *optional*):
|
| 220 |
-
Pre-generated negative text embeddings. Can be used to easily tweak text inputs, *e.g.* prompt
|
| 221 |
-
weighting. If not provided, negative_prompt_embeds will be generated from `negative_prompt` input
|
| 222 |
-
argument.
|
| 223 |
-
device: (`torch.device`, *optional*):
|
| 224 |
-
torch device
|
| 225 |
-
dtype: (`torch.dtype`, *optional*):
|
| 226 |
-
torch dtype
|
| 227 |
-
"""
|
| 228 |
-
device = device or self._execution_device
|
| 229 |
-
|
| 230 |
-
prompt = [prompt] if isinstance(prompt, str) else prompt
|
| 231 |
-
if prompt is not None:
|
| 232 |
-
batch_size = len(prompt)
|
| 233 |
-
else:
|
| 234 |
-
batch_size = prompt_embeds.shape[0]
|
| 235 |
-
|
| 236 |
-
if prompt_embeds is None:
|
| 237 |
-
prompt_embeds = self._get_t5_prompt_embeds(
|
| 238 |
-
prompt=prompt,
|
| 239 |
-
num_videos_per_prompt=num_videos_per_prompt,
|
| 240 |
-
max_sequence_length=max_sequence_length,
|
| 241 |
-
device=device,
|
| 242 |
-
dtype=dtype,
|
| 243 |
-
padding=padding
|
| 244 |
-
)
|
| 245 |
-
|
| 246 |
-
if do_classifier_free_guidance and negative_prompt_embeds is None:
|
| 247 |
-
negative_prompt = negative_prompt or ""
|
| 248 |
-
negative_prompt = batch_size * [negative_prompt] if isinstance(negative_prompt, str) else negative_prompt
|
| 249 |
-
|
| 250 |
-
if prompt is not None and type(prompt) is not type(negative_prompt):
|
| 251 |
-
raise TypeError(
|
| 252 |
-
f"`negative_prompt` should be the same type to `prompt`, but got {type(negative_prompt)} !="
|
| 253 |
-
f" {type(prompt)}."
|
| 254 |
-
)
|
| 255 |
-
elif batch_size != len(negative_prompt):
|
| 256 |
-
raise ValueError(
|
| 257 |
-
f"`negative_prompt`: {negative_prompt} has batch size {len(negative_prompt)}, but `prompt`:"
|
| 258 |
-
f" {prompt} has batch size {batch_size}. Please make sure that passed `negative_prompt` matches"
|
| 259 |
-
" the batch size of `prompt`."
|
| 260 |
-
)
|
| 261 |
-
|
| 262 |
-
negative_prompt_embeds = self._get_t5_prompt_embeds(
|
| 263 |
-
prompt=negative_prompt,
|
| 264 |
-
num_videos_per_prompt=num_videos_per_prompt,
|
| 265 |
-
max_sequence_length=max_sequence_length,
|
| 266 |
-
device=device,
|
| 267 |
-
dtype=dtype,
|
| 268 |
-
)
|
| 269 |
-
|
| 270 |
-
return prompt_embeds, negative_prompt_embeds
|
| 271 |
-
|
| 272 |
-
def check_inputs(
|
| 273 |
-
self,
|
| 274 |
-
prompt,
|
| 275 |
-
negative_prompt,
|
| 276 |
-
height,
|
| 277 |
-
width,
|
| 278 |
-
prompt_embeds=None,
|
| 279 |
-
negative_prompt_embeds=None,
|
| 280 |
-
callback_on_step_end_tensor_inputs=None,
|
| 281 |
-
):
|
| 282 |
-
if height % 16 != 0 or width % 16 != 0:
|
| 283 |
-
raise ValueError(f"`height` and `width` have to be divisible by 16 but are {height} and {width}.")
|
| 284 |
-
|
| 285 |
-
if callback_on_step_end_tensor_inputs is not None and not all(
|
| 286 |
-
k in self._callback_tensor_inputs for k in callback_on_step_end_tensor_inputs
|
| 287 |
-
):
|
| 288 |
-
raise ValueError(
|
| 289 |
-
f"`callback_on_step_end_tensor_inputs` has to be in {self._callback_tensor_inputs}, but found {[k for k in callback_on_step_end_tensor_inputs if k not in self._callback_tensor_inputs]}"
|
| 290 |
-
)
|
| 291 |
-
|
| 292 |
-
if prompt is not None and prompt_embeds is not None:
|
| 293 |
-
raise ValueError(
|
| 294 |
-
f"Cannot forward both `prompt`: {prompt} and `prompt_embeds`: {prompt_embeds}. Please make sure to"
|
| 295 |
-
" only forward one of the two."
|
| 296 |
-
)
|
| 297 |
-
elif negative_prompt is not None and negative_prompt_embeds is not None:
|
| 298 |
-
raise ValueError(
|
| 299 |
-
f"Cannot forward both `negative_prompt`: {negative_prompt} and `negative_prompt_embeds`: {negative_prompt_embeds}. Please make sure to"
|
| 300 |
-
" only forward one of the two."
|
| 301 |
-
)
|
| 302 |
-
elif prompt is None and prompt_embeds is None:
|
| 303 |
-
raise ValueError(
|
| 304 |
-
"Provide either `prompt` or `prompt_embeds`. Cannot leave both `prompt` and `prompt_embeds` undefined."
|
| 305 |
-
)
|
| 306 |
-
elif prompt is not None and (not isinstance(prompt, str) and not isinstance(prompt, list)):
|
| 307 |
-
raise ValueError(f"`prompt` has to be of type `str` or `list` but is {type(prompt)}")
|
| 308 |
-
elif negative_prompt is not None and (
|
| 309 |
-
not isinstance(negative_prompt, str) and not isinstance(negative_prompt, list)
|
| 310 |
-
):
|
| 311 |
-
raise ValueError(f"`negative_prompt` has to be of type `str` or `list` but is {type(negative_prompt)}")
|
| 312 |
-
|
| 313 |
-
def prepare_latents(
|
| 314 |
-
self,
|
| 315 |
-
batch_size: int,
|
| 316 |
-
num_channels_latents: int = 16,
|
| 317 |
-
height: int = 480,
|
| 318 |
-
width: int = 832,
|
| 319 |
-
num_frames: int = 81,
|
| 320 |
-
dtype: Optional[torch.dtype] = None,
|
| 321 |
-
device: Optional[torch.device] = None,
|
| 322 |
-
generator: Optional[Union[torch.Generator, List[torch.Generator]]] = None,
|
| 323 |
-
latents: Optional[torch.Tensor] = None,
|
| 324 |
-
) -> torch.Tensor:
|
| 325 |
-
if latents is not None:
|
| 326 |
-
return latents.to(device=device, dtype=dtype)
|
| 327 |
-
|
| 328 |
-
num_latent_frames = (num_frames - 1) // self.vae_scale_factor_temporal + 1
|
| 329 |
-
shape = (
|
| 330 |
-
batch_size,
|
| 331 |
-
num_channels_latents,
|
| 332 |
-
num_latent_frames,
|
| 333 |
-
int(height) // self.vae_scale_factor_spatial,
|
| 334 |
-
int(width) // self.vae_scale_factor_spatial,
|
| 335 |
-
)
|
| 336 |
-
if isinstance(generator, list) and len(generator) != batch_size:
|
| 337 |
-
raise ValueError(
|
| 338 |
-
f"You have passed a list of generators of length {len(generator)}, but requested an effective batch"
|
| 339 |
-
f" size of {batch_size}. Make sure the batch size matches the length of the generators."
|
| 340 |
-
)
|
| 341 |
-
|
| 342 |
-
latents = randn_tensor(shape, generator=generator, device=device, dtype=dtype)
|
| 343 |
-
return latents
|
| 344 |
-
|
| 345 |
-
@property
|
| 346 |
-
def guidance_scale(self):
|
| 347 |
-
return self._guidance_scale
|
| 348 |
-
|
| 349 |
-
@property
|
| 350 |
-
def do_classifier_free_guidance(self):
|
| 351 |
-
return self._guidance_scale > 1.0
|
| 352 |
-
|
| 353 |
-
@property
|
| 354 |
-
def num_timesteps(self):
|
| 355 |
-
return self._num_timesteps
|
| 356 |
-
|
| 357 |
-
@property
|
| 358 |
-
def current_timestep(self):
|
| 359 |
-
return self._current_timestep
|
| 360 |
-
|
| 361 |
-
@property
|
| 362 |
-
def interrupt(self):
|
| 363 |
-
return self._interrupt
|
| 364 |
-
|
| 365 |
-
@property
|
| 366 |
-
def attention_kwargs(self):
|
| 367 |
-
return self._attention_kwargs
|
| 368 |
-
|
| 369 |
-
@torch.no_grad()
|
| 370 |
-
@replace_example_docstring(EXAMPLE_DOC_STRING)
|
| 371 |
-
def __call__(
|
| 372 |
-
self,
|
| 373 |
-
prompt: Union[str, List[str]] = None,
|
| 374 |
-
negative_prompt: Union[str, List[str]] = None,
|
| 375 |
-
height: int = 480,
|
| 376 |
-
width: int = 832,
|
| 377 |
-
num_frames: int = 81,
|
| 378 |
-
num_inference_steps: int = 50,
|
| 379 |
-
guidance_scale: float = 5.0,
|
| 380 |
-
num_videos_per_prompt: Optional[int] = 1,
|
| 381 |
-
generator: Optional[Union[torch.Generator, List[torch.Generator]]] = None,
|
| 382 |
-
latents: Optional[torch.Tensor] = None,
|
| 383 |
-
prompt_embeds: Optional[torch.Tensor] = None,
|
| 384 |
-
negative_prompt_embeds: Optional[torch.Tensor] = None,
|
| 385 |
-
output_type: Optional[str] = "np",
|
| 386 |
-
return_dict: bool = True,
|
| 387 |
-
attention_kwargs: Optional[Dict[str, Any]] = None,
|
| 388 |
-
callback_on_step_end: Optional[
|
| 389 |
-
Union[Callable[[int, int, Dict], None], PipelineCallback, MultiPipelineCallbacks]
|
| 390 |
-
] = None,
|
| 391 |
-
callback_on_step_end_tensor_inputs: List[str] = ["latents"],
|
| 392 |
-
max_sequence_length: int = 512,
|
| 393 |
-
):
|
| 394 |
-
r"""
|
| 395 |
-
The call function to the pipeline for generation.
|
| 396 |
-
|
| 397 |
-
Args:
|
| 398 |
-
prompt (`str` or `List[str]`, *optional*):
|
| 399 |
-
The prompt or prompts to guide the image generation. If not defined, pass `prompt_embeds` instead.
|
| 400 |
-
negative_prompt (`str` or `List[str]`, *optional*):
|
| 401 |
-
The prompt or prompts to avoid during image generation. If not defined, pass `negative_prompt_embeds`
|
| 402 |
-
instead. Ignored when not using guidance (`guidance_scale` < `1`).
|
| 403 |
-
height (`int`, defaults to `480`):
|
| 404 |
-
The height in pixels of the generated image.
|
| 405 |
-
width (`int`, defaults to `832`):
|
| 406 |
-
The width in pixels of the generated image.
|
| 407 |
-
num_frames (`int`, defaults to `81`):
|
| 408 |
-
The number of frames in the generated video.
|
| 409 |
-
num_inference_steps (`int`, defaults to `50`):
|
| 410 |
-
The number of denoising steps. More denoising steps usually lead to a higher quality image at the
|
| 411 |
-
expense of slower inference.
|
| 412 |
-
guidance_scale (`float`, defaults to `5.0`):
|
| 413 |
-
Guidance scale as defined in [Classifier-Free Diffusion
|
| 414 |
-
Guidance](https://huggingface.co/papers/2207.12598). `guidance_scale` is defined as `w` of equation 2.
|
| 415 |
-
of [Imagen Paper](https://huggingface.co/papers/2205.11487). Guidance scale is enabled by setting
|
| 416 |
-
`guidance_scale > 1`. Higher guidance scale encourages to generate images that are closely linked to
|
| 417 |
-
the text `prompt`, usually at the expense of lower image quality.
|
| 418 |
-
num_videos_per_prompt (`int`, *optional*, defaults to 1):
|
| 419 |
-
The number of images to generate per prompt.
|
| 420 |
-
generator (`torch.Generator` or `List[torch.Generator]`, *optional*):
|
| 421 |
-
A [`torch.Generator`](https://pytorch.org/docs/stable/generated/torch.Generator.html) to make
|
| 422 |
-
generation deterministic.
|
| 423 |
-
latents (`torch.Tensor`, *optional*):
|
| 424 |
-
Pre-generated noisy latents sampled from a Gaussian distribution, to be used as inputs for image
|
| 425 |
-
generation. Can be used to tweak the same generation with different prompts. If not provided, a latents
|
| 426 |
-
tensor is generated by sampling using the supplied random `generator`.
|
| 427 |
-
prompt_embeds (`torch.Tensor`, *optional*):
|
| 428 |
-
Pre-generated text embeddings. Can be used to easily tweak text inputs (prompt weighting). If not
|
| 429 |
-
provided, text embeddings are generated from the `prompt` input argument.
|
| 430 |
-
output_type (`str`, *optional*, defaults to `"np"`):
|
| 431 |
-
The output format of the generated image. Choose between `PIL.Image` or `np.array`.
|
| 432 |
-
return_dict (`bool`, *optional*, defaults to `True`):
|
| 433 |
-
Whether or not to return a [`WanPipelineOutput`] instead of a plain tuple.
|
| 434 |
-
attention_kwargs (`dict`, *optional*):
|
| 435 |
-
A kwargs dictionary that if specified is passed along to the `AttentionProcessor` as defined under
|
| 436 |
-
`self.processor` in
|
| 437 |
-
[diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py).
|
| 438 |
-
callback_on_step_end (`Callable`, `PipelineCallback`, `MultiPipelineCallbacks`, *optional*):
|
| 439 |
-
A function or a subclass of `PipelineCallback` or `MultiPipelineCallbacks` that is called at the end of
|
| 440 |
-
each denoising step during the inference. with the following arguments: `callback_on_step_end(self:
|
| 441 |
-
DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)`. `callback_kwargs` will include a
|
| 442 |
-
list of all tensors as specified by `callback_on_step_end_tensor_inputs`.
|
| 443 |
-
callback_on_step_end_tensor_inputs (`List`, *optional*):
|
| 444 |
-
The list of tensor inputs for the `callback_on_step_end` function. The tensors specified in the list
|
| 445 |
-
will be passed as `callback_kwargs` argument. You will only be able to include variables listed in the
|
| 446 |
-
`._callback_tensor_inputs` attribute of your pipeline class.
|
| 447 |
-
max_sequence_length (`int`, defaults to `512`):
|
| 448 |
-
The maximum sequence length of the text encoder. If the prompt is longer than this, it will be
|
| 449 |
-
truncated. If the prompt is shorter, it will be padded to this length.
|
| 450 |
-
|
| 451 |
-
Examples:
|
| 452 |
-
|
| 453 |
-
Returns:
|
| 454 |
-
[`~WanPipelineOutput`] or `tuple`:
|
| 455 |
-
If `return_dict` is `True`, [`WanPipelineOutput`] is returned, otherwise a `tuple` is returned where
|
| 456 |
-
the first element is a list with the generated images and the second element is a list of `bool`s
|
| 457 |
-
indicating whether the corresponding generated image contains "not-safe-for-work" (nsfw) content.
|
| 458 |
-
"""
|
| 459 |
-
|
| 460 |
-
if isinstance(callback_on_step_end, (PipelineCallback, MultiPipelineCallbacks)):
|
| 461 |
-
callback_on_step_end_tensor_inputs = callback_on_step_end.tensor_inputs
|
| 462 |
-
|
| 463 |
-
# 1. Check inputs. Raise error if not correct
|
| 464 |
-
self.check_inputs(
|
| 465 |
-
prompt,
|
| 466 |
-
negative_prompt,
|
| 467 |
-
height,
|
| 468 |
-
width,
|
| 469 |
-
prompt_embeds,
|
| 470 |
-
negative_prompt_embeds,
|
| 471 |
-
callback_on_step_end_tensor_inputs,
|
| 472 |
-
)
|
| 473 |
-
|
| 474 |
-
if num_frames % self.vae_scale_factor_temporal != 1:
|
| 475 |
-
logger.warning(
|
| 476 |
-
f"`num_frames - 1` has to be divisible by {self.vae_scale_factor_temporal}. Rounding to the nearest number."
|
| 477 |
-
)
|
| 478 |
-
num_frames = num_frames // self.vae_scale_factor_temporal * self.vae_scale_factor_temporal + 1
|
| 479 |
-
num_frames = max(num_frames, 1)
|
| 480 |
-
|
| 481 |
-
self._guidance_scale = guidance_scale
|
| 482 |
-
self._attention_kwargs = attention_kwargs
|
| 483 |
-
self._current_timestep = None
|
| 484 |
-
self._interrupt = False
|
| 485 |
-
|
| 486 |
-
device = self._execution_device
|
| 487 |
-
|
| 488 |
-
# 2. Define call parameters
|
| 489 |
-
if prompt is not None and isinstance(prompt, str):
|
| 490 |
-
batch_size = 1
|
| 491 |
-
elif prompt is not None and isinstance(prompt, list):
|
| 492 |
-
batch_size = len(prompt)
|
| 493 |
-
else:
|
| 494 |
-
batch_size = prompt_embeds.shape[0]
|
| 495 |
-
|
| 496 |
-
# 3. Encode input prompt
|
| 497 |
-
prompt_embeds, negative_prompt_embeds = self.encode_prompt(
|
| 498 |
-
prompt=prompt,
|
| 499 |
-
negative_prompt=negative_prompt,
|
| 500 |
-
do_classifier_free_guidance=self.do_classifier_free_guidance,
|
| 501 |
-
num_videos_per_prompt=num_videos_per_prompt,
|
| 502 |
-
prompt_embeds=prompt_embeds,
|
| 503 |
-
negative_prompt_embeds=negative_prompt_embeds,
|
| 504 |
-
max_sequence_length=max_sequence_length,
|
| 505 |
-
device=device,
|
| 506 |
-
)
|
| 507 |
-
|
| 508 |
-
transformer_dtype = self.transformer.dtype
|
| 509 |
-
prompt_embeds = prompt_embeds.to(transformer_dtype)
|
| 510 |
-
if negative_prompt_embeds is not None:
|
| 511 |
-
negative_prompt_embeds = negative_prompt_embeds.to(transformer_dtype)
|
| 512 |
-
|
| 513 |
-
# 4. Prepare timesteps
|
| 514 |
-
self.scheduler.set_timesteps(num_inference_steps, device=device)
|
| 515 |
-
timesteps = self.scheduler.timesteps
|
| 516 |
-
|
| 517 |
-
# 5. Prepare latent variables
|
| 518 |
-
num_channels_latents = self.transformer.config.in_channels
|
| 519 |
-
latents = self.prepare_latents(
|
| 520 |
-
batch_size * num_videos_per_prompt,
|
| 521 |
-
num_channels_latents,
|
| 522 |
-
height,
|
| 523 |
-
width,
|
| 524 |
-
num_frames,
|
| 525 |
-
torch.float32,
|
| 526 |
-
device,
|
| 527 |
-
generator,
|
| 528 |
-
latents,
|
| 529 |
-
)
|
| 530 |
-
|
| 531 |
-
# 6. Denoising loop
|
| 532 |
-
num_warmup_steps = len(timesteps) - num_inference_steps * self.scheduler.order
|
| 533 |
-
self._num_timesteps = len(timesteps)
|
| 534 |
-
|
| 535 |
-
with self.progress_bar(total=num_inference_steps) as progress_bar:
|
| 536 |
-
for i, t in enumerate(timesteps):
|
| 537 |
-
if self.interrupt:
|
| 538 |
-
continue
|
| 539 |
-
|
| 540 |
-
self._current_timestep = t
|
| 541 |
-
latent_model_input = latents.to(transformer_dtype)
|
| 542 |
-
timestep = t.expand(latents.shape[0])
|
| 543 |
-
for block in self.transformer.blocks:
|
| 544 |
-
if hasattr(block.attn2, "processor"):
|
| 545 |
-
block.attn2.processor.pos = True
|
| 546 |
-
|
| 547 |
-
noise_pred = self.transformer(
|
| 548 |
-
hidden_states=latent_model_input,
|
| 549 |
-
timestep=timestep,
|
| 550 |
-
encoder_hidden_states=prompt_embeds,
|
| 551 |
-
attention_kwargs=attention_kwargs,
|
| 552 |
-
return_dict=False,
|
| 553 |
-
)[0]
|
| 554 |
-
|
| 555 |
-
if self.do_classifier_free_guidance:
|
| 556 |
-
for block in self.transformer.blocks:
|
| 557 |
-
if hasattr(block.attn2, "processor"):
|
| 558 |
-
block.attn2.processor.pos = False
|
| 559 |
-
noise_uncond = self.transformer(
|
| 560 |
-
hidden_states=latent_model_input,
|
| 561 |
-
timestep=timestep,
|
| 562 |
-
encoder_hidden_states=negative_prompt_embeds,
|
| 563 |
-
attention_kwargs=attention_kwargs,
|
| 564 |
-
return_dict=False,
|
| 565 |
-
)[0]
|
| 566 |
-
noise_pred = noise_uncond + guidance_scale * (noise_pred - noise_uncond)
|
| 567 |
-
|
| 568 |
-
# compute the previous noisy sample x_t -> x_t-1
|
| 569 |
-
latents = self.scheduler.step(noise_pred, t, latents, return_dict=False)[0]
|
| 570 |
-
|
| 571 |
-
if callback_on_step_end is not None:
|
| 572 |
-
callback_kwargs = {}
|
| 573 |
-
for k in callback_on_step_end_tensor_inputs:
|
| 574 |
-
callback_kwargs[k] = locals()[k]
|
| 575 |
-
callback_outputs = callback_on_step_end(self, i, t, callback_kwargs)
|
| 576 |
-
|
| 577 |
-
latents = callback_outputs.pop("latents", latents)
|
| 578 |
-
prompt_embeds = callback_outputs.pop("prompt_embeds", prompt_embeds)
|
| 579 |
-
negative_prompt_embeds = callback_outputs.pop("negative_prompt_embeds", negative_prompt_embeds)
|
| 580 |
-
|
| 581 |
-
# call the callback, if provided
|
| 582 |
-
if i == len(timesteps) - 1 or ((i + 1) > num_warmup_steps and (i + 1) % self.scheduler.order == 0):
|
| 583 |
-
progress_bar.update()
|
| 584 |
-
|
| 585 |
-
if XLA_AVAILABLE:
|
| 586 |
-
xm.mark_step()
|
| 587 |
-
|
| 588 |
-
self._current_timestep = None
|
| 589 |
-
|
| 590 |
-
if not output_type == "latent":
|
| 591 |
-
latents = latents.to(self.vae.dtype)
|
| 592 |
-
latents_mean = (
|
| 593 |
-
torch.tensor(self.vae.config.latents_mean)
|
| 594 |
-
.view(1, self.vae.config.z_dim, 1, 1, 1)
|
| 595 |
-
.to(latents.device, latents.dtype)
|
| 596 |
-
)
|
| 597 |
-
latents_std = 1.0 / torch.tensor(self.vae.config.latents_std).view(1, self.vae.config.z_dim, 1, 1, 1).to(
|
| 598 |
-
latents.device, latents.dtype
|
| 599 |
-
)
|
| 600 |
-
latents = latents / latents_std + latents_mean
|
| 601 |
-
video = self.vae.decode(latents, return_dict=False)[0]
|
| 602 |
-
video = self.video_processor.postprocess_video(video, output_type=output_type)
|
| 603 |
-
else:
|
| 604 |
-
video = latents
|
| 605 |
-
|
| 606 |
-
# Offload all models
|
| 607 |
-
self.maybe_free_model_hooks()
|
| 608 |
-
|
| 609 |
-
if not return_dict:
|
| 610 |
-
return (video,)
|
| 611 |
-
|
| 612 |
-
return WanPipelineOutput(frames=video)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VSF/vsfwan/processor.py
DELETED
|
@@ -1,114 +0,0 @@
|
|
| 1 |
-
|
| 2 |
-
import torch
|
| 3 |
-
import torch.nn.functional as F
|
| 4 |
-
from typing import Optional
|
| 5 |
-
from diffusers.models.attention_processor import Attention
|
| 6 |
-
|
| 7 |
-
class WanAttnProcessor2_0:
|
| 8 |
-
def __init__(self, scale=4, attn_mask=None, neg_prompt_length=0):
|
| 9 |
-
if not hasattr(F, "scaled_dot_product_attention"):
|
| 10 |
-
raise ImportError("WanAttnProcessor2_0 requires PyTorch 2.0. To use it, please upgrade PyTorch to 2.0.")
|
| 11 |
-
self.attn_mask = attn_mask
|
| 12 |
-
self.neg_prompt_length = neg_prompt_length
|
| 13 |
-
self.scale = scale
|
| 14 |
-
|
| 15 |
-
def __call__(
|
| 16 |
-
self,
|
| 17 |
-
attn: Attention,
|
| 18 |
-
hidden_states: torch.Tensor,
|
| 19 |
-
encoder_hidden_states: Optional[torch.Tensor] = None,
|
| 20 |
-
attention_mask: Optional[torch.Tensor] = None,
|
| 21 |
-
rotary_emb: Optional[torch.Tensor] = None,
|
| 22 |
-
) -> torch.Tensor:
|
| 23 |
-
encoder_hidden_states_img = None
|
| 24 |
-
if attn.add_k_proj is not None:
|
| 25 |
-
# 512 is the context length of the text encoder, hardcoded for now
|
| 26 |
-
image_context_length = encoder_hidden_states.shape[1] - 512
|
| 27 |
-
encoder_hidden_states_img = encoder_hidden_states[:, :image_context_length]
|
| 28 |
-
encoder_hidden_states = encoder_hidden_states[:, image_context_length:]
|
| 29 |
-
cross_attn = False
|
| 30 |
-
if encoder_hidden_states is None:
|
| 31 |
-
encoder_hidden_states = hidden_states
|
| 32 |
-
query = attn.to_q(hidden_states)
|
| 33 |
-
key = attn.to_k(encoder_hidden_states)
|
| 34 |
-
value = attn.to_v(encoder_hidden_states)
|
| 35 |
-
else:
|
| 36 |
-
query = attn.to_q(hidden_states)
|
| 37 |
-
key = attn.to_k(encoder_hidden_states)
|
| 38 |
-
value = attn.to_v(encoder_hidden_states)
|
| 39 |
-
cross_attn = True
|
| 40 |
-
|
| 41 |
-
if cross_attn and self.pos:
|
| 42 |
-
# print(value.shape, self.neg_prompt_length)
|
| 43 |
-
value[:,-self.neg_prompt_length:] *= -self.scale # should we flip before
|
| 44 |
-
|
| 45 |
-
if attn.norm_q is not None:
|
| 46 |
-
query = attn.norm_q(query)
|
| 47 |
-
if attn.norm_k is not None:
|
| 48 |
-
key = attn.norm_k(key)
|
| 49 |
-
|
| 50 |
-
query = query.unflatten(2, (attn.heads, -1)).transpose(1, 2)
|
| 51 |
-
key = key.unflatten(2, (attn.heads, -1)).transpose(1, 2)
|
| 52 |
-
value = value.unflatten(2, (attn.heads, -1)).transpose(1, 2)
|
| 53 |
-
# print(self.pos)
|
| 54 |
-
|
| 55 |
-
if rotary_emb is not None:
|
| 56 |
-
def apply_rotary_emb(
|
| 57 |
-
hidden_states: torch.Tensor,
|
| 58 |
-
freqs_cos: torch.Tensor,
|
| 59 |
-
freqs_sin: torch.Tensor,
|
| 60 |
-
):
|
| 61 |
-
x = hidden_states.view(*hidden_states.shape[:-1], -1, 2)
|
| 62 |
-
x1, x2 = x[..., 0], x[..., 1]
|
| 63 |
-
cos = freqs_cos[..., 0::2]
|
| 64 |
-
sin = freqs_sin[..., 1::2]
|
| 65 |
-
out = torch.empty_like(hidden_states)
|
| 66 |
-
out[..., 0::2] = x1 * cos - x2 * sin
|
| 67 |
-
out[..., 1::2] = x1 * sin + x2 * cos
|
| 68 |
-
return out.type_as(hidden_states)
|
| 69 |
-
|
| 70 |
-
query = apply_rotary_emb(query, *rotary_emb)
|
| 71 |
-
key = apply_rotary_emb(key, *rotary_emb)
|
| 72 |
-
|
| 73 |
-
# I2V task
|
| 74 |
-
hidden_states_img = None
|
| 75 |
-
if encoder_hidden_states_img is not None:
|
| 76 |
-
key_img = attn.add_k_proj(encoder_hidden_states_img)
|
| 77 |
-
key_img = attn.norm_added_k(key_img)
|
| 78 |
-
value_img = attn.add_v_proj(encoder_hidden_states_img)
|
| 79 |
-
|
| 80 |
-
key_img = key_img.unflatten(2, (attn.heads, -1)).transpose(1, 2)
|
| 81 |
-
value_img = value_img.unflatten(2, (attn.heads, -1)).transpose(1, 2)
|
| 82 |
-
print(query.shape, key_img.shape, value_img.shape)
|
| 83 |
-
hidden_states_img = F.scaled_dot_product_attention(
|
| 84 |
-
query, key_img, value_img, attn_mask=None, dropout_p=0.0, is_causal=False
|
| 85 |
-
)
|
| 86 |
-
hidden_states_img = hidden_states_img.transpose(1, 2).flatten(2, 3)
|
| 87 |
-
hidden_states_img = hidden_states_img.type_as(query)
|
| 88 |
-
|
| 89 |
-
if self.attn_mask is not None:
|
| 90 |
-
self.attn_mask = self.attn_mask.to(query.dtype)
|
| 91 |
-
|
| 92 |
-
if not self.pos:
|
| 93 |
-
hidden_states = F.scaled_dot_product_attention(
|
| 94 |
-
query, key, value, dropout_p=0.0, is_causal=False
|
| 95 |
-
)
|
| 96 |
-
else:
|
| 97 |
-
hidden_states = F.scaled_dot_product_attention(
|
| 98 |
-
query, key, value, attn_mask=self.attn_mask, dropout_p=0.0, is_causal=False
|
| 99 |
-
)
|
| 100 |
-
# if cross_attn:
|
| 101 |
-
# # print(hidden_states.shape)
|
| 102 |
-
# hidden_states_norm = torch.norm(hidden_states, dim=-1, keepdim=True)
|
| 103 |
-
# new_norm = torch.where(hidden_states_norm > max_norm * 2, max_norm * 2, hidden_states_norm)
|
| 104 |
-
# hidden_states = hidden_states * (new_norm / hidden_states_norm)
|
| 105 |
-
|
| 106 |
-
hidden_states = hidden_states.transpose(1, 2).flatten(2, 3)
|
| 107 |
-
hidden_states = hidden_states.type_as(query)
|
| 108 |
-
|
| 109 |
-
if hidden_states_img is not None:
|
| 110 |
-
hidden_states = hidden_states + hidden_states_img
|
| 111 |
-
|
| 112 |
-
hidden_states = attn.to_out[0](hidden_states)
|
| 113 |
-
hidden_states = attn.to_out[1](hidden_states)
|
| 114 |
-
return hidden_states
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VSF/wan.md
DELETED
|
@@ -1,112 +0,0 @@
|
|
| 1 |
-
This is experimental, video quality is not ideal and negative prompt following is not as good as SD-3.5.
|
| 2 |
-
The support of Wan 2.1 is thanks to @MeiYi-dev's suggestion of [CausVid LoRA](https://huggingface.co/Kijai/WanVideo_comfy/blob/main/Wan21_CausVid_bidirect2_T2V_1_3B_lora_rank32.safetensors).
|
| 3 |
-
|
| 4 |
-
We are looking for CFG-free video generation that can work in HuggingFace Diffusers, this current LoRA cannot provide the best quality.
|
| 5 |
-
|
| 6 |
-
Known Issues:
|
| 7 |
-
- The video will has a few frames at the begining that has very high contrast. Could be related to https://github.com/Wan-Video/Wan2.1/issues/369.
|
| 8 |
-
-
|
| 9 |
-
|
| 10 |
-
Video compressed when export. All videos are generated with fixed seed 42. All videos are generated using 1.3B model, unless stated otherwise.
|
| 11 |
-
|
| 12 |
-
## Negative Items Avoiding Examples
|
| 13 |
-
**Positive Prompt:** A chef cat and a chef dog with chef suit baking a cake together in a kitchen. The cat is carefully measuring flour, while the dog is stirring the batter with a wooden spoon.
|
| 14 |
-
**Negative Prompt:** white dog
|
| 15 |
-
|
| 16 |
-
| Original | VSF |
|
| 17 |
-
|----------|-----|
|
| 18 |
-
|  |  |
|
| 19 |
-
|
| 20 |
-
---
|
| 21 |
-
|
| 22 |
-
**Positive Prompt:** A cessna flying over a snowy mountain landscape, with a clear blue sky and fluffy white clouds. The plane is flying at a low altitude, casting a shadow on the snow-covered ground below. The mountains are rugged and steep, with patches of evergreen trees visible in the foreground.
|
| 23 |
-
**Negative Prompt:** trees
|
| 24 |
-
|
| 25 |
-
| Original | VSF |
|
| 26 |
-
|----------|-----|
|
| 27 |
-
|  |  |
|
| 28 |
-
|
| 29 |
-
---
|
| 30 |
-
|
| 31 |
-
**Positive Prompt:** A cessna flying over a snowy mountain landscape, with a clear blue sky and fluffy white clouds. The plane is flying at a low altitude, casting a shadow on the snow-covered ground below.
|
| 32 |
-
**Negative Prompt:** plane wings
|
| 33 |
-
|
| 34 |
-
| Original | VSF |
|
| 35 |
-
|----------|-----|
|
| 36 |
-
|  |  |
|
| 37 |
-
|
| 38 |
-
---
|
| 39 |
-
|
| 40 |
-
**Positive Prompt:** a car driving through a snowy forest, the car is a red sports car with snow on the roof, the trees are tall and covered in snow. The sky is clear and blue
|
| 41 |
-
**Negative Prompt:** tire tread mark
|
| 42 |
-
|
| 43 |
-
| Original | VSF |
|
| 44 |
-
|----------|-----|
|
| 45 |
-
|  |  |
|
| 46 |
-
|
| 47 |
-
---
|
| 48 |
-
|
| 49 |
-
**Positive Prompt:** a boat in a stormy sea, the boat is a small fishing boat with a red and white striped sail, the waves are high and crashing against the boat, the sky is dark and cloudy
|
| 50 |
-
**Negative Prompt:** sail
|
| 51 |
-
|
| 52 |
-
| Original | VSF |
|
| 53 |
-
|----------|-----|
|
| 54 |
-
|  |  |
|
| 55 |
-
|
| 56 |
-
---
|
| 57 |
-
|
| 58 |
-
**Positive Prompt:** a cat running in the field, the cat is wearing a red scarf and a blue hat, the field is full of flowers and the sky is clear
|
| 59 |
-
**Negative Prompt:** camera motion
|
| 60 |
-
|
| 61 |
-
| Original | VSF |
|
| 62 |
-
|----------|-----|
|
| 63 |
-
|  |  |
|
| 64 |
-
|
| 65 |
-
---
|
| 66 |
-
**Positive Prompt:** A stream of molten lava pouring from a large industrial metal tube onto a cracked, scorched floor, surrounded by rising smoke and heat distortion, dark background with minimal lighting
|
| 67 |
-
|
| 68 |
-
**Negative Prompt:** red hot, glowing
|
| 69 |
-
|
| 70 |
-
| Original | VSF |
|
| 71 |
-
|----------|-----|
|
| 72 |
-
|  |  |
|
| 73 |
-
|
| 74 |
-
---
|
| 75 |
-
**Positive Prompt:** A camouflaged crab blends into the rocky, sandy seafloor, matching its surroundings perfectly in texture, color, and shape, making it very hard to distinguish from the background. The crab moves subtly across the substrate, with its motion barely noticeable and its body consistently mimicking the appearance of rocks and sand clusters.
|
| 76 |
-
|
| 77 |
-
**Negative Prompt:** the animal is easy to see. It is clearly visible, standing out, different than the background
|
| 78 |
-
|
| 79 |
-
| Original | VSF |
|
| 80 |
-
|----------|-----|
|
| 81 |
-
|  |  |
|
| 82 |
-
|
| 83 |
-
---
|
| 84 |
-
**Positive Prompt:** A flatfish camouflaged against a sandy seabed, blending in perfectly through texture, color, and shape. The animal is hard to distinguish as it subtly shifts and moves, almost invisible to the untrained eye due to its sophisticated camouflage.
|
| 85 |
-
|
| 86 |
-
**Negative Prompt:** the animal is easy to see. It is clearly visible, standing out, different than the background
|
| 87 |
-
|
| 88 |
-
| Original | VSF |
|
| 89 |
-
|----------|-----|
|
| 90 |
-
|  |  |
|
| 91 |
-
|
| 92 |
-
|
| 93 |
-
|
| 94 |
-
## Quality Improvement Examples
|
| 95 |
-
Scale: 1.5, Offset: -0.05
|
| 96 |
-
|
| 97 |
-
|
| 98 |
-
**Positive Prompt:** A chef cat and a dog baking a cake together in a kitchen. The cat is carefully measuring flour, while the dog is stirring the batter with a wooden spoon. The cat is wearing a chef suit
|
| 99 |
-
**Negative Prompt:** low quality
|
| 100 |
-
|
| 101 |
-
| Original | VSF |
|
| 102 |
-
|----------|-----|
|
| 103 |
-
|  |  |
|
| 104 |
-
|
| 105 |
-
---
|
| 106 |
-
|
| 107 |
-
**Positive Prompt:** An underground volcanic eruption violently ejecting glowing lava through a cracked earth surface, with molten rock bursting upward, smoke and ash filling the air, and the ground trembling from the force, shot in cinematic 4K slow motion, realistic style, wide-angle view, night setting with red and orange lava lighting up the surroundings.
|
| 108 |
-
**Negative Prompt:** low quality, low resolution
|
| 109 |
-
|
| 110 |
-
| Original | VSF |
|
| 111 |
-
|----------|-----|
|
| 112 |
-
|  |  |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app.py
CHANGED
|
@@ -18,12 +18,12 @@ except ImportError:
|
|
| 18 |
return fn
|
| 19 |
|
| 20 |
import sys
|
| 21 |
-
sys.path.append("VSF")
|
| 22 |
model_id = "stabilityai/stable-diffusion-3.5-large-turbo"
|
| 23 |
from src.sd3_pipeline import VSFStableDiffusion3Pipeline
|
| 24 |
pipe = VSFStableDiffusion3Pipeline.from_pretrained(
|
| 25 |
"stabilityai/stable-diffusion-3.5-large-turbo",
|
| 26 |
torch_dtype=torch.bfloat16,
|
|
|
|
| 27 |
).to("cuda")
|
| 28 |
import os
|
| 29 |
@spaces.GPU
|
|
|
|
| 18 |
return fn
|
| 19 |
|
| 20 |
import sys
|
|
|
|
| 21 |
model_id = "stabilityai/stable-diffusion-3.5-large-turbo"
|
| 22 |
from src.sd3_pipeline import VSFStableDiffusion3Pipeline
|
| 23 |
pipe = VSFStableDiffusion3Pipeline.from_pretrained(
|
| 24 |
"stabilityai/stable-diffusion-3.5-large-turbo",
|
| 25 |
torch_dtype=torch.bfloat16,
|
| 26 |
+
hf_token=os.environ.get("HF_TOKEN", None)
|
| 27 |
).to("cuda")
|
| 28 |
import os
|
| 29 |
@spaces.GPU
|
{VSF/comfyui/custom_nodes/value_sign_flip/src/value_sign_flip → src}/__init__.py
RENAMED
|
File without changes
|
src/__pycache__/__init__.cpython-310.pyc
ADDED
|
Binary file (128 Bytes). View file
|
|
|
VSF/nasa/pipeline.py → src/__pycache__/pipeline.cpython-310.pyc
RENAMED
|
Binary files a/VSF/nasa/pipeline.py and b/src/__pycache__/pipeline.cpython-310.pyc differ
|
|
|