ENVI深度学习工具&ENVI精准农业工具强强联合提取椰树

本文利用ENVI深度学习工具和ENVI精准农业工具从8.59cm分辨率航空影像上提取椰子树信息。ENVI深度学习工具获取椰树的CAM类激活图,CAM图像为灰度图(0~1范围),其DN值代表该像素属于目标的概率。为了得到椰子树的林冠半径,利用ENVI精准农业工具包的作物计数工具从CAM图像上提取椰树信息,包括空间分布和林冠半径。深度学习一个重要的工作就是调整参数,ENVI深度学习工具提供一个随机参数训练工具,可以帮助您自动获取一套比较优化的参数。

  注:文章最后有秘籍和数据成果分享。

  ENVI软件试用:https://www.cnblogs.com/enviidl/p/16275745.html

提取目标

得到椰树圆形轮廓矢量,并做健康评估。

数据情况

原始数据为tiff格式,转为了ENVI格式使用,但其实直接使用tiff没有区别。不过本例中使用的tiff数据应该做了压缩,在ENVI中加载显示ROI时有可能异常退出,此时使用ENVI格式比较稳定。

ENVI格式的数据量为1.24GB。

软硬件环境

软件:

  • ENVI 5.5.3

  • ENVI Deep Learning 1.1 Tech Preveiw(本文操作也适合于V1.0版本)

  • ENVI Crop Science 1.1.1

硬件(ThinkPad P52 ):

  • CPU:Intel(R) Core(TM) i7-8850H CPU @ 2.60GHz 六核

  • 显卡:NVIDIA Quadro P3200 with Max-Q Design 显存6GB

  • 内存:64GB

  • 硬盘:SSD

技术路线

由于椰树与背景无法用简单方法区分,所以不能直接使用ENVI Crop Science提取。便利用ENVI Deep Learning提取类激活图(CAM),在此基础上利用ENVI Crop Science提取椰树矢量,最后进行健康评估,但是健康评估其实并没有实际应用价值,下文会做说明。

完整技术路线如下图所示:

图:技术路线图

样本绘制并创建Label Raster

针对椰树这种类似圆形的目标,这里介绍两种适用的样本绘制方法。

5.1 圆形样本
5.1.1 圆形样本绘制方法

使用ROI工具可以方便的绘制圆形样本。如下图所示,选择圆形样式,按住Ctrl键,鼠标左键点击椰树中心点,拉框绘制圆形,点击鼠标右键,选择菜单Accept Ellipse即可。

最终绘制296个样本,如下图所示。当然也可以在图像中多个区域绘制样本,然后创建多个Label Raster,同时用于模型训练。

图:绘制的圆形ROI样本

5.1.2 创建Label Raster

使用Build Label Raster from ROI工具创建。在选择Input Raster时,使用绘制的ROI对全图进行矩形裁剪,如下图所示。

图:创建Label Raster工具

图:创建的Label Raster图像,好美

5.2 点状样本
5.2.1 点状样本绘制方法

其实也可以直接使用ROI工具绘制点状样本,但是由于点太小(1个像素),不易区分已绘制和未绘制的区域,所以本例选择Feature Counting工具进行绘制。

点击工具栏图标即可打开Feature Counting工具面板,然后使用鼠标左键单击就可以绘制样本了,并且清楚的标识出了信息(如编号、名称、位置等)。如下图所示。然后将绘制的样本保存为efc文件。共绘制了163个样本。

图:利用Feature Counting工具绘制点状样本

5.2.2 创建Label Raster

首先需要将Feature Counting工具绘制的结果(*.efc)转换为ROI。工具位于/Deep Learning/Deep Learning Guide Map如下图所示菜单。然后使用Build Label Raster from ROI创建Label Raster即可。

图:Feature Counting结果转换为ROI

深度学习模型训练

深度学习模型训练可以使用Deep Learning Guide Map中的Train Model,或直接使用工具箱的/Deep Learning/Train TensorFlow Mask Model工具。训练参数设置如下图所示。

注1:ENVI Deep Learning 1.1技术预览版中/Deep Learning/Train TensorFlow Mask Model工具已经默认支持多类目标提取,如果想打开单目标模型训练面板,请使用Deep Learning Guide Map。

注2:对参数说明感兴趣的可以参考“ENVIDeepLearningV1.0深度学习操作教程”。

图:圆形样本模型训练参数

图:点状样本模型训练参数

获取CAM图像

利用ENVI深度学习工具/Deep Learning/TensorFlow Mask Classification获取CAM类激活图,CAM图像为灰度图(0~1范围),其DN值代表该像素属于目标的概率。可通过Raster Color Slice目视判断阈值用于提取目标。

注:ENVI Deep Learning 1.1技术预览版已支持自动获取分类图,如下图所示。本例为了通用性,依然使用CAM图像进行后续操作。

图:TensorFlow Mask Classification工具面板

说明:其实可以直接使用CAM图像获取分类图像和矢量结果,所用工具为/Deep Learning/TensorFlow Mask Classification(Class Activation to Polygon Shapefile),但是结果不是规整的圆形,也不能提取椰树的林冠半径,所以借助ENVI Crop Science工具提取椰树。

附上直接提取的效果图,可以对比下利用圆形和点状样本获取的椰树有什么区别。圆形更好的获取了椰树的真实轮廓。如果不关心轮廓,只关心位置,建议使用点状样本,因为绘制起来更快捷。

图:左图基于圆形样本,右图基于点状样本

下文将基于圆形样本结果进行椰树提取。

椰树提取

利用Raster Color Slice获取阈值,如下图所示,取阈值0.92。这一步其实已经获取了椰树的分布信息。

本步骤将使用ENVI Crop Science中的工具/Crop Science/Count Crops提取椰树。参数设置如下图所示。最小直径和最大直径通过量测工具获取,单位为米,这里设置为5米和8米。为了提高精度,设置间隔数为100,该参数导致消耗了大量时间。并且该工具对内存和CPU要求极高。

图:椰树提取参数设置

注:为了选取最优参数,建议使用预览功能。首先将原图和CAM图(可隐藏此图层)1:1显示在当前视图中,设置参数后,点击左下角Preveiw预览提取效果。强调一下,必须使用1:1显示,预览结果才是真正的效果。

Count Crops工具得到的是json和栅格结果。然后通过工具/Crop Science/Convert Crops To Shapefile将json转换为矢量,如下图所示。

图:转换结果为矢量

注:由于未知原因,导致图像中右侧河流中提取到了一些椰树,手动编辑矢量将其删除。利用点状样本提取的结果没有出现此种情况。

最终提取结果:

局部细节欣赏:

生成的矢量数据带有坐标和半径属性,如下图所示。共提取到10457株椰树

健康评估

首先为原始图像添加波长信息,此步骤是为了使用ENVI自带工具计算GLI植被指数(Green Leaf Index)。有了波长信息后,可直接使用/Crop Science/Calculate Crop Metrics with Spectral Index一步完成健康评估。

如果不添加波长,则需要Band Math工具计算GLI,然后使用/Crop Science/Calculate Crop Metrics工具进行健康评估。GLI公式如下所示:

 

Calculate Crop Metrics with Spectral Index工具界面参数设置如下图所示。自动根据波长信息筛选了可计算的植被指数,这里选择GLI。

 

图:健康评估

局部结果如下图所示。颜色越绿表示越健康,越红表示越不健康。

但是本着严谨的态度,还是要强调一点:我们其实统计的是圆形内的GLI指数均值,然而椰树并没有完全覆盖圆形区域,所以统计的是椰树及其背景像素的均值,并没有实际意义。大家可以看到上图结果中背景是裸地的椰树普遍健康度较低。此外还有阴影的影响。

10 时间统计

利用ENVI Crop Science提取椰树矢量耗时较长,主要是因为设置了间隔数为100,提高了提取精度,减少漏提情况。

步骤

耗时

因素

圆形样本绘制

30分钟

手速

深度学习模型训练

38分钟

GPU,显存

椰树CAM图像提取

10分钟

GPU,显存

椰树矢量提取

3.5小时

CPU,内存

11 秘籍分享

较有难度的就是深度学习模型训练参数的调优。这里分享一下经验。当你使用默认参数没有得到很好结果的时候,当你尝试调整参数后依然无效的时候,当你接近崩溃边缘、即将放弃的时候,一定要想到ENVI Deep Learning提供的一个神器,那就是随机参数训练。如果你的硬盘空间、时间够多,可以一键尝试N种参数搭配,你需要的只是等待等待等待。最后从N个结果中挑选最优即可。

工具启动是在/Deep Learning/Deep Learning Guide Map面板中如下菜单:

 

其实是内置的一个ENVI Modeler模型。本文参数的设置就是使用这种方法,简单粗暴,甚是有效。

12 样本数据和矢量成果分享

链接:https://pan.baidu.com/s/1goEsYUUscCTWaB8a4GrIrQ 

提取码:e64y

posted @ 2022-05-25 16:36  ENVI-IDL技术殿堂  阅读(3706)  评论(1编辑  收藏  举报