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 にコンパイルするために必要。
- Ghostscript と Poppler – コンパイルされた 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-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 または提供された Web UI を呼び出して、高品質のベクターグラフィックスを生成、コンパイル、エクスポートします。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト