paint-brush
اختبار تطبيق التعرف على الوجه ICP: النتيجة النهائية سوف تفاجئكبواسطة@induction
479 قراءة٪ s
479 قراءة٪ s

اختبار تطبيق التعرف على الوجه ICP: النتيجة النهائية سوف تفاجئك

بواسطة Vision NP9m2024/09/21
Read on Terminal Reader

طويل جدا؛ ليقرأ

يعمل بروتوكول الإنترنت الحاسوبي (ICP) على تحقيق اللامركزية في الذكاء الاصطناعي من خلال تمكين التطبيقات من العمل على بنية تحتية سحابية لامركزية بالكامل. ويضمن هذا النوع من نهج اللامركزية أن تكون عمليات الذكاء الاصطناعي شفافة ومقاومة للرقابة وأقل عرضة لنقاط الفشل الفردية. وسوف نتحقق من كيفية عمل اللامركزية في الذكاء الاصطناعي بشكل موضوعي من خلال العروض التوضيحية الدقيقة لكل خطوة.
featured image - اختبار تطبيق التعرف على الوجه ICP: النتيجة النهائية سوف تفاجئك
Vision NP HackerNoon profile picture
0-item
1-item

كانت السنوات القليلة الماضية مميزة بالنسبة لنماذج الذكاء الاصطناعي القائمة على الخادم المركزي مثل ChatGPT وGemini من Google وCopilot من Microsoft وما إلى ذلك. لا شك أن مثل هذه النماذج من الذكاء الاصطناعي قد غيرت العديد من الجوانب. ولكن من ناحية أخرى، لديها بعض الجوانب السلبية. ربما سمعت أيضًا عن العديد من حالات انقطاع الخدمة في ChatGPT .


إن النماذج التي تعتمد على الخادم المركزي معرضة لخطر كبير يتمثل في نقطة فشل واحدة. ولكن الآن تغير الزمن. كما تعمل تقنية البلوك تشين على إحداث ثورة في العديد من المجالات، بما في ذلك الذكاء الاصطناعي.


يعمل بروتوكول الإنترنت الحاسوبي (ICP) الذي طورته شركة Dfinity على تحقيق اللامركزية في مجال الذكاء الاصطناعي من خلال تمكين تطبيقات الذكاء الاصطناعي من العمل على بنية تحتية سحابية لامركزية بالكامل. والأمر الفريد هو أن بروتوكول الإنترنت الحاسوبي يسمح بنشر نماذج وخدمات الذكاء الاصطناعي عبر شبكة من مراكز البيانات المستقلة. ويضمن هذا النوع من نهج اللامركزية أن تكون عمليات الذكاء الاصطناعي شفافة ومقاومة للرقابة وأقل عرضة لنقاط الفشل الفردية.


تتناول هذه المقالة اختبارًا عمليًا لتطبيق التعرف على الوجه DApp الذي يعتمد على ICP. وسنتحقق من كيفية عمل اللامركزية في الذكاء الاصطناعي بشكل موضوعي من خلال عروض توضيحية دقيقة لكل خطوة. لقد حاولنا تقسيم المفاهيم التقنية المعقدة إلى دروس تعليمية سهلة الفهم، لذا فلنبدأ.


تم تنفيذ عملية تطوير المشروع واختباره بالكامل على جهاز يعمل بنظام Windows، لذا فنحن نقوم بإنشاء نظام فرعي Linux هنا لأن العديد من أدوات تطوير ICP والبرامج النصية مُحسّنة للبيئات المستندة إلى Linux.


📥المتطلبات الأساسية:

  • نظام التشغيل : Windows مع نظام Windows الفرعي لنظام Linux (WSL) المثبت. يُرجى الرجوع إلى هذا الدليل لمعرفة كيفية التثبيت.


  • معرفة :

    • فهم أساسي لـ JavaScript و React.js و Rust و WebAssembly .

    • التعرف على مفاهيم تطوير الويب.


  • أدوات :

    • DFX SDK (إطار عمل تطوير ICP) .
    • Node.js و npm.
    • الصدأ: قم بتثبيت سلسلة أدوات الصدأ.
    • Git: تحتاج إليه لاستنساخ المستودع. يرجى اتباع إرشاداتهم لتثبيته.
    • wasi2ic: أداة لتحويل وحدة Wasm المعتمدة على WASI لتشغيلها على ICP.
    • wasm-opt: مُحسِّن WebAssembly.


📥إعداد بيئة التطوير:

  1. افتح محطة WSL الخاصة بك، وقم بتشغيل الأمر التالي لتثبيت DFX:
 sh -ci "$(curl -fsSL https://smartcontracts.org/install.sh)"


👉للتأكيد على التثبيت:

 dfx –version


  1. قم بتثبيت Rust عن طريق تشغيل الأمر التالي:
 curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh source $HOME/.cargo/env

👉للتحقق من التثبيت، قم بتشغيل:

 rustc –version


3. قم بتثبيت Node.js عن طريق تشغيل الأمر التالي:

 curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash - sudo apt install -y nodejs


👉للتحقق من التثبيت، قم بتشغيل:

 node -v npm -v


  1. تثبيت wasi2ic: قم أولاً باستنساخ مستودع GitHub الخاص بهم.
 git clone https://github.com/wasm-forge/wasi2ic.git cd wasi2ic cargo install --path .


👉للتحقق من التثبيت، قم بتشغيل:

 echo $PATH wasi2ic –help


  1. تثبيت wasm-opt:
 cargo install wasm-opt


📥استنساخ المشروع:

نحن نستخدم مستودع GitHub الخاص بالمشروع لأغراض الاختبار. يمكنك التحقق من مستودعهم هنا .


1. استنسخ المستودع وانتقل إلى مشروع التعرف على الوجوه:

 git clone https://github.com/dfinity/examples.git cd examples/rust/face-recognition

ملاحظة: يمكنك الوصول إلى ملفات نظام Linux الفرعي الخاص بك عن طريق البحث عن \\wsl$ في مستكشف الملفات أو ميزة البحث المباشر في نظام التشغيل Windows.


📥تحميل نماذج التعرف على الوجه


  1. تنزيل نموذج اكتشاف الوجه:

سيتم استخدام نموذج اكتشاف الوجه لاكتشاف الوجوه في الصورة. قم بتشغيل:

 ./download-face-detection-model.sh


  1. تنزيل نموذج التعرف على الوجه:

يجب عليك تصدير النموذج بتنسيق ONNX باستخدام PyTorch و facenet-pytorch . ابدأ بتثبيت مكتبات Python التالية:

 pip install torch facenet-pytorch onnx


ملاحظة: إذا لم يكن Python مثبتًا بالفعل في نظامك الفرعي، فحاول تثبيت Python و pip من هنا: https://packaging.python.org/en/latest/tutorials/installing-packages/ .


  1. تصدير نموذج ONNX:

في ملف Python أو shell، قم بتشغيل ما يلي: اكتب python3 في المحطة الطرفية ثم قم بتشغيل الكود التالي. بعد التنفيذ، اكتب exit().

 import torch import facenet_pytorch resnet = facenet_pytorch.InceptionResnetV1(pretrained='vggface2').eval() input = torch.randn(1, 3, 160, 160) torch.onnx.export(resnet, input, "face-recognition.onnx", verbose=False, opset_version=11)


سيؤدي هذا إلى إنشاء ملف face-recognition.onnx . انسخه إلى جذر المستودع الخاص بك.


📥بناء

الآن حان الوقت لبناء المشروع. قم بتشغيل:

 dfx start --background dfx deploy


إذا سارت الأمور على ما يرام، فستتمكن من رؤية عنوان URL للواجهة الأمامية في المحطة الطرفية.

الشكل 1. رسالة النشر الناجح في المحطات الطرفية التي تحتوي على عناوين URL للواجهة الأمامية

ملاحظة: إذا واجهت بعض الأخطاء بسبب عدم وجود عميل، فحاول تثبيت webpack و webpack-cli عالميًا باستخدام npm:

sudo npm install -g webpack webpack-cli


والاعتماديات المحلية:

npm install


📥أنشئ العلبة، ثم قم بتشغيلها:

 dfx canister create backend


يمكنك رؤية الرسالة التالية في المحطة الطرفية.

الشكل 2. الرسالة المعروضة في المحطة مع إشارة إلى إنشاء العلبة بنجاح

👉الآن، يمكنك التحقق من حالة الواجهة الخلفية للعلبة:

 dfx canister status backend


يمكنك رؤية شيء مثل هذا في المحطة.

الشكل 3. حالة العلبة الخلفية

📥تحميل أجزاء من النماذج

نظرًا لأن نماذج الذكاء الاصطناعي كبيرة الحجم عادةً، فلا يمكن تضمينها مباشرةً في ملف WebAssembly (Wasm) الثنائي لعقد ذكي. بدلاً من ذلك، يجب تحميل هذه النماذج بشكل منفصل. للتعامل مع هذا، طورت DecideAI أداة لتحميل النماذج بشكل تدريجي. يمكنك العثور على الأداة هنا: ic-file-uploader .


👉لتثبيت الأداة، استخدم الأمر التالي:

 cargo install ic-file-uploader


بمجرد التثبيت، يمكنك استخدام البرنامج النصي upload-models-to-canister.sh من خلال تشغيل ./upload-models-to-canister.sh في المحطة الطرفية لتحميل النماذج. يقوم هذا البرنامج النصي بتنفيذ الخطوات التالية:


  1. يقوم بمسح نماذج الذكاء الاصطناعي الموجودة من العلبة:
 dfx canister call backend clear_face_detection_model_bytes dfx canister call backend clear_face_recognition_model_bytes


  1. تحميل النماذج الجديدة بشكل تدريجي:
 ic-file-uploader backend append_face_detection_model_bytes version-RFB-320.onnx ic-file-uploader backend append_face_recognition_model_bytes face-recognition.onnx


  1. وأخيرًا، يقوم البرنامج النصي بإعداد النماذج التي تم تحميلها:
 dfx canister call backend setup_models


الآن، يمكنك التفاعل مع الواجهة الأمامية باستخدام عنوان URL الذي تلقيته في المحطة الطرفية أثناء تنفيذ أمر dfx deploy (الشكل 1)


الشكل 4. واجهة واجهة المستخدم للتطبيق اللامركزي مع صورة تم تحميلها لنيكولا تيسلا. يظهر مربع حوار لإضافة اسم بعد النقر على زر "إضافة شخص"


بمجرد قيامك بتحميل صورة بالنقر فوق شعار ICP، حاول إضافة اسم شخص بالنقر فوق الزر " إضافة شخص " لتدريب النموذج.

يكتشف الوجه بعلامة مستطيلة أوتوماتيكية في الوجه. بمجرد تعيين الاسم، يعرض رسالة تفيد بنجاح الإضافة كما يلي:

الشكل 5. الرسالة التي تظهر بعد إضافة الاسم

يتذكر الذكاء الاصطناعي الاسم الذي حددته للوجه حتى تتمكن من اختبار ما إذا كان يكتشف وجوه صور مختلفة لنفس الشخص أم لا. هنا، يتم التقاط صور مختلفة لنيكولا تيسلا. لتحميل صورة أخرى لاكتشاف الوجه، أعد تحميل الصفحة، ثم انقر فوق خيار " التعرف ". دعنا نرى؛ لقد حدد بنجاح وجه نيكولا تيسلا مع اختلاف طفيف عن الوجه الأولي.

الشكل 6. نجح الذكاء الاصطناعي في اكتشاف وجه نيكولا تيسلا من الصورة الأخرى بفارق 0.68

هنا، تم إرسال صورة تم إنشاؤها بواسطة الذكاء الاصطناعي لنيكولا تيسلا إلى النموذج، والمثير للدهشة، أنها تمكنت من اكتشاف الوجه بدقة، دعنا نرى هنا:

الشكل 7. تم اكتشاف وجه نيكولا تيسلا الذي تم إنشاؤه بواسطة الذكاء الاصطناعي بواسطة dApp بفارق 0.77 فقط

لقد تم التحقق بنجاح من أن تطبيق التعرف على الوجوه ICP يعمل بشكل مثالي حيث نجح في اكتشاف وجوه نيكولا تيسلا. يمكنك تجربته بنفسك.


نظرًا لأنه مخصص لأغراض الاختبار، فإن واجهة المستخدم والميزات محدودة. يمكنك إضافة ميزات وخدمات إضافية إذا كنت تتعجل في بناء تطبيق dApp جاهز للإنتاج على ICP لأغراض التعرف على الوجوه. يمكنك تجربة الميزات التالية مع أمثلة التعليمات البرمجية. يرجى ملاحظة أنه يجب عليك إضافة أو تخصيص التعليمات البرمجية وفقًا لمتطلباتك.


📥إليك بعض النصائح:

  1. إضافة مصادقة المستخدم باستخدام هوية الإنترنت

إذا أضفت هذه الميزة إلى هذا التطبيق اللامركزي، فلن يتمكن من الوصول إليه سوى المستخدمين المسجلين. وإليك كيفية إضافة المصادقة باستخدام Internet Identity. يمكنك دمج Internet Identity عن طريق إضافة زر تسجيل الدخول إلى Internet Identity على الصفحة الرئيسية. بمجرد تسجيل دخول المستخدم، يتم عرض لوحة معلومات مخصصة.


كيفية الإضافة:

👉تثبيت تبعيات هوية الإنترنت:

 npm install @dfinity/agent @dfinity/auth-client


👉أضف الكود التالي إلى الواجهة الأمامية لديك لتمكين المصادقة:

 import { AuthClient } from "@dfinity/auth-client"; async function init() { const authClient = await AuthClient.create(); if (await authClient.isAuthenticated()) { // Display dashboard or personalized content } else { authClient.login({ identityProvider: "https://identity.ic0.app/#authorize", onSuccess: () => { // Once authenticated, display personalized features }, }); } } init();


👉بعد تسجيل الدخول، يمكن للمستخدم رؤية سجل الوجوه التي تم التعرف عليها أو غيرها من البيانات الشخصية.


  1. تحميل الصور باستخدام خاصية السحب والإفلات

اجعل وظيفة تحميل الصور وتجربتها أكثر سلاسة من خلال السماح للمستخدمين بسحب الصور وإفلاتها لاكتشاف الوجه.


كيفية الإضافة :

👉استخدم وظيفة السحب والإفلات في HTML5:

 <div id="drop-area"> <p>Drag and drop an image here or click to select</p> <input type="file" id="file-input" hidden /> </div>


👉أضف JavaScript للتعامل مع عملية السحب والإفلات:

 const dropArea = document.getElementById("drop-area"); dropArea.addEventListener("dragover", (event) => { event.preventDefault(); }); dropArea.addEventListener("drop", (event) => { event.preventDefault(); const files = event.dataTransfer.files; // Process the uploaded image });


👉تأكد من تكامله بسلاسة مع وظيفة اكتشاف الوجه الحالية لديك.


  1. شريط التقدم للتعرف على الوجه

ستكون ميزة عرض شريط التقدم عند تحميل صورة لإعلام المستخدمين بأن النظام يقوم بمعالجة الصورة ميزة جذابة.


كيفية الإضافة:

👉استخدم شريط تقدم HTML بسيطًا:

 <div id="progress-bar"> <div id="progress-fill" style="width: 0%;"></div> </div>


👉تحديث شريط التقدم ديناميكيًا أثناء معالجة الصورة:

 const progressFill = document.getElementById("progress-fill"); let progress = 0; const interval = setInterval(() => { progress += 10; progressFill.style.width = `${progress}%`; if (progress === 100) { clearInterval(interval); } }, 100); // Simulate progress every 100ms


  1. إشعارات لنتائج التعرف على الوجه

يمكنك إضافة ميزة لتوفير إشعارات في الوقت الفعلي بمجرد اكتمال التعرف على الوجه، إما عبر نافذة منبثقة أو إشعار منبثق.


كيفية الإضافة :

👉يمكنك استخدام مكتبة خفيفة الوزن مثل Toastr أو إشعارات Toast المخصصة.

 <div id="notification" class="hidden">Face Recognition Complete!</div>


👉في JavaScript الخاص بك، قم بإظهار الإشعار عندما يقوم البرنامج الخلفي بإرجاع النتيجة:

 function showNotification(message) { const notification = document.getElementById("notification"); notification.innerHTML = message; notification.classList.remove("hidden"); setTimeout(() => { notification.classList.add("hidden"); }, 3000); // Hide notification after 3 seconds } // Call this after face recognition is done showNotification("Face detected and recognized!");


📥الخطوات النهائية: إعادة البناء والنشر

بعد تنفيذ هذه الميزات الجديدة:


👉إعادة بناء المشروع:

 dfx build


👉النشر على شبكة الاختبار: للاختبار أولاً قبل التسرع في الانتقال إلى الشبكة الرئيسية.

 dfx deploy --network ic


هذه بعض الأمثلة والأفكار لأغراض العرض التوضيحي. يمكنك اختبارها بنفسك وإخبارنا بتقدمك في قسم التعليقات. كما يمكنك القيام بالمزيد باستخدامها لإضفاء اللامركزية على الذكاء الاصطناعي على ICP.

خاتمة:

لقد نجحنا في اختبار تطبيق التعرف على الوجوه اللامركزي على ICP، وهو محاولة حقيقية لإضفاء اللامركزية على الذكاء الاصطناعي. ووفقًا لاختبارنا، كانت استجابات التطبيق اللامركزي سريعة، وكان اكتشاف الوجوه دقيقًا. يمكن للبنية الأساسية الفريدة لـ ICP أن تساعدنا في أداء مهام معقدة مثل التعرف على الوجوه دون الاعتماد على أنظمة مركزية.


لا يعمل هذا على تعزيز الأمان والخصوصية فحسب، بل يُظهر أيضًا إمكانية تطور تطبيقات الذكاء الاصطناعي اللامركزي بسرعة. ومع استمرار تطوير ICP، فإن القدرة على نشر نماذج كبيرة وإجراء استدلالات الذكاء الاصطناعي على السلسلة يمكن أن تفتح إمكانيات جديدة للابتكار. يمكننا أن نتوقع أن يكون الذكاء الاصطناعي اللامركزي لاعباً رئيسياً في مستقبل الحلول الجديرة بالثقة والقابلة للتطوير. كما يتمتع المطورون بفرص جديدة لإنشاء المزيد من المنتجات والخدمات على ICP.