Eruku Korean (ํ๊ธ ์๊ธ์จ ์์ฑ)
Eruku (blowing-up-groundhogs/eruku, arXiv:2510.23240) ๋ฅผ ํ๊ธ(Korean) ๋ก ํ์ธํ๋ํ ๋ชจ๋ธ์ ๋๋ค. ์คํ์ผ ์ฐธ์กฐ ์๊ธ์จ ์ด๋ฏธ์ง + ์์ฑํ ํ ์คํธ๋ฅผ ๋ฐ์, ํด๋น ์คํ์ผ๋ก ํ ์คํธ ์ด๋ฏธ์ง๋ฅผ ์๊ธฐํ๊ท ์์ฑํฉ๋๋ค.
- Base model:
blowing-up-groundhogs/eruku(์์ด pretrained) - Training code / recipe: https://github.com/HERIUN/Eruku_korean_finetuning
- Checkpoint: en2ko fine-tune, step 11,000 (
pytorch_model.bin, weights only)
์์ด pretrained ๋ ํ๊ธ์ ์ ํ ์์ฑํ์ง ๋ชปํฉ๋๋ค(์์ ๋ถ๊ดด). ์ด ๋ชจ๋ธ์ ์์ด ๋ฅ๋ ฅ์ ๋ณด์กดํ ์ฑ ํ๊ธ์ ์๋ก ํ์ตํ์ต๋๋ค.
์ฌ์ฉ๋ฒ
1) AutoModel (๊ถ์ฅ, ์๋ณธ๊ณผ ๋์ผํ ํธ์ API)
from transformers import AutoModel
from PIL import Image
import torch
device = "cuda" if torch.cuda.is_available() else "cpu"
model = AutoModel.from_pretrained("HERIUN/eruku_korean", trust_remote_code=True).to(device).eval()
style_image = Image.open("style_sample.png") # ์๊ธ์จ ์คํ์ผ ์ฐธ์กฐ ์ด๋ฏธ์ง
result = model.generate_handwriting(
style_image=style_image,
gen_text="ํ๊ตญ์ด ์๊ธ์จ ์์ฑ",
style_text="", # ์ ํ: style ์ด๋ฏธ์ง์ ์ ์ฌ
cfg_scale=1.5, # ํ๊ธ์ 1.5 ๊ถ์ฅ (์๋ณธ ๊ธฐ๋ณธ 1.25)
)
result.save("generated.png")
๋ก๋ ์
t5_to_ocr.weight๊ฐ UNEXPECTED ๋ก ๋จ๋ ๊ฑด ์ ์์ ๋๋ค(ํ์ต์๋ง ์ฐ์ธ ๋ณด์กฐ OCR ํค๋, ์ถ๋ก ๋ฏธ์ฌ์ฉ โ ๋ฌด์). ๊ทธ ์ธ ํ๋ผ๋ฏธํฐ๋ ๋ชจ๋ ์ ์ ๋ก๋๋ฉ๋๋ค.
2) ํ์ต repo ์ฝ๋๋ก ๋ก๋ (๋์ผ ๊ฒฐ๊ณผ)
from huggingface_hub import hf_hub_download
from infer_show import load_model # https://github.com/HERIUN/Eruku_korean_finetuning
ckpt = hf_hub_download("HERIUN/eruku_korean", "pytorch_model.bin")
model, _ = load_model(ckpt, "cuda")
upstream ๋๋น ์ฐจ์ด์
ํ์ต ํ์ดํ๋ผ์ธ์ ๋ ๊ฐ์ง ์์ ์ด ๋ฐ์๋์ด ์์ต๋๋ค(๊ฐ์ค์น์ ๋ด์ฌ). ์ถ๋ก ์ ์ฒ๋ฆฌ๋ ์๋ณธ
modeling_eruku.py ์ ๋์ผํ๊ฒ ๋์ํ๋๋ก ๋ง์ถฐ์ ธ ์์ด ์ AutoModel ๊ฒฝ๋ก๊ฐ ์ฌ๋ฐ๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๋
๋๋ค.
- style-length ๋จ์ ๋ฒ๊ทธ ์์ : ํ์ต ์
get_model_inputs์ style/gen ๊ธธ์ด clamp ์์ ํฝ์ โlatent ๋จ์๊ฐ ์์ฌ style ์ด ~1/8 ๋ก ์๋ฆฌ๋ ๋ฌธ์ ๋ฅผ ํฝ์ ํ์ฐ(*8)์ผ๋ก ์์ . - ์ด์ค ์ ๊ทํ ์ ๊ฑฐ: ํ์ต ๋ฐ์ดํฐ๊ฐ ์ด๋ฏธ
[-1,1]์ธ๋ฐNormalize(0.5,0.5)๋ฅผ ํ ๋ฒ ๋ ์ ์ฉํด VAE ์ ๋ ฅ์ด[-3,1]๋ก ๋ฐ๋ฆฌ๋ ๋ฌธ์ ๋ฅผ ์ ๊ฑฐ(ํ์ต ์). ์ถ๋ก ์[0,1]์ ๋ ฅ์ ํ ๋ฒ ์ ๊ทํํ๋ฏ๋ก ์ผ๊ด.
ํ์ต ๋ ์ํผ
| ํญ๋ชฉ | ๊ฐ |
|---|---|
| ์์ | ์์ด pretrained (blowing-up-groundhogs/eruku), Phase 1 ์๋ต |
| virtual batch | 256 (batch 2 ร grad-accum 128) |
| lr | 5e-5 (pretrained ์ฒ์ฒํ ๋ฎ์ด ์์ด ๋ณด์กด) |
| ๋ฐ์ดํฐ | ์จ๋ผ์ธ ํฉ์ฑ(ํ๊ธ ์๊ธ์จ/๋์คํ๋ ์ด ํฐํธ + ๋ผํด ํฐํธ 15%), style 1 |
| max-img-len | 8192 (๊ธด ๋ฌธ์ฅ truncation ๋ฐฉ์ง) |
| VAE | ๋๊ฒฐ (frozen) |
ํ๊ฐ (held-out ๋ฏธํ์ต ํฐํธ, n=40, ๊ธด ๋ฌธ์ฅ ํฌํจ)
โ ๋ฎ์์๋ก ์ข์(FIDยทCER) / โ ๋์์๋ก(SSIM). ๋ฏธํ์ต ํฐํธ = ํ์ต์ ์ฐ์ง ์์ held-out ํฐํธ.
| ํ๊ธ FIDโ | ํ๊ธ CERโ | ํ๊ธ SSIMโ | ์์ด FIDโ | ์์ด CERโ | |
|---|---|---|---|---|---|
| pretrained (์์ด์์กฐ) | 176.8 | 3.539 (๋ถ๊ดด) | โ | 54.6 | 0.274 |
| ์ด ๋ชจ๋ธ (step 11k) | 110.0 | 0.150 | 0.332 | 51.4 | 0.250 |
| step 5k (์ฐธ๊ณ ) | 87.7 | 0.214 | 0.353 | 50.9 | 0.256 |
- ํ๊ธ: pretrained ๋ ์์ ๋ถ๊ดด(CER 3.5) โ ํ์ธํ๋ ํ ์ ์ฐฝ(CER 0.15). ๋ด์ฉ ์ ํ๋ ์ต๊ณ .
- ์์ด: ํ์ธํ๋ ํ์๋ ๋ณด์กด(FIDยทCER ๊ฑฐ์ ๋์ผ).
- step 5k ๋ ์คํ์ผ/์ด๋ฏธ์ง ์ถฉ์ค๋(FID) ๊ฐ ๋ ์ข๊ณ , step 11k(์ด ๋ชจ๋ธ) ๋ ํ ์คํธ ๋ด์ฉ ์ ํ๋(CER) ๊ฐ ๋ ์ข์ trade-off ์ ๋๋ค. ๊ฐ๋ ์ฑ/์ ํ๋ ์ฐ์ ์ด๋ฉด ์ด ๋ชจ๋ธ์ ๊ถ์ฅํฉ๋๋ค.
์๋ ค์ง ํ๊ณ: VAE ํ๊ธ ์์ฉ์ฑ
ํ๊ธ fidelity ๋ step ~11k ๋ถ๊ทผ์์ plateau ํฉ๋๋ค. ์์ธ์ ํ์ต ๋ถ์กฑ์ด ์๋๋ผ ๋๊ฒฐ VAE ์ ํ๊ธ ์ฌ๊ตฌ์ฑ ํ๊ณ์ ๋๋ค. ๋ชจ๋ธ์ VAE latent ๋ง ์กฐ๊ฑดยทํ๊น์ผ๋ก ์ฐ๋ฏ๋ก, VAE ๊ฐ ํ๊ธ์ latent ์ ๋ด์ง ๋ชปํ๋ ๋ํ ์ผ์ ํ์ต์ผ๋ก ๋์ ์ ์์ต๋๋ค. ๊ฐ์ ํฐํธ VAE roundtrip ์ฌ๊ตฌ์ฑ ์ค์ฐจ: ํ๊ธ MSE 0.0165 / SSIM 0.906 vs ์์ด MSE 0.0014 / SSIM 0.984 (ํ๊ธ์ด ~12๋ฐฐ, ๋ฐ์ง ์์ ์ผ์๋ก ์ฌํจ). ์์ธํ ๊ทผ๊ฑฐ๋ training repo ์ฐธ๊ณ .
๋ผ์ด์ ์ค
Apache-2.0 (base model ์น๊ณ). ํฐํธ/๋ฐ์ดํฐ๋ ๊ฐ ๋ผ์ด์ ์ค๋ฅผ ๋ฐ๋ฆ ๋๋ค.
์ธ์ฉ
Base model:
@article{eruku2025,
title={Eruku: Autoregressive Styled Text Image Generation},
journal={arXiv preprint arXiv:2510.23240},
year={2025}
}
- Downloads last month
- 68
Model tree for HERIUN/eruku_korean
Base model
blowing-up-groundhogs/eruku