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로 컴파일하는 데 필요.
  • GhostscriptPoppler – 컴파일된 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-v2nllg/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를 호출하여 고품질 벡터 그래픽을 생성, 컴파일, 내보낼 수 있습니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트