CADReview: Automatically Reviewing CAD Programs with Error Detection and Correction
- CAD プログラムから作られた 3D 形状を参照画像と照合し、誤ったコードブロックとエラー種別を見つけて修正する「CAD review」タスクを定義した論文である。
- 著者らは 20K 超のプログラム・画像ペアを含む CADReview データセットを作り、OpenSCAD コードに位置、回転、サイズ、ロジック、欠落、冗長などのエラーを付与して評価を行った。
- 提案手法 ReCAD は、幾何部品とコードブロックを対応づける訓練と、空間的な幾何操作をコード編集へ移す訓練を組み合わせ、GPT-4o などの既存 MLLM より高い検出・修正性能を示した。
Abstract(日本語訳)
Computer-aided design(CAD)は、幾何的な命令、すなわち CAD プログラムによって 3D オブジェクトを試作するうえで重要である。実際の設計ワークフローでは、設計者は参照画像と照合しながら、こうした試作品の確認と修正に多くの時間を費やすことが多い。この隔たりを埋めるため、本論文では、構成された 3D オブジェクトと参照画像の整合性を保つことを目的として、潜在的な誤りを自動的に検出し修正する CAD review タスクを導入する。しかし、近年の高度な multimodal large language models(MLLMs)は、CAD プログラム内の複数の幾何部品を認識し、空間的な幾何操作を行うことに苦労しており、その結果、正確なレビューができない。本論文では、プログラムの誤りを効果的に検出し、誤り修正に有用なフィードバックを与える CAD program repairer(ReCAD)フレームワークを提案する。さらに、CAD review タスクのために、多様な誤りを含む 20K 超のプログラム・画像ペアからなる CADReview データセットを作成する。広範な実験により、ReCAD は既存の MLLM を大きく上回り、設計応用における高い可能性を示すことが確認された。
論文の面白いところ
この論文の要点は、CAD を「画像から形を作る」問題ではなく、「作られた形が設計意図と合っているかを点検し、プログラムを直す」問題として扱った点にある。3D 生成の研究では、テキストや画像から CAD プログラムを生成する方向が多いが、実務では初期生成の後に確認と修正が残る。参照画像では正しい穴や突起が示されていても、コード側では別のブロックの定数やループ条件が原因で形が崩れることがある。このずれは、通常の画像理解だけでも、通常のコード編集だけでも扱いにくい。画像中の部品、レンダリングされた形、OpenSCAD のブロック構造を同時に対応づける必要があるためである。著者らはその難しさを、CAD review という独立したタスクとデータセットにした。単に「間違っている」と述べるのではなく、どのブロックにどの種別の誤りがあるかを自然言語のフィードバックとして出し、その後にコードを編集する構成も実務に近い。GPT-4o が見た目の違いを言えても、変数名に引きずられて誤ったブロックを修正する例が示されており、MLLM の弱点がかなり具体的に見える。
問題設定
入力は、参照画像、誤りを含む可能性のある CAD プログラム、そのプログラムをレンダリングした画像である。目標は二段階に分かれる。第一に、参照画像とレンダリング画像の差異を見つけ、誤っているコードブロックとエラー種別を特定する。第二に、そのフィードバックを手掛かりとして CAD プログラムを編集し、参照画像に合う 3D オブジェクトを再構成する。対象のエラーは、プリミティブの取り違え、回転、位置、サイズ、定数、ロジック、ブロック欠落、冗長ブロックの 8 種類である。データセットは OpenSCAD を対象とし、人手で作られたプログラムと、機械的に作られたプログラムの両方を含む。訓練、検証、テストは 17,334、2,000、1,615 サンプルに分けられている。付録では全体で 21,949 サンプルとされ、テストでは未知の 3D オブジェクトに対する汎化を測るように分割されている。評価では、フィードバックについて ROUGE-L、BERTScore、正解率を用い、編集後の形状について Chamfer Distance、Minimum Matching Distance、Jensen-Shannon Divergence、無効率を用いる。
提案手法
提案手法 ReCAD は、フィードバック生成器とコード編集器からなる MLLM ベースのフレームワークである。フィードバック生成器は、参照画像、レンダリング画像、CAD プログラムを見て、視覚的な異常、誤ったブロック、エラー種別を説明する。ここで重要なのは、画像中の部品をコードブロックに対応づける geometric component recognition(GCR)である。著者らは CAD caption と CAD localization のために 700K 超の訓練データを用意し、部品の説明、意味ラベルとブロックの対応、座標とブロックの対応を学習させる。コード編集器は、生成されたフィードバックを受け取り、位置や回転などの空間的操作を OpenSCAD のコード変更として実行する。このために spatial geometric operation(SGO)を導入し、コードブロックを 30% マスクして補完する訓練を行う。数値パラメータは 8 bit に量子化し、数値トークンの損失を重くすることで、座標やオフセットの誤りに注意を向ける。基盤モデルには Qwen2-VL と LLaVA-OneVision 系の約 7B モデルを用い、それぞれ ReCAD-QW、ReCAD-LA として実験している。最後に、診断の正しさと編集後画像の視覚的類似度を報酬として、Direct Preference Optimization(DPO)でフィードバック生成器を調整する。
結果
主実験では、ReCAD は Claude 3.5、Gemini 2.0、GPT-4o、CADReview でファインチューニングした Llama 3.2 を上回った。機械生成プログラムでは、フィードバックの正解率が GPT-4o の 41.54% に対し、ReCAD-LA は 73.11%、ReCAD-QW は 71.83% であった。人手作成プログラムでは、GPT-4o が 31.84%、Llama 3.2 が 51.24% であるのに対し、ReCAD-QW は 63.60% に達した。形状再構成でも ReCAD-QW は Chamfer Distance と JSD を低く抑え、特に無効な CAD プログラムを生成する割合が小さい。閉じた商用 MLLM は視覚的な異常の説明では一定の値を示すが、コードブロックと画像部品の対応づけで失敗しやすい。アブレーションでは、GCR を外すとフィードバックの正解率と形状品質が下がり、SGO を外すと複雑な人手作成プログラムでの修正が弱くなる。フィードバックなしの編集も性能を落とし、ReCAD では自然言語フィードバックが編集器に実際の手掛かりを与えていることが示された。一方で、閉じた商用 MLLM ではフィードバックを与えても改善しない場合があり、CAD review では単なるプロンプト設計より、部品対応と空間操作に合わせた訓練が必要であることが分かる。
具体例
たとえば、参照画像には円形部品の周囲に 6 つのスロットが等間隔に開いているが、入力された OpenSCAD プログラムをレンダリングするとスロットの数が足りないとする。モデルには、参照画像、誤ったプログラム、そのプログラムから得たレンダリング画像が与えられる。通常の MLLM は、変数名 n_slots のような手掛かりを見て、定数を直せばよいと判断するかもしれない。しかし実際には、スロットを生成する for 文の範囲指定が誤っており、ループが一部の位置しか走査していない場合がある。ReCAD は、画像上のスロットという部品を対応するコードブロックに結びつけ、視覚的な差異が数の不足であることを記述する。そのうえで、誤りは定数ではなくループ文を含むブロックのロジックエラーである、というフィードバックを生成する。コード編集器はそのフィードバックに従い、ループ範囲やステップを修正して、参照画像と同じ数のスロットを持つ形状を再生成する。間違えやすい点は、見えている異常が「数の不足」であっても、原因が数値定数とは限らないことである。CAD プログラムでは、同じ見た目の異常が定数、座標、制御構造のいずれからも生じるため、画像とコード構造を同時に読む必要がある。