hitit-cuneiform-ocr / code /src /enhancements /diffusion_aug.py
savastakan's picture
Initial upload: code + 5 record checkpoints + fuse
f211247 verified
Raw
History Blame Contribute Delete
1.6 kB
#!/usr/bin/env python3
"""#6 Diffusion-based augmentation for rare signs.
Reference: DA-Fusion (Trabucco 2023); DiffuseMix (Islam 2024 CVPR);
Flux.1-dev (BFL 2024).
Strategy for rare classes (<10 sample):
1. Gerçek örneklerden ControlNet LoRA fine-tune
2. "relief + clay texture" synthesis
3. Expert review (quality control zorunlu)
"""
import json
from pathlib import Path
ROOT = Path("/arf/scratch/stakan/hitit-proje")
RECIPE = {
"name": "Diffusion augmentation — rare cuneiform sign synthesis",
"method": "ControlNet LoRA on Flux.1-dev or SD3",
"target": "Rare signs (class_sample_count < 10 in hitit_local)",
"strategy": [
"1. Gerçek örneklerden sign-specific ControlNet LoRA eğit (3-5 sample yeter)",
"2. Conditioning: edge map + depth (MaiCuBeDa 3D render'dan)",
"3. Generate: relief + clay texture + lighting variation",
"4. Expert paleographer review (accept/reject loop)",
"5. Manifest'e synthetic=True flag"
],
"expected_gain": "+0.2-0.5% (tail tier improvement)",
"caveats": [
"Diffusion kolay hallucinate eder → yanlış stroke riski",
"Sadece in-distribution noise/lighting, yeni sign sentezi DEĞİL",
"Expert review zorunlu"
],
"gpu_hours": 100,
"status": "recipe-only (implementation in diffusion_synthetic_runbook.md)"
}
def main():
out = ROOT / "datasets/processed/diffusion_aug_recipe.json"
with open(out, 'w') as f:
json.dump(RECIPE, f, indent=2, ensure_ascii=False)
print(f"Diffusion aug recipe: {out}")
if __name__ == '__main__':
main()