关于Yolov5在测试时,图像大小被调整的问题
原数据大小为:1920*1080
detect.py中的imgsz设置为640,按照正常图像宽高的缩放,原数据缩放后应为:640*360
而detect.py的控制台输出却为:640*384,如下所示:
这是为何呢?具体可以从头仔细阅读detect.py的代码,在LoadImages类中有一个letterbox函数,函数具体如下:
def letterbox(im, new_shape=(640, 640), color=(114, 114, 114), auto=True, scaleFill=False, scaleup=True, stride=32):# Resize and pad image while meeting stride-multiple constraintsshape = im.shape[:2] # current shape [height, width] --1080 1920if isinstance(new_shape, int): new_shape = (new_shape, new_shape) # --(640, 640)# Scale ratio (new / old)# 计算缩放因子r = min(new_shape[0] / shape[0], new_shape[1] / shape[1]) # --0.33333333"""缩放(resize)到输入大小img_size的时候,如果没有设置上采样的话,则只进行下采样因为上采样图片会让图片模糊,对训练不友好影响性能。"""if not scaleup: # only scale down, do not scale up (for better val mAP)r = min(r, 1.0)# Compute paddingratio = r, r # width, height ratios -- 0.333333, 0.333333new_unpad = int(round(shape[1] * r)), int(round(shape[0] * r)) # -- 640, 360# 计算paddingdw, dh = new_shape[1] - new_unpad[0], new_shape[0] - new_unpad[1] # wh padding --0, 280# 获取最小的矩形填充if auto: # minimum rectangledw, dh = np.mod(dw, stride), np.mod(dh, stride) # wh padding --0, 12# 如果scaleFill=True,则不进行填充,直接resize成img_size,任由图片进行拉伸和压缩elif scaleFill: # stretchdw, dh = 0.0, 0.0new_unpad = (new_shape[1], new_shape[0])ratio = new_shape[1] / shape[1], new_shape[0] / shape[0] # width, height ratios# 计算上下左右填充大小dw /= 2 # divide padding into 2 sides --0dh /= 2 # --12if shape[::-1] != new_unpad: # resizeim = cv2.resize(im, new_unpad, interpolation=cv2.INTER_LINEAR) # im.shape=640, 360top, bottom = int(round(dh - 0.1)), int(round(dh + 0.1)) # --12, 12left, right = int(round(dw - 0.1)), int(round(dw + 0.1)) # --0, 0# 进行填充im = cv2.copyMakeBorder(im, top, bottom, left, right, cv2.BORDER_CONSTANT, value=color) # add border,将上下左右需要增加的边界填到图像上return im, ratio, (dw, dh)
代码中的备注给出了所有变量的变化过程。
其实具体就是通过计算“设置的宽高”与“原图宽高”的比例,计算出最终dw,dh的值,就能确定上下左右需要padding的像素个数,最后通过cv2.copyMakeBorder完成图像的resize和padding.
关于Yolov5在测试时,图像大小被调整的问题相关推荐
- Mac电脑用预览功能调整图像大小?Mac调整图片大小方法
要说到修改一张图片的尺寸大小,很多人的第一反应通常是打开 Photoshop 或者 Pixelmator,其实使用苹果MAC电脑有更简单方便的方法来调整图片的大小尺寸,OS X 自带的快速预览功能就可 ...
- LabVIEW中调整图像大小
LabVIEW中调整图像大小 需要调整LabVIEW前面板上图像的大小.可以如何操作实现? 基础版.完全版和专业版的LabVIEW开发环境本身并不包含用以图像处理的内置VI. 但是可以通过调用二维图像 ...
- tensorflow入门之---------图像大小调整
在深度学习的过程中,往往对输入图像的大小需要进行一个调整,特别是对于拥有全连接层的神经网络,因为全连接层的节点数是固定的.因此,为了满足全连接层的一个输入的要求,我们可以利用tensorflow自带的 ...
- Php传图缩图,使用以下用于上传图像的PHP代码上传时缩小图像大小
当然,它工作正常.我在PHP中使用这个类: function thumbnail( $img, $source, $dest, $maxw, $maxh ) { $jpg = $source.$img ...
- 目标检测论文解读复现之十五:基于YOLOv5的光学遥感图像舰船 目标检测算法
前言 此前出了目标改进算法专栏,但是对于应用于什么场景,需要什么改进方法对应与自己的应用场景有效果,并且多少改进点能发什么水平的文章,为解决大家的困惑,此系列文章旨在给大家解读最新目标检测算法论文,帮 ...
- 1.7 开发集和测试集的大小-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授
←上一篇 ↓↑ 下一篇→ 1.6 开发集合测试集的大小 回到目录 1.8 为什么是人的表现 什么时候改变开发和测试集评估指标 (When to change dev/test sets and met ...
- php 修改图像大小,PHP图像大小调整
据我所知,您无法在上传图像之前调整图像大小. (我可能错了!)但是,当您上传图像时,它会进入一个临时文件.您可以调整临时图像的大小,并将调整后的图像复制到其最终目标. 因为(似乎)你想保持宽度不变,所 ...
- 6.openCV调整图像大小新思路(cv2.resize和imutils.resize)
6.opencv调整图像大小的新方法imutils.resize 一.openCV 调整图像大小 ( cv2.resize ) 二.项目结构和代码讲解 1.项目结构 2.代码讲解 3.比较 OpenC ...
- deepstream学习笔记(三):deepstream-imagedata-multistream解析与接入适配yolov5模型测试
引言 上一节重点介绍了gstreamer架构图与各部分组成原理说明,并且针对deepstream-test1介绍了它的整体功能和画出了管道图,本篇博文将详细介绍deepstream-imagedata ...
最新文章
- ptpd和ptp4l 软件核心算法
- 【bzoj1511】[POI2006]OKR-Periods of Words KMP-next数组
- fragment error
- shell 练习(13) —— 监控 httpd 进程数是否异常
- 有重复元素的排列问题pascal题解
- WPF 4 单词拼写检查(SpellCheck)
- 从零实操基于WSL2 Docker部署Asp.Net Core项目
- 【渝粤教育】国家开放大学2018年春季 7218-22T医学伦理学(本) 参考试题
- 前端学习(3173):react-hello-react之todoList教程
- Golang 垃圾回收机制
- 百度地图API如何申请?(自认为比较详细,如解决了你的问题请收藏、点赞、关注!)
- Java Vector setElementAt()方法与示例
- lbp特征提取算法 知乎_图像-LBP特征描述算子-人脸检测
- (94)FPGA模块例化传递参数(input)
- IE6绿色中文版,支持在Win7、Win8下完美运行
- Python定时任务框架APScheduler
- react轮播图插件_React 基础面试题 - 和你随便聊聊 React
- 【书籍推荐】深入解析Windows操作系统(第4版)
- 静态存储分配和动态存储分配
- 超码、候选码和主码有什么区别?
热门文章
- 计算机系统 ahci模式,老电脑安装系统忘记开启AHCI模式,教你不重装系统开启AHCI解决方法(3)...
- error C2448 函数样式初始值设定项类似函数定义
- 自动检测图像中的圆形或圆形对象
- 杭电计算机复试面试题库,杭电电子分院历年复试题(整理版).doc
- 多线程(一) 线程概念及创建线程的方法
- 数控铣削图案及编程_数控铣床编程30例带图
- SpringBoot高级特性
- 尚硅谷设计模式学习(1)---[设计模式七大原则]
- ViewModel是如何在配置更改后继续留存数据的
- 化妆品电商平台数据分析报告