paint-brush
ICP Face Recognition DApp сынағы: соңғы нәтиже сізді таң қалдырадыбойынша@induction
461 оқулар
461 оқулар

ICP Face Recognition DApp сынағы: соңғы нәтиже сізді таң қалдырады

бойынша Vision NP9m2024/09/21
Read on Terminal Reader

Тым ұзақ; Оқу

Интернет-компьютерлік протокол (ICP) қолданбаларға толық орталықтандырылмаған бұлттық инфрақұрылымда жұмыс істеуге мүмкіндік беру арқылы AI-ны орталықсыздандыру үшін жұмыс істейді. Орталықсыздандырудың бұл түрі AI операцияларының мөлдір, цензураға төзімді және бір сәтсіздікке бейімділігін қамтамасыз етеді. Біз әр қадамның нәзік демонстрациялары арқылы AI орталықсыздандыру объективті түрде қалай жұмыс істейтінін тексереміз.
featured image - ICP Face Recognition DApp сынағы: соңғы нәтиже сізді таң қалдырады
Vision NP HackerNoon profile picture
0-item
1-item

Соңғы бірнеше жыл ChatGPT, Google Gemini, Microsoft Copilot және т.б. сияқты орталықтандырылған серверге негізделген AI үлгілері үшін ерекше болды. Мұндай AI үлгілері көптеген аспектілерді өзгерткені сөзсіз. Бірақ екінші жағынан, олардың кейбір кемшіліктері бар. ChatGPT-тің бірнеше үзілістері туралы сіз де естіген шығарсыз.


Орталықтандырылған серверге негізделген модельдер бір сәтсіздік нүктесінің үлкен қаупіне ұшырайды. Бірақ қазір уақыт өзгерді. Блокчейн технологиясы сонымен қатар көптеген салаларда, соның ішінде жасанды интеллектте (AI) революция жасайды.


Dfinity әзірлеген Интернет-компьютерлік протокол (ICP) AI қолданбаларына толық орталықтандырылмаған бұлттық инфрақұрылымда жұмыс істеуге мүмкіндік беру арқылы AI орталықсыздандыру үшін жұмыс істейді. Бірегей нәрсе, ICP AI үлгілері мен қызметтерін тәуелсіз деректер орталықтары желісінде орналастыруға мүмкіндік береді. Орталықсыздандырудың бұл түрі AI операцияларының мөлдір, цензураға төзімді және бір сәтсіздікке бейімділігін қамтамасыз етеді.


Бұл мақала ICP негізіндегі бетті тану DApp практикалық сынақтан айырмашылығы. Біз AI орталықсыздандырудың объективті түрде қалай жұмыс істейтінін әр қадамның нәзік демонстрациялары арқылы тексереміз. Біз күрделі техникалық түсініктерді түсінуге оңай оқулықтарға бөлуге тырыстық, сондықтан бастайық.


Барлық жобаны әзірлеу және тестілеу процестері Windows негізіндегі құрылғыда жүзеге асырылды, сондықтан біз мұнда Linux ішкі жүйесін жасаймыз, өйткені көптеген ICP әзірлеу құралдары мен сценарийлері Linux негізіндегі орталар үшін оңтайландырылған.


📥Алғышарттар:

  • Операциялық жүйе : Linux жүйесіне арналған Windows ішкі жүйесі (WSL) орнатылған Windows. Орнату үшін осы нұсқаулықты қараңыз.


  • Білім :

    • JavaScript , React.js , Rust және WebAssembly туралы негізгі түсінік .

    • Веб-әзірлеу тұжырымдамаларымен танысу.


  • Құралдар :

    • DFX SDK (ICP әзірлеу негізі) .
    • Node.js және npm.
    • Rust: Rust құралдар тізбегін орнатыңыз.
    • Git: ол репозиторийді клондау үшін қажет. Оны орнату үшін олардың нұсқаулығын таңдаңыз.
    • wasi2ic: WASI-тәуелді Wasm модулін ICP-де іске қосу үшін түрлендіру құралы.
    • wasm-opt: WebAssembly оңтайландырғышы.


📥Дамыту ортасын орнату:

  1. WSL терминалын ашыңыз және DFX орнату үшін келесі пәрменді орындаңыз:
 sh -ci "$(curl -fsSL https://smartcontracts.org/install.sh)"


👉Орнатуды растау үшін:

 dfx –version


  1. Rust бағдарламасын келесі пәрменді орындау арқылы орнатыңыз:
 curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh source $HOME/.cargo/env

👉Орнатуды тексеру үшін келесі әрекеттерді орындаңыз:

 rustc –version


3. Node.js файлын келесі пәрменді орындау арқылы орнатыңыз:

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


👉Орнатуды тексеру үшін келесі әрекеттерді орындаңыз:

 node -v npm -v


  1. Wasi2ic орнатыңыз: Алдымен олардың GitHub репозиторийін клондаңыз.
 git clone https://github.com/wasm-forge/wasi2ic.git cd wasi2ic cargo install --path .


👉Орнатуды тексеру үшін келесі әрекеттерді орындаңыз:

 echo $PATH wasi2ic –help


  1. wasm-opt орнату:
 cargo install wasm-opt


📥Жобаны клондау:

Біз тестілеу мақсатында жобаның GitHub репозиторийін пайдаланамыз. Сіз олардың репозиторийін осы жерден тексере аласыз.


1. Репозиторийді клондап, бетті тану жобасына өтіңіз:

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

Ескертпе: Linux ішкі жүйе файлдарына File Explorer бағдарламасында \\wsl$ іздеу немесе Windows ОЖ жүйесіндегі тікелей іздеу мүмкіндігі арқылы қол жеткізуге болады.


📥Бетті тану үлгілерін жүктеп алыңыз


  1. Бетті анықтау үлгісін жүктеп алыңыз:

Бетті анықтау үлгісі кескіндегі беттерді анықтау үшін пайдаланылады. Жүгіру:

 ./download-face-detection-model.sh


  1. Бет тану үлгісін жүктеп алыңыз:

PyTorch және facenet-pytorch арқылы үлгіні ONNX пішімінде экспорттауыңыз керек. Осы Python кітапханаларын орнату арқылы бастаңыз:

 pip install torch facenet-pytorch onnx


Ескертпе: Егер ішкі жүйеңізде Python орнатылмаған болса, Python және pip бағдарламаларын мына жерден орнатып көріңіз: https://packaging.python.org/en/latest/tutorials/installing-packages/ .


  1. ONNX үлгісін экспорттау:

Python файлында немесе қабығында келесіні іске қосыңыз: Терминалға python3 деп теріп, келесі кодты іске қосыңыз. Орындағаннан кейін 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)


Бұл face-recognition.onnx файлын жасайды. Оны репозиторийдің түбіріне көшіріңіз.


📥Құрылыс

Енді жобаны құру уақыты келді. Жүгіру:

 dfx start --background dfx deploy


Егер бәрі дұрыс болса, терминалда Frontend URL мекенжайын көре аласыз.

Сурет 1. Frontend URL мекенжайлары бар терминалдарда сәтті орналастыру туралы хабар

Ескертпе: Клиенттің болмауына байланысты қандай да бір қатеге тап болсаңыз, npm арқылы ғаламдық түрде webpack және webpack-cli орнатып көріңіз:

sudo npm install -g webpack webpack-cli


Және, жергілікті тәуелділіктер:

npm install


📥Канистрді жасаңыз, іске қосыңыз:

 dfx canister create backend


Терминалда келесі хабарламаны көруге болады.

Сурет 2. Терминалда көрсетілген хабарлама және канистрдің сәтті жасалғанын көрсетеді

👉Енді канистр серверінің күйін тексеруге болады:

 dfx canister status backend


Терминалда осындай нәрсені көруге болады.

Сурет 3. Канистр күйінің сервері

📥Модельдерді жүктеп салу

AI үлгілері әдетте үлкен болғандықтан. Оларды смарт келісімшарттың WebAssembly (Wasm) екілік жүйесіне тікелей енгізу мүмкін емес. Оның орнына бұл үлгілерді бөлек жүктеп салу керек. Мұны шешу үшін DecideAI модельдерді біртіндеп жүктеп салу құралын әзірледі. Құралды мына жерден таба аласыз: ic-file-uploader .


👉Құралды орнату үшін келесі пәрменді пайдаланыңыз:

 cargo install ic-file-uploader


Орнатылғаннан кейін үлгілерді жүктеп салу үшін терминалда ./upload-models-to-canister.sh іске қосу арқылы upload-models-to-canister.sh сценарийін пайдалануға болады. Бұл сценарий келесі қадамдарды орындайды:


  1. Бар AI үлгілерін канистрден тазартады:
 dfx canister call backend clear_face_detection_model_bytes dfx canister call backend clear_face_recognition_model_bytes


  1. Жаңа үлгілерді біртіндеп жүктеп салады:
 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. Соңында, сценарий жүктелген үлгілерді орнатады:
 dfx canister call backend setup_models


Енді dfx deploy пәрмені кезінде терминалда алған URL мекенжайын пайдалану арқылы Frontendпен өзара әрекеттесуге болады (1-сурет)


Сурет 4. Жүктеп салынған Никола Тесла фотосы бар dApp интерфейсі. «Адам қосу» түймесін басқаннан кейін атын қосу үшін диалогтық терезе пайда болады


ICP логотипін басу арқылы суретті жүктеп салғаннан кейін, модельді үйрету үшін « Адам қосу » түймесін басу арқылы адамның атын қосып көріңіз.

Ол беттегі автоматты тіктөртбұрыш белгісі бар бетті анықтайды. Атты орнатқаннан кейін, ол келесідей сәтті қосу туралы хабарды көрсетеді:

Сурет 5. Атты қосқаннан кейін көрсетілетін хабар

Жасанды интеллект сіз бетке қойған атауды есте сақтайды, осылайша ол бір адамның әртүрлі фотосуреттерінің бет-әлпетін анықтайтынын тексере аласыз. Мұнда Никола Тесланың әртүрлі фотосуреттері түсірілген. Бетті анықтауға арналған басқа фотосуретті жүктеп салу үшін бетті қайта жүктеп, « Тану » опциясын басыңыз. Көрейік; ол Никола Тесланың бет-бейнесін бастапқыдан сәл айырмашылығымен сәтті анықтады.

6-сурет. AI басқа фотосуреттен 0,68 айырмашылықпен Никола Тесланың бетін сәтті анықтады.

Міне, модельге Никола Тесланың AI-генерацияланған фотосуреті ұсынылған және таңқаларлық, ол бетті дәл анықтады, мына жерден көрейік:

Сурет 7. Никола Тесланың жасанды интеллектімен жасалған беті dApp арқылы 0,77 айырмашылықпен анықталды.

Ол ICP Face Recognizing DApp тамаша жұмыс істеп тұрғанын сәтті растады, өйткені ол Никола Тесланың беттерін сәтті анықтады. Сіз оны өзіңіз көріңіз.


Ол тестілеу мақсатында болғандықтан, UI және мүмкіндіктер шектеулі. Бет тану мақсаттары үшін ICP жүйесінде өндіріске дайын dApp құруға асықсаңыз, қосымша мүмкіндіктер мен қызметтерді қосуға болады. Код мысалдарымен келесі мүмкіндіктерді қолданып көруге болады. Сіздің талаптарыңызға сәйкес кодтарды қосу немесе теңшеу керек екенін ескеріңіз.


📥Міне, сізге бірнеше кеңестер:

  1. Интернет идентификациясымен пайдаланушы аутентификациясын қосыңыз

Бұл мүмкіндікті осы dApp қолданбасына қоссаңыз, тек тіркелген пайдаланушылар DApp қолданбасына кіре алады. Интернет идентификациясы арқылы аутентификацияны қалай қосуға болатыны осында. Негізгі бетте Internet Identity кіру түймешігін қосу арқылы Internet Identity біріктіруге болады. Пайдаланушы жүйеге кіргеннен кейін жекелендірілген бақылау тақтасын көрсетіңіз.


Қалай қосуға болады:

👉Internet Identity тәуелділіктерін орнату:

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


👉Түпнұсқалықты растауды қосу үшін келесі кодты фронтоныңызға қосыңыз:

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


👉Жүйеге кіргеннен кейін пайдаланушы танылған беттердің тарихын немесе басқа жеке деректерін көре алады.


  1. Сүйреп апару және апару функциясымен кескінді жүктеп салу

Пайдаланушыларға бетті анықтау үшін суреттерді сүйреп апаруға мүмкіндік беру арқылы кескінді жүктеп салу функциясын және тәжірибені тегістеңіз.


Қалай қосуға болады :

👉HTML5-тің сүйреп апару функциясын пайдаланыңыз:

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


👉Сүйреп апару әрекетін өңдеу үшін JavaScript қосыңыз:

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


👉Оның бетті анықтау функциясымен біркелкі үйлесетініне көз жеткізіңіз.


  1. Бетті тануға арналған прогресс жолағы

Жүйе кескінді өңдеп жатқаны туралы пайдаланушыларға хабарлау үшін кескін жүктеп салынған кезде орындалу жолағын көрсету тартымды мүмкіндік болады.


Қалай қосуға болады:

👉Қарапайым HTML орындалу барысы жолағын пайдаланыңыз:

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


👉Суретті өңдеу кезінде орындалу барысын динамикалық түрде жаңартыңыз:

 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. Бетті тану нәтижелері туралы хабарландырулар

Модальды немесе тост хабарландыруы арқылы бетті тану аяқталғаннан кейін нақты уақыттағы хабарландыруларды қамтамасыз ету мүмкіндігін қосуға болады.


Қалай қосуға болады :

👉Сіз Toastr сияқты жеңіл кітапхананы немесе реттелетін тост хабарландыруларын пайдалана аласыз.

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


👉JavaScript-те сервер нәтижені қайтарған кезде хабарландыруды көрсетіңіз:

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


📥Соңғы қадамдар: қайта құру және орналастыру

Осы жаңа мүмкіндіктерді енгізгеннен кейін:


👉Жобаны қайта құру:

 dfx build


👉Тест желісіне орналастыру: бұл негізгі желіге барар алдында алдымен сынақтан өту.

 dfx deploy --network ic


Бұл демонстрациялық мақсатқа арналған бірнеше мысалдар мен идеялар. Сіз оларды өзіңіз сынай аласыз және түсініктеме бөлімінде үлгеріміңізді хабарлай аласыз. Сондай-ақ, сіз онымен ICP-де AI орталықсыздандыру үшін көп нәрсені жасай аласыз.

Қорытынды:

Біз ICP жүйесінде Face Recognizing DApp қолданбасын сәтті сынақтан өткіздік, бұл AI (DeAI) орталықсыздандырудың нақты әрекеті. Біздің тестілеуімізге сәйкес, DApp жауаптары жылдам болды және беттерді анықтау дәл болды. ICP бірегей инфрақұрылымы орталықтандырылған жүйелерге сүйенбестен бет-әлпетті тану сияқты күрделі тапсырмаларды орындауға көмектесе алады.


Ол қауіпсіздік пен құпиялылықты арттырып қана қоймайды, сонымен қатар орталықтандырылмаған AI (DeAI) қолданбаларының жылдам дамуы үшін әлеуетті көрсетеді. ICP дамуын жалғастыра отырып, үлкен үлгілерді қолдану және тізбекте AI қорытындысын орындау мүмкіндігі инновациялар үшін жаңа мүмкіндіктерді аша алады. Орталықтандырылмаған AI болашақта сенімді және ауқымды шешімдердің негізгі ойыншысы болады деп күтуге болады. Сондай-ақ әзірлеушілерде ICP-де көбірек өнімдер мен қызметтерді жасаудың жаңа мүмкіндіктері бар.