wxmp-tensorflow
يتميز أحدث الحلول الهندسية TensorFlow
التي تعمل ضمن تطبيق WeChat الصغير بالخصائص التالية
- قم بتشغيل balzeface Android √، IOS √
- تشغيل معالم الوجه Android √, IOS √
- البرنامج المساعد tfjs المتكامل، سهل الاستخدام، لا حاجة لمرجع ثانوي√
- دعم الواجهة الخلفية Wasm √ تم دمج العلاقات العامة المقدمة إلى tfjs
- قم بتشغيلposenet (على سبيل المثال mobilenet 0.50 step16) √
- تعمل tfjs المخصصة على تقليل حجم الحزمة على سبيل المثال blazeface√
- تشغيل وضع اليد √
- تشغيل موفنيت √
- قم بتشغيل blazepose-tfjs √
ملاحظة: تم تكييف Paddle.js مع برامج Baidu المصغرة وبرامج WeChat المصغرة، https://github.com/PaddlePaddle/Paddle.js
بيانات الأداء
آلة | نموذج | إطارا في الثانية | الخلفية |
---|
ايفون 7 | بليزفيس | 12 | ويب جي إل |
ايفون 7 | بليزفيس | 1 | واسم |
مي 8 | بليزفيس | 20 | ويب جي إل |
مي 8 | بليزفيس | 17 | واسم |
مي 8 | FaceLandMarks | 20 | ويب جي إل |
مي 8 | FaceLandMarks | 10 | واسم |
مي 8 | بوز نت | 20 | ويب جي إل |
مي 8 | بوز نت | 5 | واسم |
مي 8 | وضع اليد | 14 | ويب جي إل |
مي 8 | وضع اليد | 1 | واسم |
مي 8 | موف نت | 14 | ويب جي إل |
مي 8 | موف نت | 2.5 | واسم |
ملاحظة: WASM هو إصدار غير SIMD. يقوم برنامج Android WeChat بتشغيل SIMD WASM ويبلغ عن خطأ، على الرغم من إمكانية تشغيله، إلا أن هناك العديد من المشكلات في WeChat وIOS. يوصى باستخدام عرض الويب أو عرض الويب. GL على الأقل يفي بالمعايير ولا توجد مشاكل في الذاكرة.
سؤال
- سيتم تعليق إصدار ios غير المتزامن مع انتظار غير متزامن، لذلك يتم تغييره إلى إصدار المزامنة، وقد تحدث أيضًا استخدامات أخرى لانتظار غير متزامن (يتم محاكاة الوعد ضمن IOS بواسطة setTimeout، راجع حالة دعم JavaScript الصغيرة حاليًا ). من الأسهل أن تتعطل التهيئة ضمن نظام التشغيل iOS
- Wasm أفضل من webgl فقط على هواتف هواوي المحمولة (2.7 نتيجة اختبار)
تجربة التحسين
- استخدم FrameAdapter لتخطي الإطارات ديناميكيًا
- قبل معالجة البيانات رسميًا، قم بتسخين إطار فارغ وتجميع التظليل المستخدم.
- استخدم ملف التعريف لإنشاء tfjs مخصص لتحسين حجم الحزمة
- يمكن إعادة استخدام إطار الكاميرا الصغير ArrayBuffer الخاص بـ WeChat، وقد يتم تحديث المحتوى بعد اكتمال الاستدلال، لذلك يتم رسم الخلفية أولاً، ثم يتم رسم نتيجة الاستدلال. والحل الآخر هو عمل نسخة عند الحصول على إطار الكاميرا 0~5 مللي ثانية لـ iPhone7، معظمها 1 مللي ثانية)
المهام
- النتيجة: تم إجراء تجميل واجهة المستخدم لإظهار العرض العادي
- Face-api.js
- يتم تعميم عملية الإحماء، ويتم إجراء عملية الإحماء بناءً على السجل المسجلKernel
يجري
> pnpm i / npm i / yarn
> npm run dev
# 使用小程序开发工具打开,替换appid为测试appid,不校验域名
# 使用custom tfjs编译,例子是仅仅blazeface可用tf + webgl backend 小程序包从 985KB下降到534KB (js大概下降234KB)
> npm run make-custom
> npm run build-custom
استخدم custom_tfjs لتحسين حجم الحزمة بشكل أكبر
يرجى الرجوع إلى
- [962 كيلو -> 347 كيلو] TensorflowJS TreeShaking بناءً على نتائج وقت التشغيل
- https://github.com/mattsoulanille/tfjs_custom_module_demo
- https://github.com/deepkolos/tfjs-treeshaking-test
نماذج tfjs غير متزامنة مع طريقة المزامنة
ما عليك سوى تغيير الطريقة غير المتزامنة لقراءة البيانات، مثل Tensor.array()
إلى Tensor.arraySync()
أو Tensor.buffer()
إلى Tensor.bufferSync()
، ثم قم بتغيير async
و await
و Promise.all
و الكلمات الرئيسية الأخرى فقط قم بإزالتها
راعي
إذا كان المشروع مفيدًا لك أو يحتاج إلى التكيف، فلا تتردد في تقديم الإكرامية.