动手学深度学习(Pytorch版)代码实践 -计算机视觉-38实战Kaggle比赛:图像分类 (CIFAR-10)

38实战Kaggle比赛:图像分类 (CIFAR-10)

比赛链接:CIFAR-10 - Object Recognition in Images | Kaggle

导入包
import os
import glob
import pandas as pd
import numpy as np
import torch
import torchvision
from torch.utils.data import Dataset, DataLoader
from torchvision import transforms
from PIL import Image
import matplotlib.pyplot as plt
from torch import nn
from d2l import torch as d2l
import liliPytorch as lp
import csv
预处理:数据集分析
# 获取精简数据集
#@save
d2l.DATA_HUB['cifar10_tiny'] = (d2l.DATA_URL + 'kaggle_cifar10_tiny.zip',
                                '2068874e4b9a9f0fb07ebe0ad2b29754449ccacd')
# 如果使用完整的Kaggle竞赛的数据集,设置demo为False
demo = True
if demo:
    data_dir = d2l.download_extract('cifar10_tiny')
else:
    data_dir = '../data/cifar-10/'


train_path = '../data/kaggle_cifar10_tiny/train.csv'
file_path = '../data/kaggle_cifar10_tiny/'

# 读取数据
train_data = pd.read_csv(train_path)
# 查看数据
print(train_data['label'].value_counts())
# """
# label
# automobile    112
# frog          107
# truck         103
# horse         102
# airplane      102
# deer           99
# bird           99
# ship           99
# cat            92
# dog            85
# """
1.数据处理与加载
train_path = '../data/kaggle_cifar10_tiny/train.csv'
test_path = '../data/kaggle_cifar10_tiny/test.csv'
file_path = '../data/kaggle_cifar10_tiny/'

# 统计label种类,并排序
cifar_labels = sorted(list(set(train_data['label'])))
# 将label对应编号
labels_to_num = dict(zip(cifar_labels, range(len(cifar_labels))))
# print(labels_to_num)
"""
{'airplane': 0, 'automobile': 1, 'bird': 2, 'cat': 3, 'deer': 4, 
'dog': 5, 'frog': 6, 'horse': 7, 'ship': 8, 'truck': 9}
"""
# 将编号对应label,用于后续预测
num_to_labels = {
   
   value : key for key, value in labels_to_num.items()}
# print(num_to_labels)
"""
{0: 'airplane', 1: 'automobile', 2: 'bird', 3: 'cat', 4: 'deer', 
5: 'dog', 6: 'frog', 7: 'horse', 8: 'ship', 9: 'truck'}
"""


def get_image_filenames(folder_path, extensions=['.png', '.jpg', '.jpeg']):
    # 获取指定文件夹中的所有图片文件
    image_files = []
    for ext in extensions:
        image_files.extend(glob.glob(os.path.join(folder_path, f'*{
     
     ext}')))
    # 返回图片文件名列表
    return [os.path.basename(image) for image in image_files]

def save_filenames_to_csv(filenames, csv_path):
    with open(csv_path, mode='w', newline='', encoding='utf-8') as file:
        writer = csv.writer(file)
        # 写入CSV的第一行
        writer.writerow(['id'])
        # 写入每个文件名
        for filename in filenames:
            writer.writerow([filename])

# 获取测试图片名
test_images_path = '../data/kaggle_cifar10_tiny/test'
image_filenames = get_image_filenames(test_images_path)
# 保存到CSV文件
save_filenames_to_csv(image_filenames, file_path + 'test.csv') 


class CifarDataset(Dataset):
    def __init__(self, csv_path, file_path, mode='train', valid_ratio=0.2, resize_height
<think>嗯,用户想找关于深度学习在图像处理方面的实战教程或案例。首先,我需要理解他们的具体需求。他们可能对理论知识有一定了解,现在想通过实践来巩固和应用。可能是在学习过程中遇到了瓶颈,或者需要实际项目经验。接下来,我得看看现有的参考资料里有没有相关的信息。 根据提供的引用,引用[2]提到了一本《深度学习与图像处理(PaddlePaddle)》,这本书覆盖了计算机视觉的热门方向,还有云边端部署的教程,并且有配套的课程在AI Studio平台。这可能是一个很好的资源。引用[3]介绍了《PyTorch计算机视觉实战》,内容很全面,包括目标检测、图像分类、分割等,还有结合NLP和强化学习的案例,适合初中级读者。这些都是实战性很强的书籍。 用户可能需要具体的案例,比如图像分类、目标检测,或者GAN的应用。我应该推荐这些书籍和平台上的课程,因为它们提供了从基础到进阶的内容,还有实际数据集和代码示例。另外,AI Studio平台可能有计算资源,这对用户来说可能很重要,尤其是如果他们本地硬件不足的话。 用户可能没有明确说明他们的技术栈,比如是偏好PyTorch还是PaddlePaddle。所以,我应该分别介绍这两种框架的资源,让用户根据自己的需求选择。此外,提到Kaggle和GitHub上的项目可以帮助他们找到更多社区驱动的案例,这些通常包含最新的技术和解决方案。 还需要考虑用户的学习路径,是否需要从基础开始,还是直接进入项目。引用中的书籍都涵盖了基础知识和实战案例,所以应该都适合。另外,部署教程也是实际应用中重要的一环,用户可能对如何将模型部署到生产环境感兴趣,这部分在引用[2]中有提到,应该强调出来。 最后,生成相关问题的时候,要围绕用户可能进一步的需求,比如框架比较、部署方法或者数据集获取,这些都是学习过程中常见的问题。这样可以帮助用户更深入地探索主题,解决他们可能遇到的后续问题。</think>根据您的需求,我为您整理以下深度学习与图像处理实战资源及案例方向: ### 一、图书推荐 1.《PyTorch计算机视觉实战》(引用[3]) - 核心内容:覆盖目标检测/图像分类/图像分割三大方向,包含50+真实案例 - 特色模块: $$ YOLO \rightarrow Faster R-CNN \rightarrow Mask R-CNN \rightarrow U-Net $$ $$ GAN \rightarrow CycleGAN \rightarrow StyleGAN $$ - 附带资源:GitHub代码仓库 + Colab在线环境 2.《深度学习与图像处理(PaddlePaddle)》(引用[2]) - 教学体系: ```mermaid 流程图 基础理论 → 飞桨框架 → 图像分类 → 目标检测 → 图像分割 → 模型部署 ``` - 配套资源:AI Studio平台课程(含免费GPU算力) ### 二、实战案例方向 1. **基础案例** - MNIST手写数字分类(CNN实现) ```python model = Sequential([ Conv2D(32, (3,3), activation='relu', input_shape=(28,28,1)), MaxPooling2D((2,2)), Flatten(), Dense(10, activation='softmax') ]) ``` - 准确率提升技巧:数据增强/正则化/学习率调度 2. **进阶应用** - 医疗影像分割(U-Net架构) $$ \mathcal{L}_{Dice} = 1 - \frac{2|X \cap Y|}{|X| + |Y|} $$ - 工业缺陷检测(Faster R-CNN改进方案) ### 三、学习路径建议 1. 基础阶段(2-4周): - OpenCV图像预处理 - PyTorch/TensorFlow基础 - 经典CNN架构复现 2. 项目阶段(6-8周): ```markdown - 第1周:Kaggle猫狗分类(准确率>95%) - 第3周:COCO目标检测(mAP>0.75) - 第6周:Cityscapes语义分割(IoU>0.8) ``` ### 四、推荐学习平台 1. **AI Studio**(引用[2]) - 特色:免费GPU资源 + 飞桨官方教程 - 推荐课程:《PaddleSeg实战训练营》 2. **Kaggle** - 热门数据集: | 数据集 | 类型 | 样本量 | |--------|------|--------| | CIFAR-10 | 分类 | 60,000 | | Pascal VOC | 检测 | 11,530 | | ADE20K | 分割 | 25,574 | ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@李思成

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值