深度学习图像预处理:Scale + Padding 方法详解
在深度学习的计算机视觉任务中输入图像通常需要被调整到模型要求的固定尺寸如 224×224、416×416 等。然而直接使用简单的resize操作如双线性插值缩放会破坏图像的原始宽高比导致物体或场景发生非均匀形变从而影响模型的识别性能。为了解决这一问题业界普遍采用“先缩放再填充”Scale Padding的策略。本文将详细解析该方法的原理、实现步骤、常见变体及其在主流框架中的应用。为什么需要 Scale Padding直接 Resize 的缺陷假设原始图像尺寸为800×600宽高比 4:3目标尺寸为224×224宽高比 1:1。若直接缩放到224×224图像在水平方向被压缩得更厉害800→224缩放因子 0.28而垂直方向缩放因子为 0.373导致图像内容发生非均匀形变例如圆形物体变成椭圆形。Scale Padding 的核心思想保持宽高比按原始图像的宽高比将图像缩放到目标尺寸的某一边界通常是较短的边。填充剩余区域在缩放后的图像周围添加填充Padding使其达到目标尺寸。可选居中/随机放置填充通常置于图像四周上下或左右并可选择将缩放后的图像置于中央或随机位置。这种方法在 YOLO、SSD、EfficientNet 等经典模型中广泛使用能最大程度保留图像内容的几何真实性。方法步骤详解1.先填充为正方形图后缩放确定长边和短边首先确定图像的长边和短边。长边是图像的宽度和高度中较长的那个短边是较短的那个。将图像变为正方形以长边的长度作为正方形的边长这意味着如果原始图像是长方形那么它的一边将被扩展以形成一个正方形。较短的一边将围绕其周围填充像素通常是白色或黑色像素以确保图像变为正方形。填充像素填充操作会在短边的两侧添加像素直到图像的宽度和高度相等。填充的像素数量取决于原始图像的尺寸和目标正方形的尺寸。缩放(如双线性插值最近邻插值等)一旦图像被转换为正方形下一步是使用插值法将图像缩放到所需的目标尺寸。双线性插值是一种平滑的缩放技术它通过考虑周围四个像素的值来计算新像素的值这样可以减少缩放过程中的失真。示意图如下:原始图为宽为w,高为h现在想要通过scalepadding这种方法变换为宽width高为height的图。(这里假设whhw的情况与此类似)第一步确定长边与短边然后将原始图变为正方形边长长度为长边长度在短边的外侧填充使得图变为宽为w,高为w的图。****第二步:缩放变换将上一步中得到的宽为w,高为w的图经过缩放变换后就变为了宽为width高为height的目标大小的图了。自此变换就完成了原始图宽w,高h以及填充的其中一个部分(w-h)/2变换为目标图像后很容易得到缩放关系如下w乘以(width/w)后就变为了width,h乘以(height/w)后就变为了(h*height)/w了图中未标注出来第二步中间图的紫色区域的高度,(w-h)/2乘以(height/w)后就变为了((w-h)*height)/(2w)。注意如果目标的width与height不相等也就是目标不为正方形就会造成w与h不是同等比例缩放就会变形失真。所以这种方法只适用于width等于height的情况。2.先缩放再填充(通用)计算缩放比例首先根据目标尺寸和原始图像的宽高比计算出图像在保持宽高比的情况下应该被缩放到的尺寸。这通常涉及到计算缩放比例即目标尺寸与原始图像尺寸的比值并选择较小的那个比例作为最终的缩放比例以确保图像不会被拉伸或压缩。进行resize操作使用计算出的缩放比例对原始图像进行resize操作得到一个新的图像。这个新图像的尺寸将小于或等于目标尺寸但会保持原始图像的宽高比。进行padding操作最后在新的图像的周围添加padding以使其达到目标尺寸。padding可以使用任何颜色或图案但通常选择中性色如灰色或白色以避免对图像内容造成干扰。padding的大小将根据目标尺寸和新图像尺寸之间的差异来确。上图中实际上需要根据width/w与height/h两者的大小决定ratio的值。为了防止在缩放过程中某条边超过目标的长度应该选择width/w与height/h的较小者作为ratio。看下面代码代码实现示例Python OpenCV 实现import cv2import numpy as npdef resize_and_pad(image, target_height, target_width, padding_value(0, 0, 0)):# 获取原始图像的高度和宽度height, width image.shape[:2]# 计算缩放比例使得图像的长宽比例保持不变scale min(target_width / width, target_height / height)# 计算缩放后的尺寸 new_width int(width * scale) new_height int(height * scale) # 先对图像进行缩放 resized_image cv2.resize(image, (new_width, new_height)) # 创建一个目标大小的空白图像填充背景为自定义颜色 padded_image np.full((target_height, target_width, 3), padding_value, dtypenp.uint8) # 计算填充的上下左右边距 top_padding (target_height - new_height) // 2 # bottom_padding target_height - new_height - top_padding left_padding (target_width - new_width) // 2 # right_padding target_width - new_width - left_padding # 将缩放后的图像放置到填充后的图像中心 padded_image[top_padding:top_padding new_height, left_padding:left_padding new_width] resized_image return padded_image, resized_image, left_padding, top_paddingifname ‘main’:# 示例使用image cv2.imread(‘./img/lena2.png’,1) # 读取图像 (528, 532, 3)# image_resizecv2.resize(image,None,fx0.5,fy0.5)# cv2.imwrite(“img/lena_02.png”, image_resize)print(“image.shape”,image.shape)#(400, 323, 3)target_height 300 # 目标高度target_width 400 # 目标宽度padding_value (114, 114, 114) # 自定义填充值RGBpadded_image, resized_image, left_padding, top_padding resize_and_pad(image, target_height, target_width,padding_value) print(padded_image.shape, padded_image.shape) # 保存结果 cv2.imwrite(result.jpg, padded_image)## 变体与优化 ### 1. 自适应填充策略 - **最小填充**缩放时选择使填充面积最小的边短边或长边。 - **最大内接矩形**保持宽高比的同时使缩放后的图像尽可能大且完全位于目标画布内。 ### 2. 填充颜色选择 - **零填充**最简单但可能引入黑色边框干扰。 - **均值填充**使用数据集的平均像素值减少分布偏移。 - **边缘复制/反射填充**更适合自然图像避免突兀边界。 ### 3. 多尺度训练Multi-Scale Training 在训练时随机选择不同的目标尺寸或缩放比例增强模型对不同尺寸的鲁棒性。 ### 4. 坐标还原用于目标检测 对于目标检测任务需要将标注框的坐标也进行相同的变换 python def transform_bbox(bbox, scale, pad_top, pad_left): 将原始标注框坐标转换到处理后的图像坐标系。 Args: bbox: [x_min, y_min, x_max, y_max]原始图像坐标系 scale: 缩放比例 pad_top, pad_left: 上、左填充量 Returns: transformed_bbox: 转换后的坐标 x_min, y_min, x_max, y_max bbox # 缩放 x_min x_min * scale y_min y_min * scale x_max x_max * scale y_max y_max * scale # 平移加上填充偏移 x_min pad_left y_min pad_top x_max pad_left y_max pad_top return [x_min, y_min, x_max, y_max]在主流框架中的应用YOLO 系列YOLOv5/v7/v8 的预处理通常包含按短边缩放至目标尺寸保持宽高比用灰色114填充剩余区域图像居中放置TensorFlow/Kerasfromtensorflow.keras.preprocessing.imageimportsmart_resize# smart_resize 会自动保持宽高比并填充MMDetection在配置文件中通过Resize和Pad变换组合实现train_pipeline[dict(typeResize,keep_ratioTrue),# 保持宽高比缩放dict(typePad,size_divisor32),# 填充到32的倍数]可视化对比为了直观展示不同方法的差异我们通过以下流程图说明 Scale Padding 的处理流程原始图像W_orig × H_orig计算缩放比例scale min(W_target/W_orig, H_target/H_orig)缩放图像new_w W_orig × scalenew_h H_orig × scale创建目标画布尺寸: W_target × H_target计算填充位置pad_left (W_target - new_w) // 2pad_top (H_target - new_h) // 2将缩放图像放入画布位置: pad_left, pad_top输出处理后的图像直接 Resize图像形变失真保持宽高比内容无扭曲总结与最佳实践优点保持宽高比避免图像内容非均匀形变简单高效计算量小易于实现兼容性强适用于各种模型架构可逆变换便于坐标还原和后处理缺点信息损失填充区域不包含有效内容计算浪费填充像素增加计算负担边界效应填充值可能影响卷积边界实践建议训练时可使用随机填充位置moderandom作为数据增强推理时使用居中填充保证结果一致性目标检测注意坐标变换确保标注框同步处理填充值选择根据数据集特性选择零填充、均值填充或边缘填充扩展阅读YOLOv5 预处理源码分析OpenCV 图像几何变换文档PyTorch torchvision.transforms 官方文档通过 Scale Padding 方法我们可以在保持图像内容几何真实性的前提下适配深度学习模型对输入尺寸的要求是计算机视觉预处理中一项基础而重要的技术。

相关新闻

Windows Defender永久禁用终极指南:三步彻底解决系统性能瓶颈

Windows Defender永久禁用终极指南:三步彻底解决系统性能瓶颈

Windows Defender永久禁用终极指南:三步彻底解决系统性能瓶颈 【免费下载链接】defender-control An open-source windows defender manager. Now you can disable windows defender permanently. 项目地址: https://gitcode.com/gh_mirrors/de/defender-control…

2026/8/4 11:00:10 阅读更多 →
SpeedAI:学术文本优化与AI痕迹消除技术解析

SpeedAI:学术文本优化与AI痕迹消除技术解析

1. SpeedAI工具定位与核心价值 SpeedAI作为2026年学术界广泛认可的文本优化工具,其核心价值在于实现了传统降重工具无法企及的"双降"效果——同时降低文本重复率和AI生成痕迹。不同于早期仅检测重复率的工具(如Turnitin)&#xff0…

2026/8/4 10:59:09 阅读更多 →
工程师必备:tcpdump网络诊断从入门到实战

工程师必备:tcpdump网络诊断从入门到实战

1. 为什么每个工程师都应该掌握tcpdump第一次接触tcpdump时,我正面临一个诡异的线上问题:某台服务器的API响应时快时慢,但监控系统显示各项指标完全正常。当时团队里一位资深工程师只用了三行tcpdump命令就锁定了问题根源——原来是负载均衡器…

2026/8/4 10:59:09 阅读更多 →

最新新闻

杰理之切换的提示音要使用WAV格式【篇】

杰理之切换的提示音要使用WAV格式【篇】

如果在切换降噪开、降噪关、通透模式时,需要播放对应提示音的。请使用WAV格式。使用其他音频格式

2026/8/4 17:46:05 阅读更多 →
杰理之开内部触摸,测试盒升级完成后会直接开机问题的处理方法【篇】

杰理之开内部触摸,测试盒升级完成后会直接开机问题的处理方法【篇】

在升级完成处直接关机

2026/8/4 17:46:05 阅读更多 →
C语言基础四:数组字符串

C语言基础四:数组字符串

1.数组的概念相同类型数据的集合内存空间连续分配数组名在大多数情况下代表数组首元素的地址额外的情况如下所示:1.1 sizeof(数组名) —— 返回整个数组的字节数1.2 &数组名 —— 返回整个数组的地址(类型是 int (*)[n])2.数组定义的格式…

2026/8/4 17:46:05 阅读更多 →
2024年最稀缺的AI内容技能:排行榜类目自动化生产体系(含12个垂直领域案例包)

2024年最稀缺的AI内容技能:排行榜类目自动化生产体系(含12个垂直领域案例包)

更多请点击: https://kaifayun.com 第一章:2024年最稀缺的AI内容技能:排行榜类目自动化生产体系(含12个垂直领域案例包) 在生成式AI爆发式渗透内容产业的2024年,单纯依赖大模型“写文案”已成基础能力&…

2026/8/4 17:46:05 阅读更多 →
抖音内容持久化存储解决方案:douyin-downloader 技术实现与应用指南

抖音内容持久化存储解决方案:douyin-downloader 技术实现与应用指南

抖音内容持久化存储解决方案:douyin-downloader 技术实现与应用指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser f…

2026/8/4 17:46:05 阅读更多 →
原生微信投票 VS 第三方投票小程序|功能优缺点与适用场景对比

原生微信投票 VS 第三方投票小程序|功能优缺点与适用场景对比

日常线上投票主要分为两类工具:微信自带的原生腾讯投票、以及365评选这类第三方专业投票小程序。很多用户难以区分二者的适用边界:原生工具操作极快,但正式评选频繁出现功能短板;第三方工具功能齐全,但需要单独进入小程…

2026/8/4 17:45:05 阅读更多 →

日新闻

AI Agent白手起家26: 使用标准事件驱动大模型实践

AI Agent白手起家26: 使用标准事件驱动大模型实践

纲要 练习目标:掌握大模型标准事件的调用回顾 LangChain 中的核心标准事件 invokestreambatchastream_eventswith_structured_output 环境准备实战代码:多种事件调用对比 同步调用与流式输出批量处理异步事件流监听结构化输出 运行说明与预期结果总结与扩…

2026/8/4 0:00:40 阅读更多 →
dealsea是什么?跨境卖家必知的美国deal站入门指南

dealsea是什么?跨境卖家必知的美国deal站入门指南

说实话,第一次听说美国这个老牌折扣网站的跨境卖家,十个有八个会问同一个问题:这个平台到底是干嘛的?我见过一个做家居出口的朋友,他在亚马逊上月销二十万美金,却从来没用过它。我给他看了首页——一屏一屏…

2026/8/4 0:01:40 阅读更多 →
清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

通讯作者:邓兵、刘建国通讯单位:清华大学DOI:https://doi.org/10.1021/acs.est.6c00603研究背景稀土元素(REEs)是清洁能源技术与电子器件不可或缺的核心原料,然而传统提取方式依赖能耗高、排放大的采矿与强…

2026/8/4 0:01:40 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/4 13:24:41 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/4 11:41:39 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/4 5:26:40 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/4 13:38:24 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/4 11:09:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/4 13:38:40 阅读更多 →