Coral Edge TPU
和Ultralytics
的强大功能集于一处: edge-tpu-silva
。我们的edge-tpu-silva是一个Python包,它简化了Coral TPU USB依赖项的安装,并确保与PyCoral和Ultralytics的兼容性。该软件包支持各种边缘设备上的对象detection
、 segmentation
和classification
功能,以实现更高的FPS
(实时处理器速度)。
Coral USB Accelerator Exclusivity
:
Edge-tpu-silva 库专为与 Coral USB 加速器无缝集成而构建。这种强大的硬件加速器不仅是一种要求,而且是一种战略选择,可以释放该库在卓越的对象detection
、 segmentation
和classification
的全部潜力。
探索 Coral USB 加速器并体验使用 edge-tpu-silva 库定制的边缘计算方法。
edge-tpu-silva
包只能与python versions <3.10
兼容。如果您的 python 版本不兼容,请安装特定的 python 版本。
示例:对于
Raspberry Pi
您可以单击 有关如何使用 pyenv 安装特定 python 版本的说明
注意:推荐使用Python 3.6到3.9,点击上面的链接了解如何安装特定的Python版本
注意:确保您的 Raspberry Pi 是最新的。为此,请在终端中运行以下命令。
sudo apt-get updatesudo apt-get upgrade
在终端中运行下面的 bash 代码来创建并激活名为.venv
的新虚拟环境。确保您位于想要安装此环境的特定目录中。
python3 -m venv .venv
source .venv/bin/activate
要安装edge-tpu-silva ,请在指定的 python 环境中使用以下 pip 命令:
pip install edge-tpu-silva
此表概述了系统与不同设备和操作系统的兼容性。
兼容性 | 设置命令 | |
---|---|---|
树莓派5 | ✔ | silvatpu-linux-设置 |
树莓派4 | ✔ | silvatpu-linux-设置 |
树莓派3 | ✔ | silvatpu-linux-设置 |
杰特森纳米 | ✔ | silvatpu-linux-设置 |
视窗 | ||
macOS |
要为您的系统配置设置工具,请在完成步骤 1 后在终端中运行设置命令。
示例:如果您使用的是 Raspberry Pi 5,请按照步骤 1 在终端中运行以下命令。
silvatpu-linux-setup
该命令安装适用于 Linux 的标准 Edge TPU 运行时,以降低的时钟频率运行设备。或者,您可以安装最高速度的版本,但要小心功耗和设备热量的增加。如果不确定,为了安全起见,请坚持降低频率。要安装最大频率运行时间,请将设置命令的速度指定为max
。
silvatpu-linux-setup --speed max
您不能同时安装两个版本的运行时,但您可以通过简单地安装备用运行时来进行切换,如上所示
注意:以最大时钟频率使用 USB 加速器可能会导致其过热。为防止烧伤,请将其放在够不到的地方或以降低的时钟频率运行。
注意:请确保您已通过 USB 3.0 端口连接
Coral USB Accelerator
usb 3.0 port (for faster speed)
。如果在安装和设置过程中连接了 Coral USB 加速器,请断开并重新连接以确保proper configuration.
要利用此库发挥对象detection
、 segmentation
和classification
的强大功能,您需要一个与 Edge TPU 兼容的 .tflite 模型。这些模型应使用Ultralytics
导出,确保与 edge-tpu-silva 库无缝集成。
注意:请注意,YOLO 导出期间指定的
imgsz
值应与为任何进程定义imgsz
时使用的相同值一致。这些设置的一致性对于获得最佳性能至关重要。
较小的模型运行速度较快,但精度可能较低,而较大的模型运行速度较慢,但精度通常较高。使用edge-tpu-silva 库探索以下模型的边缘计算功能。
下载链接 | 过程 | 基础型号 | 伊姆格斯兹 | 对象类 |
---|---|---|---|---|
下载模型 | 检测 | yolov8n.pt | 240 | 可可128 |
下载模型 | 分割 | yolov8n-seg.pt | 240 | 可可128 |
下载模型 | 检测 | yolov8n.pt | 192 | 可可128 |
下载模型 | 分割 | yolov8n-seg.pt | 192 | 可可128 |
下载模型 | 分类 | yolov8n-cls.pt | 640 | 图像网 |
下载模型 | 检测 | yolov9c.pt | 240 | 可可128 |
注意: YOLOv9 模型,尤其是 YOLOv9c.pt 版本,体积很大,这导致其 TensorFlow Lite 版本也相当大。因此,它在 Edge TPU 上的处理速度相对较慢。
要使用process_detection
函数执行对象检测,您可以按照以下示例操作:
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
:使用入口点“silvatpu”要从命令行使用process_detection
函数执行对象检测,您可以使用用户友好的入口点silvatpu
。这是一个示例命令:
silvatpu -p det -m path/to/model.tflite -i path/to/input/video.mp4 -z 192 -t 0.5 -v True
要使用process_segmentation
函数执行对象分割,您可以按照以下示例操作:
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
:使用入口点“silvatpu”要从命令行使用process_segmentation
函数执行对象分割,您可以使用用户友好的入口点silvatpu
。这是一个示例命令:
silvatpu -p seg -m path/to/model.tflite -i path/to/input/video.mp4 -z 192 -t 0.5 -v True
detection
、 segmentation
和classification
函数 输入参数范围 | 描述 | 默认值 |
---|---|---|
model_path | 对象分割模型的路径。 | - |
input_path | 要处理的图像/视频的文件路径(相机(0|1|2))。 | - |
imgsz | 定义用于推理的图像大小。 | - |
threshold | 检测到的对象的阈值。 | 0.4 |
verbose | 显示打印到终端。 | True |
show | 带分段的显示框架。 | False |
classes | 将预测过滤为一组类 ID。 | None |
detection
、 segmentation
和classification
功能输出每个处理函数都会产生以下输出:
输出参数 | 描述 |
---|---|
objs_lst | 帧中检测到的对象列表。 |
fps | 已处理帧的每秒帧数 (fps)。 |
用法示例:
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 )
欢迎贡献!如果您发现任何问题或有改进建议,请提出问题或提交拉取请求。
Python 包索引维护者 (c) [2024] David Nyarko