深度学习

您所在的位置:网站首页 欧洲狗的品种 深度学习

深度学习

2024-07-04 15:10| 来源: 网络整理| 查看: 265

深度学习——狗的品种识别(ImageNet Dogs)

文章目录 前言一、狗的品种识别1.1.数据获取1.2. 划分数据集1.3. 定义图像预处理1.4. 导入整理后的数据集1.5. 微调预训练模型1.6. 定义计算损失值的函数1.7. 定义训练函数1.8. 开始训练1.9. 效果评估 二、转为ONNX格式总结

前言

做一下kaggle中的狗的品种识别(Dog Breed Identification)

一、狗的品种识别

比赛数据集分为训练集和测试集,分别包含RGB(彩色)通道的10222张、10357张JPEG图像。 在训练数据集中,有120种犬类,如拉布拉多、贵宾、腊肠、萨摩耶、哈士奇、吉娃娃和约克夏等。

1.1.数据获取

同样登录kaggle之后,可以单击“Dog Breed Identification"竞赛页面上的”data"选项卡,然后单击“Download ALL"按钮下载数据集。

在这里插入图片描述

将下载的数据集压缩文件导入自己kaggle的自定义的notebook中:

在这里插入图片描述

导入成功

在这里插入图片描述

1.2. 划分数据集 #狗的品种识别 import collections import math import os import shutil import pandas as pd import torch import torchvision from torch import nn from d2l import torch as d2l data_dir = "/kaggle/input/wht-dog-breed-identification/" def read_csv_labels(fname): """读取fname来给标签字典返回一个文件名""" with open(fname, 'r') as f: # 跳过文件头行(列名) lines = f.readlines()[1:] tokens = [l.rstrip().split(',') for l in lines] return dict(((name, label) for name, label in tokens)) labels = read_csv_labels(os.path.join(data_dir, 'labels.csv')) print('# 训练样本 :', len(labels)) print('# 类别 :', len(set(labels.values()))) target_dir = '/kaggle/working/my_directory' def copyfile(filename, target_dir): """将文件复制到目标目录""" os.makedirs(target_dir, exist_ok=True) shutil.copy(filename, target_dir) def reorg_train_valid(data_dir, labels, valid_ratio): """将验证集从原始的训练集中拆分出来""" # 训练数据集中样本最少的类别中的样本数 n = collections.Counter(labels.values()).most_common()[-1][1] # 验证集中每个类别的样本数 n_valid_per_label = max(1, math.floor(n * valid_ratio)) label_count = {} for train_file in os.listdir(os.path.join(data_dir, 'train')): label = labels[train_file.split('.')[0]] fname = os.path.join(data_dir, 'train', train_file) copyfile(fname, os.path.join(target_dir, 'train_valid_test', 'train_valid', label)) if label not in label_count or label_count[label]


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3