斯坦福120类狗分类
斯坦福犬数据集含120种犬的20580张图像,用于细粒度分类。文中介绍了解压数据集、安装PaddleX与PaddleClas等环境准备步骤,还涉及用PaddleX划分数据集、配置PaddleClas进行训练,以及模型评估、预测和推理等流程,总结了相关工具在图像分类任务中的表现及注意事项。

你是什么样的狗?
什么?你不认识?那么来让AI告诉你吧!
免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈
1.数据集介绍
1.1语境
斯坦福犬数据集包含来自世界各地的120种犬的图像。此数据集是使用ImageNet的图像和注释构建的,用于完成细粒度的图像分类任务。它最初是为进行细粒度图像分类而收集的,这是一个具有挑战性的问题,因为某些犬种具有几乎相同的特征或颜色和年龄不同。
1.2内容
类别数:120图片数量:20,580其他:标签,标注框1.3 致谢
原始数据源可在 https://vision.stanford.edu/aditya86/ImageNetDogs/ 上找到,其中包含有关训练/测试拆分和基线结果的其他信息。
如果您在出版物中使用此数据集,请在以下论文中引用该数据集:
first
Aditya Khosla,Nityananda Jayadevaprakash,Bangpeng Yao和Li Fei-Fei。用于细粒度图像分类的新型数据集。第一次细粒度视觉分类(FGVC)研讨会,IEEE计算机视觉和模式识别会议(CVPR),2011年。[pdf] [海报] [BibTex]
Secondary
J. Deng,W. Dong,R. Socher,L.-J。Li,K. Li和L. Fei-Fei,ImageNet:大型分层图像数据库。IEEE计算机视觉和模式识别(CVPR),2009年。[pdf] [BibTex]
https://unsplash.com/photos/U6nlG0Y5sfs
1.3 其他任务
您能否正确识别具有类似特征的犬种,例如贝塞猎狗和猎犬?这吉娃娃是年纪大还是年纪大?2.数据解压
In [ ]# 解压缩,一次即可# !unzip -aoq data/data87695/Stanford_Dogs_Dataset.zip -d dataset登录后复制 In [ ]
!ls dataset/images/Images/登录后复制
由上可见共计有120分类
3.环境准备
3.1 paddlex安装
In [ ]# PaddleX安装! pip install paddlex# 切记切记paddle2onnx!pip install paddle2onnx登录后复制
3.2 paddleclas安装
In [ ]!git clone https://gitee.com/paddlepaddle/PaddleClas.git --depth=1登录后复制 In [ ]
!cd PaddleClas && pip3 install --upgrade -r requirements.txt登录后复制
4.数据集处理
4.1利用paddlex划分数据集
分别生成 labels.txt test_list.txt train_list.txt val_list.txt
In [ ]# 数据集划分!paddlex --split_dataset --format ImageNet --dataset_dir ~/dataset/images/Images --val_value 0.2 --test_value 0.1登录后复制
4.2标签查看
In [ ]# 各种标签查看!cat ~/dataset/images/Images/labels.txt登录后复制
5.PaddleClas配置
5.1 基础配置
进入PaddleClas目录设置显卡In [ ]# 进入PaddleClas%cd ~/PaddleClas登录后复制 In [ ]
!export CUDA_VISIBLE_DEVICES=0登录后复制
5.2 PaddleClas训练配置
使用PaddleClas/configs/MobileNetV3/MobileNetV3smallx075.yaml
mode: 'train'ARCHITECTURE: name: "MobileNetV3_small_x0_75"pretrained_model: ""model_save_dir: "./output/"# 120类classes_num: 120# 总图片数量total_images: 20580save_interval: 1ls_epsilon: 0.1validate: Truevalid_interval: 1# 训练轮次epochs: 360topk: 5image_shape: [3, 224, 224]LEARNING_RATE: function: 'Cosine' params: lr: 2.6 warmup_epoch: 5OPTIMIZER: function: 'Momentum' params: momentum: 0.9 regularizer: function: 'L2' factor: 0.00002TRAIN: batch_size: 4096 num_workers: 4 file_list: "/home/aistudio/dataset/images/Images/train_list.txt" data_dir: "/home/aistudio/dataset/images/Images" shuffle_seed: 0 transforms: - DecodeImage: to_rgb: True channel_first: False - RandCropImage: size: 224 - RandFlipImage: flip_code: 1 - NormalizeImage: scale: 1./255. mean: [0.485, 0.456, 0.406] std: [0.229, 0.224, 0.225] order: '' - ToCHWImage:VALID: batch_size: 64 num_workers: 4 file_list: "/home/aistudio/dataset/images/Images/val_list.txt" data_dir: "/home/aistudio/dataset/images/Images" shuffle_seed: 0 transforms: - DecodeImage: to_rgb: True channel_first: False - ResizeImage: resize_short: 256 - CropImage: size: 224 - NormalizeImage: scale: 1.0/255.0 mean: [0.485, 0.456, 0.406] std: [0.229, 0.224, 0.225] order: '' - ToCHWImage:登录后复制 In [ ]
!pwd登录后复制
5.3训练bug
2024-05-10 01:36:33,765 - ERROR - DataLoader reader thread raised an exception!2024-05-10 01:36:33,766 - ERROR - (Fatal) Blocking queue is killed because the data reader raises an exception. [Hint: Expected killed_ != true, but received killed_:1 == true:1.] (at /paddle/paddle/fluid/operators/reader/blocking_queue.h:158)登录后复制
5.4 finetune
'./configs/quick_start/MobileNetV3_large_x1_0_finetune.yaml'
mode: 'train'ARCHITECTURE: name: 'MobileNetV3_large_x1_0'pretrained_model: "./pretrained/MobileNetV3_large_x1_0_pretrained"model_save_dir: "./output/"use_gpu: True# 120类classes_num: 120# 总图片数量20580total_images: 14499save_interval: 1validate: Truevalid_interval: 1epochs: 20topk: 1image_shape: [3, 224, 224]LEARNING_RATE: function: 'Cosine' params: lr: 0.00375OPTIMIZER: function: 'Momentum' params: momentum: 0.9 regularizer: function: 'L2' factor: 0.000001TRAIN: batch_size: 160 num_workers: 0 file_list: "/home/aistudio/dataset/images/Images/train_list.txt" data_dir: "/home/aistudio/dataset/images/Images/" shuffle_seed: 0 transforms: - DecodeImage: to_rgb: True channel_first: False - RandCropImage: size: 224 - RandFlipImage: flip_code: 1 - NormalizeImage: scale: 1./255. mean: [0.485, 0.456, 0.406] std: [0.229, 0.224, 0.225] order: '' - ToCHWImage:VALID: batch_size: 160 num_workers: 0 file_list: "/home/aistudio/dataset/images/Images/val_list.txt" data_dir: "/home/aistudio/dataset/images/Images/" shuffle_seed: 0 transforms: - DecodeImage: to_rgb: True channel_first: False - ResizeImage: resize_short: 256 - CropImage: size: 224 - NormalizeImage: scale: 1.0/255.0 mean: [0.485, 0.456, 0.406] std: [0.229, 0.224, 0.225] order: '' - ToCHWImage:登录后复制
5.5下载预训练模型
In [ ]!python tools/download.py -a MobileNetV3_large_x1_0 -p ./pretrained -d True登录后复制
6.开始训练
In [21]!python tools/train.py -c './configs/quick_start/MobileNetV3_large_x1_0_finetune.yaml'登录后复制
visualDL可视化metrics图标
7. 模型评估
可以通过以下命令进行模型评估。
In [23]!python tools/eval.py \ -c ./configs/quick_start/MobileNetV3_large_x1_0_finetune.yaml \ -o pretrained_model="./output/MobileNetV3_large_x1_0/best_model/ppcls"\ -o load_static_weights=False登录后复制
8. 使用预训练模型进行模型预测
模型训练完成之后,可以加载训练得到的预训练模型,进行模型预测。在模型库的 tools/infer/infer.py 中提供了完整的示例,只需执行下述命令即可完成模型预测:
In [25]!python tools/infer/infer.py \ -i ../111.webp \ --model MobileNetV3_large_x1_0 \ --pretrained_model "./output/MobileNetV3_large_x1_0/best_model/ppcls" \ --use_gpu True \ --load_static_weights False登录后复制
9.使用inference模型进行模型推理
通过导出inference模型,PaddlePaddle支持使用预测引擎进行预测推理。接下来介绍如何用预测引擎进行推理: 首先,对训练好的模型进行转换:
In [27]!python tools/export_model.py \ --model MobileNetV3_large_x1_0 \ --pretrained_model ./output/MobileNetV3_large_x1_0/best_model/ppcls \ --output_path ./inference登录后复制 In [29]
!python tools/infer/predict.py \ --image_file ../dataset/images/Images/n02085936-Maltese_dog/n02085936_10148.webp \ --model_file "./inference/inference.pdmodel" \ --params_file "./inference/inference.pdiparams" \ --use_gpu=True \ --use_tensorrt=False登录后复制
10.总结
总的来说,paddleclas以及paddlex面对多类型、大数据量图像分类任务有很优秀得表现,有以下几点需要注意:
在提高acc并兼顾效率时,最好使用轻量级模型,并适当选择图像增强策略;使用visualDL可视化Metrics,可以实时观察训练走势,即使调整策略。相关攻略
常见报错解析:“Access Not Configured”故障排除指南 许多开发者和团队成员在使用OpenClaw集成飞书时,都曾遭遇过一个典型的中断提示:“access not configured”(访问未配置)。该提示会明确显示您的飞书账户ID及一组唯一的配对验证码,并指出需要联系机器人所有
OpenClaw 常用指令大全与使用详解 openclaw status:此命令是查看OpenClaw系统整体健康状态的核心指令,执行后即获取服务运行状况的全面报告,是日常运维的首要诊断工具。 openclaw gateway restart:在修改网关配置后,必须运行此指令以重启网关服务,使配置文
如何通过 OpenClaw 实现 Chrome 浏览器自动化操控 在软件开发与自动化测试领域,持续学习是常态。本文旨在详细介绍如何利用 OpenClaw 连接并控制一个已开启的 Chrome 浏览器实例,实现点击、文本输入、文件上传、页面滚动、屏幕截图以及执行 JavaScript 等自动化操作。整
项目概述 你是否希望将强大的 AI 助手带入日常聊天?本教程将指导你完成搭建流程,让你能在 QQ 上直接调用 OpenClaw 智能助手,实现无门槛的 AI 对话体验。 架构说明 ┌─────────────┐ ┌──────────────┐ ┌─────────────┐ │ QQ 用户 │ ─
一 下载并安装Node js,全程保持默认设置 首先,请前往Node js官方网站的下载中心:https: nodejs org zh-cn download。根据您的操作系统(Windows Mac Linux)下载对应的安装程序。运行安装向导时,整个过程非常简单,您只需连续点击“下一步”按钮
热门专题
热门推荐
速览攻略:世界圣羽翼王核心打法与全面解析 本攻略将为你完整呈现《洛克王国》世界圣羽翼王的通关秘籍,深度剖析两种高效实战打法:追求极致速度的“燃薪虫四回合速通”与稳定输出的“酷拉无限连击流”。文章将进一步解析这位翼系精灵王的技能机制、属性克制关系及其在PVE与PVP中的实战定位,帮助你彻底掌握应对其隐
速览:工程系统核心机制解析 在《异种航员2》中,工程系统是整个抵抗力量赖以运转的“战略后勤中枢”。无论是研发新武器、生产重型装甲还是制造先进飞行器,所有实体装备的产出都依赖于此。简言之,该系统的核心运作围绕着两大关键:工程师人力的高效配置与全球稀缺资源的精细化调度。工程师的数量直接决定了每个项目的建
核心速览 在《洛克王国世界》中,治愈兔是一位兼具功能性任务角色与实战辅助能力的精灵。它的价值不仅在剧情推进中体现,更在于对战里出色的治疗与防护表现。本文将为你全面解析治愈兔的精准获取位置、种族属性特点以及实战技能搭配,助你顺利捕捉并最大化其在队伍中的作用。所有关键信息将通过清晰的图文内容详细展示,确
速览 在《红色沙漠》中,挑战传说之狼这一强大的任务BOSS,需要玩家进行充分的准备并遵循完整的任务流程。整个过程环环相扣,你必须首先参与塞莱斯特家族的势力任务,通过完成任务将家族声望提升至指定等级,才能解锁【传说之狼】的专属讨伐任务,最终直面这个传说中的强大生物。 红色沙漠传说之狼怎么打 归根结底,
【宝可梦Pokopia】舒适度全解析:快速提升环境等级的核心秘诀 你是否正在探索《宝可梦Pokopia》世界,并希望有效提升宝可梦栖息地的舒适度?舒适度不仅是衡量宝可梦快乐程度的晴雨表,更是解锁游戏核心内容、加速发展的关键驱动指标。本攻略将系统性地为你揭示提升舒适度的核心途径,涵盖从装饰栖息地、建造





