paint-brush
Testiranje ICP aplikacije za prepoznavanje lica: Konačni rezultat će vas iznenaditiby@induction
461 čitanja
461 čitanja

Testiranje ICP aplikacije za prepoznavanje lica: Konačni rezultat će vas iznenaditi

by Vision NP9m2024/09/21
Read on Terminal Reader

Predugo; Citati

Internet računarski protokol (ICP) radi na decentralizaciji AI omogućavajući aplikacijama da rade na potpuno decentralizovanoj infrastrukturi oblaka. Ova vrsta pristupa decentralizaciji osigurava da su AI operacije transparentne, otporne na cenzuru i manje sklone pojedinačnim tačkama neuspjeha. Provjerit ćemo kako decentralizacija AI objektivno funkcionira uz suptilne demonstracije svakog koraka.
featured image - Testiranje ICP aplikacije za prepoznavanje lica: Konačni rezultat će vas iznenaditi
Vision NP HackerNoon profile picture
0-item
1-item

Proteklih nekoliko godina bilo je posebno za centralizovane serverske AI modele kao što su ChatGPT, Google Gemini, Microsoftov Copilot, itd. Nema sumnje da su takvi AI modeli transformisali toliko aspekata. Ali s druge strane, oni imaju neke nedostatke. Vjerovatno ste čuli i za nekoliko prekida ChatGPT-a .


Centralizovani modeli bazirani na serveru su pod velikim rizikom od jedne tačke kvara. Ali sada se vrijeme promijenilo. Blockchain tehnologija također revolucionira mnoga polja, uključujući umjetnu inteligenciju (AI).


Internet računarski protokol (ICP) koji je Dfinity razvio, radi na decentralizaciji AI omogućavajući AI aplikacijama da rade na potpuno decentralizovanoj infrastrukturi oblaka. Jedinstvena stvar je u tome što ICP dozvoljava AI modelima i uslugama da budu raspoređeni u mreži nezavisnih centara podataka. Ova vrsta pristupa decentralizacije osigurava da su AI operacije transparentne, otporne na cenzuru i manje sklone pojedinačnim tačkama neuspjeha.


Ovaj članak je u suprotnosti s praktičnim testom Face Recognition DApp koji je zasnovan na ICP-u. Provjerit ćemo kako decentralizacija AI objektivno funkcionira uz suptilne demonstracije svakog koraka. Pokušali smo da razbijemo složene tehničke koncepte u lako razumljive tutorijale, pa hajde da počnemo.


Cijeli proces razvoja projekta i testiranja obavljen je na Windows baziranoj mašini, tako da ovdje kreiramo Linux podsistem jer su mnogi ICP razvojni alati i skripte optimizirani za okruženja bazirana na Linuxu.


📥 Preduslovi:

  • Operativni sistem : Windows sa instaliranim Windows podsistemom za Linux (WSL). Molimo pogledajte ovaj vodič za instalaciju.


  • znanje :

    • Osnovno razumijevanje JavaScript-a , React.js -a, Rusta i WebAssembly-a .

    • Poznavanje koncepta web razvoja.


  • Alati :

    • DFX SDK (ICP razvojni okvir) .
    • Node.js i npm.
    • Rust: Instalirajte Rust lanac alata.
    • Git: Potreban vam je za kloniranje spremišta. Dajte prednost njihovim smjernicama da ga instalirate.
    • wasi2ic: Alat za pretvaranje WASI-ovisnog Wasm modula u rad na ICP-u.
    • wasm-opt: WebAssembly optimizator.


📥Postavite razvojno okruženje:

  1. Otvorite svoj WSL terminal i pokrenite sljedeću naredbu da instalirate DFX:
 sh -ci "$(curl -fsSL https://smartcontracts.org/install.sh)"


👉Za potvrdu instalacije:

 dfx –version


  1. Instalirajte Rust tako što ćete pokrenuti sljedeću naredbu:
 curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh source $HOME/.cargo/env

👉Da potvrdite instalaciju, pokrenite:

 rustc –version


3. Instalirajte Node.js pokretanjem sljedeće naredbe:

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


👉Da potvrdite instalaciju, pokrenite:

 node -v npm -v


  1. Instalirajte wasi2ic: Prvo klonirajte njihovo GitHub spremište.
 git clone https://github.com/wasm-forge/wasi2ic.git cd wasi2ic cargo install --path .


👉Da biste provjerili instalaciju, pokrenite:

 echo $PATH wasi2ic –help


  1. Instaliraj wasm-opt:
 cargo install wasm-opt


📥Klonirajte projekat:

Koristimo GitHub spremište projekta za potrebe testiranja. Njihovo spremište možete provjeriti ovdje .


1. Klonirajte spremište i idite do projekta za prepoznavanje lica:

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

Napomena: Možete pristupiti datotekama vašeg Linux podsistema tako što ćete pretražiti \\wsl$ u File Exploreru ili funkciju direktne pretrage u Windows OS-u.


📥Preuzmite modele za prepoznavanje lica


  1. Preuzmite model detekcije lica:

Model detekcije lica će se koristiti za otkrivanje lica na slici. trčanje:

 ./download-face-detection-model.sh


  1. Preuzmite model za prepoznavanje lica:

Morate izvesti model u ONNX formatu koristeći PyTorch i facenet-pytorch . Započnite instalacijom ovih Python biblioteka:

 pip install torch facenet-pytorch onnx


Napomena: Ako Python već nije instaliran u vašem podsistemu, pokušajte da instalirate Python i pip odavde: https://packaging.python.org/en/latest/tutorials/installing-packages/ .


  1. Izvezite ONNX model:

U Python datoteci ili ljusci pokrenite sljedeće: Upišite python3 u terminal, a zatim pokrenite sljedeći kod. Nakon izvršenja, otkucajte 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)


Ovo će generirati datoteku face-recognition.onnx . Kopirajte ga u korijen vašeg spremišta.


📥Izgradite

Sada je vrijeme za izgradnju projekta. trčanje:

 dfx start --background dfx deploy


Ako sve ide kako treba, možete vidjeti Frontend URL u terminalu.

Slika 1. Poruka o uspješnom postavljanju na terminalima sa Frontend URL-ovima

Napomena: Ako se suočite s greškom zbog nedostatka klijenta, pokušajte globalno instalirati webpack i webpack-cli koristeći npm:

sudo npm install -g webpack webpack-cli


I, lokalne zavisnosti:

npm install


📥Kreirajte kanister, pokrenite:

 dfx canister create backend


U terminalu možete vidjeti sljedeću poruku.

Slika 2. Poruka prikazana u terminalu sa indikacijom uspješnog kreiranja kanistera

👉Sada možete provjeriti status pozadine kanistera:

 dfx canister status backend


Ovako nešto možete vidjeti u terminalu.

Slika 3. Pozadina statusa kanistera

📥Učitavanje modela u komadima

Budući da su AI modeli obično veliki. Ne mogu se ugraditi direktno u WebAssembly (Wasm) binarni program pametnog ugovora. Umjesto toga, ove modele je potrebno posebno učitati. Da bi ovo riješio, DecideAI je razvio alat za postepeno učitavanje modela. Alat možete pronaći ovdje: ic-file-uploader .


👉Da biste instalirali alat, koristite sljedeću naredbu:

 cargo install ic-file-uploader


Jednom instaliran, možete koristiti skriptu upload-models-to-canister.sh tako što ćete pokrenuti ./upload-models-to-canister.sh u terminalu za učitavanje modela. Ova skripta izvodi sljedeće korake:


  1. Briše postojeće AI modele iz kanistera:
 dfx canister call backend clear_face_detection_model_bytes dfx canister call backend clear_face_recognition_model_bytes


  1. Učitava nove modele postepeno:
 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. Konačno, skripta postavlja učitane modele:
 dfx canister call backend setup_models


Sada možete komunicirati sa Frontendom koristeći URL koji ste primili u terminalu dok je dfx deploy naredba (slika 1)


Slika 4. Frontend interfejs dApp-a sa učitanom fotografijom Nikole Tesle. Pojavljuje se dijaloški okvir za dodavanje imena nakon što kliknete na dugme "Dodaj osobu".


Jednom kada učitate sliku klikom na ICP logo, pokušajte dodati ime osobe klikom na dugme “ Dodaj osobu ” da biste obučili model.

On detektuje lice sa automatskom oznakom pravougaonika na licu. Nakon što postavite ime, prikazuje se poruka o uspješnom dodavanju kao što slijedi:

Slika 5. Poruka prikazana nakon dodavanja imena

AI pamti ime koje ste postavili za lice tako da možete testirati da li detektira lica različitih fotografija iste osobe ili ne. Ovdje su snimljene različite fotografije Nikole Tesle. Da biste otpremili drugu fotografiju za detekciju lica, ponovo učitajte stranicu, a zatim kliknite na opciju “ Prepoznaj ”. da vidimo; uspešno je identifikovao lice Nikole Tesle sa malom razlikom od prvobitnog.

Slika 6. AI je uspešno detektovao lice Nikole Tesle sa druge fotografije sa razlikom od 0,68

Evo, AI generisana fotografija Nikole Tesle je dostavljena modelu, i iznenađujuće, tačno je detektovala lice, da vidimo ovde:

Slika 7. AI generirano lice Nikole Tesle detektirao je dApp sa samo 0,77 razlike

Uspješno je potvrdio da ICP Face Recognizing DApp radi savršeno jer je uspješno otkrio lica Nikole Tesle. Možete probati i sami.


Budući da je u svrhu testiranja, korisnički interfejs i funkcije su ograničeni. Možete dodati dodatne funkcije i usluge ako žurite da napravite dApp spremnu za proizvodnju na ICP-u za potrebe prepoznavanja lica. Možete isprobati sljedeće funkcije s primjerima koda. Imajte na umu da biste trebali dodati ili prilagoditi kodove prema vašim zahtjevima.


📥 Evo nekoliko savjeta za vas:

  1. Dodajte autentifikaciju korisnika s internetskim identitetom

Ako dodate ovu funkciju ovoj dApp, samo registrovani korisnici mogu pristupiti DApp. Evo kako možete dodati autentifikaciju koristeći Internet Identity. Internet identitet možete integrirati dodavanjem dugmeta za prijavu na Internet identitet na početnu stranicu. Kada se korisnik prijavi, prikažite personaliziranu kontrolnu tablu.


Kako dodati:

👉Instalirajte ovisnosti internetskog identiteta:

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


👉Dodajte sljedeći kod na svoj frontend da omogućite autentifikaciju:

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


👉Nakon prijave, korisnik može vidjeti historiju prepoznatih lica ili druge personalizirane podatke.


  1. Prijenos slike s funkcijom povlačenja i prevlačenja

Učinite funkciju učitavanja slika i iskustvo lakšim omogućavajući korisnicima da prevlače i ispuštaju slike za detekciju lica.


Kako dodati :

👉Koristite HTML5 funkciju drag-and-drop:

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


👉Dodajte JavaScript za rukovanje akcijom prevlačenja i ispuštanja:

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


👉Uvjerite se da se glatko integrira s vašom postojećom funkcijom detekcije lica.


  1. Traka napretka za prepoznavanje lica

Biće zanimljiva funkcija za prikazivanje trake napretka kada se slika otpremi kako bi se korisnici informirali da sistem obrađuje sliku.


Kako dodati:

👉Koristite jednostavnu HTML traku napretka:

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


👉 Dinamički ažurirajte traku napretka kako se slika obrađuje:

 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. Obavještenja o rezultatima prepoznavanja lica

Možete dodati funkciju za pružanje obavještenja u stvarnom vremenu kada se prepoznavanje lica završi, bilo putem modalnog ili tost obavijesti.


Kako dodati :

👉Možete koristiti laganu biblioteku kao što je Toastr ili prilagođena obavještenja o tostu.

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


👉U svom JavaScriptu prikažite obavještenje kada backend vrati 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!");


📥Završni koraci: Obnova i implementacija

Nakon implementacije ovih novih funkcija:


👉Obnovite projekat:

 dfx build


👉Postavljanje na testnu mrežu: prvo treba testirati prije nego što požurite na mainnet.

 dfx deploy --network ic


Ovo je nekoliko primjera i ideja u svrhu demonstracije. Možete ih sami testirati i javiti nam svoj napredak u odjeljku za komentare. Također, možete učiniti više s njim kako biste decentralizirali AI na ICP-u.

zaključak:

Uspješno smo testirali Face Recognizing DApp na ICP-u što je pravi pokušaj decentralizacije AI (DeAI). Prema našem testiranju, odgovori DApp-a su bili brzi, a detekcija lica tačna. Jedinstvena infrastruktura ICP-a mogla bi nam pomoći u obavljanju složenih zadataka kao što je prepoznavanje lica bez oslanjanja na centralizirane sisteme.


Ne samo da poboljšava sigurnost i privatnost, već pokazuje i potencijal da se decentralizirane AI (DeAI) aplikacije brzo razvijaju. Kako ICP nastavlja da se razvija, sposobnost implementacije velikih modela i izvođenja AI zaključivanja u lancu može otvoriti nove mogućnosti za inovacije. Možemo očekivati da decentralizovana veštačka inteligencija bude ključni igrač u budućnosti pouzdanih i skalabilnih rešenja. Programeri također imaju nove mogućnosti da kreiraju više proizvoda i usluga na ICP-u.