إسماعيل بن علا

Image-to-CadQuery

نموذج مخصص من الرؤية إلى الكود

متعدد الوسائط · أكتوبر 2026 · قيد الإنجاز

شبكة عصبية تحوّل صورة قطعة ثلاثية الأبعاد إلى كود

التقنياتPyTorchResNet18TransformerHugging Face DatasetspytesttorchvisionHugging Face TransformerstorchrunRuff

Image-to-CadQuery — نظرة عامة

نظرة عامة

CadQuery مكتبة Python لوصف القطع ثلاثية الأبعاد على هيئة كود. أردت أن أعرف ما إذا كان نموذج مدرَّب من البيانات وحدها يستطيع النظر إلى قطعة تصميم بمساعدة الحاسوب (CAD) مصيَّرة وكتابة نص CadQuery البرمجي الذي يعيد بناءها، دون أي واجهة برمجية لنموذج لغوي كبير (LLM) ودون أي هندسة أوامر.

بنيت نموذج مشفِّر-مفكِّك ترميز (encoder-decoder) بـ PyTorch خالص: يحوّل ResNet18 الصورة إلى شبكة 7x7 من الرموز البصرية (tokens)، ويكتب مفكِّك ترميز Transformer من 6 طبقات النص البرمجي رمزًا تلو الآخر وهو ينتبه إلى رموز الصورة تلك. وحول ذلك كتبت إعدادات مُنمَّطة، وخط معالجة بيانات لمجموعة بيانات GenCAD-Code (147k زوج صورة/نص برمجي للتدريب)، وحلقة تدريب تتوسع من معالج حاسوب محمول إلى عدة وحدات معالجة رسومية وعدة أجهزة، وواجهة سطر أوامر للاستدلال، وحزمة اختبارات pytest تعمل على المعالج فقط.

خط المعالجة مُتحقَّق منه من البداية إلى النهاية: في فحص سلامة بالإفراط في الملاءمة (overfit) على بيانات حقيقية، حفظ النموذج 8 عينات وأعاد توليد نصوصها البرمجية بدقة شبه تامة. تدريب كامل على وحدة معالجة رسومية وتقييم الكود المولَّد (نسبة الصياغة الصالحة وIoU مقابل المجسم الحقيقي) هما المرحلة التالية.

السؤال

هل يستطيع مشفِّر ResNet مصمَّم خصيصًا ومفكِّك ترميز Transformer ذاتي الانحدار أن يتعلما ترجمة صور التصميم بمساعدة الحاسوب مباشرة إلى برامج CadQuery قابلة للتعديل؟

أهم الميزات

كيف يعمل

  1. تحضير البيانات

    يُعاد تحجيم كل تصيير من GenCAD-Code إلى 224x224 ويُطبَّع؛ ويُقطَّع كل نص برمجي إلى رموز بـ BPE الخاص بـ GPT-2 ويُغلَّف على هيئة BOS ثم الكود ثم EOS، مع رمز حشو مخصص حتى يتعلم النموذج متى يتوقف.

  2. تشفير الصورة

    ينتج ResNet18 بدون تجميع (pooling) شبكة سمات 7x7، تُبسَّط إلى 49 رمزًا للصورة بمواضع ثنائية الأبعاد متعلَّمة.

  3. فك ترميز الكود

    يستخدم مفكِّك ترميز Transformer من 6 طبقات بتطبيع مسبق (pre-norm) انتباهًا ذاتيًا مقنَّعًا على الكود المكتوب حتى الآن وانتباهًا متقاطعًا على رموز الصورة، مع ربط طبقة الإخراج بتضمين الرموز.

  4. التدريب

    إنتروبيا متقاطعة للرمز التالي بالإجبار التعليمي (teacher forcing)، وAdamW بمعدلي تعلم منفصلين للمشفِّر ومفكِّك الترميز، وإحماء خطي ثم تناقص جيب تمام، وقصّ للتدرج.

  5. التوليد

    تُشفَّر الصورة مرة واحدة، ثم يضيف مفكِّك الترميز رمزًا واحدًا في كل مرة حتى تُصدر كل متتالية EOS أو تبلغ حد الرموز.

أمثلة

المدخل

Overfit sanity check: 8 real GenCAD-Code samples, 26.4M-parameter model, 150 steps on a laptop CPU (about 15 minutes)

المخرج

Validation loss fell from 10.64 to 0.06; reloading the checkpoint and generating from the 8 training images reproduced the scripts at 98-100% token accuracy (4 of 8 exactly).

البوابة قبل التدريب الكامل: دليل على أن البيانات والإخفاء ودالة الخسارة موصولة بشكل صحيح، لا مقياس للتعميم.

التقنيات المستخدمة

ما تعلمته

الحدود