Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
返回 Ultralytics 术语表

Normalization

归一化会将特征或激活值重新缩放到统一范围,避免某个数值范围占据主导。内容涵盖最小-最大归一化、z 分数、L2 归一化和归一化层。

归一化是将数值重新缩放到共同尺度的过程,可避免某个特征仅仅因为单位不同就主导模型。在数据预处理中,它通常指在训练前将每个输入特征转换到 \[0, 1] 这样的固定范围,或转换为均值为零、方差为一的分布。在神经网络内部,批归一化等归一化层会将相同的思路应用于中间激活值。如果不进行归一化,在每次距离计算和梯度更新中,以数千为单位的特征(例如收入)就会压过以个位数为单位的特征(例如家庭人数)。

常见归一化技术#

  • 最小-最大缩放:使用 (x − min) / (max − min) 将每个特征映射到 \[0, 1]。极端值会把其他值压缩到很窄的区间,因此这种方法适用于取值范围已知且固定的特征,例如除以 255 后的 8 位像素值。
  • Z 分数标准化:减去特征均值,再除以标准差,使均值为 0、标准差为 1。这通常是取值范围不固定的特征的默认选择。
  • 稳健缩放:减去中位数,再除以四分位距,因此少量离群值几乎不会影响其他数值的缩放方式。
  • 对数缩放:应用对数变换(通常为 log(1 + x)),在进行其他缩放前压缩价格、人口或浏览量等长尾特征。
  • 单位向量 (L2) 归一化:将每个样本的向量除以其长度,使每个向量的范数都为 1。将其应用于嵌入后,余弦相似度就会变成普通点积。scikit-learn 的 Normalizer会按样本执行此操作;期待它像 MinMaxScaler 那样缩放每个特征的用户可能会对此感到意外。

选择哪种方法,取决于要缩放的内容及其数值分布:

归一化为何重要#

k 近邻 (k-NN)、k-means 聚类和 RBF 核支持向量机等基于距离的方法会比较原始欧几里得距离,因此取值范围最广的特征会决定哪些点被视为接近。基于梯度的模型使用归一化输入时训练速度更快,因为尺度差异很大的特征会将损失曲面拉伸成狭窄的谷地,使得梯度下降必须采取小步长。随机森林等树集成模型每次根据一个特征阈值进行划分,因此无论如何进行单调缩放,得到的划分都相同。对 Wine 数据集进行缩放后再运行 k-NN,可以看到这种影响有多大:

from sklearn.datasets import load_wine
from sklearn.model_selection import cross_val_score
from sklearn.neighbors import KNeighborsClassifier
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import MinMaxScaler, StandardScaler

# 13 chemical features on very different scales, from hue (about 0.5-1.7) to proline (about 280-1,680)
X, y = load_wine(return_X_y=True)

# k-NN compares raw distances, so unscaled proline dominates every distance
for name, scaler in [("none", "passthrough"), ("min-max", MinMaxScaler()), ("z-score", StandardScaler())]:
    # The pipeline fits the scaler on each training fold only, so no test statistics leak in
    model = make_pipeline(scaler, KNeighborsClassifier())
    accuracy = cross_val_score(model, X, y, cv=5).mean()
    print(f"scaling {name:8s} 5-fold accuracy: {accuracy:.3f}")

不进行缩放时,k-NN 的准确率为 0.691,因为取值范围约为 1400 的脯氨酸在每次距离计算中都比其他 12 个特征更重要。最小-最大缩放将准确率提高到 0.950,Z 分数标准化则将准确率提高到 0.949。将缩放器拟合过程放在流水线中很重要:在拆分数据集之前,根据整个数据集计算最小值、最大值、均值或标准差,会将测试集信息泄漏到训练过程中,这属于数据泄漏。

计算机视觉中的归一化#

图像按通道进行归一化。将 8 位像素值除以 255,可将其映射到 [0, 1];许多分类骨干网络随后会减去每个通道的均值,再除以标准差:torchvision 的 ImageNet 预训练 ResNet-50要求均值为 (0.485, 0.456, 0.406),标准差为 (0.229, 0.224, 0.225)。如果向预训练模型输入的归一化方式与其训练数据不同,每个激活值都会发生偏移,导致准确率下降。Ultralytics YOLO 预处理会将像素值除以 255,不进行均值或标准差偏移;无论是训练还是预测都是如此,因此 YOLO26接收的输入始终位于 [0, 1]。

医学图像需要采用与模态相适应的规则。CT 扫描以亨氏单位存储强度值,这是一种物理量纲,其中空气为 −1000,水为 0,因此不同扫描可以使用同一组统计量:广泛使用的 nnU-Net分割框架会将所有训练样本前景值的第 0.5 和第 99.5 百分位之外的 CT 强度值截断,然后使用整个数据集的均值和标准差进行 Z 分数标准化。MRI 强度没有固定的物理量纲,且会因扫描仪而异,因此 nnU-Net 会分别对每次 MRI 扫描进行 Z 分数标准化。

  • 标准化:Z 分数缩放的常用名称。许多资料将最小-最大缩放和 Z 分数缩放都称为“归一化”,而另一些资料则将“归一化”仅用于指代最小-最大缩放。
  • 数据增强:通过翻转、裁剪和颜色偏移等方式改变图像内容或几何结构,以增加多样性;而归一化只改变数值的尺度。
  • 归一化层:批归一化使用当前小批次的统计量对每个通道进行标准化。层归一化则针对每个样本的各项特征进行标准化,不受批次大小影响,并广泛用于 Transformer。这些层会在归一化之后应用可学习的缩放和偏移。
  • RMSNorm:简化版层归一化,省略均值减法,只除以均方根。它是 Meta 的 Llama 和许多其他大型语言模型所使用的归一化层。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来