跳至内容

理解 YOLOv8的部署选项

导言

您在旅程中已经走了很长一段路 YOLOv8.您勤奋地收集数据,仔细注释数据,并投入数小时进行培训和严格评估您的定制 YOLOv8 型。现在,是时候将您的模型用于您的特定应用程序、用例或项目了。但是,您面前有一个关键的决定:如何有效地导出和部署模型。

本指南将引导您完成 YOLOv8的部署选项以及为您的项目选择正确选项时要考虑的基本因素。

如何为您的YOLOv8 机型选择正确的部署方案

在部署YOLOv8 模型时,选择合适的导出格式非常重要。正如Ultralytics YOLOv8 Modes 文档中所述,model.export() 函数允许将训练好的模型转换成各种格式,以适应不同的环境和性能要求。

理想的格式取决于模型的预期运行环境,同时还要兼顾速度、硬件限制和集成便利性。在下一节中,我们将仔细研究每种导出选项,了解何时选择每种导出选项。

YOLOv8的部署选项

让我们来了解一下不同的YOLOv8 部署选项。有关导出过程的详细说明,请访问Ultralytics 有关导出的文档页面

PyTorch

PyTorch 是一个开源机器学习库,广泛应用于深度学习和人工智能领域。它具有高度的灵活性和速度,因此深受研究人员和开发人员的喜爱。

  • 性能基准:PyTorch 以易用性和灵活性著称,与其他更专业、更优化的框架相比,可能会在原始性能上略有折衷。

  • 兼容性和集成性:与Python 中的各种数据科学和机器学习库具有出色的兼容性。

  • 社区支持和生态系统:最有活力的社区之一,拥有丰富的学习和故障排除资源。

  • 案例研究:许多学术论文参考了PyTorch 中部署的模型,这些模型常用于研究原型。

  • 维护和更新:定期更新,积极开发和支持新功能。

  • 安全考虑因素:定期修补安全问题,但安全性主要取决于部署的整体环境。

  • 硬件加速:支持CUDA ,用于GPU 加速,这对加快模型训练和推理至关重要。

TorchScript

TorchScript 延伸 PyTorch的功能,允许导出模型在 C++ 运行时环境中运行。这使得它适用于以下生产环境: Python 不可用。

  • 性能基准:可提供比本地PyTorch 更高的性能,尤其是在生产环境中。

  • 兼容性和集成性:专为从PyTorch 无缝过渡到 C++ 生产环境而设计,但某些高级功能可能无法完美转换。

  • 社区支持和生态系统:受益于PyTorch 的大型社区,但专业开发人员范围较窄。

  • 案例研究:广泛应用于Python 性能开销成为瓶颈的行业环境中。

  • 维护和更新:与PyTorch 一起维护,持续更新。

  • 安全考虑:通过在没有完全安装Python 的环境中运行模型,提高了安全性。

  • 硬件加速:继承PyTorch 的CUDA 支持,确保高效利用GPU 。

ONNX

开放神经网络交换(ONNX )是一种可在不同框架间实现模型互操作性的格式,这在部署到不同平台时至关重要。

  • 性能基准:ONNX 模型的性能可能会有所不同,这取决于其部署的具体运行时间。

  • 兼容性和集成性:由于其框架无关性,可在多个平台和硬件之间实现高度互操作性。

  • 社区支持和生态系统:得到许多组织的支持,形成了广泛的生态系统和各种优化工具。

  • 案例研究:常用于在不同的机器学习框架之间移动模型,展示了其灵活性。

  • 维护和更新:作为一项开放标准,ONNX 会定期更新,以支持新的操作和模式。

  • 安全考虑因素:与任何跨平台工具一样,确保转换和部署管道的安全至关重要。

  • 硬件加速:通过ONNX Runtime,模型可以利用各种硬件优化。

OpenVINO

OpenVINO 是一个Intel 工具包,旨在促进深度学习模型在Intel 硬件上的部署,提高性能和速度。

  • 性能基准:专门针对Intel CPU、GPU 和 VPU 进行了优化,可显著提升兼容硬件的性能。

  • 兼容性和集成性:在Intel 生态系统中运行效果最佳,但也支持一系列其他平台。

  • 社区支持和生态系统:由Intel 支持,拥有坚实的用户基础,尤其是在计算机视觉领域。

  • 案例研究:通常用于物联网和边缘计算场景,在这些场景中普遍使用Intel 硬件。

  • 维护和更新:Intel 定期更新OpenVINO ,以支持最新的深度学习模型和Intel 硬件。

  • 安全考虑因素:提供强大的安全功能,适合在敏感应用中部署。

  • 硬件加速:专为在Intel 硬件上加速而定制,利用专用指令集和硬件功能。

有关使用OpenVINO 进行部署的详细信息,请参阅Ultralytics Integration 文档:Intel OpenVINO 导出

TensorRT

TensorRT 是一款高性能深度学习推理优化器和运行时,来自NVIDIA ,非常适合需要速度和效率的应用。

  • 性能基准:在NVIDIA GPU 上提供顶级性能,支持高速推理。

  • 兼容性和集成性:最适合NVIDIA 硬件,在此环境之外的支持有限。

  • 社区支持和生态系统:通过NVIDIA 开发人员论坛和文档建立强大的支持网络。

  • 案例研究:广泛应用于需要对视频和图像数据进行实时推理的行业。

  • 维护和更新:NVIDIA 维护TensorRT ,经常更新以提高性能和支持新的GPU 架构。

  • 安全考虑因素:与许多NVIDIA 产品一样,它非常注重安全性,但具体情况取决于部署环境。

  • 硬件加速:专为NVIDIA GPU 设计,提供深度优化和加速。

CoreML

CoreML 是 Apple 的机器学习框架,针对 Apple 生态系统(包括iOS 、macOS、watchOS 和 tvOS)中的设备性能进行了优化。

  • 性能基准:针对 Apple 硬件上的设备性能进行了优化,同时将电池使用量降至最低。

  • 兼容性和集成性:专为苹果生态系统设计,为iOS 和 macOS 应用程序提供简化的工作流程。

  • 社区支持和生态系统来自 Apple 的强大支持和专门的开发者社区,以及大量的文档和工具。

  • 案例研究:常用于苹果产品上需要设备上机器学习功能的应用。

  • 维护和更新:由 Apple 定期更新,以支持最新的机器学习进展和 Apple 硬件。

  • 安全考虑:受益于苹果公司对用户隐私和数据安全的重视。

  • 硬件加速充分利用 Apple 的神经引擎和GPU 加速机器学习任务。

TF SavedModel

TF SavedModel 是 TensorFlow用于保存和提供机器学习模型的格式,特别适用于可扩展的服务器环境。

  • 性能基准:在服务器环境中提供可扩展的性能,尤其是与TensorFlow Serving 一起使用时。

  • 兼容性和集成性:TensorFlow 生态系统的广泛兼容性,包括云和企业服务器部署。

  • 社区支持和生态系统:由于TensorFlow 广受欢迎,因此拥有大量社区支持,以及大量用于部署和优化的工具。

  • 案例研究:广泛应用于生产环境,为深度学习模型提供大规模服务。

  • 维护和更新:由Google 和TensorFlow 社区提供支持,确保定期更新和新增功能。

  • 安全考虑因素:使用TensorFlow Serving 进行的部署包括针对企业级应用的强大安全功能。

  • 硬件加速:通过TensorFlow 的后端支持各种硬件加速。

TF GraphDef

TF GraphDef 是一种TensorFlow 格式,它将模型表示为图形,有利于需要静态计算图形的环境。

  • 性能基准:为静态计算图提供稳定的性能,重点关注一致性和可靠性。

  • 兼容性和集成性:可轻松集成到TensorFlow 的基础设施中,但灵活性不如SavedModel 。

  • 社区支持和生态系统:TensorFlow 的生态系统提供了良好的支持,有许多资源可用于优化静态图。

  • 案例研究:适用于需要静态图形的场景,如某些嵌入式系统。

  • 维护和更新:与TensorFlow 的核心更新一起定期更新。

  • 安全考虑因素:通过TensorFlow 的既定安全实践确保安全部署。

  • 硬件加速:可利用TensorFlow 的硬件加速选项,但不如SavedModel 灵活。

TF 轻型

TF 精简版是 TensorFlow的移动和嵌入式设备机器学习解决方案,为设备端推理提供轻量级库。

  • 性能基准:专为提高移动和嵌入式设备的速度和效率而设计。

  • 兼容性和集成性:由于其轻便的特性,可在多种设备上使用。

  • 社区支持和生态系统:在Google 的支持下,它拥有一个强大的社区和越来越多的开发人员资源。

  • 案例研究:在需要在设备上进行推理且占用空间最小的移动应用中很受欢迎。

  • 维护和更新:定期更新,纳入最新功能并优化移动设备。

  • 安全考虑因素:为在终端用户设备上运行模型提供安全环境。

  • 硬件加速:支持多种硬件加速选项,包括GPU 和 DSP。

TF 边缘TPU

TF EdgeTPU 专为在Google 的 EdgeTPU 硬件上进行高速、高效计算而设计,非常适合需要实时处理的物联网设备。

  • 性能基准:专门针对Google's EdgeTPU 硬件上的高速、高效计算进行了优化。

  • 兼容性和集成性:仅适用于 EdgeTPU 设备上的TensorFlow Lite 型号。

  • 社区支持和生态系统:Google 和第三方开发人员提供的资源支持不断增加。

  • 案例研究:用于需要低延迟实时处理的物联网设备和应用。

  • 维护和更新:不断改进,以充分利用新发布的 EdgeTPU 硬件的功能。

  • 安全考虑因素:与Google 强大的物联网和边缘设备安全功能集成。

  • 硬件加速:专为充分利用Google Coral 设备而设计。

TF.js

TensorFlow.js (TF.js) 是一个将机器学习功能直接引入浏览器的库,为网络开发人员和用户提供了一个全新的可能性领域。它允许在网络应用程序中集成机器学习模型,而无需后端基础设施。

  • 性能基准:可直接在浏览器中进行机器学习,性能合理,具体取决于客户端设备。

  • 兼容性和集成性:与网络技术高度兼容,可轻松集成到网络应用程序中。

  • 社区支持和生态系统:来自网络和 Node.js 开发人员社区的支持,以及在浏览器中部署 ML 模型的各种工具。

  • 案例研究:适用于交互式网络应用程序,无需服务器端处理即可从客户端机器学习中获益。

  • 维护和更新:由TensorFlow 团队维护,开源社区也提供了支持。

  • 安全考虑因素:利用网络平台的安全模式,在浏览器的安全环境中运行。

  • 硬件加速:通过访问 WebGL 等硬件加速的基于网络的应用程序接口,可以提高性能。

PaddlePaddle

PaddlePaddle 是百度开发的一个开源深度学习框架。其设计宗旨是既能为研究人员提供高效服务,又能让开发人员轻松使用。它在中国尤其流行,并为中文处理提供专门支持。

  • 性能基准:提供具有竞争力的性能,注重易用性和可扩展性。

  • 兼容性和集成性:在百度生态系统中集成良好,支持广泛的应用程序。

  • 社区支持和生态系统:虽然该社区在全球范围内规模较小,但发展迅速,尤其是在中国。

  • 案例研究:常用于中国市场,以及为其他主要框架寻找替代方案的开发人员。

  • 维护和更新:定期更新,重点服务于中文人工智能应用程序和服务。

  • 安全考虑:强调数据隐私和安全,符合中国数据管理标准。

  • 硬件加速:支持各种硬件加速,包括百度自己的昆仑芯片。

NCNN

NCNN 是专为移动平台优化的高性能神经网络推理框架。它具有轻量级和高效的特点,特别适合资源有限的移动和嵌入式设备。

  • 性能基准:针对移动平台进行了高度优化,可在基于 ARM 的设备上进行高效推理。

  • 兼容性和集成性:适用于采用 ARM 架构的手机和嵌入式系统。

  • 社区支持和生态系统:由一个专注于移动和嵌入式 ML 应用的小众但活跃的社区提供支持。

  • 案例研究:适用于Android 和其他基于 ARM 的系统上对效率和速度要求极高的移动应用。

  • 维护和更新:不断改进,在一系列 ARM 设备上保持高性能。

  • 安全考虑:侧重于在设备上本地运行,利用设备上处理的固有安全性。

  • 硬件加速:专为 ARM CPU 和 GPU 量身定制,并针对这些架构进行了特定优化。

YOLOv8 部署方案比较分析

下表简要介绍了YOLOv8 模型的各种部署选项,可帮助您根据几个关键标准评估哪种选项最适合您的项目需求。如需深入了解每个部署选项的格式,请参阅Ultralytics 文档页面上的导出格式

部署选项 性能基准 兼容性和一体化 社区支持和生态系统 案例研究 维护和更新 安全考虑因素 硬件加速
PyTorch 良好的灵活性;可能会牺牲原始性能 与Python 库配合默契 广泛的资源和社区 研究与原型 定期、积极的发展 取决于部署环境 CUDA 支持GPU 加速
TorchScript 比PyTorch 从PyTorch 到 C++ 的平滑过渡 专业,但比PyTorch Python 是瓶颈所在的行业 持续更新PyTorch 提高安全性,无需全面Python 从CUDA 继承支持PyTorch
ONNX 根据运行时间而变化 跨越不同框架的程度高 广泛的生态系统,得到许多组织的支持 跨 ML 框架的灵活性 定期更新新业务 确保安全转换和部署实践 各种硬件优化
OpenVINO 针对Intel 硬件进行了优化 Intel 生态系统内最佳 扎实的计算机视觉领域知识 利用Intel 硬件实现物联网和边缘技术 定期更新Intel 硬件 适用于敏感应用的强大功能 专为Intel 硬件定制
TensorRT 顶级NVIDIA GPU 最适合NVIDIA 硬件 通过以下方式建立强大的网络NVIDIA 实时视频和图像推理 针对新 GPU 的频繁更新 强调安全 专为NVIDIA GPU 设计
CoreML 针对设备上的 Apple 硬件进行了优化 苹果生态系统独享 苹果公司和开发者的大力支持 苹果产品上的设备 ML 苹果定期更新 关注隐私和安全 苹果神经引擎和GPU
TF SavedModel 可在服务器环境中扩展 TensorFlow 生态系统的广泛兼容性 TensorFlow 人气高,支持率大 按比例为模型提供服务 Google 和社区定期更新 适用于企业的强大功能 各种硬件加速
TF GraphDef 静态计算图的稳定性 与TensorFlow 基础设施良好集成 优化静态图形的资源 需要静态图形的场景 与TensorFlow 核心同时更新 建立TensorFlow 安全实践 TensorFlow 加速选项
TF 轻型 移动/嵌入式的速度和效率 支持多种设备 强大的社区,Google 支持 移动应用程序占用空间最小 移动设备的最新功能 终端用户设备的安全环境 GPU 和 DSP 等
TF 边缘TPU 针对Google's EdgeTPU 硬件进行了优化 仅限 EdgeTPU 设备 与Google 和第三方资源共同成长 需要实时处理的物联网设备 改进新 EdgeTPU 硬件 Google强大的物联网安全 为Google 珊瑚定制
TF.js 合理的浏览器性能 精通网络技术 支持 Web 和 Node.js 开发人员 交互式网络应用程序 TensorFlow 团队和社区贡献 网络平台安全模式 利用 WebGL 和其他应用程序接口增强功能
PaddlePaddle 具有竞争力、易于使用且可扩展 百度生态系统,广泛的应用支持 快速增长,尤其是在中国 中文市场和语言处理 关注中国的人工智能应用 强调数据隐私和安全 包括百度的昆仑芯片
NCNN 针对基于 ARM 的移动设备进行了优化 移动和嵌入式 ARM 系统 小众但活跃的移动/嵌入式 ML 社区 Android 和 ARM 系统的效率 ARM 上的高性能维护 设备安全优势 ARM CPU 和 GPU 优化

本比较分析为您提供了一个高层次的概览。在部署时,必须考虑项目的具体要求和限制因素,并查阅每个选项的详细文档和资源。

社区与支持

当您开始使用YOLOv8 时,拥有一个有用的社区和支持会产生重大影响。以下是如何与志同道合者建立联系并获得所需帮助的方法。

与更广泛的社区互动

  • GitHub 讨论: YOLOv8 仓库在 GitHub 上有一个 "讨论 "版块,您可以在此提问、报告问题和提出改进建议。

  • Ultralytics Discord 服务器: Ultralytics 有一个Discord 服务器,您可以在这里与其他用户和开发人员互动。

官方文件和资源

  • Ultralytics YOLOv8 文档: 官方文档全面介绍了YOLOv8 以及安装、使用和故障排除指南。

这些资源将帮助您应对挑战,了解YOLOv8 社区的最新趋势和最佳实践。

结论

在本指南中,我们探讨了YOLOv8 的不同部署选项。我们还讨论了做出选择时需要考虑的重要因素。通过这些选项,您可以根据不同的环境和性能要求定制模型,使其适用于实际应用。

不要忘记,YOLOv8 和Ultralytics 社区是宝贵的帮助来源。与其他开发人员和专家联系,学习常规文档中可能找不到的独特技巧和解决方案。不断寻求知识、探索新思路并分享经验。

祝您部署愉快

常见问题

YOLOv8 在不同硬件平台上有哪些部署选项?

Ultralytics YOLOv8 支持各种部署格式,每种格式都是为特定环境和硬件平台设计的。主要格式包括

  • PyTorch用于研究和原型开发,与Python 完美集成。
  • TorchScript用于Python 不可用的生产环境。
  • ONNX以实现跨平台兼容性和硬件加速。
  • OpenVINOIntel 硬件上优化性能。
  • TensorRTNVIDIA GPU 上进行高速推理。

每种格式都有独特的优势。有关详细说明,请参阅我们的出口流程文档

如何提高YOLOv8 模型在Intel CPU 上的推理速度?

为了提高Intel CPU 的推理速度,您可以使用Intel 的OpenVINO 工具包来部署您的YOLOv8 模型。OpenVINO 通过优化模型来有效利用Intel 硬件,从而显著提高性能。

  1. 将YOLOv8 模型转换为OpenVINO 格式,使用 model.export() 功能。
  2. 请按照Intel OpenVINO Export 文档中的详细设置指南进行操作。

如需了解更多信息,请参阅我们的博文

能否在移动设备上部署YOLOv8 模型?

是的,YOLOv8 模型可通过TensorFlow Lite (TF Lite) 在移动设备上部署,适用于Android 和iOS 平台。TF Lite 专为移动和嵌入式设备设计,可提供高效的设备推理。

示例

# Export command for TFLite format
model.export(format="tflite")
# CLI command for TFLite export
yolo export --format tflite

有关将模型部署到移动设备的更多详情,请参阅我们的TF Lite 集成指南

在为YOLOv8 模型选择部署格式时,应该考虑哪些因素?

在为YOLOv8 选择部署格式时,请考虑以下因素:

  • 性能:有些格式(如TensorRT )在NVIDIA GPU 上运行速度极快,而OpenVINO 则针对Intel 硬件进行了优化。
  • 兼容性:ONNX 提供跨平台的广泛兼容性。
  • 易于集成:CoreML 或TF Lite 等格式分别为iOS 和Android 等特定生态系统定制。
  • 社区支持:PyTorch 和TensorFlow 等格式拥有广泛的社区资源和支持。

有关比较分析,请参阅我们的出口格式文档

如何在网络应用程序中部署YOLOv8 模型?

要在网络应用程序中部署YOLOv8 模型,可以使用TensorFlow.js (TF.js),它允许直接在浏览器中运行机器学习模型。这种方法无需后端基础设施,并能提供实时性能。

  1. 将YOLOv8 模型导出为TF.js 格式。
  2. 将导出的模型集成到网络应用程序中。

有关分步说明,请参阅我们的TensorFlow.js 集成指南。



创建于 2023-11-12,更新于 2024-07-05
作者:glenn-jocher(10)、abirami-vina(1)

评论