ICP veido atpažinimo DApp testavimas: galutinis rezultatas jus nustebins

ICP veido atpažinimo DApp testavimas: galutinis rezultatas jus nustebins


Pastarieji keleri metai buvo ypatingi centralizuotiems serverių AI modeliams, tokiems kaip „ChatGPT“, „Google Gemini“, „Microsoft Copilot“ ir kt. Neabejotina, kad tokie AI modeliai pakeitė tiek daug aspektų. Tačiau, kita vertus, jie turi tam tikrų minusų. Tikriausiai jūs taip pat girdėjote apie kelis „ChatGPT“ nutrūkimus.

Centralizuotiems serverių modeliams gresia didžiulė gedimo rizika. Tačiau dabar laikas pasikeitė. Blockchain technologija taip pat sukelia revoliuciją daugelyje sričių, įskaitant dirbtinį intelektą (AI).

Interneto kompiuterio protokolas (ICP), kurį sukūrė „Dfinity“, decentralizuoja dirbtinį intelektą, leisdamas dirbtinio intelekto programoms veikti visiškai decentralizuotoje debesų infrastruktūroje. Unikalus dalykas yra tai, kad ICP leidžia dirbtinio intelekto modelius ir paslaugas diegti nepriklausomų duomenų centrų tinkle. Toks decentralizacijos metodas užtikrina, kad dirbtinio intelekto operacijos būtų skaidrios, atsparios cenzūrai ir mažiau linkusios į atskirus gedimus.

Šis straipsnis prieštarauja praktiniam testui Veido atpažinimo DApp kuri remiasi ICP. Mes patikrinsime, kaip AI decentralizacija veikia objektyviai, subtiliai demonstruodami kiekvieną žingsnį. Bandėme suskaidyti sudėtingas technines sąvokas į lengvai suprantamas pamokas, todėl pradėkime.

Visi projekto kūrimo ir testavimo procesai buvo vykdomi Windows pagrindu veikiančioje mašinoje, todėl čia kuriame Linux posistemį, nes daugelis ICP kūrimo įrankių ir scenarijų yra optimizuoti Linux pagrindu veikiančioms aplinkoms.

📥 Būtinos sąlygos:

📥Sukurkite kūrimo aplinką:

  1. Atidarykite WSL terminalą ir paleiskite šią komandą, kad įdiegtumėte DFX:
sh -ci "$(curl -fsSL https://smartcontracts.org/install.sh)"

👉 Norėdami patvirtinti diegimą:

 dfx –version
  1. Įdiekite Rust vykdydami šią komandą:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env

👉 Norėdami patikrinti diegimą, paleiskite:

rustc –version

3. Įdiekite Node.js vykdydami šią komandą:

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

👉Norėdami patikrinti diegimą, paleiskite:

node -v npm -v 
  1. Įdiekite wasi2ic: pirmiausia klonuokite jų „GitHub“ saugyklą.
git clone https://github.com/wasm-forge/wasi2ic.git
cd wasi2ic
cargo install --path .

👉Norėdami patikrinti diegimą, paleiskite:

echo $PATH 

wasi2ic –help 
  1. Įdiekite wasm-opt:
cargo install wasm-opt

📥Klonuoti projektą:

Testavimo tikslais naudojame projekto „GitHub“ saugyklą. Jų saugyklą galite patikrinti čia.

1. Klonuokite saugyklą ir eikite į veido atpažinimo projektą:

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

Pastaba: Savo Linux posistemio failus galite pasiekti ieškodami \\wsl$ „File Explorer“ arba tiesioginės paieškos funkcija „Windows“ OS.

📥Atsisiųskite veido atpažinimo modelius

  1. Atsisiųskite veido aptikimo modelį:

Veido aptikimo modelis bus naudojamas veidus aptikti vaizde. Vykdyti:

./download-face-detection-model.sh
  1. Atsisiųskite veido atpažinimo modelį:

Turite eksportuoti modelį ONNX formatu naudodami PyTorch ir facenet-pytorch. Pradėkite diegdami šias Python bibliotekas:

pip install torch facenet-pytorch onnx
  1. Eksportuokite ONNX modelį:

Python faile arba apvalkale paleiskite šiuos veiksmus: Terminale įveskite python3, tada paleiskite šį kodą. Po vykdymo įveskite 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)

Tai sugeneruos face-recognition.onnx failą. Nukopijuokite jį į savo saugyklos šaknį.

📥 Sukurti

Dabar atėjo laikas kurti projektą. Vykdyti:

dfx start --background

dfx deploy

Jei viskas vyksta teisingai, terminale galite pamatyti Frontend URL.

1 pav. Pranešimas apie sėkmingą diegimą terminaluose su Frontend URL1 pav. Pranešimas apie sėkmingą diegimą terminaluose su Frontend URL

Pastaba: Jei susiduriate su klaida dėl trūkstamo kliento, pabandykite įdiegti webpack ir webpack-cli visame pasaulyje naudojant npm:

sudo npm install -g webpack webpack-cli

Ir vietinės priklausomybės:

npm install

📥Sukurkite kanistrą, paleiskite:

dfx canister create backend

Terminale galite pamatyti tokį pranešimą.

2 pav. Terminale rodomas pranešimas su sėkmingo kanistro sukūrimo nuoroda2 pav. Terminale rodomas pranešimas su sėkmingo kanistro sukūrimo nuoroda

👉Dabar galite patikrinti rezervuaro būseną:

dfx canister status backend

Kažką panašaus galite pamatyti terminale.

3 pav. Kanistro būsenos užpakalinė programa3 pav. Kanistro būsenos užpakalinė programa

📥Modelių įkėlimas dalimis

Kadangi AI modeliai paprastai yra dideli. Jų negalima įterpti tiesiai į išmaniosios sutarties dvejetainį elementą WebAssembly (Wasm). Vietoj to, šiuos modelius reikia įkelti atskirai. Norėdami tai išspręsti, „DecideAI“ sukūrė įrankį, leidžiantį palaipsniui įkelti modelius. Įrankį rasite čia: ic-file-uploader.

👉 Norėdami įdiegti įrankį, naudokite šią komandą:

cargo install ic-file-uploader

Įdiegę galite naudoti upload-models-to-canister.sh scenarijų paleisdami ./upload-models-to-canister.sh terminale, kad įkeltumėte modelius. Šis scenarijus atlieka šiuos veiksmus:

  1. Iš kanistro išvalo esamus AI modelius:
dfx canister call backend clear_face_detection_model_bytes

dfx canister call backend clear_face_recognition_model_bytes
  1. Laipsniškai įkeliami nauji modeliai:
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. Galiausiai scenarijus nustato įkeltus modelius:
dfx canister call backend setup_models

Dabar galite bendrauti su Frontend naudodami URL, kurį gavote terminale dfx deploy komanda (1 pav.)

4 pav. „dApp“ sąsaja su įkelta Nikola Tesla nuotrauka. Paspaudus pasirodo dialogo langas, kuriame reikia pridėti pavadinimą "Pridėti asmenį" mygtuką4 pav. „dApp“ sąsaja su įkelta Nikola Tesla nuotrauka. Paspaudus pasirodo dialogo langas, kuriame reikia pridėti pavadinimą "Pridėti asmenį" mygtuką

Įkėlę vaizdą spustelėdami ICP logotipą, pabandykite pridėti asmens vardą spustelėdami „Pridėti asmenį“ mygtuką, norėdami išmokyti modelį.

Jis aptinka veidą su automatiniu stačiakampio ženklu veide. Nustačius pavadinimą, rodomas sėkmingo pridėjimo pranešimas:

5 pav. Pranešimas rodomas pridėjus pavadinimą5 pav. Pranešimas rodomas pridėjus pavadinimą

AI įsimena pavadinimą, kurį nustatėte veidui, kad galėtumėte patikrinti, ar jis aptinka skirtingų to paties asmens nuotraukų veidus, ar ne. Čia daromos įvairios Nikola Teslos nuotraukos. Norėdami įkelti kitą nuotrauką veido aptikimui, iš naujo įkelkite puslapį ir spustelėkite „Atpažinti“ variantas. pažiūrėsim; ji sėkmingai atpažino Nikola Teslos veidą, šiek tiek skiriasi nuo pradinio.

6 pav. AI sėkmingai aptiko Nikola Tesla veidą iš kitos nuotraukos su 0,68 skirtumu6 pav. AI sėkmingai aptiko Nikola Tesla veidą iš kitos nuotraukos su 0,68 skirtumu

Čia modeliui pateikiama dirbtinio intelekto sukurta Nikola Tesla nuotrauka, kuri stebėtinai tiksliai aptiko veidą, pažiūrėkime čia:

7 pav. DI sukurtą Nikola Tesla veidą aptiko dApp tik 0,77 skirtumu7 pav. DI sukurtą Nikola Tesla veidą aptiko dApp tik 0,77 skirtumu

Sėkmingai patvirtino, kad ICP Face Recognizing DApp veikia puikiai, nes sėkmingai aptiko Nikola Tesla veidus. Galite pabandyti patys.

Kadangi jis skirtas testavimui, vartotojo sąsaja ir funkcijos yra ribotos. Galite pridėti papildomų funkcijų ir paslaugų, jei skubate kurti gamybai paruoštą dApp ICP, kad atpažintumėte veidą. Galite išbandyti šias funkcijas naudodami kodų pavyzdžius. Atminkite, kad turėtumėte pridėti arba tinkinti kodus pagal savo poreikius.

📥 Štai keli patarimai jums:

  1. Pridėkite vartotojo autentifikavimą su interneto tapatybe

Jei pridėsite šią funkciją prie šios dApp, tik registruoti vartotojai galės pasiekti DApp. Štai kaip galite pridėti autentifikavimą naudodami internetinę tapatybę. Interneto tapatybę galite integruoti pagrindiniame puslapyje pridėję prisijungimo prie interneto tapatybės mygtuką. Kai vartotojas prisijungs, parodykite suasmenintą prietaisų skydelį.

Kaip pridėti:

👉Įdiekite interneto tapatybės priklausomybes:

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

👉Pridėkite šį kodą prie savo sąsajos, kad įgalintumėte autentifikavimą:

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();

👉Prisijungęs vartotojas gali matyti savo atpažintų veidų istoriją ar kitus suasmenintus duomenis.

  1. Vaizdo įkėlimas naudojant vilkimo ir nuvilkimo funkciją

Padarykite vaizdų įkėlimo funkciją ir patirtį sklandžiau, leisdami naudotojams vilkti ir mesti vaizdus veido aptikimui.

Kaip pridėti:

👉Naudokite HTML5 vilkimo ir numesimo funkciją:

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

👉Pridėkite „JavaScript“, kad atliktumėte vilkimo ir numetimo veiksmą:

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
});

👉Įsitikinkite, kad jis sklandžiai integruojasi su esama veido aptikimo funkcija.

  1. Veido atpažinimo eigos juosta

Tai bus patraukli funkcija, rodanti eigos juostą, kai vaizdas įkeliamas, informuojant vartotojus, kad sistema apdoroja vaizdą.

Kaip pridėti:

👉Naudokite paprastą HTML eigos juostą:

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

👉Dinamiškai atnaujinkite eigos juostą, kai vaizdas apdorojamas:

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. Pranešimai apie veido atpažinimo rezultatus

Galite pridėti funkciją, kad pateiktumėte pranešimus realiuoju laiku, kai veido atpažinimas bus baigtas, naudodami modalinį arba skrudintą pranešimą.

Kaip pridėti:

👉Galite naudoti lengvą biblioteką, pvz., „Toastr“, arba pasirinktinius pranešimus apie skrebučius.

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

👉„JavaScript“ programoje parodykite pranešimą, kai užpakalinė programa pateikia rezultatą:

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!");

📥Paskutiniai žingsniai: atkurkite ir įdiekite

Įdiegę šias naujas funkcijas:

👉Atkurti projektą:

dfx build

👉Įdiegti į testnetą: pirmiausia reikia išbandyti prieš skubant į pagrindinį tinklą.

dfx deploy --network ic

Tai yra keli pavyzdžiai ir idėjos demonstravimo tikslams. Galite juos išbandyti patys ir praneškite mums apie savo pažangą komentarų skiltyje. Be to, su juo galite nuveikti daugiau, kad AI decentralizuotų ICP.

Išvada:

Sėkmingai išbandėme veido atpažinimo DApp ICP, kuris yra tikras bandymas decentralizuoti AI (DeAI). Remiantis mūsų bandymais, DApp atsakymai buvo greiti, o veidai buvo tiksliai aptikti. Unikali ICP infrastruktūra galėtų mums padėti atlikti sudėtingas užduotis, tokias kaip veido atpažinimas, nepasikliaujant centralizuotomis sistemomis.

Tai ne tik padidina saugumą ir privatumą, bet ir parodo galimybę greitai vystytis decentralizuotoms AI (DeAI) programoms. ICP ir toliau tobulėjant, galimybė diegti didelius modelius ir atlikti AI išvadas grandinėje gali atverti naujų naujovių galimybių. Galime tikėtis, kad decentralizuotas AI ateityje taps pagrindiniu patikimų ir keičiamo dydžio sprendimų žaidėju. Kūrėjai taip pat turi naujų galimybių kurti daugiau produktų ir paslaugų naudojant ICP.



Source link

Draugai: - Marketingo agentūra - Teisinės konsultacijos - Skaidrių skenavimas - Fotofilmų kūrimas - Miesto naujienos - Šeimos gydytojai - Saulius Narbutas - Įvaizdžio kūrimas - Veidoskaita - Nuotekų valymo įrenginiai - Teniso treniruotės - Pranešimai spaudai -