Instructions to use Alptraum/look-again-0.8b with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use Alptraum/look-again-0.8b with PEFT:
from peft import PeftModel from transformers import AutoModelForCausalLM base_model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen3.5-0.8B") model = PeftModel.from_pretrained(base_model, "Alptraum/look-again-0.8b") - Notebooks
- Google Colab
- Kaggle
Look Again 0.8B — wind turbine finder and blade counter
A LoRA adapter for Qwen3.5-0.8B, fine-tuned on distil labs at a hackathon on 19 October 2026.
It answers three kinds of question about rendered wind-farm landscapes:
| Prompt | Input | Output |
|---|---|---|
| Find | full landscape | JSON list of [x0, y0, x1, y1] boxes in 0-1000 coordinates, one per tall structure |
| Judge | zoomed crop of one structure | one label: turbine_2, turbine_3, turbine_4, pylon, mast |
| Count | full landscape | integer: turbines with exactly N blades |
The intended use is a look-again loop: the model finds every structure, code crops and enlarges each one, the model judges each crop, and code counts the matches.
Results
150 held-out test rows (50 of each prompt), scored exactly against the scene generator.
| Find (IoU 0.5) | Judge a zoomed crop | Count in one look | |
|---|---|---|---|
| Qwen3.5-0.8B, untrained | no usable box list | 0% | 4% |
| This adapter | 98% precision, 96% recall | 74% | 14% |
| Kimi K3 (teacher reference) | 98% / 98%, but in pixels, not the requested format | 74% | 42% |
The small model cannot count blades from the full image, but it judges a zoomed crop as well as Kimi K3. That is the premise of the loop. The end-to-end loop has not been scored yet.
Training
- 1,500 rows: 500 synthetic scenes × the three prompts. Every label comes from the scene generator, not from a model or a person.
- LoRA r 64, alpha 64, 3 epochs, batch 1 × gradient accumulation 8, bf16.
- The job description below was used as the system prompt in training. Use it at inference.
How to use
import torch
from peft import PeftModel
from transformers import AutoModelForImageTextToText, AutoProcessor
base = AutoModelForImageTextToText.from_pretrained("Qwen/Qwen3.5-0.8B", dtype=torch.bfloat16)
model = PeftModel.from_pretrained(base, "Alptraum/look-again-0.8b").eval()
processor = AutoProcessor.from_pretrained("Qwen/Qwen3.5-0.8B")
messages = [
{"role": "system", "content": [{"type": "text", "text": SYSTEM_PROMPT}]},
{"role": "user", "content": [{"type": "image", "image": image},
{"type": "text", "text": "[img 00000000] How many wind turbines in this image have exactly 3 blades? Power pylons and telecom masts are not wind turbines. Answer with one integer and nothing else."}]},
]
inputs = processor.apply_chat_template(messages, add_generation_prompt=True, tokenize=True,
return_dict=True, return_tensors="pt", enable_thinking=False)
print(processor.decode(model.generate(**inputs, max_new_tokens=8)[0, inputs["input_ids"].shape[1]:],
skip_special_tokens=True))
Every training question starts with a neutral [img xxxxxxxx] tag (8 hex characters). It
carries no meaning; any value works. SYSTEM_PROMPT and the exact question templates are in
the project's job_description.json and build.py.
Limits
- Trained only on synthetic, rendered scenes: simple shapes, fixed 1024×640 size. It has not seen photographs.
- Untested on the held-out probe families (occlusion, blur and JPEG damage, a blade hidden along the tower).
- Single-pass counting is weak (14%). Use the loop.
Licence
This adapter is distributed under the distil labs R&D licence in LICENSE: non-commercial
prototyping and research only, with use limited to the United States and the European
Economic Area, and the licence must travel with any copy. The base model is Apache 2.0
(STUDENT_LICENSE). The teacher used for evaluation is MIT (TEACHER_LICENSE).
- Downloads last month
- 14