1 पॉइंट द्वारा GN⁺ 2 시간 전 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • GenCAD एक ऐसा मॉडल है जो सिर्फ इमेज इनपुट से 3D CAD, पूरा parameterized CAD command history, और CAD प्रोग्राम जनरेट करता है
  • B-rep पर AI training करना जटिल है, जबकि mesh·voxel·point cloud जैसे फ़ॉर्मैट डेटा हासिल करने में आसान होते हैं, लेकिन इसके बदले सटीकता और editability की क़ीमत चुकानी पड़ती है
  • इमेज से parameterized CAD command sequence जनरेट करने के बाद, उसे geometry kernel के ज़रिए 3D solid model में बदला जा सकता है
  • यह autoregressive Transformer, contrastive learning, latent diffusion model, और decoder को जोड़कर इमेज और CAD commands के latent representations बनाता और reconstruct करता है
  • एक ही इमेज से कई CAD samples बनाए जा सकते हैं, और लगभग 7,000 CAD programs में से top-3 खोजने वाली image-conditioned retrieval भी सपोर्ट करता है

अवलोकन

  • GenCAD एक image-conditioned CAD generation model है, जो सिर्फ 3D CAD ही नहीं बल्कि पूरा parameterized CAD command history और CAD program भी आउटपुट करता है
  • B-rep जैसी CAD data structures काफ़ी जटिल होती हैं, इसलिए उन पर efficient AI model training मुश्किल है; वहीं mesh·voxel·point cloud जैसे representations डेटा जुटाने में आसान हैं, लेकिन वे वास्तविक CAD models की accuracy और editability को कम कर देते हैं
  • GenCAD इमेज से parameterized CAD command sequence जनरेट करता है और उसे geometry kernel के माध्यम से 3D solid model में बदलता है
  • इसका लक्ष्य engineering work, manufacturing, और design space exploration के लिए ज़रूरी सटीक और editable 3D modeling को इमेज-आधारित तरीके से automate करना है

मॉडल संरचना और क्षमताएँ

  • आर्किटेक्चर

    • autoregressive Transformer encoder CAD command sequence की latent representation सीखता है
    • contrastive learning-आधारित मॉडल CAD command sequence और CAD image के बीच joint latent representation सीखता है
    • latent diffusion model CAD image को condition के रूप में लेकर CAD command sequence की latent representation जनरेट करता है
    • decoder model CAD latent representation को parameterized CAD command sequence में बदलता है
  • CAD जनरेशन

    • GenCAD इनपुट के रूप में image rendering लेकर CAD model जनरेट कर सकता है
    • एक ही इमेज इनपुट पर भी कई CAD samples जनरेट करके sample diversity देता है
  • CAD खोज

    • यह image-conditioned CAD retrieval को सपोर्ट करता है, और लगभग 7,000 CAD programs के संग्रह में से top-3 CAD programs खोज लेता है
  • सामग्री

    • arXiv: GenCAD पेपर
    • Video: डेमो वीडियो
    • Code: GenCAD code repository

1 टिप्पणियां

 
GN⁺ 2 시간 전
Hacker News की राय
  • मैंने इसे कुछ घंटों तक चलाकर देखा, लेकिन training data के बाहर दिए गए input पर यह बहुत साधारण चित्रों के लिए भी काम का नतीजा नहीं दे पाया।
    GitHub पर लिखा है कि इसकी अपनी training data पर भी reliability लगभग 60% है, लेकिन पहली स्क्रीन पर दिखने वाली image काफ़ी भ्रामक लगती है।
    मैंने उदाहरणों जैसी जटिलता वाली 10 images बनाईं और हर image पर लगभग 50 बार चलाया, लेकिन एक बार भी यह सही तरह काम नहीं किया, और कभी-कभार कुछ output दिया भी तो वह पूरी तरह गलत था।
    मौजूदा स्थिति में यह काफ़ी misleading लगता है, और इसे अभी बहुत और काम की ज़रूरत है।

    • उदाहरण भी उलझाने वाले हैं। वे सभी 3D model से perfectly rendered/exported images जैसे दिखते हैं, और ऐसे उपयोग में यह सबसे उपयोगी नहीं लगता।
      अगर यह हाथ से बने sketch से parameterized CAD model बना सके, तो वह सच में शानदार होगा।
  • दिलचस्प तो है, लेकिन इसकी उपयोगिता को लेकर पक्का नहीं हूँ। CAD drawing में समय लेने वाला हिस्सा हर feature के सटीक dimensions, spacing, size, tolerances तय करना और बाद में आसानी से बदलने के लिए constraints सेट करना होता है, और यह उन में से कुछ भी नहीं करता।
    आप जो चाहते हैं उसे 2D sketch के रूप में बनाकर generate तो कर सकते हैं, लेकिन मुश्किल हिस्सा फिर भी आपको खुद ही करना पड़ेगा।

    • अगर मानें कि किसी को CAD tools अच्छी तरह आते हैं, तो यह बात सही है। हाल में 3D printer इस्तेमाल करते हुए मेरे पास कई बार ऐसा हुआ कि मुझे पता था क्या चाहिए, माप भी ले सकता था, कागज़ पर sketch भी बना सकता था, फिर भी FreeCAD जैसे tool में उसे सही 3D model में बदलना बहुत झंझट भरा था।
      OpenSCAD से मैं काफ़ी परिचित हूँ, लेकिन चीज़ें थोड़ी जटिल होते ही उसमें भी अटक जाता हूँ। हाल ही में मैंने अपने बच्चे के लिए Lego Duplo kitchen sink का faucet बनाया।
      अगर कोई अच्छा AI/LLM tool हो, जिसमें मैं sketch और parameters डालूँ और वह मुझे web पर ढूँढने व tutorial देखने में लगने वाला समय बचा दे कि curve के साथ circle को कैसे extrude करना है, तो मैं सच में आभारी रहूँगा।
      वैसे मौजूदा AI tools OpenSCAD के साथ काफ़ी अच्छे से काम करते हैं, इसलिए अगर आपको simple shapes से बन सकने वाला parameterized model चाहिए, तो मैं इस workflow की ज़ोरदार सिफारिश करूँगा।
    • अच्छा सवाल है।
      मेरी पिछली नौकरी में हमने इस पर बहुत समय लगाया था, और उसका कारण काफ़ी तार्किक था। कम गुणवत्ता वाले head-mounted camera से बने point clouds मॉडल को बहुत जटिल बना देते हैं।
      उदाहरण के लिए, अगर आप Ikea LACK का point cloud देखें (https://www.ikea.com/gb/en/p/lack-nest-of-tables-set-of-2-wh...), तो वह बेहद जटिल होगा। इसलिए थोड़ी-सी interaction के लिए भी computation cost बहुत बढ़ जाती है (https://www.researchgate.net/publication/221064696/figure/fi...)।
      इसी वजह से point cloud को सरल “CAD” model में बदलने पर काफ़ी research हो रही है। यानी LACK table को 4 लाख triangles की जगह लगभग 40 triangles से व्यक्त किया जा सके।
      एक तरीका यह है: “यह point cloud table जैसा दिखता है, तो चलो बहुत-से candidate tables बनाएँ और देखें कौन सा fit बैठता है।” इसके लिए parametric CAD को समझने वाला model चाहिए, जो बहुत-से tables बना सके और fit होने तक parameters adjust कर सके।
      एक और, शायद आसान तरीका यह हो सकता है कि point cloud लिया जाए, CAD models पर trained image model उससे 2D image बनाए, और फिर इस तरह के tool से असली model हासिल किया जाए।
      यह efficient नहीं है, लेकिन काम कर सकता है। हालाँकि automatic plagiarism जैसे कम वांछनीय उपयोग भी बहुत हैं।
    • generative AI में अक्सर जैसा होता है, यह भी ऐसी समस्या का समाधान लगता है जो वास्तव में मौजूद ही नहीं है
    • अगर कोई पेंसिल से furniture बना सके, फिर एक बटन दबाकर ठीक-ठाक CAD drawing पा सके और उसे edit भी कर सके, तो carpenters जैसे लोगों के लिए यह बहुत बड़ा tool होगा।
    • उल्टा, अगर यह साफ़ label वाले code-form CAD generate करे तो शायद ज़्यादा उपयुक्त होगा। तब आप calipers लेकर जाँच सकते हैं कि सब कुछ सही आकार का है या नहीं।
  • अपने CAD AI को बेहतर बनाने के लिए देखते हुए मैंने इसी तरह की कुछ कोशिशें[0] देखी हैं। समाधान के रूप में इनकी संभावनाएँ बड़ी हैं, लेकिन मेरे हिसाब से मौजूदा projects या weights के पास arbitrary models पर अच्छा काम करने लायक training data या training time नहीं है।
    MeshCoder असल में सिर्फ़ training-data-based models पर काम करता है। मैंने GenCAD नहीं आज़माया, लेकिन बाकी comments ने मेरे शक की पुष्टि कर दी।
    [0]: https://daibingquan.github.io/MeshCoder/
    [1]: https://grandpacad.com

  • इस तरह का काम OpenSCAD में बहुत पहले से आसानी से किया जा सकता था। मैंने इसी तरीके से कई शानदार और जटिल models बनाए हैं, और LLM को यह दिखाने के लिए कि कैसे करना है, एक prompt repository भी बनाई है, जिसमें मेरे बनाए कई models भी शामिल हैं।
    https://github.com/cjtrowbridge/vibe-modeling

    • OpenSCAD का B-rep modeling से लगभग कोई overlap नहीं है। यहाँ बात शायद ‘असली’ CAD के ज़्यादा क़रीब की हो रही है।
    • मैं भी यही कहूँगा। LLM और OpenSCAD के साथ काम करना पूरी तरह smooth रहा है।
    • मैं जानना चाहूँगा कि इस approach का inference overhead कितना है।
    • माफ़ कीजिए, लेकिन मुझे समझ नहीं आता कि यहाँ किन चीज़ों को जटिल कहा जा रहा है। मैंने output PNGs के कुछ उदाहरण[1] [2] [3] देखे, और वे बहुत साधारण लगे। Blender में पहली बार बनाए गए 3D model जितने साधारण।
      तुलना के लिए, मेरी हाल की designs में से एक कुछ ऐसी है, और मैं इसे भी अब भी बहुत simple example ही कहूँगा[4]।
      मैं व्यावसायिक रूप से काम करने वाला प्रशिक्षित mechanical engineer नहीं हूँ; मैं तो बस एक programmer हूँ जो फुर्सत में design करता है।
      [1] - https://github.com/cjtrowbridge/vibe-modeling/blob/main/outp...
      [2] - https://github.com/cjtrowbridge/vibe-modeling/blob/main/outp...
      [3] - https://github.com/cjtrowbridge/vibe-modeling/blob/main/outp...
      [4] - https://object.ceph-eu.hswaw.net/q3k-personal/fe3e54e6df604a...
  • मैं देखना चाहता था कि यह असली parts की photos या हाथ से बने drawings पर कितना अच्छा काम करता है, लेकिन Docker image सेट करने की कोशिश करते ही missing dependencies हर तरह से टूटने लगीं।
    उदाहरणों को देखकर शक होता है कि अगर image मूल रूप से CAD में generate न की गई हो, तो शायद यह ठीक से काम ही न करे।

    • विडंबना यह है कि Docker image तो ठीक ऐसी dependency समस्याओं से बचने के लिए ही बनाई जाती है।
  • जिसे यह दिलचस्प लगता है, उसे OpenSCAD भी पसंद आ सकता है। इससे आप code के ज़रिए 3D CAD models generate कर सकते हैं।
    https://openscad.org/

  • अगर लेखक यह देख रहा हो, तो कृपया autoplay video हटा दें। फ़ोन पर कुछ और सुनते समय यह हमेशा audio पर कब्ज़ा करके उसे बीच में रोक देता है।

  • मेरा open-source Rust BRep CAD kernel भी दिलचस्प हो सकता है: https://github.com/ecto/vcad
    इसका hosted version https://vcad.io पर है।
    CAD app में क्या-क्या जाता है, इस पर मैंने थोड़ा लिखा भी है: https://campedersen.com/tessellation

    • मैं भी Rust में CAD program बनाने की कोशिश कर रहा हूँ, इसलिए मैंने hosted site देखी, लेकिन यह समझना मुश्किल था कि क्या काम करना चाहिए और क्या अभी नहीं करता।
      यह बात कुछ संदिग्ध लगती है कि एक व्यक्ति ने 4 महीनों में सिर्फ़ Rust crates में लगभग 1.15 लाख lines लिख दीं, और frontend के लिए अलग से 1 लाख lines और हैं।
      मैं यह भी जानना चाहता हूँ कि आपने “immediate” tessellation क्यों चुना। जैसे ही आप एक circle बनाते हैं, वह circle जैसा दिखने वाले कई line segments में बदल जाता है, और tangent constraints के साथ यह जल्दी fail होता लगेगा। समझ नहीं आ रहा कि यह मौजूदा limitation है या kernel strategy का हिस्सा।
    • बताना भूल गया था, यह Claude से जुड़ा हुआ है, इसलिए मूल पोस्ट की तरह कुछ और steps के साथ vibe CAD किया जा सकता है। मैं जल्द ही इसी तरह का model train करने की भी कोशिश करना चाहता हूँ।
      अपने पहले प्रयास के बारे में भी मैंने लिखा है: https://campedersen.com/cad0
  • इस तरह की चीज़ मुझे ठीक से समझ नहीं आती। मुश्किल हिस्सा drafting और modeling नहीं, बल्कि CAM programming है।
    मुझे तो ऐसा open-source program भी नहीं मिला जिसमें 3D model import करके UI में toolpaths सेट किए जा सकें, तो LLM से model से toolpaths generate करवाना तो और भी मुश्किल लगता है।

  • शायद मैं कुछ मिस कर रहा हूँ, लेकिन अगर शुरुआत में ही rendered image मौजूद है, तो बहुत संभव है कि CAD भी पहले से मौजूद हो। demo अच्छा है, लेकिन इसका use case समझ नहीं आता।

    • इसे sketch से generate करने या किसी ऐसे part की नकल बनाने में इस्तेमाल किया जा सकता है जो आपके पास नहीं है।