ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

在 YOLOv10 中基于 Caltech-101 数据集训练图像分类模型:数据集解析与完整实操指南

在 YOLOv10 中基于 Caltech-101 数据集训练图像分类模型:数据集解析与完整实操指南 在 YOLOv10 中基于 Caltech-101 数据集训练图像分类模型数据集解析与完整实操指南【免费下载链接】yolov10YOLOv10: Real-Time End-to-End Object Detection [NeurIPS 2024]项目地址: https://gitcode.com/GitHub_Trending/yo/yolov10本文以 Caltech-101 图像分类数据集为切入点完整讲解该数据集的来源背景、目录结构、在 Ultralytics YOLO当前仓库 yolov10 项目分类任务中的自动下载与训练流程并结合 分类数据集基类实现 与 分类训练器 源码给出从数据准备、训练、验证到预测的端到端实战方案。一、Caltech-101 数据集概述Caltech-101 是计算机视觉领域广泛使用的目标识别基准数据集由加州理工学院维护数据集主页可见于官方 Caltech Data 记录。它包含约 9,000 张彩色图像覆盖 101 个物体类别类别选取刻意覆盖真实世界中形形色色的物体且图像经过精心挑选与标注构成了一个具有挑战性的目标识别基准。关键特性Key Features规模约 9,000 张彩色图像划分为 101 个类别类别多样性覆盖动物、交通工具、家居用品、人物等广泛对象类别不均衡每个类别的图像数量在约 40800 张之间变化属于典型的小样本/长尾分布场景图像分辨率图像尺寸不一多数为中等分辨率用途在机器学习领域尤其是目标识别任务中广泛用于训练与测试。二、数据集结构没有官方划分自己切分与许多自带 train/test 划分的数据集不同Caltech-101 没有官方固定的训练集与测试集划分使用者通常根据自身需求自行划分。一种常见做法是每类随机抽取固定数量例如每类 30 张作为训练集其余图像作为测试集。从源码看 YOLO 分类数据集的目录规范虽然 Caltech-101 官方没有划分但在 Ultralytics YOLO 的分类流程中数据必须组织成 torchvision 标准的 ImageFolder 格式根目录下每个类一个子目录子目录名即类别名内部存放该类所有图像JPEG/PNG 等。这也是 分类数据集格式指南 中定义的通用规范root/ |-- class1/ | |-- img1.jpg | |-- img2.jpg | |-- ... |-- class2/ | |-- img1.jpg | |-- img2.jpg | |-- ... |-- class3/ | |-- img1.jpg | |-- img2.jpg | |-- ... |-- ...这一结构与源码中的ClassificationDataset完全对应——该类直接继承自torchvision.datasets.ImageFolder见 ultralytics/data/dataset.py因此datacaltech101这样的快捷名称在首次使用时会被自动下载并解析为 ImageFolder 形式的本地目录随后build_dataset会基于该目录构造数据集实例见 ultralytics/models/yolo/classify/train.py。训练/验证路径的解析方式训练器基类通过get_dataset静态方法从数据集字典中取出train与val或test路径见 ultralytics/engine/trainer.py。对于 Caltech-101 这类没有独立 val 目录的数据集实际使用中一般先将 Caltech-101 按自己的比例切分出train/与test/两个子目录各自内部再按类别分子目录再分别作为训练集与验证集路径传入。三、应用场景Caltech-101 被广泛用于深度学习模型的训练与评估覆盖目标识别领域的典型算法卷积神经网络CNNs如图像分类骨干网络的特征提取能力对比支持向量机SVMs传统机器学习方法在视觉特征如 HOG、SIFT 编码上的分类性能验证其他机器学习与计算机视觉算法其类别多样、图像质量高是研究与开发阶段的理想基准。从当前仓库看Caltech-101 与 ImageNet 等一起被列为分类任务支持自动下载的数据集见 分类数据集索引并挂载在文档导航中见 mkdocs.yml。需要注意的是分类任务官方预训练权重yolov8n-cls.pt等基于 ImageNet 训练Caltech-101 更适合作为迁移学习或小样本分类的下游基准。四、在 YOLOv10 仓库中训练完整命令与参数4.1 使用预训练模型训练 100 个 epoch原文档给出两种等价的启动方式分别对应 Python API 与 CLI 接口Python 方式from ultralytics import YOLO # 加载模型推荐使用预训练模型作为起点 model YOLO(yolov8n-cls.pt) # 训练模型 results model.train(datacaltech101, epochs100, imgsz416)CLI 方式# 从预训练的 *.pt 模型开始训练 yolo detect train datacaltech101 modelyolov8n-cls.pt epochs100 imgsz416说明yolo detect train与yolo classify train在分类任务中指向同一训练流程CLI 解析后最终都调用分类训练器datacaltech101为数据集快捷名称首次运行时若本地不存在会自动下载到数据集目录。4.2 常用训练参数解析data、epochs、imgsz只是最基础的三个参数完整参数列表参见 训练模式文档 与 配置说明。结合分类数据加载源码以下参数对训练影响显著参数默认值作用与源码依据datacoco8.yaml数据集快捷名或路径分类任务解析为 ImageFolder 根目录epochs100训练轮数imgsz640训练/推理输入尺寸Caltech-101 官方示例使用416fraction1.0使用的训练数据比例源码在augmentTrue且fraction1.0时对样本做切片见 ultralytics/data/dataset.py可用于快速小规模实验cacheFalseTrue/ram缓存进内存、disk缓存为.npy文件减少 IO见 ultralytics/data/dataset.pyfliplr/flipud0.5/0.0水平/垂直翻转增强概率传入classify_augmentationshsv_h/hsv_s/hsv_v0.015/0.7/0.4HSV 色彩增强幅度auto_augmentrandaugment自动增强策略erasing0.4随机擦除增强概率crop_fraction1.0验证/推理时的中心裁剪比例作用于classify_transformsscale0.5训练时的随机缩放下界源码中固定取(1.0 - args.scale, 1.0)见 ultralytics/data/dataset.py4.3 训练数据加载的底层机制ClassificationTrainer.get_dataloader的调用链如下见 ultralytics/models/yolo/classify/train.py在 DDP 场景下先通过torch_distributed_zero_first(rank)保证.cache文件只初始化一次调用build_dataset构造ClassificationDatasetaugmentmodetrain决定是否启用训练增强由build_dataloader打包为 PyTorch DataLoader非训练模式下将torch_transforms挂到模型上用于推理预处理。ClassificationDataset.verify_images还会为数据集生成.cache缓存文件含版本号与哈希校验并对坏图进行过滤避免损坏图像中断训练见 ultralytics/data/dataset.py。对于 Caltech-101 这类来源多样、可能存在少量损坏文件的真实数据集这套校验机制尤为实用。五、训练后的验证Val分类任务的验证指标为 top-1 与 top-5 准确率。由于model会保留训练时的data等参数验证时无需重复指定数据集Python 方式from ultralytics import YOLO # 加载官方模型或自定义训练结果 model YOLO(yolov8n-cls.pt) # 官方预训练模型 model YOLO(path/to/best.pt) # 自定义训练模型 # 验证数据集与设置已被模型记住 metrics model.val() metrics.top1 # top1 准确率 metrics.top5 # top5 准确率CLI 方式yolo classify val modelyolov8n-cls.pt # 验证官方模型 yolo classify val modelpath/to/best.pt # 验证自定义模型六、用训练好的模型做预测PredictPython 方式from ultralytics import YOLO model YOLO(path/to/best.pt) # 加载训练好的模型 results model(path/to/image.jpg) # 对单张图像预测CLI 方式yolo classify predict modelpath/to/best.pt sourcepath/to/image.jpg七、模型导出Export分类模型可导出为 ONNX、TensorRT、CoreML、OpenVINO、TF Lite 等十余种格式导出后可直接用于predict/val# Python model.export(formatonnx) # CLI yolo export modelpath/to/best.pt formatonnx各导出格式支持的参数如imgsz、half、int8、dynamic等详见 导出模式文档 与 分类任务文档。八、引用与致谢在科研或开发工作中使用 Caltech-101 数据集请引用以下论文article{fei2007learning, title{Learning generative visual models from few training examples: An incremental Bayesian approach tested on 101 object categories}, author{Fei-Fei, Li and Fergus, Rob and Perona, Pietro}, journal{Computer vision and Image understanding}, volume{106}, number{1}, pages{59--70}, year{2007}, publisher{Elsevier} }该数据集由 Li Fei-Fei、Rob Fergus 与 Pietro Perona 创建并维护作为机器学习与计算机视觉研究社区的宝贵资源长期开放具体信息可查阅 Caltech Data 平台上的数据集主页。九、进一步阅读分类任务总览含预训练模型表分类数据集格式与全部支持数据集Caltech-256 数据集Caltech-101 的扩展版本256 类ImageNet 数据集分类预训练权重来源训练模式参数总览配置参数参考【免费下载链接】yolov10YOLOv10: Real-Time End-to-End Object Detection [NeurIPS 2024]项目地址: https://gitcode.com/GitHub_Trending/yo/yolov10创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表