potamides/DeTikZify
Synthesizing Graphics Programs for Scientific Figures and Sketches with TikZ.
DeTikZify란?
DeTikZify는 스케치나 래스터 과학 그림을 TikZ 코드(고품질 벡터 그래픽을 그리는 데 사용되는 LaTeX 기반 언어)로 변환하는 오픈소스 멀티모달 언어 모델입니다. 즉, 플롯, 다이어그램 또는 스케치의 이미지를 제공하면 그림을 재현하는 의미론적이고 편집 가능한 TikZ 프로그램을 출력합니다. 이 시스템은 동반 Tik*Zero 어댑터를 통해 텍스트-투-TikZ 생성도 지원합니다.
중요성
- 편집 가능한 그래픽 – PNG나 PDF와 달리 TikZ 코드는 품질 저하 없이 편집, 크기 조정, 스타일 지정이 가능합니다.
- 자동화 – 학술 작성에서 흔한 그림을 TikZ로 수동 변환하는 지루한 작업을 줄여줍니다.
- 반복적 개선 – 몬테카를로 트리 탐색(MCTS) 추론 루프를 사용하여 추가 훈련 없이 생성된 프로그램을 개선합니다.
- 오픈소스 및 재현 가능 – 모델 가중치, 데이터셋, 훈련 스크립트가 Hugging Face에 공개되어 있습니다. 코드는 MIT 라이선스입니다.
핵심 구성 요소
| 구성 요소 | 역할 |
|---|---|
| DeTikZify 모델(v2.5‑8b, v2‑8b, v1‑1b 등) | 입력 이미지(또는 텍스트)를 TikZ 소스에 매핑하는 멀티모달 LLM. |
| TikZero 어댑터 | 기본 모델 위에 제로샷 텍스트 조건을 추가하는 경량 모듈. |
| MCTS 추론 엔진 | 가능한 토큰 시퀀스를 검색하고 컴파일된 TikZ 프로그램의 정확성과 시각적 유사성을 점수화합니다. |
| 웹 UI / CLI | 대화형 생성, 컴파일, 래스터화, TikZ 파일 저장을 위한 간단한 프런트엔드. |
| 데이터셋 스크립트(DaTikZ) | 전체 DaTikZ 훈련 데이터를 재생성하는 도구(원본 데이터는 라이선스 문제로 트리밍해야 했음). |
시작하기
1. 패키지 설치
# 저장소에서 직접 설치(예제를 위한 선택적 추가 기능 포함)
pip install 'detikzify[legacy] @ git+https://github.com/potamides/DeTikZify'
[legacy] 추가 기능은 이전 v1 모델에만 필요합니다. v2만 사용하는 경우 생략하세요.
2. 시스템 요구 사항
- TeX Live 2023(전체 설치) – TikZ를 PDF로 컴파일하는 데 필요.
- Ghostscript 및 Poppler – 컴파일된 PDF를 래스터화하는 데 필요.
- 80억 매개변수 모델의 경우 최소 8GB VRAM의 GPU(1‑b 모델은 CPU만으로 실행 가능).
3. 빠른 시작 CLI
# 경량 웹 UI 시작(--help로 유용한 플래그 추가)
python -m detikzify.webui --light
UI에서 이미지를 드롭하거나 캡션을 입력하고 생성된 TikZ를 확인한 후 .tex 파일을 다운로드할 수 있습니다.
최소 Python 예제(이미지 → TikZ)
from operator import itemgetter
from detikzify.model import load
from detikzify.infer import DetikzifyPipeline
# 최신 8‑b 모델 로드(GPU 전체에 자동 분산)
pipeline = DetikzifyPipeline(*load(
model_name_or_path="nllg/detikzify-v2.5-8b",
device_map="auto",
torch_dtype="bfloat16",
))
# 이미지 URL 제공(모든 래스터 그림 또는 손으로 그린 스케치)
fig = pipeline.sample(image="https://w.wiki/A7Cc")
# 프로그램이 컴파일 가능하면 렌더링하여 표시
if fig.is_rasterizable:
fig.rasterize().show()
# MCTS를 10분간 실행하여 여러 후보 탐색
candidates = set()
for score, candidate in pipeline.simulate(image="https://w.wiki/A7Cc", timeout=600):
candidates.add((score, candidate))
# 가장 높은 점수의 TikZ 프로그램 유지
best = sorted(candidates, key=itemgetter(0))[-1][1]
best.save("figure.tex")
sample 호출은 단일 추측을 제공합니다. simulate는 MCTS 검색을 실행하여 (score, TikZFigure) 튜플 스트림을 반환합니다.
TikZero를 사용한 텍스트-투-TikZ
from detikzify.model import load, load_adapter
from detikzify.infer import DetikzifyPipeline
caption = "두 개의 은닉층을 가진 다층 퍼셉트론."
pipeline = DetikzifyPipeline(
*load_adapter(
*load(
model_name_or_path="nllg/detikzify-v2-8b",
device_map="auto",
torch_dtype="bfloat16",
),
adapter_name_or_path="nllg/tikzero-adapter",
)
)
fig = pipeline.sample(text=caption)
if fig.is_rasterizable:
fig.rasterize().show()
어댑터는 텍스트 인코더를 추가하므로 그림을 제공하는 대신 다이어그램을 설명할 수 있습니다.
모델 및 데이터 위치
- 모델 허브 – 공개된 모든 체크포인트는 Hugging Face의
nllg네임스페이스에 있습니다(예:nllg/detikzify-v2.5-8b). - 데이터셋 –
nllg/datikz-v2및nllg/datikz-v3에는 훈련에 사용되는 쌍을 이루는 이미지‑TikZ 데이터가 포함되어 있습니다. 저장소는 arXiv 소스에서 전체 데이터셋을 재구축하기 위한DaTikZ스크립트도 제공합니다.
문서 및 커뮤니티
- 논문 – DeTikZify: Synthesizing Graphics Programs for Scientific Figures and Sketches with TikZ(NeurIPS 2024 spotlight). PDF는 OpenReview 배지를 통해 제공됩니다.
- 데모 – 공개 Hugging Face Space(
nllg/DeTikZify)에서 설치 없이 모델을 사용해 볼 수 있습니다. 대기열이 길면 스페이스를 복제하여 프라이빗 GPU를 사용할 수 있습니다. - Colab 노트북 – README에 링크된 빠른 시작 노트북으로 무료 티어에서 원클릭 추론이 가능합니다(1‑b 모델만 지원).
- GitHub issues – 설치 문제, 데이터셋 재생성, MCTS 매개변수 확장에 대한 활발한 논의.
TL;DR
DeTikZify는 대규모 멀티모달 LLM과 MCTS 기반 검색을 사용하여 과학 다이어그램의 이미지 또는 텍스트 설명을 편집 가능한 TikZ 코드로 변환합니다. pip로 설치하고 Hugging Face에서 모델을 로드한 다음 Python API 또는 제공된 웹 UI를 호출하여 고품질 벡터 그래픽을 생성, 컴파일, 내보낼 수 있습니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트