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 :
📥Postavite razvojno okruženje:
sh -ci "$(curl -fsSL https://smartcontracts.org/install.sh)"
👉Za potvrdu instalacije:
dfx –version
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
git clone https://github.com/wasm-forge/wasi2ic.git cd wasi2ic cargo install --path .
👉Da biste provjerili instalaciju, pokrenite:
echo $PATH wasi2ic –help
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
Model detekcije lica će se koristiti za otkrivanje lica na slici. trčanje:
./download-face-detection-model.sh
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/ .
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.
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.
👉Sada možete provjeriti status pozadine kanistera:
dfx canister status backend
Ovako nešto možete vidjeti u terminalu.
📥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:
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
Sada možete komunicirati sa Frontendom koristeći URL koji ste primili u terminalu dok je dfx deploy
naredba (slika 1)
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:
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.
Evo, AI generisana fotografija Nikole Tesle je dostavljena modelu, i iznenađujuće, tačno je detektovala lice, da vidimo ovde:
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:
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.
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.
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
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.
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.