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ą:
- 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
- Į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
- Į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
- Į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
- Atsisiųskite veido aptikimo modelį:
Veido aptikimo modelis bus naudojamas veidus aptikti vaizde. Vykdyti:
./download-face-detection-model.sh
- 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
- 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.
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ą.
👉Dabar galite patikrinti rezervuaro būseną:
dfx canister status backend
Kažką panašaus galite pamatyti terminale.
📥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:
- 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
- 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
- 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.)
Į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:
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.
Čia modeliui pateikiama dirbtinio intelekto sukurta Nikola Tesla nuotrauka, kuri stebėtinai tiksliai aptiko veidą, pažiūrėkime čia:
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:
- 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.
- 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.
- 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
- 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.