YOLOv5 分类模型的预处理

news2024/11/30 12:53:03

YOLOv5 分类模型的预处理

flyfish

版本 6.2

将整个代码简化成如下代码

imgsz=224
file = "/home/a/Pictures/1.jpg"
transforms = classify_transforms(imgsz)
im = cv2.cvtColor(cv2.imread(file), cv2.COLOR_BGR2RGB)
print(im.shape)

im = transforms(im)
print(im.shape)

im = im.unsqueeze(0).to("cpu")
print(im.shape)

(511, 306, 3) H,W,C顺序
torch.Size([3, 224, 224]) 经过transforms后
torch.Size([1, 3, 224, 224]) 通过unsqueeze扩展增加一维,最后是NCHW的维度进入模型

图像经过了如下变换

def classify_transforms(size=224):
    # Transforms to apply if albumentations not installed
    return T.Compose([T.ToTensor(), T.Resize(size), T.CenterCrop(size), T.Normalize(IMAGENET_MEAN, IMAGENET_STD)])

最重要的是这两个

T.Resize(size)
T.CenterCrop(size)

分步演示

T.Resize(size) 图像的缩放
看一个参数还是两个参数
如果是一个参数int,那么图像的较小边将与该参数匹配,然后进行缩放,高宽比例不变。
如果是(h, w),那么图像就缩放到(h, w)大小。
举个例子
如果 height > width 那么图片会被缩放到 (size * height / width, size).比例不变

参考:https://pytorch.org/vision/main/generated/torchvision.transforms.Resize.html

import matplotlib.pyplot as plt
from PIL import Image
from torchvision import transforms

file_path = "./1.jpg"
img = Image.open(file)
print("Original:", img.size)

用了PIL库 是 宽w,高h 顺序

在这里插入图片描述

原始大小 宽w,高h Original: (306, 511)

trans0 = transforms.Compose([transforms.Resize(imgsz)]) 
after0 = trans0(img)

print("Resize:", after0.size)
after0.save('2.jpg')

在这里插入图片描述

经过Resize之后 宽w,高h Resize: (224, 374)

trans1 = transforms.Compose([transforms.CenterCrop(imgsz)])
after1 = trans1(after0)
print("CenterCrop:", after1.size)
after1.save('3.jpg')

在这里插入图片描述

经过中心剪裁后 CenterCrop: (224, 224)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1159471.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【计算机网络】第二章:应用层

应用层协议原理 客户-服务器体系结构: 特点:客户之间不能直接通信;服务器具有周知的,固定的地址,该地址称为IP地址。 配备大量主机的数据中心常被用于创建强大的虚拟服务器;P2P体系结构: 特点&…

项目压测优化

基本信息 客户名称:xxx 产品名称:ATS 版本号:版本无关 问题分类:性能问题 问题描述 压测付款查询和收款查询接口,发现cpu过高,响应时间过长不符合要求。 客户要求:1500并发情况下,接…

BUUCTF 后门查杀 1

BUUCTF:https://buuoj.cn/challenges 题目描述: 小白的网站被小黑攻击了,并且上传了Webshell,你能帮小白找到这个后门么?(Webshell中的密码(md5)即为答案)。 密文: 下载附件,解压得到一个网站文件夹。 解…

呼吸灯【FPGA】

晶振50Mhz 1us 等于 计0~49 1ms等于 0~999us 1s等于 0~999ms //led_outalways(posedge FPGA_CLK_50M_b5 or negedge reset_e8) //【死循环】敏感【触发条件:上升沿 clk】【运行副本】if(reset_e81b0)begin //50Mhz晶振, 49_999_999 是 1秒…

畅销书《Kali Linux高级渗透测试》更新版速速查收~

懒大王感谢大家的关注和三连支持~ 作者简介: 懒大王敲代码,正在学习嵌入式方向有关课程stm32,网络编程,数据结构C/C等 今天给大家推荐畅销书《Kali Linux高级渗透测试》,希望大家能觉得实用! 欢迎大家点赞…

10.30寄存器,寄存器堆

寄存器 8位环形移位寄存器 module shift_regist (input wire clk,input wire rstn,input wire [7:0]D,output reg [7:0]Q ); always (posedge clk or negedge rstn) beginif(!rstn)Q<8b000000;elseQ<{D[6:0],D[7]} ; end endmodule //shift_regist 输入有时钟…

Qt入门日记1

目录 1.Qt简介和案例 2.第一个Qt程序 3.学会查看帮助文档 4.创建一个按钮 5.对象树简介 6.Qt的坐标系 7. 信号和槽 7.1自定义信号和槽 7.2信号连接信号 7.3拓展 7.4Qt4版本以前的connect 1.Qt简介和案例 Qt是一个跨平台的C图形用户界面应用程序框架(就是一个库吧…

2024“点点点”测试员如何上岸测试开发岗?附完整学习路线!

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;交流讨论&#xff1a;欢迎加入我们一起学习&#xff01;&#x1f4e2;资源分享&#xff1a;耗时200小时精选的「软件测试」资…

干货分享 | 一分钟带你了解TSMaster小程序编辑代码智能提示功能

本文给大家带来TSMaster小程序编辑的新功能&#xff0c;其中主要包含&#xff1a;代码编辑智能提示功能、可用外部代码编辑器编辑小程序代码并同步。 本文关键字&#xff1a;C小程序、Python小程序、代码智能提示、外部代码编辑器、Visual Studio 目录/Catalog ● TSMaster的…

11月1日星期三今日早报简报微语报早读

11月1日星期三&#xff0c;农历九月十八&#xff0c;早报微语早读分享。 1、神舟十六号航天员乘组平安抵京&#xff1b; 2、微信/抖音/B站等平台&#xff1a;将推动50万粉以上“自媒体”账号实名信息展示&#xff1b; 3、第三批鼓励仿制药品建议目录公示&#xff0c;包括抗癌…

灰狼优化算法(GWO)python

目录 一、灰狼优化算法的python实现 二、灰狼优化算法与遗传算法的对比分析&#xff08;python&#xff09; 2.1 GWO1.py 2.2 GA1.py 2.3 GWO_vs_GA.py 2.4 运行结果 ​三、基于莱维飞行改进的灰狼优化算法的python实现 一、灰狼优化算法的python实现 import numpy as …

报修软件有什么用?企业如何做好设备管理与维护?

在当今的商业环境中&#xff0c;设备设施的维护和管理已经成为企业运营的重要环节。无论是学校、酒店、物业等大型企事业单位&#xff0c;还是运维集成商、制造工厂等企业单位&#xff0c;都需要对设备设施进行有效的管理。报修软件作为一种智能化的解决方案&#xff0c;为设备…

钉钉会议室无需API开发轻松连接OA、电商、营销、CRM、用户运营、推广、客服等近千款系统

钉钉会议室支持成员管理、主持人权限管理、高级会控、组织内会议全员静音、共享权限控制等会议管理能力&#xff0c;确保会议安全可控的进行。 官网&#xff1a;https://page.dingtalk.com/wow/z/dingtalk/Rax/RoomsIntro 集简云无代码集成平台&#xff0c;轻松连接钉钉会议室…

专业软件测评中心▏App渗透测试的测试流程和注意事项简析

当前&#xff0c;我国数字经济蓬勃发展&#xff0c;为实现高质量发展注入了澎湃动力&#xff0c;App的需求和供给都十分旺盛&#xff0c;因此安全问题逐渐成为用户最为关注的话题之一&#xff0c;而渗透测试至关重要。 一、App渗透测试流程&#xff1a;   1、需求收集&#…

Vray3.6 for SketchUp安装失败错误如何处理?

SketchUp这款软件是一个极受欢迎并且易于使用的3D软件&#xff0c;有很多朋友会通过Sketchup建模或是Sketchup渲染操作。 Sketchup 建模渲染来说&#xff0c;也是较简单的一款软件&#xff0c;今天小编聊的话题不是Sketchup怎样渲染的操作。 而是对于一些新手朋友提到的关于V…

functools模块:让Python编程更高效

​​​​​​​ 概要 不知道小伙伴们在Python编程中&#xff0c;我们经常会遇到一些需要反复使用的代码片段&#xff0c;例如装饰器、高阶函数等。为了提高代码的复用性和可读性&#xff0c;Python提供了functools模块。functools模块包含了许多实用的功能&#xff0c;…

软文推广方案,媒介盒子分享

作为企业宣传的手段&#xff0c;它能用较低的成本获得较好的宣传效果&#xff0c;但有许多企业在进行软文推广时并不起效&#xff0c;这是因为没掌握好方法。今天媒介盒子就来告诉大家&#xff0c;通用的软文推广方案。 一、 明确推广目标以及受众 明确软文推广的目标有助于明…

数字化如何赋能企业降本增效?

在当前高度不确定的市场环境下&#xff0c;降本增效已成为传统企业热议的话题。在这个背景下&#xff0c;企业内部各种“卷”现象层出不穷&#xff0c;各部门都在积极降本、开源节流&#xff0c;同时也在争夺本就不足的企业资源。因此&#xff0c;数字部门在资源受限的情况下&a…

人工智能基础_机器学习016_BGD批量梯度下降求解多元一次方程_使用SGD随机梯度下降计算一元一次方程---人工智能工作笔记0056

然后上面我们用BGD计算了一元一次方程,那么现在我们使用BGD来进行计算多元一次方程 对多元一次方程进行批量梯度下降. import numpy as np X = np.random.rand(100,8) 首先因为是8元一次方程,我们要生成100行8列的X的数据对应x1到x8 w = np.random.randint(1,10,size = (8…