YOLOv5 分类模型的预处理

YOLOv5 分类模型的预处理

flyfish

版本 6.2

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

py 复制代码
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的维度进入模型

图像经过了如下变换

python 复制代码
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)])

最重要的是这两个

py 复制代码
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)

相关推荐
Coovally AI模型快速验证8 小时前
当小龙虾算法遇上YOLO:如何提升太阳能电池缺陷检测精度?
人工智能·深度学习·算法·yolo·目标检测·无人机
一招定胜负10 小时前
项目案例:卷积神经网络实现食物图片分类代码详细解析
人工智能·分类·cnn
数据光子12 小时前
【YOLO数据集】自动驾驶
人工智能·yolo·自动驾驶
Simon_lca13 小时前
迈向绿色未来:全球手机品牌ESG实践深度剖析——聚焦供应链减排与零碳转型
大数据·人工智能·经验分享·智能手机·分类·制造
ASD123asfadxv13 小时前
基于YOLOv8-FasterNet的液压阀块端盖表面缺陷检测与分类
yolo·分类·数据挖掘
算法与编程之美13 小时前
损失函数与分类精度的关系
人工智能·算法·机器学习·分类·数据挖掘
Coding茶水间13 小时前
基于深度学习的X光骨折检测系统演示与介绍(YOLOv12/v11/v8/v5模型+Pyqt5界面+训练代码+数据集)
深度学习·yolo·机器学习
小龙13 小时前
【开源项目】核心评价指标的动态关联性分析与可视化实验 —— 以多分类文本任(代码+结果分析)
人工智能·分类·数据挖掘·开源项目·模型指标
2401_8414956414 小时前
自然语言处理实战——基于 BP 神经网络的中文文本情感分类
人工智能·python·神经网络·机器学习·自然语言处理·分类·情感分类
core51214 小时前
AI 任务分类:人工智能到底能干啥?
人工智能·分类·生成式ai·聚类·强化学习·无监督学习·有监督学习