420. Cassava Leaf Disease Classification | cassava-leaf-disease-classification
我参赛比较晚,尝试了一些想法,但没能构建出一个好的模型,不过我学到了很多东西。随着比赛接近尾声,我想着为了有一个提交结果,不如提交一个简单的微调模型。
我查找了木薯(cassava)的预训练模型,发现了 https://tfhub.dev/google/cropnet/classifier/cassava_disease_V1/2。
为了在 TPU 上设置模型,我参考了 tensorflow 的 tpu 设置指南。
我的图像预处理很简单,只是快速的调整大小和重新缩放。数据管道中的大部分函数用于处理 TFRecords。我还将训练标签从 5 个扩展到了 6 个,以匹配木薯模型的输出,其中包括一个“背景”标签。
在训练期间,我使用了“EarlyStopping”和“ReduceLROnPlateau”。
回调函数会在大约 30 个 epoch 后切断训练。
我将模型权重保存到了一个数据集中,因为我们不允许在 TPU 上进行推理。我还将 tfhub 层的缓存版本保存到了一个数据集中,因为在推理期间我们无法使用互联网。
在推理之前,我加载了之前缓存的模型版本和保存的权重。预处理管道与训练相同,主要处理 TFRecords。数据通过模型后,我保存了结果。
总的来说,我很惊讶我获得了第二名。我的方法基本上是按部就班的基础操作。这一点从我的模型在公共排行榜上以 0.9025 的分数排名第 660 位就可以看出来,正好位于一群其他人中间。我推测他们做了和我一样的事情。真是意想不到 :)