本次实验主要使用VGG16模型迁移学习进行CIFAR10分类,将猫和狗的图片区分开,平台使用Google Colab平台。
VGG网络
VGG是由Simonyan 和Zisserman在文献《Very Deep Convolutional Networks for Large Scale Image Recognition》中提出卷积神经网络模型,是2014年的 ImageNet图像分类与定位挑战赛的第二名。VGG网络影响巨大,一直到今天仍然很多人在使用。
可以看到VGG网络是一个非常庞大的网络,训练难度也很高,我们本次采用迁移学习的方式,对原网络进行 fine-tune (即固定前面若干层,作为特征提取器,只重新训练最后两层),尝试提高实验效果。
一、数据集导入
研习社为我们提供了提供了训练以及测试的数据集,以及最终实验数据的检测。(目前比赛已经结束,但仍可做为练习赛每天提交测试结果)
由于训练的数据集,我们采用了偷懒的办法,只选取了训练集其中一部分进行训练。
训练集直接从网站链接导入
! wget http://fenggao-image.stor.sinaapp.com/dogscats.zip
! unzip dogscats.zip
测试集数据,下载完成后,解压并仅压缩test文件夹,上传到Google Drive中,然后在colab左侧按钮处连接Google Drive
然后,我们就能在drive目录中查看到我们上传的数据集的压缩包的具体位置。
训练集引入代码:
#具体位置根据自己的情况修改
from google.colab import drive
drive.mount('/content/drive')
!unzip "/content/drive/MyDrive/Colab Notebooks/test.zip"
二、训练模型
1.加载训练集数据
normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
vgg_format = transforms.Compose([
transforms.CenterCrop(224),
transforms.ToTensor(),
norma