zoukankan      html  css  js  c++  java
  • 软件工程第四次作业:猫狗大战挑战赛

    一、在Colab上完成迁移学习

    关键步骤截图 & 想法和解读

    1. 下载数据

    1. Jeremy Howard 提供了数据的下载,链接为:http://files.fast.ai/data/dogscats.zip
    2. 在他整理的数据集中,猫和狗的图片放在单独的文件夹中, 同时还提供了一个Validation数据。如果没有GPU设备,请减少用做训练的图像数据量即可。
    3. 因为这个代码需要在colab上跑,速度会相对较慢。因此,我们重新整理了数据,制作了新的数据集,训练集包含1800张图(猫的图片900张,狗的图片900张),测试集包含2000张图。下载地址为:http://fenggao-image.stor.sinaapp.com/dogscats.zip
    image-20201031222323460

    2. 数据处理

    1. datasets 是 torchvision 中的一个包,可以用做加载图像数据。它可以以多线程(multi-thread)的形式从硬盘中读取数据,使用 mini-batch 的形式,在网络训练中向 GPU 输送。
    2. 在使用CNN处理图像时,需要进行预处理。图片将被整理成 $224	imes 224 	imes 3$ 的大小,同时还将进行归一化处理。torchvision 支持对输入数据进行一些复杂的预处理/变换 (normalization, cropping, flipping, jittering 等)。具体可以参照 torchvision.tranforms 的官方文档说明。
    image-20201031222621166 image-20201031222743970 image-20201031222826630 image-20201031222906743

    3. 创建 VGG Model

    1. torchvision中集成了很多在 ImageNet (120万张训练数据) 上预训练好的通用的CNN模型,可以直接下载使用。
    2. 以下直接使用预训练好的 VGG 模型。同时,为了展示 VGG 模型对本数据的预测结果,还下载了 ImageNet 1000 个类的 JSON 文件。
    3. 在这部分代码中,对输入的5个图片利用VGG模型进行预测。
    4. 使用softmax对结果进行处理,随后展示了识别结果。可以看到,识别结果是比较非常准确的。
    image-20201031223125246 image-20201031223201721

    4. 修改最后一层,冻结前面层的参数

    1. 把最后的 nn.Linear 层由1000类,替换为2类,从而使用训练好的模型。
    2. 设置 required_grad=False,从而在训练中冻结前面层的参数
    image-20201031223539426

    5. 训练并测试全连接层

    1. 创建损失函数和优化器
    2. 训练模型
    3. 测试模型
    image-20201031223727744 image-20201031223837810

    6. 可视化模型预测结果(主观分析)

    主观分析就是把预测的结果和相对应的测试图像输出出来看看,一般有四种方式:

    随机查看一些预测正确的图片

    随机查看一些预测错误的图片

    预测正确,同时具有较大的probability的图片

    预测错误,同时具有较大的probability的图片

    最不确定的图片,比如说预测概率接近0.5的图片

    image-20201031224007181

    二、在AI研习社提交代码评测

    下载文件并且解压:

    image-20201102190618982

    有把解压后的test挪到dogscats的test1文件下

    加载数据

    image-20201102190800998 image-20201102190826069

    测试模型

    image-20201102191154165

    结果导入文件

    image-20201102191358336

    在线测评结果:

    未做任何修改,将最初结果上传:
    image-20201103185414879
    数据处理时,图形缩放,再次进行检测:
    image-20201103185325606
    提高了训练次数设置为3,再次进行检测:
    image-20201103185348175
    调整学习率为0.0001,再次进行检测:
    image-20201103185645955
    更改优化器SGD->Adam,再次进行检测:
    image-20201103185835221

    努力进化中......

  • 相关阅读:
    [Linux]调整swap
    [Linux]mysql错误总结-ERROR 1067 (42000): Invalid default value for TIMESTAMP
    Canvas动画:地球绕着太阳转
    50个好用的前端框架,建议收藏!
    flex布局属性说明
    纯CSS绘制的图形一览
    深入理解CSS盒模型(转)
    JS的防抖与节流学习笔记
    应用八:Vue之在nginx下的部署实践
    css元素居中的几种方式
  • 原文地址:https://www.cnblogs.com/gu-qiu/p/13908030.html
Copyright © 2011-2022 走看看