يحتوي هذا المستودع على تنفيذ C ++ بالكامل لتوليف الصور المستقر القائم على الانتشار ، بما في ذلك إمكانيات TXT2IMG الأصلية ، IMG2IMG و Inpainting ومدقق السلامة. لا يعتمد هذا الحل على Python ويدير عملية توليد الصور بأكملها في عملية واحدة مع أداء تنافسي ، مما يجعل عمليات النشر أبسط وأصغر بشكل كبير ، وتتألف بشكل أساسي بعض الملفات القابلة للتنفيذ والمكتبات ، والأوزان النموذجية. باستخدام المكتبة ، من الممكن دمج الانتشار المستقر في أي تطبيق تقريبًا - طالما أنه يمكن استيراد وظائف C ++ أو C ، ولكنه مفيد للغاية لمطوري تطبيقات الرسومات والألعاب في الوقت الحقيقي ، والتي يتم تحقيقها غالبًا مع C ++.
![]() | ![]() | ![]() |
تدعم المكتبة أيضًا ControlNet ، وهذا يسمح باستخدام صور الإدخال لتوجيه عملية توليد الصور ، على سبيل المثال:
في هذا أولاً ، على سبيل المثال ، نستخدم مقدرًا مفتوحًا ومكيفًا مفتوحًا ، يمكننا توجيه توليد IMG2IMG من خلال تحديد الوضع ، بحيث ينتج عنه نتائج أفضل.
باستخدام الكشف عن حافة الحافة والتحكم المكيف الحافة ، نقوم بتغيير نمط الصورة لتشبه توضيح الكتاب الهزلي ، ولكن الحفاظ على التصميم سليما.
باستخدام مقدر العمق وخريطة العمق ControlNet ، ننشئ حرفًا مختلفًا ، ولكن نحتفظ بالإعداد الأصلي.
توفر المكتبة أيضًا تطبيقات معالجة GPU المتسارعة لمستخرجات الميزات التالية (تم عرضها أعلاه):
فيما يلي بعض أمثلة التعليمات البرمجية البسيطة:
يتم تخزين نماذج الذكاء الاصطناعى المطلوبة للمكتبة بتنسيق ONNX. تم تشغيل جميع النماذج عبر Microsoft Olive وتم تحسينها لـ DirectML. لقد اختبرت المكتبة مع النماذج التالية:
يمكنك إحضار النماذج الخاصة بك ، عن طريق تحويلها باستخدام هذا الدليل.
يرجى التأكد من التحقق من الترخيص الأصلي للنماذج إذا كنت تخطط لدمجها في منتجاتك.
يستخدم التنفيذ ONNX لتخزين النماذج الرياضية المشاركة في توليد الصور. ثم يتم تنفيذ نماذج ONNX باستخدام وقت تشغيل ONNX ، والذي يدعم مجموعة متنوعة من المنصات (Windows ، Linux ، MacOS ، Android ، iOS ، Webassembly ، ومقدمي التنفيذ (مثل Nvidia CUDA / Tensorrt ؛ AMD ROCM ، Apple Coreml ، Qualcomm QNNN ، Microsoft Directml والعديد من العديد من).
نحن نقدم مثالًا على تكامل يسمى Unpaint والذي يعرض كيف يمكن دمج المكتبات في واجهة مستخدم بسيطة تستند إلى Winui. يمكنك تنزيل التطبيق المجاني من متجر Microsoft لتقييم خصائص أداء الحل.
تستهدف قاعدة الكود الحالية وحزم nuget الناتجة عن Windows واستخدام DirectML ، ومع ذلك ، فإن الأقسام الصغيرة فقط من الكود تستخدم واجهات برمجة التطبيقات الخاصة بـ Windows ، وبالتالي يمكن نقلها إلى منصات أخرى بأقل جهد.
يتم توفير رمز المصدر لهذه المكتبة ضمن ترخيص معهد ماساتشوستس للتكنولوجيا.
يمكن استرداد إصدارات المشروع من المشروع من Nuget تحت اسم Axodox.MachineLearning وإضافتها إلى مشاريع Visual Studio C ++ (يتم دعم كل من مشاريع سطح المكتب و UWP) مع منصة X64.
التكامل الأساسي:
Axodox.Common و Axodox.MachineLearning إلى مشروعك#include "Include/Axodox.MachineLearning.h"نوصي بإضافة آليات السلامة المناسبة إلى تطبيقك لقمع المخرجات غير المناسبة لـ StableDiffusion ، فإن الأداء النفقات العامة غير مهمة.
تم إنشاء نماذج الانتشار المستقرة التي نستخدمها باستخدام Microsoft Olive ، يرجى اتباع المثال المرتبط لتحويل النماذج من Huggingface. من خلال تغيير البرنامج النصي ، يمكنك أيضًا تحويل النماذج المخزنة على القرص من تنسيقات مختلفة (على سبيل المثال *.safetensors ). يمكنك العثور على بعض النماذج المسبقة هنا للاختبار.
بناء المكتبة مطلوب لإجراء التغييرات واختبارها. ستحتاج إلى تثبيت ما يلي لبناء المكتبة:
يمكنك إما تشغيل build_nuget.ps1 أو Open Axodox.MachineLearning.sln وبناء من Visual Studio.
بمجرد قيامك ببناء المكتبة ، يمكنك تجاوز حزمة Nuget الحالية عن طريق ضبط متغير بيئة تحديد AxodoxMachineLearning-Location للإشارة إلى الإنشاء المحلي.
على سبيل المثال
C:devaxodox-machinelearningAxodox.MachineLearning.Universalلتطبيق UWP وC:devaxodox-machinelearningAxodox.MachineLearning.Desktopلتطبيق سطح المكتب.
ثم أضف المشروع الذي أشار إليه المسار إلى حل المشروع الخاص بك. يسمح ذلك بإضافة جميع المشاريع إلى نفس الحل وإجراء تغييرات على المكتبة وتطبيقك بسلاسة دون نسخ الملفات بشكل متكرر.