第四次作业:CNN实战
前言
本博客为OUC2022秋季软件工程第四周作业
学习记录
–叶鹏
使用VGG模型进行猫狗大战
练习部分
同 高峰老师激情线上教学
不再赘述
练习赛部分
准备部分
####### 材料下载与准备
在比赛页面下载需要的图片压缩包,为了对接的程序,对图片目录做一定的修改
模型训练部分
####### 数据处理
datasets 是 torchvision 中的一个包,可以用做加载图像数据。它可以以多线程(multi-thread)的形式从硬盘中读取数据,使用 mini-batch 的形式,在 络训练中向 GPU 输送。在使用CNN处理图像时,需要进行预处理。图片将被整理成 224×224×3 的大小,同时还将进行归一化处理。
####### 训练并测试全连接层
-
创建损失函数和优化器
损失函数 NLLLoss() 的 输入 是一个对数概率向量和一个目标标签.
它不会为我们计算对数概率,适合最后一层是log_softmax()的 络.
练习赛部分
-
将生成的上传到比赛评测器
–王匀卓
下载数据
数据处理完后,会生成上述以cat_dog为文件名的文件结构。
创建 VGG Model
torchvision中集成了很多在 ImageNet (120万张训练数据) 上预训练好的通用的CNN模型,可以直接下载使用。
在本课程中,我们直接使用预训练好的 VGG 模型。同时,为了展示 VGG 模型对本数据的预测结果,还下载了 ImageNet 1000 个类的 JSON 文件。
在这部分代码中,对输入的5个图片利用VGG模型进行预测,同时,使用softmax对结果进行处理,随后展示了识别结果。可以看到,识别结果是比较非常准确的。
训练并测试全连接层
包括三个步骤:第1步,创建损失函数和优化器;第2步,训练模型;第3步,测试模型。
然后测试是否需要GPU上
3.数据预处理
(1)图片将被整理成 224 × 224 × 3 224times 224 times 3224×224×3 的大小,同时还将进行归一化处理。
(2)其他的一些对数据的复杂的预处理/变换(3)设置VGG的格式
(4)加载图像的数据。
打印图片和对应结果:
由图可知:
(1)input_try是5张244x244x3(RGB三通道)的小图片;
(2)lable_try是这五张图片对应的标签,都是0,说明,这五张照片都是猫。
4.创建VGG
打印出结果,观测可知:
- 结果为5行(因为一共是5张图片嘛),1000列的数据,每一列在不同dic_imagenet 目标识别的结果。
- 结果非常奇葩,有负数,有正数。
- 为了好看(至少让数据看起来像一个概率),我们把结果输入到 Softmax 函数。
5.修改最后一层 络,冻结前面层的参数
? 因为我们使用的模型是现成的、预训练好的模型,所以大部分的模型参数我们都不需要动,只需要动最后全连接层输出部分的参数就可以了(也就是修改最后一层 络)。
因此,? 需要把最后的 nn.Linear 层由1000类,替换为2类。为了在训练中冻结前面层的参数,需要设置 required_grad=False。这样,反向传播训练梯度时,前面层的权重就不会自动更新了。训练中,只会更新最后一层的参数。
6.训练全连接层
? 虽然VGG大部分层数参数不需要更改,但是毕竟最后输出还是要靠全连接层,最后一层的参数是发生变动的(相当于前面99%的 络都别人训练好的,我就训练最后的1%),所以我们还是需要训练、并测试全连接层。
9.输出csv
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VkmzyeFc-1666446273445)(https://1yly1.oss-cn-hangzhou.aliyuncs.com/images/18.png)]
二、实验总结
? 这次实验还是遇到了很多问题,不过前面的解决起来都很容易,因为有老师发的教程,最难还是最后导出实验结果csv文件那里,最开始我仿照大佬的代码,发现最后导出格式错误,以为是前面训练测试模型的毛病,找了半天,最后又把代码改错了,总之绕了好大一个圈子,最后才醒悟是导出csv文件那一部分代码的锅。也算是长个教训吧,以后找错误时要动动脑子。
–杨淋云
一、在谷歌Colab上完成猫狗大战VGG模型的迁移学习
在本教程中,我们将建立一个模型来完成猫狗大战竞赛题目。在这个比赛中,有25000张标记好的猫和狗的图片用做训练,有12500张图片用做测试。
5.训练并测试全连接层
包括三个步骤:第1步,创建损失函数和优化器;第2步,训练模型;第3步,测试模型。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eq9wxUho-1666446273449)(https://1yly1.oss-cn-hangzhou.aliyuncs.com/images/QQ%E5%9B%BE%E7%89%8720221022170923.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aGNHyKGm-1666446273449)(https://1yly1.oss-cn-hangzhou.aliyuncs.com/images/QQ%E5%9B%BE%E7%89%8720221022170958.png)]
6.可视化模型预测结果
主观分析就是把预测的结果和相对应的测试图像输出出来看看,一般有四种方式:
- 随机查看一些预测正确的图片
- 随机查看一些预测错误的图片
- 预测正确,同时具有较大的probability的图片
- 预测错误,同时具有较大的probability的图片
- 最不确定的图片,比如说预测概率接近0.5的图片
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-torHOkxI-1666446273449)(https://1yly1.oss-cn-hangzhou.aliyuncs.com/images/QQ%E5%9B%BE%E7%89%8720221022171027.png)]
二、AI研习 “猫狗大战”比赛,上传结果在线评测
1.导出csv文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CuZfJ8dT-1666446273450)(https://1yly1.oss-cn-hangzhou.aliyuncs.com/images/QQ%E5%9B%BE%E7%89%8720221022173920.png)]
2.进入AI研习 上传结果
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SSspxnLO-1666446273450)(https://1yly1.oss-cn-hangzhou.aliyuncs.com/images/QQ%E5%9B%BE%E7%89%8720221022173234.png)]
3.分析使用哪些技术可以进一步提高分类准确率
1)采集更多数据;2)添加更多层;3)更改图像大小;4)增加训练轮次;5)减少颜色通道;6)迁移学习。
预测正确,同时具有较大的probability的图片
- 预测错误,同时具有较大的probability的图片
- 最不确定的图片,比如说预测概率接近0.5的图片
[外链图片转存中…(img-torHOkxI-1666446273449)]
二、AI研习 “猫狗大战”比赛,上传结果在线评测
1.导出csv文件
[外链图片转存中…(img-CuZfJ8dT-1666446273450)]
2.进入AI研习 上传结果
[外链图片转存中…(img-SSspxnLO-1666446273450)]
3.分析使用哪些技术可以进一步提高分类准确率
1)采集更多数据;2)添加更多层;3)更改图像大小;4)增加训练轮次;5)减少颜色通道;6)迁移学习。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!