在本项目中,大家会学会使用成熟的卷积网络架构进行 kaggle 植物种子分类,不同于上一个比赛,在这个比赛中,数据量更大,图像分辨率更高,网络结构更深,给的baseline更加符合项目的模块化要求,大家可以使用任意的网络结构和预训练模型进行训练和测试,通过该项目,我们不仅能够学会调参,还能够学会如何写出模块化的代码。
打开终端,运行
git clone https://github.com/L1aoXingyu/kaggle-plant-seeding.git
进行项目的下载或者通过网页版下载,接着进入到项目所在的目录,运行
pip3 install -r requirements.txt
进行依赖的安装。
通过比赛界面根据图片中的显示进行数据下载
然后在项目的根目录中创建data
文件夹,将下载好train.zip
和test.zip
文件放入data
中,接着运行下面的命令来得到预处理之后的数据
cd data;
unzip -q train.zip; cp -r train train_valid;
unzip -q test.zip
cd ..; python3 preprocess.py
运行下面的代码
python3 train.py
就可以进行baseline训练, 这次提供的baseline是模块化的代码,所有的配置文件都在core/config.py
中,大家可以自己去查看,同时因为数据和模型比较大,这次代码只支持GPU训练,在训练过程中,会自动创建checkpoints
文件夹,训练的模型会自动保存在checkpoints
中。
训练完成 baseline 之后,我们的模型会保存在 checkpoints
中,我们可以 load 我们想要的模型,进行结果的提交,运行下面的代码
python3 submission.py --model_path='checkpoints/model_best.pth.tar'
我们会在本地创建一个预测的结果 submission.csv
,我们将这个文件提交到 kaggle,可以得到类似下面的比赛结果。
希望大家能够尝试着自己调一调参,试一下模型融合的方式,得到更好的结果。