1 基本信息
Alibaba Cloud German AI Challenge 2018是天池举办的卫星遥感数据分类比赛,网址为https://tianchi.aliyun.com/competition/entrance/231683/introduction?spm=5176.12281957.0.0.38b04c2aARBU3H。比赛的基本信息为参赛者将利用欧洲地球观测卫星Sentinel-1和Sentinel-2的数百万张匹配影像资料,尝试解决都市化带来的挑战。数据集将包括雷达和多光谱传感器数据,覆盖42个城市。竞赛的目标是将数据分类为17个所谓的当地气候区,这将有助于为城市规划者找到解决方案。例如,这些数据可能被用于量化城市热岛的大小或绘制城市地形。对应需要分类的17个类别如下图所示。
初赛和复赛都是解决同一个问题,使用相同的训练集和验证集,其中训练集一共352366组数据,验证集一共24119组数据。只是测试集不同。每组数据包含Sen1和Sen2两份,其中Sen1为合成孔径雷达(SAR),一共给了8个维度;Sen2为高光谱,一共给了10个维度,每个维度大小都为32*32。每个维度的详细说明见下图。一共17个类别。
2 个人成绩及代码
初赛取得了0.809的准确率,名次为136/1329,前两百名晋级复赛。复赛取得了0.817的准确率,名次为67/200。相关代码我已经上传至github:https://github.com/wtrnash/Alibaba-Cloud-German-AI-Challenge-2018。
3 初赛经历
由于数据是HDF5数据,和以往之前的图像数据不同,所以首先使用了官网提供的demo,运行并提交,来了解整个比赛流程,包括数据预处理、划分数据集以及训练后如何输出结果等。官网的demo是把所有像素点当做特征直接svm进行多分类,验证集准确率0.32,线上成绩0.274。可以看出用传统机器学习方法来处理图像分类问题效果是不好的。
3.1 类vgg网络
然后不做任何预处理,使用类似vgg的网络结构(13个卷积层,3个全连接层,考虑到图像大小只有32*32,比原本vgg是使用的224*224小得多,所以池化层减少为只有三层,在github代码中为model.py文件,),每张图像的输入都为32*32*18,即将sen1和sen2的通道进行了叠加,batch size为100,使用adam进行优化。损失函数就是交叉熵。训练从第3个epochs开始到第10个,验证集准确率基本不变。最后选取第6个epochs的ÿ