一、前言
此示例演示如何使用 U-Net 对具有七个通道的多光谱图像执行语义分割。
语义分割涉及用类标记图像中的每个像素。语义分割的一个应用是跟踪森林砍伐,即森林覆盖率随时间的变化。环境机构跟踪森林砍伐,以评估和量化一个地区的环境和生态健康状况。
基于深度学习的语义分割可以从高分辨率航空照片中精确测量植被覆盖。一个挑战是区分具有相似视觉特征的类,例如尝试将绿色像素分类为草、灌木或树木。为了提高分类精度,某些数据集包含多光谱图像,这些图像提供有关每个像素的其他信息。例如,哈姆林海滩州立公园数据集通过三个近红外通道补充彩色图像,从而更清楚地区分类别。
此示例首先演示如何使用预训练的 U-Net 执行语义分割,然后使用分割结果计算植被覆盖的范围。然后,您可以选择使用基于补丁的训练方法在哈姆林海滩州立帕克数据集上训练 U-Net 网络。
二、下载数据集
此示例使用高分辨率多光谱数据集来训练网络 [1]。该图像集是在纽约哈姆林海滩州立公园上空使用无人机拍摄的。数据包含标记的训练集、验证集和测试集,以及 18 个对象类标签。数据文件的大小为 3.0 GB。
使用帮助程序函数下载数据集的 MAT 文件版本。此函数作为支持文件附加到示例。指定为所需的数据位置。
加载数据集。多光谱影像数据按高度排列为按宽度排列的通道数数组。但是,在 MATLAB® 中,多通道图像被排列为按高度按数字排列的数组。确认数据具有正确的结构。将训练数据另存为 MAT 文件,将训练标签另存为 PNG 文件。这有助于在训练期间使用 和 a 加载训练数据。
三、可视化多光谱数据
在此数据集中,RGB 颜色通道是第 3、第 2 和第 1 个图像通道。将训练、验证和测试图像的颜色分量显示为蒙太奇。
将训练数据的最后三个直方图均衡通道显示为蒙太奇。这些通道对应于近红外波段,并根据其热特征突出显示图像的不同组成部分。例如,靠近第二个通道图像中心的树木比其他两个通道中的树木显示更多细节。
通道 7 是指示有效分段区域的掩码。显示训练、验证和测试图像的掩码。
四、可视化真实面标签
标记的图像包含分割的地面实况数据,每个像素分配给 18 个类中的一个。获取类及其相应 ID 的列表。创建类名向量。在直方图均衡的 RGB 训练图像上叠加标签。向图像添加颜色条。
五、执行语义分割
下载预训练的 U-Net 网络。若要在经过训练的网络上执行语义分段,请将帮助程序函数与验证数据一起使用。此函数作为支持文件附加到示例。该函数使用 semanticseg
函数对图像补丁执行分割。需要处理修补程序,因为映像的大小会阻止一次处理整个映像。
要仅提取分割的有效部分,请将分割后的图像乘以验证数据的掩码通道。
语义分割的输出是嘈杂的。执行图像后期处理以消除噪点和杂散像素。使用 medfilt2
函数从分割中去除盐和胡椒噪声。在去除噪声的情况下可视化分割图像。
将分割图像叠加在直方图均衡的 RGB 验证图像上。
六、计算植被覆盖范围
语义分割结果可用于回答相关的生态问题。例如,植被覆盖的土地面积占多大比例?要回答此问题,请查找标记为植被的像素数。标签 ID 2(“树”)、13(“低水平植被”)和 14(“Grass_Lawn”)是植被类。此外,通过将蒙版图像 ROI 中的像素相加来查找有效像素的总数。
通过将植被像素数除以有效像素数来计算植被覆盖百分比。
七、程序
使用Matlab R2022b版本,点击打开。(版本过低,运行该程序可能会报错)
程序下载:基于matlab深度学习的多光谱图像语义分割资源-CSDN文库