社会焦点

Kaggle冠军告诉你,如何从卫星图像分割及识别比赛中胜出?

字号+ 作者: 来源: 2017-05-01

Kaggle冠军告诉你,如何从卫星图像分割及识别比赛中胜出?,能够图像识别的app有哪些,人工智能图像识别,区域生长法分割灰度图像,图像文字提取及分割,人民币识别 图像处理

  王小新 编译自 Kaggle

  量子位 出品 | 公众号 QbitAI

  在2016年12月至2017年3月期间,Kaggle网站举办了一场对英国国防科学与技术实验室(DSTL)提供的卫星图像进行场景特征检测的图像分割比赛。

  主办方所提供的训练集里包含了25个1平方公里大小地区的高分辨率卫星图像,具体任务是通过算法进行识别10个不同类型的对象,分别是:

  1. 房屋和楼房;

  2. 混杂的人工建筑;

  3. 道路;

  4. 铁路;

  5. 树木;

  6. 农作物;

  7. 河流;

  8. 积水区;

  9. 大型车辆;

  10. 小轿车。

  Kaggle冠军告诉你,如何从卫星图像分割及识别比赛中胜出?

△ Kyle的Kaggle主页

  比赛结束后,冠军Kyle Lee接受了Kaggle网站的采访,详细地介绍了他在这次比赛中的获胜之道。其中,耐心和坚持是关键因素,他花费了大量的时间,为不同的类别开发了独特的处理技术、采样策略和U-NET结构。

  以下内容节选自Kaggle对Kyle的采访:

  你的整体策略是什么?

  总而言之,我的解决方案主要有以下几点:

  1.将多尺度图像块与滑动窗口生成方法相结合,利用区域块重叠技术覆盖到整个图像的边缘。最初将尺度为256x256和288x288的图像块相结合,后来又加入了尺度为224x224和320x320的图像块;

  2.组合不同的频段(bands)和尺度(scales),来训练和融合网络模型,得到最优的U-NET网络;

  3.对小样本类别进行过采样。过采样在小样本图像上以较小的步长来滑动采样窗口,在大样本图像上以比默认值更大的步长来滑动采样窗口;

  4.作用于河流对象的指标法,组合无差别水分指数(Non-Differential Water Index)和顶端叶绿素含量指数(Canopy Chlorophyl Content Index)这两个指标来辨识河流;

  5.对道路、积水区、河流、小轿车与大型车辆这些对象进行后期处理。这种后期处理办法解决了积水区和河流之间的类别混乱,同时去除道路上的伪影,并在计算大型车辆得分时设置附加权值;

  6.大型车辆识别。在这里我用了一些技巧来训练用于预测道路和房屋的网络。我只使用RGB频段的图像数据,取平均值,并训练多个融合网络,对大型车辆进行分割。

  7.农作物。我先将图像的尺度降低为1024×1024,然后利用滑动窗口重叠采样,得到尺度为256x256的图像块。

  Kaggle冠军告诉你,如何从卫星图像分割及识别比赛中胜出?

  图1:辨识所有类别的完整网络示意图 你是如何进行特征提取和数据预处理?

  我使用不同大小的滑动窗口,对A频段和M频段的图像分开处理。另外,我还在一些融合模型中对小样本类别进行过采样操作。关于滑动窗口的详细参数如下:

  Kaggle冠军告诉你,如何从卫星图像分割及识别比赛中胜出?

  图2:各类过采样的详细参数

  同时对积水区和河流进行过采样是一个不错的方法。因为过采样能减少积水区的伪影,降低了积水区和河流的类别混乱。

  就网络所用的数据频段来说,我主要使用灰度图、RGB图像和多光谱M频段,也使用了短波红外A频段。对于A频段,我没有使用所有的通道,而是随机选择几种通道,以节省训练时间和内存占用。

  在上面也提到过,我仅对道路和建筑物周围的车辆进行滑动窗口采样,用于网络训练和预测,这有助于减少训练所需的图像数量,并允许对车辆图像块进行针对性的过采样。该方案也应用于测试集,你可以从流程图中看出一系列结果。

  最后,在预处理中,将训练集的图像减去平均值,并标准化偏差。也就是说,训练集、验证集和测试集的图像块都需要减去全局平均值,再除以训练集的标准偏差。

  你使用了哪种监督学习方法?

  U-NET网络经常用于“超声神经分割”(Ultrasonic Nerve Segmentation)比赛和其他的分割比赛中。在此次比赛中,我也大量使用了这种网络,因为这是目前扩展性最好的完全卷积网络(Fully Convolutional Network)。事实上,如果我没有猜错,大多数参赛者都使用了升级版U-NET网络。

  我对原始的网络结构进行了调整,在下游路径添加了BN层(batch-normalization),在后合并路径上添加了dropout层,所有激活层都使用的是指数线性单元(ELU)。通过交叉验证评分,对于不同的类别使用不同的网络深度和图像尺寸,如256 x 256,288 x 288等。

  在我的实验过程中,有一种网络结构在训练时间等方面都具备最优的性能。这种网络有着较大的图像尺寸(288x288)和较浅的U-NET网络深度(3组2 x conv层+ maxpool)。

  Kaggle冠军告诉你,如何从卫星图像分割及识别比赛中胜出?

  Kaggle冠军告诉你,如何从卫星图像分割及识别比赛中胜出?

  Kaggle冠军告诉你,如何从卫星图像分割及识别比赛中胜出?

  图3:不同类别的U-NET结构

  最终,我创建了40多种不同尺度、宽度和深度的网络模型,来训练数据子样本和选择最佳频段。

  Kaggle冠军告诉你,如何从卫星图像分割及识别比赛中胜出?

  图4:10类对象的全部网络模型表1

  Kaggle冠军告诉你,如何从卫星图像分割及识别比赛中胜出?

  图5:10类对象的全部网络模型表2

  在交叉验证方面,我根据不同类别,使用了10%到20%的随机图像块,大样本类别比例更高。对于过采样的小样本类别,只使用5%的随机图像块。这样,整体上减少了模型的运行时间。

  训练集的图像(包括图像和标签)通过旋转45度、缩放15-25%、剪切操作、切换频段(仅针对某些网络)和垂直+水平翻转等图像增强操作,增加泛化能力,网络的训练时间也随之增加。对验证集或测试集不进行上述操作。

  在优化策略方面,NAdam优化器效果不好,直接使用Adam作为优化器,用Jaccard Loss作为训练指标。我的学习率优化方法是,每经过30次迭代,学习率减小为原来的0.2倍。

  在处理网络输出上,大多数类直接使用标签算术平均,对于积水区和大型车辆类别采用相加方法,仅在使用NDWI指数和CCCI指数的河流上使用了交叉选取的方法。

  对于数据,最重要的洞察力是什么?

转载请注明出处。


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章