本文主要是介绍独家 | kaggle季军新手笔记:利用fast.ai对油棕人工林图像进行快速分类(附代码)...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
作者:Mercy Markus
翻译:陈之炎
校对:丁楠雅
本文约3700字,建议阅读10+分钟。
一支深度学习的新手队如何在kaggle竞赛中获得第三名?
图:亚历山大·纳格斯塔德 (AlexanderNaglestad)
WiDS数据马拉松由女性数据科学工作者与她们的伙伴联合发起,她们面临的挑战是需要建立一个模型,来预测一批卫星图像中存在油棕人工林种植园的情况。
数据集是称为“行星”的人造卫星新近拍摄的经加注后的卫星图像数据集,该图像数据集具有3米的空间分辨率,每幅图像都是基于图像中是否存在油棕种植园进行标记的(0表示没有油棕种植园,1表示有油棕种植园)。任务是需要训练一个模型,该模型以卫星图像为输入,并输出对油棕种植园的图像预测的概率。竞赛创建者为模型开发提供了经过标记后的训练和测试数据集。
详情见这里:https://www.kaggle.com/c/widsdatathon2019
我的队友(Abundshakur,Halimah,和IfeomaOkoh)和我采用了fast.ai框架来应对这一挑战。感谢托马斯·卡贝尔(ThomasCapelle)提供了Kaggle上的入门内核,它给出了如何处理这个问题的深刻见解,同时也为fast.ai团队创造了一门神奇的深度学习课程,从而简化了许多复杂的深度学习的概念。现在,深度学习的初学者也可以赢得kaggle比赛了。
我们从一个简单易学的关于深度学习的教程开始吧
目前,无需为理解所有的东西而担心,文中会伴随着大量的练习。本教程旨在展示fast.ai对于深度学习的初学者来说的神奇之处,前提是假设读者会python语言,并且接触过一些ML(机器学习)。如果你已经具备上述技能,那我们就可以走上正轨了。
文中的所有代码都可以在Google Colaboratory(https://colab.research.google.com/notebooks/welcome.ipynb)上获得,这是一个免费的Jupyter笔记本环境,无需安装,运行在云上。可以采用协作的方式编写和执行代码,存盘和共享分析结果,访问功能强大的计算资源,所有这些都是免费的。点击这里可以访问到我们将要使用到的代码。
导入fast.ai和将要用到的其他库
# This ensures that any edits to libraries you make are reloaded here automatically,
# and also that any charts or images displayed are shown in this notebook.
%reload_ext autoreload
%autoreload 2
%matplotlib inline导入库
# Import libraries
from fastai import *
from fastai.vision import *
from fastai.callbacks import CSVLogger, SaveModelCallback
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
获取竞赛数据
为了尽可能地直观,Abdishakur将竞赛数据文件上传到dropbox.com,可以在这个竞赛页面上找到竞赛数据文件,而且只有接受竞争规则之后才能访问到这些数据文件。
# Get the data from dropbox link
!wget https://www.dropbox.com/s/6kltw0kqynlijxv/widsdatathon2019.zip # The downloaded competition data is zipped, let us unzip it
!unzip widsdatathon2019.zip
# The training and testing data have already been seperated, Unzip them as well
!unzip train_images.zip
!unzip leaderboard_holdout_data.zip
!unzip leaderboard_test_data.zip
查看数据
在处理这个问题之前,首先要做的是查看可用的数据。在知道如何解决问题之前,我们首先需要了解问题和数据是什么样子。查看数据意味着了解数据目录的结构,标签是什么,以及一些示例图像是什么。
# Overview of the labels of the training data;
df = pd.read_csv('data/traininglabels.csv')
df.head()
使用pandas库读取数据
训练模型过程中使用到的数据标签
处理图像分类数据集和表格数据集的主要区别在于标签的存储方式,这里的标签指的是图像中的内容。在这个特定的数据集中,标签存储在CSV文件中。
要了解如何计算分数列的详细信息,请访问此链接:https://success.figure-eight.com/hc/en-us/articles/201855939-How-to-Calculate-a-Confidence-Score
利用countplot函数来查看培训数据的分布情况,从图中可以看到:大约有14,300幅图片没有油棕榈种植园,而只有942幅图片有油棕榈种植园,这可以称为非均衡数据集,关于非均衡数据集这个深度学习问题,我们不打算在此讨论;目前,可以从这里开始起步:
sns.countplot(df.has_oilpalm)
对两类进行计数
这篇关于独家 | kaggle季军新手笔记:利用fast.ai对油棕人工林图像进行快速分类(附代码)...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!