paint-brush
Az ICP arcfelismerő DApp tesztelése: A végeredmény meg fogja lepniáltal@induction
458 olvasmányok
458 olvasmányok

Az ICP arcfelismerő DApp tesztelése: A végeredmény meg fogja lepni

által Vision NP9m2024/09/21
Read on Terminal Reader

Túl hosszú; Olvasni

Az Internet Computer Protocol (ICP) a mesterséges intelligencia decentralizálásán dolgozik azáltal, hogy lehetővé teszi az alkalmazások számára, hogy teljesen decentralizált felhőinfrastruktúrán futhassanak. Ez a fajta decentralizációs megközelítés biztosítja, hogy az AI-műveletek átláthatóak, cenzúraállóak legyenek, és kevésbé hajlamosak egyetlen hibapontra. Megvizsgáljuk, hogy az AI decentralizációja hogyan működik objektíven az egyes lépések finom demonstrációival.
featured image - Az ICP arcfelismerő DApp tesztelése: A végeredmény meg fogja lepni
Vision NP HackerNoon profile picture
0-item
1-item

Az elmúlt néhány év különleges volt a központosított szerver alapú mesterséges intelligencia modellek számára, mint a ChatGPT, a Google Gemini, a Microsoft Copilot stb. Kétségtelen, hogy az ilyen mesterséges intelligencia modellek oly sok szempontot átalakítottak. De másrészt van néhány árnyoldaluk. Valószínűleg Ön is hallott a ChatGPT több kimaradásáról .


A központosított szerver alapú modellek óriási kockázatnak vannak kitéve, hogy egyetlen ponton meghibásodnak. De most megváltozott az idő. A blokklánc technológia számos területet is forradalmasít, köztük a mesterséges intelligenciát (AI).


A Dfinity által kifejlesztett Internet Computer Protocol (ICP) a mesterséges intelligencia decentralizálásán dolgozik azáltal, hogy lehetővé teszi az AI-alkalmazások futtatását egy teljesen decentralizált felhő infrastruktúrán. Az egyedülálló dolog az, hogy az ICP lehetővé teszi az AI modellek és szolgáltatások független adatközpontok hálózatán keresztül történő telepítését. Ez a fajta decentralizációs megközelítés biztosítja, hogy az AI-műveletek átláthatóak, cenzúraállóak legyenek, és kevésbé hajlamosak egyetlen hibapontra.


Ez a cikk ellentétben áll az ICP-n alapuló, gyakorlati arcfelismerő DApp teszttel. Megvizsgáljuk, hogy az AI decentralizációja hogyan működik objektíven az egyes lépések finom demonstrációival. Megpróbáltuk az összetett technikai fogalmakat könnyen érthető oktatóanyagokra bontani, ezért kezdjük.


A teljes projektfejlesztési és tesztelési folyamat Windows alapú gépen történt, ezért itt egy Linux alrendszert hozunk létre, mivel számos ICP fejlesztőeszköz és szkript Linux alapú környezetre van optimalizálva.


📥Feltételek:

  • Operációs rendszer : Windows telepített Windows alrendszerrel Linuxhoz (WSL). Kérjük, olvassa el ezt az útmutatót a telepítéshez.


  • Tudás :

    • A JavaScript , a React.js , a Rust és a WebAssembly alapvető ismerete.

    • Webfejlesztési koncepciók ismerete.


  • Eszközök :

    • DFX SDK (ICP fejlesztési keretrendszer) .
    • Node.js és npm.
    • Rozsda: Telepítse a Rust szerszámláncot.
    • Git: Szüksége van rá a tár klónozásához. Kérjük, a telepítéshez használja az ő útmutatójukat .
    • wasi2ic: Eszköz a WASI-függő Wasm modul ICP-n történő futtatására való átalakítására.
    • wasm-opt: A WebAssembly optimalizáló.


📥A fejlesztői környezet beállítása:

  1. Nyissa meg a WSL terminált, és futtassa a következő parancsot a DFX telepítéséhez:
 sh -ci "$(curl -fsSL https://smartcontracts.org/install.sh)"


👉 A telepítés megerősítéséhez:

 dfx –version


  1. Telepítse a Rust-ot a következő parancs futtatásával:
 curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh source $HOME/.cargo/env

👉A telepítés ellenőrzéséhez futtassa:

 rustc –version


3. Telepítse a Node.js fájlt a következő parancs futtatásával:

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


👉A telepítés ellenőrzéséhez futtassa:

 node -v npm -v


  1. A wasi2ic telepítése: Először klónozzuk a GitHub-tárhelyüket.
 git clone https://github.com/wasm-forge/wasi2ic.git cd wasi2ic cargo install --path .


👉A telepítés ellenőrzéséhez futtassa:

 echo $PATH wasi2ic –help


  1. A wasm-opt telepítése:
 cargo install wasm-opt


📥A projekt klónozása:

Tesztelési célokra a projekt GitHub tárházát használjuk. Az adattárukat itt tudod ellenőrizni.


1. Klónozza a tárat, és navigáljon az arcfelismerő projekthez:

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

Megjegyzés: A Linux alrendszer fájljaihoz úgy érheti el, hogy \\wsl$ kifejezésre keres a Fájlkezelőben vagy a Windows operációs rendszer közvetlen keresési funkciójában.


📥Töltsön le modelleket az arcfelismeréshez


  1. Töltse le az arcfelismerő modellt:

Az arcfelismerő modell az arcok felismerésére szolgál a képen. Fut:

 ./download-face-detection-model.sh


  1. Töltse le az arcfelismerő modellt:

A modellt ONNX formátumba kell exportálnia PyTorch és facenet-pytorch segítségével. Kezdje az alábbi Python-könyvtárak telepítésével:

 pip install torch facenet-pytorch onnx


Megjegyzés: Ha a Python még nincs telepítve az alrendszerében, próbálja meg a Python és a pip telepítését innen: https://packaging.python.org/en/latest/tutorials/installing-packages/ .


  1. Az ONNX modell exportálása:

Python fájlban vagy shellben futtassa a következőt: Írja be a python3 parancsot a terminálba, majd futtassa a következő kódot. A végrehajtás után írja be az exit() parancsot.

 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)


Ezzel létrejön a face-recognition.onnx fájl. Másolja a tárhely gyökerébe.


📥 Építeni

Most itt az ideje a projekt felépítésének. Fut:

 dfx start --background dfx deploy


Ha minden jól megy, láthatja a frontend URL-címét a terminálban.

1. ábra: Sikeres telepítési üzenet a terminálokban a frontend URL-ekkel

Megjegyzés: Ha valamilyen hibába ütközik az ügyfél hiánya miatt, próbálja meg globálisan telepíteni webpack és webpack-cli az npm használatával:

sudo npm install -g webpack webpack-cli


És a helyi függőségek:

npm install


📥Hozza létre a tartályt, futtassa:

 dfx canister create backend


A terminálon a következő üzenet látható.

2. ábra: A terminálon megjelenő üzenet és a sikeres tartály létrehozásának jelzése

👉Most ellenőrizheti a tartály háttérrendszerének állapotát:

 dfx canister status backend


Valami ilyesmit láthat a terminálban.

3. ábra: Tartályállapot háttér

📥Modellek darabos feltöltése

Mivel az AI modellek jellemzően nagyok. Nem ágyazhatók be közvetlenül az intelligens szerződés WebAssembly (Wasm) binárisába. Ehelyett ezeket a modelleket külön kell feltölteni. Ennek kezelésére a DecideAI kifejlesztett egy eszközt a modellek fokozatos feltöltésére. Az eszközt itt találod: ic-file-uploader .


👉Az eszköz telepítéséhez használja a következő parancsot:

 cargo install ic-file-uploader


A telepítés után használhatja az upload-models-to-canister.sh parancsfájlt ./upload-models-to-canister.sh futtatásával a terminálon a modellek feltöltéséhez. Ez a szkript a következő lépéseket hajtja végre:


  1. Törli a meglévő AI modelleket a tartályból:
 dfx canister call backend clear_face_detection_model_bytes dfx canister call backend clear_face_recognition_model_bytes


  1. Fokozatosan tölti fel az új modelleket:
 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. Végül a szkript beállítja a feltöltött modelleket:
 dfx canister call backend setup_models


Mostantól interakcióba léphet a Frontenddel a terminálban kapott URL-cím használatával, miközben dfx deploy parancsot adta ki (1. ábra).


4. ábra: A dApp kezelőfelülete Nikola Tesla feltöltött fotójával. A "Személy hozzáadása" gombra kattintás után megjelenik egy párbeszédpanel a név hozzáadásához


Miután feltöltött egy képet az ICP logójára kattintva, próbálja meg hozzáadni egy személy nevét a „ Személy hozzáadása ” gombra kattintva a modell betanításához.

Automatikus téglalapjellel érzékeli az arcot. Miután beállította a nevet, megjelenik egy üzenet a sikeres hozzáadásról, az alábbiak szerint:

5. ábra: A név hozzáadása után megjelenő üzenet

A mesterséges intelligencia megjegyzi az archoz beállított nevet, így ellenőrizheti, hogy felismeri-e ugyanazon személy különböző fényképeinek arcát. Itt különböző fotók készülnek Nikola Tesláról. Ha másik fényképet szeretne feltölteni arcfelismerésre, töltse be újra az oldalt, majd kattintson a „ Felismerés ” lehetőségre. Lássuk csak; sikeresen azonosította Nikola Tesla arcát az eredetihez képest kis eltéréssel.

6. ábra. A mesterséges intelligencia sikeresen észlelte Nikola Tesla arcát egy másik fotóról 0,68-as eltéréssel

Itt egy mesterséges intelligencia által generált fotót küldenek be Nikola Tesláról a modellnek, és meglepő módon pontosan észlelte az arcot, lássuk itt:

7. ábra: Nikola Tesla mesterséges intelligencia által generált arcát a dApp észlelte, mindössze 0,77 különbséggel

Sikeresen ellenőrizte, hogy az ICP Face Recognizing DApp tökéletesen működik, mivel sikeresen észlelte Nikola Tesla arcát. Kipróbálhatod egyedül.


Mivel tesztelési célokat szolgál, a felhasználói felület és a funkciók korlátozottak. Hozzáadhat további funkciókat és szolgáltatásokat, ha az arcfelismerés céljából ICP-n gyártásra kész dApp-ot szeretne felépíteni. A következő funkciókat kódpéldákkal próbálhatja ki. Kérjük, vegye figyelembe, hogy igénye szerint kell hozzáadnia vagy testreszabnia a kódokat.


📥Íme néhány tipp:

  1. Felhasználói hitelesítés hozzáadása internetes azonosítóval

Ha hozzáadja ezt a funkciót ehhez a dApp-hoz, csak regisztrált felhasználók férhetnek hozzá a DApp-hoz. Így adhat hozzá hitelesítést az Internet Identity használatával. Az Internet Identity integrálható az Internet Identity bejelentkezés gomb hozzáadásával a kezdőlapon. Miután a felhasználó bejelentkezik, jelenítsen meg egy személyre szabott műszerfalat.


Hozzáadás módja:

👉Internet Identity függőségek telepítése:

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


👉Adja hozzá a következő kódot a felhasználói felülethez a hitelesítés engedélyezéséhez:

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


👉Bejelentkezés után a felhasználó láthatja a felismert arcok előzményeit vagy más személyre szabott adatait.


  1. Képfeltöltés fogd és vidd funkcióval

Tegye gördülékenyebbé a képfeltöltési funkciót és az élményt azáltal, hogy lehetővé teszi a felhasználók számára, hogy áthúzzák a képeket az arcfelismeréshez.


Hogyan kell hozzáadni :

👉Használja a HTML5 fogd és vidd funkcióját:

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


👉Adjon hozzá JavaScriptet a fogd és vidd művelet kezeléséhez:

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


👉Győződjön meg arról, hogy zökkenőmentesen integrálható a meglévő arcfelismerő funkciójával.


  1. Folyamat sáv az arcfelismeréshez

Lebilincselő funkció lesz a folyamatjelző sáv megjelenítése egy kép feltöltésekor, amely tájékoztatja a felhasználókat arról, hogy a rendszer feldolgozza a képet.


Hozzáadás módja:

👉Használjon egyszerű HTML folyamatjelző sávot:

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


👉A folyamatjelző sáv dinamikus frissítése a kép feldolgozása közben:

 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. Értesítések az arcfelismerési eredményekről

Hozzáadhat egy funkciót, amellyel valós idejű értesítéseket küldhet, ha az arcfelismerés befejeződött, akár modális, akár pirítós értesítésen keresztül.


Hogyan kell hozzáadni :

👉Használhat olyan könnyű könyvtárat, mint a Toastr , vagy egyéni pirítósértesítéseket.

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


👉A JavaScriptben jelenítse meg az értesítést, amikor a háttérprogram visszaadja az eredményt:

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


📥Utolsó lépések: Újraépítés és üzembe helyezés

Az új funkciók bevezetése után:


👉A projekt újjáépítése:

 dfx build


👉 Telepítés a testnetre: először tesztelni kell, mielőtt a mainnetre rohanna.

 dfx deploy --network ic


Íme néhány példa és ötlet demonstrációs célokra. Tesztelheti őket egyedül, és tudassa velünk a fejlődést a megjegyzés részben. Ezenkívül többet is tehet vele az AI decentralizálása az ICP-n.

Következtetés:

Sikeresen teszteltük az arcfelismerő DApp-t ICP-n, amely valódi kísérlet az AI (DeAI) decentralizálására. Tesztelésünk szerint a DApp válaszai gyorsak voltak, és az arcok észlelése pontos volt. Az ICP egyedülálló infrastruktúrája segíthet komplex feladatok elvégzésében, például arcfelismerésben anélkül, hogy központi rendszerekre támaszkodnánk.


Nemcsak a biztonságot és a magánélet védelmét javítja, hanem a decentralizált AI (DeAI) alkalmazások gyors fejlődésének lehetőségét is mutatja. Ahogy az ICP folyamatosan fejlődik, a nagy modellek telepítésének és a láncon belüli mesterséges intelligencia-következtetésnek a képessége új lehetőségeket nyithat meg az innováció előtt. Arra számíthatunk, hogy a decentralizált AI kulcsszerepet játszik a megbízható és méretezhető megoldások jövőjében. A fejlesztők új lehetőségeket is kínálnak arra, hogy több terméket és szolgáltatást hozzanak létre az ICP-n.