Coral Edge TPU
y Ultralytics
todo en un solo lugar: edge-tpu-silva
. Nuestro edge-tpu-silva es un paquete de Python que simplifica la instalación de la dependencia USB Coral TPU y garantiza la compatibilidad con PyCoral y Ultralytics. Este paquete potencia las capacidades de detection
, segmentation
y classification
de objetos en varios dispositivos periféricos para lograr una mayor FPS
(velocidad del procesador en tiempo real).
Coral USB Accelerator Exclusivity
:
La biblioteca edge-tpu-silva está diseñada específicamente para una integración perfecta con Coral USB Accelerator. Este potente acelerador de hardware no es sólo un requisito sino una elección estratégica, que libera todo el potencial de la biblioteca para detection
, segmentation
y classification
superiores de objetos.
Descubra Coral USB Accelerator y experimente un enfoque personalizado para la informática de punta con la biblioteca edge-tpu-silva.
El paquete edge-tpu-silva
solo se puede compactar con python versions <3.10
. Instale una versión específica de Python si su versión de Python no es compatible.
Ejemplo: para
Raspberry Pi
puede hacer clic para obtener instrucciones sobre cómo instalar una versión específica de Python usando pyenv.
Nota: Se recomienda Python 3.6 a 3.9. Haga clic en el enlace de arriba para saber cómo instalar una versión específica de Python.
Nota: asegúrese de que su Raspberry Pi esté actualizada. Para hacerlo, ejecute el siguiente comando en la terminal.
sudo apt-get updatesudo apt-get upgrade
Ejecute el siguiente código bash en su terminal para crear y activar un nuevo entorno virtual llamado .venv
. Asegúrese de estar en el directorio específico donde desea que se instale este entorno.
python3 -m venv .venv
source .venv/bin/activate
Para instalar edge-tpu-silva , use el siguiente comando pip en un entorno Python específico:
pip install edge-tpu-silva
Esta tabla proporciona una descripción general de la compatibilidad del sistema con diferentes dispositivos y sistemas operativos.
Compatibilidad | Comando de configuración | |
---|---|---|
Frambuesa Pi 5 | ✔ | configuración-linux-silvatpu |
Frambuesa Pi 4 | ✔ | configuración-linux-silvatpu |
Frambuesa Pi 3 | ✔ | configuración-linux-silvatpu |
Supersónico Nano | ✔ | configuración-linux-silvatpu |
ventanas | ||
macos |
Para configurar las herramientas de configuración para su sistema, ejecute el comando de configuración en la terminal después de completar el paso 1.
Ejemplo: si está en una Raspberry Pi 5, ejecute el siguiente comando en la terminal después del paso 1.
silvatpu-linux-setup
El comando instala el tiempo de ejecución estándar de Edge TPU para Linux, ejecutando el dispositivo a una frecuencia de reloj reducida. Alternativamente, puede instalar una versión para máxima velocidad, pero tenga cuidado con el aumento del consumo de energía y el calor del dispositivo. Si no está seguro, respete la frecuencia reducida por seguridad. Para instalar el tiempo de ejecución de frecuencia máxima, especifique la velocidad del comando de configuración al max
.
silvatpu-linux-setup --speed max
No puede tener ambas versiones del tiempo de ejecución instaladas al mismo tiempo, pero puede cambiar simplemente instalando el tiempo de ejecución alternativo como se muestra arriba.
Precaución: El uso del acelerador USB a la máxima frecuencia de reloj puede calentarlo peligrosamente. Para evitar quemaduras, manténgalo fuera del alcance o utilícelo a una frecuencia de reloj reducida.
Nota: asegúrese de tener el
Coral USB Accelerator
conectado a travésusb 3.0 port (for faster speed)
. Si el Coral USB Accelerator estuvo conectado durante la instalación y configuración, desconéctelo y vuelva a conectarlo para garantizarproper configuration.
Para liberar el poder de detection
, segmentation
y classification
de objetos con esta biblioteca, necesitará un modelo .tflite compatible con Edge TPU. Estos modelos deben exportarse utilizando Ultralytics
, lo que garantiza una integración perfecta con la biblioteca edge-tpu-silva.
NOTA: Tenga en cuenta que el valor
imgsz
especificado durante la exportación de YOLO debe alinearse con el mismo valor utilizado al definirimgsz
para cualquiera de los procesos. La coherencia en estos entornos es crucial para un rendimiento óptimo.
Los modelos más pequeños funcionarán más rápido pero pueden tener menor precisión, mientras que los modelos más grandes funcionarán más lento pero normalmente tendrán mayor precisión. Explore las capacidades de la informática de punta con los siguientes modelos utilizando la biblioteca edge-tpu-silva.
Enlace de descarga | Proceso | Modelo básico | imgsz | Clases de objetos |
---|---|---|---|---|
Descargar Modelo | Detección | yolov8n.pt | 240 | COCO128 |
Descargar Modelo | Segmentación | yolov8n-seg.pt | 240 | COCO128 |
Descargar Modelo | Detección | yolov8n.pt | 192 | COCO128 |
Descargar Modelo | Segmentación | yolov8n-seg.pt | 192 | COCO128 |
Descargar Modelo | Clasificación | yolov8n-cls.pt | 640 | ImagenNet |
Descargar Modelo | Detección | yolov9c.pt | 240 | COCO128 |
NOTA: El modelo YOLOv9, particularmente la versión YOLOv9c.pt, tiene un tamaño considerable, lo que hace que su versión TensorFlow Lite también sea bastante grande. Como resultado, su velocidad de procesamiento en un Edge TPU es comparativamente más lenta.
Para realizar la detección de objetos utilizando la función process_detection
, puede seguir este ejemplo:
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
en la Terminal: usando el punto de entrada "silvatpu" Para realizar la detección de objetos con la función process_detection
desde la línea de comando, puede utilizar el punto de entrada fácil de usar silvatpu
. Aquí hay un comando de ejemplo:
silvatpu -p det -m path/to/model.tflite -i path/to/input/video.mp4 -z 192 -t 0.5 -v True
Para realizar la segmentación de objetos utilizando la función process_segmentation
, puede seguir este ejemplo:
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
en la Terminal: usando el punto de entrada "silvatpu" Para realizar la segmentación de objetos con la función process_segmentation
desde la línea de comando, puede utilizar el punto de entrada fácil de usar silvatpu
. Aquí hay un comando de ejemplo:
silvatpu -p seg -m path/to/model.tflite -i path/to/input/video.mp4 -z 192 -t 0.5 -v True
detection
, segmentation
y classification
de procesos Función Parámetros de entradaParámetro | Descripción | Valor predeterminado |
---|---|---|
model_path | Ruta al modelo de segmentación de objetos. | - |
input_path | Ruta del archivo de imagen/vídeo a procesar (Cámara(0|1|2)). | - |
imgsz | Define el tamaño de la imagen para la inferencia. | - |
threshold | Umbral para objetos detectados. | 0.4 |
verbose | Mostrar impresiones al terminal. | True |
show | Marco de visualización con segmentación. | False |
classes | Filtra predicciones a un conjunto de ID de clase. | None |
detection
, segmentation
y classification
de procesos Función SalidaCada función de proceso produce el siguiente resultado:
Parámetro de salida | Descripción |
---|---|
objs_lst | Lista de objetos detectados en el marco. |
fps | Cuadros por segundo (fps) del cuadro procesado. |
Uso de ejemplo:
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 )
¡Las contribuciones son bienvenidas! Si encuentra algún problema o tiene sugerencias para mejorar, abra un problema o envíe una solicitud de extracción.
Mantenedor(es) del índice de paquetes de Python (c) [2024] David Nyarko