Edge AI pe Raspberry Pi: rularea locală a unui Vision Transformer

Inteligența artificială (AI) pe dispozitivele edge a devenit un domeniu important de explorat, mai ales pe platforme accesibile și cu consum redus de resurse, precum Raspberry Pi. Rularea unui model AI direct pe un dispozitiv precum Raspberry Pi aduce beneficii semnificative în ceea ce privește latenta redusă, economisirea de bandă și îmbunătățirea securității prin procesarea locală a datelor. Unul dintre cele mai interesante tipuri de modele AI pentru procesarea imaginilor este Vision Transformer (ViT), care a demonstrat rezultate remarcabile în domeniul viziunii computerizate. În acest articol, vom explora cum să rulezi local un Vision Transformer pe un Raspberry Pi, deschizând astfel posibilități incredibile de procesare vizuală direct pe edge.

Ce este un Vision Transformer (ViT)?

Vision Transformer (ViT) este un model bazat pe arhitectura Transformer, care a devenit popular în domeniul viziunii computerizate datorită performanțelor sale excelente pe sarcini de clasificare a imaginilor. Spre deosebire de modelele CNN (Convolutional Neural Networks) tradiționale, care procesează imagini prin operații convoluționale, ViT împarte imaginea în „patch-uri” și le procesează printr-un mecanism de autoatenție, caracteristic arhitecturilor Transformer. Această abordare a condus la îmbunătățiri semnificative în performanță pentru multe aplicații, inclusiv clasificarea și segmentarea imaginilor.

De ce să rulezi un Vision Transformer pe Raspberry Pi?

Raspberry Pi este un dispozitiv accesibil și cu un consum redus de energie, ideal pentru a implementa soluții Edge AI. Faptul că îl poți utiliza pentru a rula modele complexe de viziune computerizată ca Vision Transformer îți permite să ai procesare locală, fără a depinde de servere externe sau cloud pentru analizele imaginii. Acestea sunt câteva motive pentru care ar trebui să încerci să rulezi un Vision Transformer pe Raspberry Pi:

  • Latenta redusă: Procesarea locală pe Raspberry Pi înseamnă că nu trebuie să aștepți răspunsuri din partea unui server la distanță.
  • Economii de bandă: Nu este nevoie să trimiți imagini mari la un server pentru procesare.
  • Confidențialitate și securitate: Datele nu sunt trimise la servere externe, oferind un plus de securitate.
  • Costuri reduse: Raspberry Pi este o platformă accesibilă și eficientă din punct de vedere al consumului de energie.

Pași pentru rularea unui Vision Transformer pe Raspberry Pi

  1. Pregătirea Raspberry Pi

Înainte de a începe, asigură-te că ai un Raspberry Pi model 4 sau mai nou, cu cel puțin 4 GB de RAM. Vision Transformer necesită resurse de procesare semnificative, așa că un Raspberry Pi 4 este cel mai potrivit pentru acest tip de sarcină.

  1. Instalarea sistemului de operare: Începe prin a instala Raspberry Pi OS pe cardul SD. Poți descărca imaginea de pe site-ul oficial și o poți instala folosind Raspberry Pi Imager.
  2. Actualizarea sistemului: După ce ai instalat sistemul de operare, deschide terminalul și actualizează Raspberry Pi:

bash

Copiază codul

sudo apt update

sudo apt upgrade

  1. Instalarea Python și dependințelor: Vision Transformer va necesita Python și diverse librării de machine learning, cum ar fi TensorFlow sau PyTorch. Instalează-le cu următoarele comenzi:

bash

Copiază codul

sudo apt install python3-pip

pip3 install tensorflow

pip3 install torch torchvision

  1. Obținerea unui model Vision Transformer

Pentru a rula Vision Transformer pe Raspberry Pi, ai două opțiuni:

  • Antrenarea unui model ViT pe Raspberry Pi: Aceasta poate fi o opțiune, dar antrenarea unui model ViT complet pe Raspberry Pi ar fi prea lentă datorită resurselor limitate. În schimb, ar fi mai eficient să folosești un model pre-antrenat.
  • Folosirea unui model pre-antrenat: Există modele ViT pre-antrenate pe care le poți folosi pentru a face inferență. Poți descărca modele pre-antrenate de pe diverse platforme, cum ar fi Hugging Face Model Hub sau PyTorch Hub.

Exemplu de cod pentru a încarca un model ViT pre-antrenat folosind Hugging Face:

python

Copiază codul

from transformers import ViTForImageClassification, ViTFeatureExtractor

from PIL import Image

import torch

 

# Încarcă modelul și extractorul de caracteristici

model = ViTForImageClassification.from_pretrained(„google/vit-base-patch16-224-in21k”)

feature_extractor = ViTFeatureExtractor.from_pretrained(„google/vit-base-patch16-224-in21k”)

 

# Încarcă și preprocesează imaginea

image = Image.open(„path_to_image.jpg”)

inputs = feature_extractor(images=image, return_tensors=”pt”)

 

# Face inferență

with torch.no_grad():

outputs = model(**inputs)

 

# Obține predicția

logits = outputs.logits

predicted_class_idx = logits.argmax(-1).item()

print(f”Predicția clasei: {predicted_class_idx}”)

Acest cod încarcă un model Vision Transformer pre-antrenat și face inferență pe o imagine. Asigură-te că imaginea este disponibilă în directorul indicat.

  1. Optimizarea performanței

Raspberry Pi are o putere de procesare limitată, așa că va trebui să optimizezi performanța pentru a rula modelul ViT mai eficient:

  • Utilizarea TensorFlow Lite sau PyTorch Mobile: Aceste framework-uri sunt concepute pentru a optimiza modelele AI pe dispozitive cu resurse limitate.
  • Reducerea dimensiunii imaginii: Încearcă să reduceți dimensiunea imaginii de intrare pentru a reduce timpul de procesare.
  • Utilizarea procesării în loturi: Dacă vrei să procesezi mai multe imagini, încearcă să folosești procesarea în loturi (batch processing) pentru a maximiza utilizarea resurselor.
  1. Vizualizarea rezultatelor

După ce ai făcut inferența pe imagine, poți utiliza librării precum OpenCV sau Matplotlib pentru a vizualiza rezultatele sau pentru a efectua analize suplimentare pe imagini.

Exemplu simplu de utilizare a Matplotlib pentru a vizualiza rezultatele:

python

Copiază codul

import matplotlib.pyplot as plt

 

# Afișează imaginea originală

plt.imshow(image)

plt.title(f”Predicția clasei: {predicted_class_idx}”)

plt.show()

  1. Alternativa: folosirea Edge TPU

Dacă vrei să îmbunătățești performanța pe Raspberry Pi și să optimizezi consumul de energie, poți utiliza un Edge TPU, cum ar fi Google Coral USB Accelerator. Acest accelerator hardware poate accelera inferența modelelor AI pe Raspberry Pi, făcându-l mult mai rapid și mai eficient din punct de vedere energetic.

Pentru a utiliza Edge TPU cu TensorFlow Lite, poți urma documentația oficială pentru a configura Raspberry Pi și a implementa inferența pe TPU.

Concluzie

Rularea unui Vision Transformer pe Raspberry Pi este o oportunitate fantastică de a explora AI pe edge, oferind atât performanțe decente pentru procesarea imaginilor, cât și un consum redus de energie. În ciuda resurselor limitate ale Raspberry Pi, cu ajutorul modelelor pre-antrenate și al unor tehnici de optimizare, poți obține rezultate excelente. Acest setup poate fi folosit pentru aplicații de recunoaștere a imaginilor, monitorizare video și multe altele, direct pe dispozitivul edge.

Sursa: https://perfectum.ro/

About the Author: Admin

You might like