CNN实战

1.猫狗大战VGG模型迁移学习

下载数据

猫和狗的图片放在单独的文件夹中。
image

数据处理

对图片进行预处理
image
image

创建VGG Model

使用预训练好的VGG Model,并对输入的5张图片进行识别
image
image
可以看出,识别结果较为准确,这5张图片均正确。

修改最后一层,冻结之前的参数

为了使用预训练好的模型,结合本问题特征,需将nn.linear最后一层的参数改为2,即为2类(cat & dog),同时冻结前面的参数,这样在反向传播时只会更新最后一层的参数,不影响预训练结果。
image

训练并测试全连接层

image
image
准确率非常高,达到了96.6%。

可视化模型预测结果

进行随机检测,0代表cat,1代表dog。
将correct的部分进行随机显示,进一步检验模型准确性。

2.CNN实战

迁移学习的不同之处

1.所给数据集并未进行标注

与原作业相比,https://god.yanxishe.com/41 中给出的数据集都是未进行标注的。参考上文中的代码,首先要将给出的数据集中train,val中的cat和dog部分分离,简单来说就是把cat的图片放在cat文件夹下,dog图片类似。这部分走了不少弯路,因为colab不支持对文件的一些便捷操作,甚至想过将文件在本地分好类之后再上传到colab中,因耗时过久放弃。最后借鉴了这篇博客:https://www.cnblogs.com/jielongAI/p/9395503.html 。完美符合需求,分好类的文件夹结构如下。
image
test部分类似,为便于后续ImageFolder读取,可以生成一个raw文件夹存放原图片集。

2.生成csv

与此前通过valid数据集进行验证不同,题目要求的是根据test文件生成对应的分类结果,此部分借鉴了https://www.cnblogs.com/Fi-Past/p/15440406.html
上代码
image
注意,loader_test的定义部分与之前稍有不同,batch_size和num_workers部分都进行了修改。

提交结果截图

image
与原代码的96.1相比略有提高,原因是前置部分进行了数据增强

posted @ 2021-10-23 23:34  珊瑚花海  阅读(81)  评论(0)    收藏  举报