Последните няколко години бяха специални за централизирани сървърно-базирани 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 .
Запознаване с концепциите за уеб разработка.
инструменти :
📥Настройте средата за разработка:
sh -ci "$(curl -fsSL https://smartcontracts.org/install.sh)"
👉За да потвърдите инсталацията:
dfx –version
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
git clone https://github.com/wasm-forge/wasi2ic.git cd wasi2ic cargo install --path .
👉За да проверите инсталацията, стартирайте:
echo $PATH wasi2ic –help
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.
📥Изтеглете модели за разпознаване на лица
Моделът за разпознаване на лица ще се използва за откриване на лица в изображение. тичам:
./download-face-detection-model.sh
Трябва да експортирате модела във формат ONNX с помощта на PyTorch
и facenet-pytorch
. Започнете с инсталирането на тези библиотеки на Python:
pip install torch facenet-pytorch onnx
Забележка: Ако Python все още не е инсталиран във вашата подсистема, опитайте да инсталирате Python и pip от тук: https://packaging.python.org/en/latest/tutorials/installing-packages/ .
Във файл или обвивка на 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 в терминала.
Забележка: Ако срещнете някаква грешка поради липсващ клиент, опитайте да инсталирате webpack
и webpack-cli
глобално с помощта на npm:
sudo npm install -g webpack webpack-cli
И локални зависимости:
npm install
📥Създайте кутията, стартирайте:
dfx canister create backend
Можете да видите следното съобщение в терминала.
👉Сега можете да проверите състоянието на бекенда на кутията:
dfx canister status backend
Можете да видите нещо подобно в терминала.
📥Чанк качване на модели
Тъй като AI моделите обикновено са големи. Те не могат да бъдат вградени директно в двоичния файл на WebAssembly (Wasm) на интелигентен договор. Вместо това тези модели трябва да се качват отделно. За да се справи с това, DecideAI разработи инструмент за постепенно качване на модели. Можете да намерите инструмента тук: ic-file-uploader .
👉За да инсталирате инструмента, използвайте следната команда:
cargo install ic-file-uploader
Веднъж инсталиран, можете да използвате скрипта upload-models-to-canister.sh
, като стартирате ./upload-models-to-canister.sh
в терминала, за да качите моделите. Този скрипт изпълнява следните стъпки:
dfx canister call backend clear_face_detection_model_bytes dfx canister call backend clear_face_recognition_model_bytes
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
dfx canister call backend setup_models
Сега можете да взаимодействате с Frontend, като използвате URL адреса, който сте получили в терминала, докато командата dfx deploy
(Фигура 1)
След като качите изображение, като щракнете върху логото на ICP, опитайте да добавите име на човек, като щракнете върху бутона „ Добавяне на човек “, за да обучите модела.
Той разпознава лицето с автоматичен правоъгълен знак в лицето. След като зададете името, то показва съобщение за успешно добавяне, както следва:
AI запомня името, което сте задали за лицето, така че можете да тествате дали разпознава лицата на различни снимки на едно и също лице или не. Тук са направени различни снимки на Никола Тесла. За да качите друга снимка за разпознаване на лица, презаредете страницата и след това щракнете върху опцията „ Разпознаване “. Да видим; той успешно идентифицира лицето на Никола Тесла с малка разлика от първоначалното.
Тук генерирана от изкуствен интелект снимка на Никола Тесла е изпратена на модела и изненадващо, той е открил точно лицето, нека видим тук:
Той успешно потвърди, че ICP Face Recognizing DApp работи перфектно, тъй като успешно откри лицата на Никола Тесла. Можете да го опитате сами.
Тъй като е за тестови цели, потребителският интерфейс и функциите са ограничени. Можете да добавите допълнителни функции и услуги, ако бързате да изградите готовото за производство dApp на ICP за целите на разпознаването на лица. Можете да опитате следните функции с примерни кодове. Моля, обърнете внимание, че трябва да добавите или персонализирате кодове според вашите изисквания.
📥Ето няколко съвета за вас:
Ако добавите тази функция към това 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();
👉След като влезе, потребителят може да види своята история на разпознати лица или други персонализирани данни.
Направете функцията за качване на изображения и изживяването по-гладко, като позволите на потребителите да плъзгат и пускат изображения за разпознаване на лица.
Как да добавите :
👉Използвайте функцията за плъзгане и пускане на 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 });
👉Уверете се, че се интегрира гладко със съществуващата ви функция за разпознаване на лица.
Ще бъде интересна функция за показване на лента за напредъка, когато се качи изображение, за да информира потребителите, че системата обработва изображението.
Как да добавите:
👉Използвайте проста 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
Можете да добавите функция за предоставяне на известия в реално време, след като разпознаването на лицето приключи, чрез модално или тост известие.
Как да добавите :
👉Можете да използвате лека библиотека като 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.