64、图片预处理:Normalize

图像预处理中的归一化是深度学习中必不可少的步骤,其目的是标准化输入数据,减少不同图像间数据分布的差异,避免训练或推理时的偏差。归一化通常涉及均值和标准差,例如在ResNet50中使用的ImageNet数据集统计得到的参数。归一化后,还需进行transpose和reshape操作以匹配算法逻辑。预处理完整流程完成后,图像即可送入神经网络进行推理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一篇介绍了图像预处理中 resize 和 crop 的概念,在仓库的 python 预处理函数中,在 resize 和 crop之后,还有几个预处理的过程:一个是归一化,另外就是transpose 和reshape。

这一节就介绍一下,为什么在推理之前还需要对图像进行归一化。

归一化(Normalization)

在深度学习中,推理或训练之前对图像进行预处理,特别是归一化,是一种非常常见的做法。

那为什么要做归一化呢?

使用归一化的目的是将输入数据进行标准化,使输入的数据具有相似的分布。

什么意思呢?我们以图像举例子,不同的图片之间数据分布差异是很大的,有些图片的像素值普遍偏大,而有些图片的像素值偏小。

数据分布的不同,会导致神经网络在训练或者推理时出现较大的偏差,有时会导致训练收敛困难,推理误差较大。

这一点我们在介绍bn算法的时候曾经说到过,Bn 算法就是为了纠正在隐藏层与层之间,由于数据分布不一致而导致的模型难以收敛的问题,可以翻回到 

### YOLO 图像预处理 Python 实现 对于YOLO模型,在图像输入到网络之前通常需要进行一些标准化操作以确保最佳性能。这些预处理步骤可能包括调整大小、归一化以及通道顺序转换等。 #### 调整尺寸 为了使不同分辨率的图片能够被送入神经网络中训练或者推理,一般会将所有输入图片统一缩放到特定尺寸。例如: ```python import cv2 def resize_image(image, target_size=(640, 640)): """Resize an image to the given size.""" resized = cv2.resize(image, target_size) return resized ``` 此函数接收原始图像及其目标尺寸作为参数,并返回经过重新调整后的版本[^1]。 #### 归一化 由于卷积层权重初始化通常是基于零均值分布设计的,因此建议对像素值做线性变换使其范围位于`[0,1]`之间或减去平均数除以标准差等方式来进行数据规范化处理: ```python def normalize_image(image): """Normalize pixel values of an image between 0 and 1""" normalized = image / 255.0 return normalized ``` 这段代码简单地通过除以最大灰度级(即255)实现了基本形式的数据归一化。 #### 颜色空间转换 某些情况下还需要改变颜色模式比如从BGR转RGB因为OpenCV默认加载的是前者而PyTorch期望得到后者格式下的张量表示法;另外当采用预训练好的ImageNet模型时也需要考虑这一点. ```python def bgr_to_rgb(image): """Convert BGR color space to RGB""" rgb_image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) return rgb_image ``` 上述三个部分共同构成了完整的YOLOvX系列算法框架下针对单幅静态图象样本执行前向传播之前的必要准备工作流程之一——预处理环节.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

董董灿是个攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值