Coral Edge TPU
et Ultralytics
en un seul endroit : edge-tpu-silva
. Notre edge-tpu-silva est un package Python qui simplifie l'installation de la dépendance USB Coral TPU et assure la compatibilité avec PyCoral et Ultralytics. Ce package permet des capacités detection
, segmentation
et classification
d'objets sur divers appareils de périphérie pour atteindre FPS
(vitesse de processeur en temps réel) plus élevées.
Coral USB Accelerator Exclusivity
:
La bibliothèque edge-tpu-silva est spécialement conçue pour une intégration transparente avec l'accélérateur USB Coral. Ce puissant accélérateur matériel n'est pas seulement une exigence mais un choix stratégique, libérant tout le potentiel de la bibliothèque en matière detection
, segmentation
et classification
d'objets supérieures.
Découvrez l'accélérateur USB Coral et expérimentez une approche personnalisée de l'informatique de pointe avec la bibliothèque edge-tpu-silva.
Le package edge-tpu-silva
n'est compactable qu'avec python versions <3.10
. Installez une version spécifique de Python si votre version de Python n'est pas compatible.
Exemple : pour
Raspberry Pi
vous pouvez cliquer sur Pour obtenir des instructions sur la façon d'installer une version spécifique de Python à l'aide de pyenv
Remarque : Python 3.6 à 3.9 est recommandé. Cliquez sur le lien ci-dessus pour savoir comment installer une version spécifique de Python.
Remarque : assurez-vous que votre Raspberry Pi est à jour. Pour ce faire, exécutez la commande ci-dessous dans le terminal.
sudo apt-get updatesudo apt-get upgrade
Exécutez le code bash ci-dessous dans votre terminal pour créer et activer un nouvel environnement virtuel nommé .venv
. Assurez-vous que vous vous trouvez dans le répertoire spécifique dans lequel vous souhaitez que cet environnement soit installé.
python3 -m venv .venv
source .venv/bin/activate
Pour installer edge-tpu-silva , utilisez la commande pip suivante dans un environnement python spécifié :
pip install edge-tpu-silva
Ce tableau donne un aperçu de la compatibilité du système avec différents appareils et systèmes d'exploitation.
Compatibilité | Commande de configuration | |
---|---|---|
Framboise Pi 5 | ✔ | configuration-silvatpu-linux |
Framboise Pi 4 | ✔ | configuration-silvatpu-linux |
Framboise Pi 3 | ✔ | configuration-silvatpu-linux |
Jetson Nano | ✔ | configuration-silvatpu-linux |
Fenêtres | ||
macOS |
Afin de configurer les outils de configuration pour votre système, exécutez la commande setup dans le terminal une fois l'étape 1 terminée.
Exemple : si vous êtes sur un Raspberry Pi 5, exécutez la commande ci-dessous dans le terminal après l'étape 1.
silvatpu-linux-setup
La commande installe le runtime Edge TPU standard pour Linux, exécutant l’appareil à une fréquence d’horloge réduite. Alternativement, vous pouvez installer une version pour une vitesse maximale, mais faites attention à l'augmentation de la consommation d'énergie et de la chaleur de l'appareil. En cas de doute, respectez la fréquence réduite pour des raisons de sécurité. Pour installer une exécution à fréquence maximale, spécifiez la vitesse de la commande setup sur max
.
silvatpu-linux-setup --speed max
Vous ne pouvez pas installer les deux versions du runtime en même temps, mais vous pouvez changer en installant simplement le runtime alternatif, comme indiqué ci-dessus.
Attention : L'utilisation de l'accélérateur USB à la fréquence d'horloge maximale peut le rendre dangereusement chaud. Pour éviter les brûlures, gardez-le hors de portée ou faites-le fonctionner à une fréquence d'horloge réduite.
Remarque : Veuillez vous assurer que l'
Coral USB Accelerator
est connecté viausb 3.0 port (for faster speed)
. Si l'accélérateur USB Coral a été connecté lors de l'installation et de la configuration, veuillez le déconnecter et le reconnecter pour garantirproper configuration.
Pour libérer la puissance de detection
, segmentation
et classification
d'objets avec cette bibliothèque, vous aurez besoin d'un modèle .tflite compatible Edge TPU. Ces modèles doivent être exportés à l'aide Ultralytics
, garantissant une intégration transparente avec la bibliothèque edge-tpu-silva.
REMARQUE : Veuillez noter que la valeur
imgsz
spécifiée lors de l'exportation YOLO doit s'aligner sur la même valeur utilisée lors de la définitionimgsz
pour l'un des processus. La cohérence de ces paramètres est cruciale pour des performances optimales.
Les modèles plus petits fonctionneront plus rapidement mais pourront avoir une précision moindre, tandis que les modèles plus grands fonctionneront plus lentement mais auront généralement une précision plus élevée. Explorez les capacités de l'informatique de pointe avec les modèles ci-dessous à l'aide de la bibliothèque edge-tpu-silva.
Lien de téléchargement | Processus | Modèle de base | imgsz | Classes d'objets |
---|---|---|---|---|
Télécharger le modèle | Détection | yolov8n.pt | 240 | COCO128 |
Télécharger le modèle | Segmentation | yolov8n-seg.pt | 240 | COCO128 |
Télécharger le modèle | Détection | yolov8n.pt | 192 | COCO128 |
Télécharger le modèle | Segmentation | yolov8n-seg.pt | 192 | COCO128 |
Télécharger le modèle | Classification | yolov8n-cls.pt | 640 | ImageNet |
Télécharger le modèle | Détection | yolov9c.pt | 240 | COCO128 |
REMARQUE : Le modèle YOLOv9, en particulier la version YOLOv9c.pt, est de taille importante, ce qui fait que sa version TensorFlow Lite est également assez volumineuse. En conséquence, sa vitesse de traitement sur un Edge TPU est comparativement plus lente.
Pour effectuer une détection d'objet à l'aide de la fonction process_detection
, vous pouvez suivre cet exemple :
from edge_tpu_silva import process_detection
# Run the object detection process
outs = process_detection ( model_path = 'path/to/your/model.tflite' , input_path = 'path/to/your/input/video.mp4' , imgsz = 192 )
for _ , _ in outs :
pass
process_detection
dans le terminal : utilisation du point d'entrée "silvatpu" Pour effectuer une détection d'objet avec la fonction process_detection
à partir de la ligne de commande, vous pouvez utiliser le point d'entrée convivial silvatpu
. Voici un exemple de commande :
silvatpu -p det -m path/to/model.tflite -i path/to/input/video.mp4 -z 192 -t 0.5 -v True
Pour effectuer une segmentation d'objets à l'aide de la fonction process_segmentation
, vous pouvez suivre cet exemple :
from edge_tpu_silva import process_segmentation
# Run the object segmentation process
outs = process_segmentation ( model_path = 'path/to/your/model.tflite' , input_path = 'path/to/your/input/video.mp4' , imgsz = 192 )
for _ , _ in outs :
pass
process_segmentation
dans le terminal : utilisation du point d'entrée "silvatpu" Pour effectuer une segmentation d'objets avec la fonction process_segmentation
à partir de la ligne de commande, vous pouvez utiliser le point d'entrée convivial silvatpu
. Voici un exemple de commande :
silvatpu -p seg -m path/to/model.tflite -i path/to/input/video.mp4 -z 192 -t 0.5 -v True
detection
, segmentation
et classification
des processus Fonction Paramètres d'entréeParamètre | Description | Valeur par défaut |
---|---|---|
model_path | Chemin d'accès au modèle de segmentation d'objets. | - |
input_path | Chemin du fichier de l’image/vidéo à traiter (Camera(0|1|2)). | - |
imgsz | Définit la taille de l’image pour l’inférence. | - |
threshold | Seuil pour les objets détectés. | 0.4 |
verbose | Afficher les impressions sur le terminal. | True |
show | Cadre d'affichage avec segmentation. | False |
classes | Filtre les prédictions sur un ensemble d’ID de classe. | None |
detection
, segmentation
et classification
des processus Fonction SortieChaque fonction de processus génère le résultat suivant :
Paramètre de sortie | Description |
---|---|
objs_lst | Liste des objets détectés dans le cadre. |
fps | Images par seconde (fps) de l’image traitée. |
Exemple d'utilisation :
from edge_tpu_silva import process_detection
# Run the object detection process
outs = process_detection ( model_path = 'path/to/your/model.tflite' , input_path = 'path/to/your/input/video.mp4' , imgsz = 192 )
for objs_lst , fps in outs :
# Access the output parameters as needed
print ( f"Processed frame with { len ( objs_lst ) } objects. FPS: { fps } " )
print ( "List of object predictions in frame:" )
print ( objs_lst )
Les contributions sont les bienvenues ! Si vous rencontrez des problèmes ou avez des suggestions d'améliorations, veuillez ouvrir un problème ou soumettre une pull request.
Responsable(s) de l'index des packages Python (c) [2024] David Nyarko