paint-brush
Тестване на ICP Face Recognition DApp: Крайният резултат ще ви изненадаот@induction
461 показания
461 показания

Тестване на ICP Face Recognition DApp: Крайният резултат ще ви изненада

от Vision NP9m2024/09/21
Read on Terminal Reader

Твърде дълго; Чета

Интернет компютърният протокол (ICP) работи за децентрализиране на AI, като позволява на приложенията да работят върху напълно децентрализирана облачна инфраструктура. Този вид подход за децентрализация гарантира, че операциите с ИИ са прозрачни, устойчиви на цензура и по-малко податливи на единични точки на повреда. Ще проверим как децентрализацията на AI работи обективно с фини демонстрации на всяка стъпка.
featured image - Тестване на ICP Face Recognition DApp: Крайният резултат ще ви изненада
Vision NP HackerNoon profile picture
0-item
1-item

Последните няколко години бяха специални за централизирани сървърно-базирани AI модели като ChatGPT, Gemini на Google, Copilot на Microsoft и т.н. Няма съмнение, че подобни AI модели са трансформирали толкова много аспекти. Но от друга страна, те имат някои недостатъци. Вероятно сте чували и за няколко прекъсвания на ChatGPT .


Централизираните сървърно базирани модели са изложени на огромен риск от единична точка на повреда. Но сега времето се промени. Технологията Blockchain също революционизира много области, включително изкуствения интелект (AI).


Интернет компютърният протокол (ICP), разработен от Dfinity, работи за децентрализиране на AI, като позволява на AI приложенията да работят върху напълно децентрализирана облачна инфраструктура. Уникалното е, че ICP позволява AI модели и услуги да бъдат разгърнати в мрежа от независими центрове за данни. Този вид подход за децентрализация гарантира, че операциите с ИИ са прозрачни, устойчиви на цензура и по-малко податливи на единични точки на повреда.


Тази статия е в контраст с практическия тест Face Recognition DApp , който се основава на ICP. Ще проверим как децентрализацията на AI работи обективно с фини демонстрации на всяка стъпка. Опитахме се да разделим сложните технически концепции в лесни за разбиране уроци, така че нека да започнем.


Целият процес на разработване и тестване на проекта беше извършен на машина, базирана на Windows, така че ние създаваме Linux подсистема тук, защото много ICP инструменти за разработка и скриптове са оптимизирани за Linux-базирани среди.


📥Предпоставки:

  • Операционна система : Windows с инсталирана Windows подсистема за Linux (WSL). Моля, вижте това ръководство за инсталиране.


  • Знания :

    • Основно разбиране на JavaScript , React.js , Rust и WebAssembly .

    • Запознаване с концепциите за уеб разработка.


  • инструменти :

    • DFX SDK (ICP рамка за разработка) .
    • Node.js и npm.
    • Rust: Инсталирайте инструменталната верига Rust.
    • Git: Имате нужда от него, за да клонирате хранилището. Моля, предпочитайте тяхното ръководство, за да го инсталирате.
    • wasi2ic: Инструмент за преобразуване на WASI-зависим Wasm модул за работа на 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$ във File Explorer или функцията за директно търсене в Windows OS.


📥Изтеглете модели за разпознаване на лица


  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 изпълнете следното: Въведете 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 адреса на Frontend в терминала.

Фигура 1. Съобщение за успешно внедряване в терминалите с URL адреси на Frontend

Забележка: Ако срещнете някаква грешка поради липсващ клиент, опитайте да инсталирате webpack и webpack-cli глобално с помощта на npm:

sudo npm install -g webpack webpack-cli


И локални зависимости:

npm install


📥Създайте кутията, стартирайте:

 dfx canister create backend


Можете да видите следното съобщение в терминала.

Фигура 2. Съобщение, изложено в терминала с индикация за успешно създаване на кутия

👉Сега можете да проверите състоянието на бекенда на кутията:

 dfx canister status backend


Можете да видите нещо подобно в терминала.

Фигура 3. Бекенд за състоянието на кутията

📥Чанк качване на модели

Тъй като AI моделите обикновено са големи. Те не могат да бъдат вградени директно в двоичния файл на WebAssembly (Wasm) на интелигентен договор. Вместо това тези модели трябва да се качват отделно. За да се справи с това, DecideAI разработи инструмент за постепенно качване на модели. Можете да намерите инструмента тук: ic-file-uploader .


👉За да инсталирате инструмента, използвайте следната команда:

 cargo install ic-file-uploader


Веднъж инсталиран, можете да използвате скрипта upload-models-to-canister.sh , като стартирате ./upload-models-to-canister.sh в терминала, за да качите моделите. Този скрипт изпълнява следните стъпки:


  1. Изчиства съществуващите AI модели от кутията:
 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


Сега можете да взаимодействате с Frontend, като използвате URL адреса, който сте получили в терминала, докато командата dfx deploy (Фигура 1)


Фигура 4. Frontend интерфейс на dApp с качена снимка на Никола Тесла. Появява се диалогов прозорец за добавяне на име след щракване върху бутона „Добавяне на човек“.


След като качите изображение, като щракнете върху логото на ICP, опитайте да добавите име на човек, като щракнете върху бутона „ Добавяне на човек “, за да обучите модела.

Той разпознава лицето с автоматичен правоъгълен знак в лицето. След като зададете името, то показва съобщение за успешно добавяне, както следва:

Фигура 5. Съобщение, което се показва след добавяне на името

AI запомня името, което сте задали за лицето, така че можете да тествате дали разпознава лицата на различни снимки на едно и също лице или не. Тук са направени различни снимки на Никола Тесла. За да качите друга снимка за разпознаване на лица, презаредете страницата и след това щракнете върху опцията „ Разпознаване “. Да видим; той успешно идентифицира лицето на Никола Тесла с малка разлика от първоначалното.

Фигура 6. AI успешно откри лицето на Никола Тесла от друга снимка с 0,68 разлика

Тук генерирана от изкуствен интелект снимка на Никола Тесла е изпратена на модела и изненадващо, той е открил точно лицето, нека видим тук:

Фигура 7. Генерирано от AI лице на Никола Тесла е открито от dApp само с 0,77 разлика

Той успешно потвърди, че ICP Face Recognizing DApp работи перфектно, тъй като успешно откри лицата на Никола Тесла. Можете да го опитате сами.


Тъй като е за тестови цели, потребителският интерфейс и функциите са ограничени. Можете да добавите допълнителни функции и услуги, ако бързате да изградите готовото за производство dApp на ICP за целите на разпознаването на лица. Можете да опитате следните функции с примерни кодове. Моля, обърнете внимание, че трябва да добавите или персонализирате кодове според вашите изисквания.


📥Ето няколко съвета за вас:

  1. Добавете удостоверяване на потребител с интернет идентичност

Ако добавите тази функция към това dApp, само регистрирани потребители имат достъп до DApp. Ето как можете да добавите удостоверяване с помощта на интернет идентичност. Можете да интегрирате 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 или персонализирани тост известия.

 <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


Това са няколко примера и идеи за демонстрационни цели. Можете да ги тествате сами и да ни уведомите за напредъка си в секцията за коментари. Освен това можете да направите повече с него, за да децентрализирате AI върху ICP.

Заключение:

Успешно тествахме DApp за разпознаване на лица на ICP, което е истински опит за децентрализиране на AI (DeAI). Според нашите тестове отговорите на DApp бяха бързи и разпознаването на лица беше точно. Уникалната инфраструктура на ICP може да ни помогне при изпълнението на сложни задачи като разпознаване на лица, без да разчитаме на централизирани системи.


Той не само подобрява сигурността и поверителността, но също така показва потенциала за бързо развитие на децентрализираните AI (DeAI) приложения. Тъй като ICP продължава да се развива, способността за внедряване на големи модели и извършване на AI изводи по веригата може да отвори нови възможности за иновации. Можем да очакваме децентрализираният AI да бъде ключов играч в бъдещето на надеждни и мащабируеми решения. Разработчиците също имат нови възможности за създаване на повече продукти и услуги на ICP.


L O A D I N G
. . . comments & more!

About Author

Vision NP HackerNoon profile picture
Vision NP@induction
Die-Hard fan of Nikola Tesla.

ЗАКАЧВАЙТЕ ЕТИКЕТИ

ТАЗИ СТАТИЯ Е ПРЕДСТАВЕНА В...