加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

ENVI_Deep_Learning工具教程

(2019-05-20 18:14:50)
标签:

envi

envinet5

u-net

深度学习

教程


该教程使用ENVI552软件内置的示例数据,使用ENVI深度学习来识别海港的高分辨率正射影像中的集装箱。包含以下内容:

1)系统要求

ENVI深度学习需要ENVI 5.5 Service Pack 2的安装和许可。下表列出了当前版本的ENVI Deep Learning支持的平台:

平台

硬件

操作系统

版本

Windows

Intel/AMD 64-bit

Windows

10, 2016 Server

Linux

Intel/AMD 64-bit

Linux

Kernel 3.10 或更高, glibc 2.17或更高

ENVI Deep Learning使用TensorFlow™,最低硬件和软件要求:

支持CUDA Compute Capability 3.5或更高版本的NVIDIA显卡。 有关支持CUDAGPU卡列表,参阅https://developer.nvidia.com/cuda-gpus

NVIDIA GPU驱动程序:CUDA 9.0 384.x或更高版本。驱动地址:https://www.nvidia.com/Download/index.aspx?lang=en-us

 

ENVI_Deep_Learning工具教程
驱动检索

 

ENVI_Deep_Learning工具教程
驱动支持列表(包含Quadro M2200

本教程测试的硬件参数:

电脑型号

戴尔Precision 7520笔记本

处理器

Intel(R) Xeon(R) CPU E3-1505M v6 @ 3.00GHz

内存容量

16.0GB

显卡

1NVIDIA Quadro M2200

2Intel(R) HD Graphics P630

硬盘

1THNSN5256GPUK NVMe TOSHIBA 256GB (256GB)

2ST2000LM007-1R8174 (2.0TB)

主板

0DFG9Y (A00)

网卡

1Intel(R) Dual Band Wireless-AC 8265

2Intel(R) Ethernet Connection (5) I219-LM

声卡

1、英特尔(R) 显示器音频

2Realtek High Definition Audio

显示器

LGD:9b04  分辨率:1920x1080

当前操作系统

Windows 10 64

2)教程中使用的文件

安装ENVIdata\deep_learning目录中提供了本教程的示例数据文件:

WindowsC\ Program Files \ Harris \ ENVIxx \ data \ deep_learning

Linux/ usr / local / harris / envixx / data / deep_learning

 

数据情况说明:

数据

描述

OaklandPortOrthophoto1.dat

高分辨率正射影像(HRO)子集,4个波段,0.3米空间分辨率,于2015220日获得,ENVI格式。注:图像由美国地质调查局提供。

OaklandPortOrthophoto2.dat

ShippingContainerROIs.xml

基于点的ROI用于创建标签图像

3)背景

遥感深度学习的一个常见用途是特征提取。即,识别图像中的特定特征,例如车辆、道路中心线或公用设施。通过标记标签的过程,可以在一个或多个图像中标记要素的位置。通过训练,可以将标记数据传递给深度学习模型,以便了解该特征的外观。最后,训练的模型可用于在相同图像或具有类似属性的其他图像中检测更多相同特征。

 

查看数据情况:

打开OaklandPortOrthophoto1.dat数据,这是20152月在美国加利福尼亚州奥克兰海港的一个小区域的高分辨率(0.3米)正射影像。

ENVI_Deep_Learning工具教程     ENVI_Deep_Learning工具教程

   OaklandPortOrthophoto1                   OaklandPortOrthophoto2

此正射影像包含四个波段 除了红、绿、蓝色波段之外,还包含近红外波段。

4)构建标签栅格

训练模型需要一个或多个包含标记像素数据的图像,即标签栅格。标记的像素数据可以来自感兴趣的区域(ROI)或现有的分类图。可以使用ENVIROI工具在感兴趣的特征上绘制点、线或多边形。也可以加载标记的基于点的ROIROI标识图像中的集装箱。正射影像和ROI将用于创建标签栅格。

创建标签栅格的步骤如下:

1)、在图层管理器中右键单击OaklandPortOrthophoto1.dat,然后选择New Interest of Interest。打开感兴趣区域(ROI)工具。

2)从ROI工具菜单栏中,选择“File”>“Open”

选择ShippingContainerROIs.xml并单击打开“Shipping Containers”ROI图层将添加到图层管理器中,并右键删除ROI1

ENVI_Deep_Learning工具教程  ENVI_Deep_Learning工具教程

3)放大显示可以看到集装箱顶部的红色ROI点。ROI工具中的计数字段显示有505个点记录。

ENVI_Deep_Learning工具教程ENVI_Deep_Learning工具教程

4)在ENVI工具箱中,选择Deep Learning > Deep Learning Guide Map。该工具可根据指导完成ENVI深度学习中的各个步骤。在Deep Learning Guide Map中,单击“Train a New Model”,然后单击“Build Label Raster from ROI”

ENVI_Deep_Learning工具教程  ENVI_Deep_Learning工具教程  

ROI对话框的Build Label Raster中,Input Raster字段将自动填充OaklandPortOrthophoto1.dat,不需要在这里改变任何参数。单击“Input ROI”旁边的浏览按钮,在“ROI Selection”对话框中选择Shipping Containers并单击OK。单击“Output Raster”旁边的“浏览”按钮,导航要保存本教程输出文件的文件夹,并将输出文件命名为LabelRasterContainers.dat

ENVI_Deep_Learning工具教程

 

5)在Build Label Raster对话框中单击OK。处理完成后,将显示标签栅格。标签栅格包含原始图像波段以及由二进制掩码组成的附加波段。掩码带根据提供的ROI实例指示输入栅格中的哪些像素对应于集装箱。

注:ENVI在蓝色背景下显示红色的蒙版像素,正射影像的band1显示在绿色和蓝色通道中。

ENVI_Deep_Learning工具教程ENVI_Deep_Learning工具教程

 标签栅格                               内容列表

标签栅格提供了深度学习模型所需的实例,以学习集装箱的外观。

5)训练深度学习模式

训练涉及重复将标签栅格传递给模型。随着时间的推移,模型将学习标签栅格中的光谱和空间信息转换为类激活栅格,突出训练期间显示的特征。

1)在“Deep Learning Guide Map”地图中,单击“Train Model”。将出现“Train TensorFlow Mask Model”对话框。训练过程的第一步是建立或初始化新的深度学习模型,ENVI使用TensorFlow™技术进行深度学习,初始化定义TensorFlow模型结构。

ENVI_Deep_Learning工具教程

 

2)在Train TensorFlow Mask Model对话框中,单击位于Input Model标签正下方的New Model。在Initialize ENVINet5 TensorFlow Model对话框中,在Number of Bands字段中输入值4,正在初始化将在4波段正射影像上训练模型。选择接受“Model Name”,“Patch Size”和“Output Model”的默认参数,单击确定。

ENVI_Deep_Learning工具教程

 

3LabelRasterContainers.dat文件出现在Training Rasters字段中,无需在此处选择任何内容。

验证栅格是单独的标签栅格,可用于评估TensorFlow模型的准确性,通常与用于训练的标签栅格分开。虽然使用不同的标签栅格进行训练和验证,分类准确性通常会更好,但仍然可以使用相同的栅格。单击“Validation Rasters”旁边的添加文件按钮,选择LabelRasterContainers.dat并单击打开

ENVI_Deep_Learning工具教程

 

4)接下来的8个参数(通过损失权重的Epoch数)是希望控制更多训练参数的高级设置。设置以下值:

·Number of Epochs: 25

··Number of Patches per Epoch: 300

·Number of Patches per Batch: 留空,ENVI将自动确定最佳值。

·Patch Sampling Rate: 16

·Solid Distance: 4.0

·Blur Distance: Min 0, Max 20

·Class Weight: Min 1, Max 3

·Loss Weight: 2.5

单击“Output Model.”旁边的“浏览”按钮,选择输出文件夹并将模型文件命名为TrainedModelContainers.h5,然后单击保存

ENVI_Deep_Learning工具教程

 

最后,在Train TensorFlow Mask Model对话框中单击OK

5)由于涉及的计算量较大,训练模型需要花费大量时间。根据系统和图形硬件,处理可能需要几分钟到几个小时。“Training Model”对话框显示培训进度以及更新的验证损失值。

ENVI_Deep_Learning工具教程

 

报错:

ENVI_Deep_Learning工具教程

 

解决方案:修改··Number of Patches per Epoch: 200,再次训练。

ENVI_Deep_Learning工具教程

...

ENVI_Deep_Learning工具教程

...

ENVI_Deep_Learning工具教程

...

ENVI_Deep_Learning工具教程

...

ENVI_Deep_Learning工具教程

 

资源占用情况:

ENVI_Deep_Learning工具教程

 

处理完成后,训练好的模型就可以用于分类。

6)执行分类

现在已经有一个经过训练的模型,将使用相同的模型在海港的另一个正射影像中找到集装箱。这是ENVI深度学习的好处之一,可以训练一次模型并将其多次应用到空间和光谱相似的其他图像上。

1)在“Deep Learning Guide Map”中单击“Classify Raster Using a Trained Model”。在出现的TensorFlow Mask分类对话框中,单击“Input Raster”旁边的“浏览”按钮,选择“Data Selection”对话框中的“Open File”按钮,导航到包含教程数据的目录选择OaklandPortOrthophoto2.dat,并单击数据选择对话框中的确定按钮。

  ENVI_Deep_Learning工具教程

2)输入模型字段已填充文件TrainedModelContainers.h5,不需要在这里改变任何参数。

单击“Output Raster”旁边的“浏览”按钮,选择一个输出文件夹并将输出文件命名为ClassActivationContainers.dat保存。选中“Display result”复选框,使得处理结果自动添加到视图中。

ENVI_Deep_Learning工具教程

 

分类栅格对话框显示分类的进度:

ENVI_Deep_Learning工具教程

 

3)处理完成后,右键单击图层管理器中的ClassActivationContainers.dat,然后选择“Zoom to Layer Extent”。分类结果称为类激活栅格,是灰度图像,其像素粗略地表示属于感兴趣特征的概率。在这种情况下,亮像素表示与标记为集装箱的特征的高度匹配。如下图:

ENVI_Deep_Learning工具教程

 

不同训练结果可能与此处显示的略有不同,训练深度学习模型涉及一定程度随机性的随机过程。因此,永远不会从多次训练中获得完全相同的结果。

如果获得完全黑色的类激活栅格,则模型可能无法准确地再现训练数据。或者,训练确实可以收敛,但却是错误的解决方案。如果发生这种情况,需要重新运行训练步骤以查看否能产生有效结果。同时尝试增加Class WeightBlur DistanceMax值。

单独查看灰度图像难以相对于场景中的其他对象识别集装箱。需要更有意义的可视化方式显示结果:

管理图层

1)在图层管理器中,右键单击以下图层,然后选择删除:

·LabelRasterContainers.dat

·OaklandPortOrthophoto1.dat 

2)打开ENVI工具栏中的“Data Manager”按钮,右键单击OaklandPortOrthophoto2.dat并选择Load Default显示真彩色正射影像。

ENVI_Deep_Learning工具教程

 

3)在图层管理器中,单击并拖动调整图层顺序,使得ClassActivationContainers.dat图层在OaklandPortOrthophoto2.dat的上方。

ENVI_Deep_Learning工具教程ENVI_Deep_Learning工具教程

 

注意:类激活栅格覆盖的区域比正射影像小。 因为在分类过程中,ENVI在类激活栅格周围创建一个93像素的透明边框。

色彩分割类激活栅格

为了更好地可视化类激活栅格,可以对其应用栅格色彩分割。色彩分割将图像的像素值划分为不同颜色的离散范围。

1)在图层管理器中,右键ClassActivationContainers.dat并选择New Raster Color Slice

选择ClassActivationContainers.dat数据的Band 1,单击OK。出现编辑栅格颜色切片对话框。像素值被分成相等的增量,每个增量具有不同的颜色。在“Edit Raster Color Slices”对话框中单击“确定”以接受默认的类别和颜色。

ENVI_Deep_Learning工具教程ENVI_Deep_Learning工具教程

 

2)在图层管理器中,取消选中ClassActivationContainers.dat以隐藏图层。在图层管理器的“Raster Color Slice”图层中,取消选中紫色切片范围(00.155618)的背景。根据提供的训练数据,其余颜色(蓝色到红色)可匹配集装箱的概率。如下图:

ENVI_Deep_Learning工具教程

 

通过基于深度学习的特征提取较好结果,并不总是一个快速而简单的过程。它通常涉及多次迭代以产生最准确的结果。优化深度学习模型的一种方法是在类激活栅格中创建最高像素值的ROI,然后使用ROI构建新的标签栅格,再使用新标签栅格优化训练模型。这完全是可选步骤,但它可以帮助改善分类结果。

7)将类激活值转换为ROI

1)在“Deep Learning Guide Map”中,单击“Refine a Trained Model”,然后单击“Class Activation to Pixel ROI”

ENVI_Deep_Learning工具教程           ENVI_Deep_Learning工具教程

2)单击“Input Raster”旁边的“浏览”按钮,在“Data Selection”对话框中选择ClassActivationContainers.dat,然后单击确定

“阈值”滑块是选择类激活栅格中的最小数据值以保留输出ROI。需要注意,像素值的范围是0~1.0,表示与集装箱匹配的概率。将阈值更改为0.60。,将输出ROI保留最高40%的类激活像素。

接受自动阈值方法的默认值Otsu,仅在阈值设置为0时应用。

在“输出ROI”字段中,接受ClassActivationToPixelROI.xml的默认输出文件名。

ENVI_Deep_Learning工具教程

 

3)处理完成后,取消选中“Layer Manager”中的“Raster Color Slice”以隐藏该图层。

ENVI主菜单栏中,选择“File”>“Open”,打开刚刚创建的ROI文件(.xml)。将出现“Select Base ROI Visualization Layer”对话框,选择OaklandPortOrthophoto2.dat并确定,像素ROI显示在正射影像上。  ENVI_Deep_Learning工具教程ENVI_Deep_Learning工具教程

以上步骤演示了如何将阈值应用于类激活栅格,以及如何将最高像素值转换为基于像素的ROI。如果ROI在识别感兴趣的功能方面做得很有效,可以使用它们来创建新的标签栅格并优化TensorFlow模型。


 转载请注明博文地址: http://blog.sina.com.cn/gser2017 

 博主邮箱:zhangguoshunshzu@sina.com

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有