跳至内容

了解YOLOv8的部署选项

导言

在使用YOLOv8 的过程中,您已经走过了漫长的道路。您辛勤收集了数据,对其进行了细致的注释,并投入了大量时间来训练和严格评估您的自定义YOLOv8 模型。现在,是时候让您的模型为您的特定应用、用例或项目工作了。但有一个关键的决定摆在您面前:如何有效地导出和部署您的模型。

本指南将向您介绍YOLOv8的部署选项,以及为您的项目选择正确选项时需要考虑的基本因素。

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

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

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

YOLOv8部署选项

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

PyTorch

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

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

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

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

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

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

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

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

TorchScript

TorchScript 扩展了PyTorch的功能,允许导出模型在 C++ 运行环境中运行。这使它适用于Python 不可用的生产环境。

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

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

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

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

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

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

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

ONNX

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

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

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

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

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

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

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

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

OpenVINO

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

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

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

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

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

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

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

  • 硬件加速:利用专用指令集和硬件功能,专为英特尔硬件加速而定制。

有关使用OpenVINO 进行部署的详细信息,请参阅Ultralytics Integration 文档:英特尔OpenVINO Export

TensorRT

TensorRT 是英伟达公司推出的一款高性能深度学习推理优化器和运行时,非常适合需要速度和效率的应用。

  • 性能基准:在英伟达™(NVIDIA®)图形处理器上提供顶级性能,支持高速推理。

  • 兼容性和集成性:最适合英伟达™(NVIDIA®)硬件,在此环境之外的支持有限。

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

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

  • 维护和更新:英伟达™(NVIDIA®)通过频繁更新维护TensorRT ,以提高性能并支持新的 GPU 架构。

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

  • 硬件加速:专为英伟达™(NVIDIA®)图形处理器设计,提供深度优化和加速。

CoreML

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

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

  • 兼容性和集成性:专为苹果生态系统设计,为 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 Lite 是TensorFlow的移动和嵌入式设备机器学习解决方案,为设备推理提供了一个轻量级库。

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

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

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

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

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

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

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

TF 边缘TPU

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

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

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

  • 社区支持和生态系统:通过谷歌和第三方开发人员提供的资源,不断扩大支持范围。

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

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

  • 安全考虑:与谷歌针对物联网和边缘设备的强大安全功能集成。

  • 硬件加速:定制设计,充分利用 Google Coral 设备的优势。

TF.js

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

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

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

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

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

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

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

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

PaddlePaddle

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

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

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

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

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

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

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

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

NCNN

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

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

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

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

  • 案例研究:在安卓和其他基于 ARM 的系统上,移动应用对效率和速度要求极高,因此该产品深受青睐。

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

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

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

YOLOv8 部署方案比较分析

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

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

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

社区与支持

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

与更广泛的社区互动

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

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

官方文件和资源

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

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

结论

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

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

祝您部署愉快



创建于 2023-11-12,更新于 2024-03-01
作者:glenn-jocher(6)、abirami-vina(1)

评论