FLOPs
了解 FLOPs 如何衡量 AI 模型的计算复杂度。了解如何计算 Ultralytics YOLO26 的 FLOPs,并优化 Edge AI 性能。
FLOPs,即浮点运算次数,是用于衡量机器学习模型计算复杂度的标准指标。它具体统计神经网络处理单个输入(例如图像或句子)时必须执行的数学计算次数,主要包括涉及小数的加法和乘法。在深度学习领域,FLOPs 是用于估算模型“重量”或计算成本的理论衡量标准。FLOPs 越高,通常意味着模型越复杂,执行时需要更多处理能力和能耗;而较低的 FLOPs 则表示该架构更轻量,设计目标是提升效率。
FLOPs 在模型选择中的作用#
在开发人工智能应用时,工程师通常需要在准确率和速度之间进行权衡。FLOPs 可作为与硬件无关的推理延迟代理指标,让开发者无需在每种可能的设备上进行基准测试,就能比较不同的架构。对于特定部署场景而言,这一指标对于选择合适的模型至关重要。例如,在高性能云计算服务器上运行实验的研究人员可能更重视准确率而非效率,因此会使用 FLOPs 较高的模型。相反,为边缘 AI设备构建应用的工程师必须优先选择较低的 FLOPs,以确保应用在严格的功耗和散热限制下流畅运行。
实际应用#
在计算资源至关重要的各个行业中,FLOPs 的实际影响都十分明显。
- **自主无人机:**在农业机器人等领域,配备摄像头的无人机可以实时分析作物健康状况。由于无人机的电池容量有限,每一点能耗都很重要。工程师会专门选择低 FLOPs 的模型,例如YOLO26的 Nano 版本,以减少对机载处理器的消耗,从而最大限度地延长飞行时间和作业范围。
- **移动增强现实:**使用人脸识别进行安全验证或应用 AR 滤镜的智能手机应用高度依赖高效处理。这些应用必须运行流畅,同时避免设备过热或出现卡顿。开发者会根据 FLOPs 估算值选择轻量级模型,使其能够充分适配移动芯片组的处理能力,例如Snapdragon系列或 Apple 的A 系列芯片。
FLOPs 与 FLOPS(每秒浮点运算次数)的区别#
区分“FLOPs”(FLOP 的复数形式)和“FLOPS”(全大写)非常重要。虽然两者看起来几乎相同,但衡量的对象不同。FLOPs(小写“s”)表示模型所需执行的运算总数量,是对复杂度的静态衡量。FLOPS(大写“S”)代表每秒浮点运算次数,衡量硬件(例如GPU)的速度或性能能力。你可以把 FLOPs 理解为汽车需要行驶的距离(需要完成的工作量),把 FLOPS 理解为汽车的最高速度(硬件完成这项工作的能力)。
使用 Python 测量 FLOPs#
你可以使用 Python 轻松计算 Ultralytics 模型的计算成本。这在模型优化阶段尤其有用,可以确保你的神经网络符合硬件预算。下面的示例演示了如何加载YOLO26模型并确定其 FLOPs。
from ultralytics import YOLO
from ultralytics.utils.torch_utils import get_flops
# Load a lightweight YOLO26 model
model = YOLO("yolo26n.pt")
# Calculate and print the model's FLOPs (Billions of operations)
# This gives you a hardware-independent complexity metric
flops = get_flops(model)
print(f"Model FLOPs: {flops:.2f} Billion")降低 FLOPs 以提升效率#
为了让模型更易于部署,研究人员会使用多种技术来降低 FLOPs,同时不显著牺牲准确率。模型剪枝会移除神经网络中不太重要的连接,从而有效地使网络变得更稀疏。另一种技术是量化,它会降低计算中所用数值的精度(例如,从 32 位浮点数降低为 8 位整数)。Ultralytics Platform提供的工具有助于简化这些优化流程,让你更轻松地将高效模型部署到TensorRT或OpenVINO等目标平台。通过理解并优化 FLOPs,开发者可以构建兼具强大性能和可持续性的 AI 系统。









