最近闲来无事,用Keras写了个分类程序将VGG19应用于kaggle数据state-farm-distracted-driver-detection。本来想用Xception模型的。但是发现只要使用Xception模型,基于imagenet训练好的权重fine tune在第一个epoch必然会过拟合,不知道怎么解决。使用了VGG19就没有这个问题。
首先从kaggle上把数据下载下来。然后解压,能拿到两个文件夹:train和test。train下又有10个文件夹,c0-c9代表10类。跟train和test同级建立valid文件夹,再在valid文件夹下建立c0-c9十个文件夹。因为我机器没法把所有数据都读到内存里面,只能用ImageDataGenerator。将train下的c0-c9中的图片拷贝一部分到valid对应的文件夹下,见下面的ipython notebook脚本
!mv data/train/c0/img_1*.jpg data/valid/c0
!mv data/train/c1/img_1*.jpg data/valid/c1
!mv data/train/c2/img_1*.jpg data/valid/c2
!mv