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 プログラムの正確性と視覚的類似性をスコアリングします。
Web 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 億パラメータモデルには少なくとも 8 GB VRAM の GPU(1‑b モデルは CPU のみで動作)。

3. クイックスタート CLI

# 軽量 Web 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 = "2 つの隠れ層を持つ多層パーセプトロン。"
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 または提供された Web UI を呼び出して、高品質のベクターグラフィックスを生成、コンパイル、エクスポートします。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト