CNN实战
1.猫狗大战VGG模型迁移学习
下载数据
猫和狗的图片放在单独的文件夹中。

数据处理
对图片进行预处理


创建VGG Model
使用预训练好的VGG Model,并对输入的5张图片进行识别


可以看出,识别结果较为准确,这5张图片均正确。
修改最后一层,冻结之前的参数
为了使用预训练好的模型,结合本问题特征,需将nn.linear最后一层的参数改为2,即为2类(cat & dog),同时冻结前面的参数,这样在反向传播时只会更新最后一层的参数,不影响预训练结果。

训练并测试全连接层


准确率非常高,达到了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 。完美符合需求,分好类的文件夹结构如下。

test部分类似,为便于后续ImageFolder读取,可以生成一个raw文件夹存放原图片集。
2.生成csv
与此前通过valid数据集进行验证不同,题目要求的是根据test文件生成对应的分类结果,此部分借鉴了https://www.cnblogs.com/Fi-Past/p/15440406.html
上代码

注意,loader_test的定义部分与之前稍有不同,batch_size和num_workers部分都进行了修改。
提交结果截图

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

浙公网安备 33010602011771号