当前位置: 首页 > news >正文

使用深度学习预训练模型检测物体

        椰子是大洋洲汤加塔布岛的重要农产品。 种植园里有成千上万棵树,手动清点这些树需要大量的时间和资源。 深度学习是一种自动检测图像中物体的强大方法,但从头开始训练深度学习模型是一个耗时的过程。 作为替代方法,您可以使用已训练的模型。

        在本教程中,您将从 ArcGIS Living Atlas of the WorldBrowse | ArcGIS Living Atlas of the WorldThe Browse page provides comprehensive search and filtering tools to help find ready to use layers, maps, tools, apps and other items to begin your work.https://livingatlas.arcgis.com/en/browse/?q=pretrained%20model#q=pretrained+model&d=2        数据集中获取一个预训练模型,并将其应用到高分辨率图像中,以高效地检测 ArcGIS Pro 中遍布景观的棕榈树。 由此产生的要素图层将有助于估算整个地区的棕榈树数量、监测耕作方法或评估即将到来的生产水平。

要求
  • ArcGIS Pro
  • ArcGIS Image Analyst
  • ArcGIS Pro 的深度学习库(GitHub - Esri/deep-learning-frameworks: Installation support for Deep Learning Frameworks for the ArcGIS System)
  • 推荐:至少具有 8GB 专用内存的 NVIDIA GPU

1 设置工程并浏览数据

首先,您将下载一个包含本教程所有数据的工程,并在 ArcGIS Pro 中将其打开。

  1. 下载 Palm_Tree_Detection 包。名为 Palm_Tree_Detection.ppkx 的文件即会下载到您的计算机。
  2. 在计算机上找到已下载的文件。 双击 Palm_Tree_Detection.ppkx 以将其在 ArcGIS Pro 中打开。

显示以汤加王国汤加塔普岛上的科洛瓦伊村为中心的地图。 图像图层显示在地形底图之上。

        3. 进行放大和平移以检查影像。观察整个景观中的众多棕榈树。

        这些图像由无人机拍摄,并经过正射影像处理,以消除任何扭曲。 它的分辨率很高,每个像素代表地面上大约 9×9 厘米的面积,可以非常清晰地显示棕榈树和其他地物。 它采用 TIFF 格式,有红、绿、蓝三个色带,共同构成一幅自然的彩色图片。

        手动识别这张图像中的所有棕榈树将非常耗时。 您将改为使用深度学习以自动检测它们。

2 使用预训练的深度学习模型检测棕榈树

        您希望使用深度学习以检测影像中的棕榈树。 如果您还没有可用的深度学习模型,则需要先从头开始训练一个模型,为其提供大量示例以向模型展示什么是棕榈树。 高性能模型可能需要接触成千上万个示例。 作为替代方法,您可以使用已训练的模型。 您将获得一个这样的模型,并将其应用到您的图像中。

注:在 ArcGIS Pro 中使用深度学习工具需要在计算机上安装正确的深度学习库。 如果您未安装这些文件,请保存工程,关闭 ArcGIS Pro,然后按照在ArcGIS Pro中为深度学习做好准备中提供的步骤说明操作。 在这些说明中,您还可以了解如何检查您的计算机硬件和软件能否运行深度学习工作流,以及获取其他有用的提示。 完成后,您可以重新打开工程并继续本教程。

首先,打开使用深度学习检测对象工具。

  1. 在功能区视图选项卡的窗口组中,单击地理处理

        2. 在地理处理窗格的搜索框中,键入使用深度学习检测对象。 在结果列表中,单击使用深度学习检测对象工具打开它。

        3. 设置以下使用深度学习检测对象参数值:

    • 对于输入栅格,选择 Kolovai_imagery.tif
    • 对于输出检测对象,键入 Detected_Palm_Trees。
    • 对于模型定义,单击浏览按钮。

从 ArcGIS Living Atlas of the World 获取棕榈树提取预训练模型。

注:ArcGIS Living Atlas of the World 是 Esri 的权威 GIS 数据集。 它包含一个由超过 50 个预训练深度学习模型组成的日益丰富的的模型库,可检测建筑物、船舶、农田边界等各种物体。

        4. 在模型定义窗口中的门户下,单击 Living Atlas。 在搜索框中,键入 Palm Tree Detection。 选择 Palm Tree Detection 并单击确定

注:您可以通过在ArcGIS Living Atlas网站检索,了解更多有关棕榈树检测模型的信息。 您将了解到,该模型旨在检测高分辨率图像(5 至 15 厘米)中的棕榈树,例如无人机图像。 图像预计有三个波段:红、绿、蓝 (RGB)。 该模型与您的图像非常匹配。

选择深度学习模型后,模型参数将自动加载。

        5. 在参数下,保留所有默认值。

有两个参数特别值得关注:

    • 阈值 - 阈值为 0.5 意味着只有当模型有至少 50% 的置信度认为检测到的物体确实是棕榈树时,才会将其添加到输出数据集中。 通过反复试验可以找到最佳阈值。
    • Batch_size - 深度学习对象检测无法一次性对整个图像进行检测。 该工具会改为将图像切割成名为“片”的小块。 批量大小为 4 意味着该工具将一次处理四个图像片。 在运行该工具时,您可能会收到内存不足的错误提示,因为您的电脑没有足够的内存来进行该级别的处理。 在这种情况下,请尝试将 Batch_size 值从 4 降到 2 甚至 1。 减小此值不会影响模型的质量,仅会影响模型检测过程的效率。

目前,这两个参数保留默认值。

        有时,模型会不止一次检测到一个对象。 非极大值抑制 (NMS) 是一种可选程序,当检测到对象重复时,会抑制部分检测到的对象。 保留检测到的置信度最高的对象,移除其他对象。 在下面的示例图像中,棕榈树被检测到两次。 使用 NMS 时,只保留一个检测到的对象。

        6. 勾选非极大值抑制旁边的方框。

        7. 对于最大重叠比,输入 0.5。

    • 最大重叠比参数决定了两个检测到的对象之间必须有多少重叠才会被视为重复对象并适用于 NMS。 0.5 表示重叠度必须达到或超过 50%。 在下面的示例图中,检测到的两个对象之间的重叠度小于 50%,因此它们并不代表同一个对象,也不会应用 NMS。

        8. 单击环境选项卡。

        9. 对于处理器类型,选择 GPU

注:本教程假定您的计算机具有建议的 GPU 性能。 如果计算机没有 GPU,您仍可使用 CPU 执行该过程,但用于处理数据的时间可能更长。 若为此情况,请选择 CPU 选项。

此时,您可以按原样运行工具:工具将检测整个 Kolovai_imagery.tif 影像中的棕榈树,此过程可能花费 20 分钟到 1 小时的时间,具体取决于计算机的规格。 为使本教程尽可能简洁,您将仅检测输入影像的一小部分中的棕榈树。

        10. 在功能区地图选项卡的导航组中,单击书签并选择 Detection area

地图会放大到科洛瓦伊的一个较小的区域。

        11. 在地理处理窗格环境选项卡中的处理范围下,单击当前显示范围按钮。

顶部左侧右侧底部坐标会更新,以对应地图上显示的当前范围。

        12. 接受所有默认值,然后单击运行。您可以监控运行按钮下的进程进度,也可以单击查看详细信息以查看详细信息。

        几分钟后,结果图层 Detected_Palm_Trees 将显示在内容窗格中和地图上。 该图层为要素图层,其中每个面表示一个棕榈树。

提示:如果出现内存不足错误,请尝试将 batch_size 值从 4 减小到 2 甚至 1,然后重新运行程序。

使用预训练的深度学习模型成功检测到了科洛瓦伊地区的棕榈树。

注:颜色是随机分配的,可能会有所不同。

3 设置结果图层的样式并进行检查

您将更改 Detected_Palm_Trees 图层的样式,并对其进行检查。

  1. 内容窗格中,单击 Detected_Palm_Trees 符号以显示符号系统窗格。

        2. 在​​​​​​​符号系统窗格中,如有必要,单击属性选项卡。

        3. 在外观下,设置以下参数:

    • 对于颜色,选择无颜色
    • 对于轮廓颜色,选择一种明亮的黄色,例如太阳黄
    • 轮廓宽度选择 2 磅

        4. 单击应用。图层已更新至新的符号系统。

        5. 在地图上进行放大并检查 Detected_Palm_Trees 图层。

您可以观察到,该模型成功地检测到了大多数棕榈树,很少出现误报情况(即模型错误地在没有棕榈树的位置发现了一棵棕榈树)。

        6. 也可以选择在您选择的不同范围或整个图像上再次运行使用深度学习检测对象工具。 为此,请缩放并平移到地图的新范围上,单击环境选项卡上的当前显示范围。 然后单击运行

注:在整个图像上运行该工具将需要 40 分钟或更长的时间,具体取决于您的计算机规格。或者,在您的工程中包含了一张地图,显示了整个范围的所有结果层。 要查看它,请转到目录窗格,展开地图,右键单击 Map_results 并选择打开。整个图像中检测到超过 12500 棵棕榈树。

        7. 也可以尝试更改一些参数,如阈值最大重叠比。

        8. 在快速访问工具栏中,单击保存按钮以保存您的工程。

4 对图像应用预训练模型

        要将预训练的深度学习模型应用到自己的数据中,首先要尝试使用本教程中学到的工作流程。 这是一种简单的方法,您可能会立即获得高质量的结果。

        不过,您可能对最初的结果并不完全满意。 在这种情况下,可以采用几种技术手段。 首先,可执行以下操作:

  • 修改影像,确保其进一步符合预训练模型的预期(例如,如果模型是在红-绿-蓝影像上训练的,那么您的影像就应该只有红、绿、蓝三种色带,而非红外或其他光谱波段)。
  • 给深度学习模型提供一些自己的数据,对其进一步训练。

        您可以在通过迁移学习改进深度学习模型教程中了解这些强大的方法。

        在本教程中,您已经使用 ArcGIS Living Atlas 中的预训练模型的深度学习来检测影像中的棕榈树。 由此产生的要素图层可用于估算整个地区的棕榈树数量、监测耕作方法以及评估即将到来的产量。

相关文章:

  • lesson01-PyTorch初见(理论+代码实战)
  • 在线黑白图像转换:简单却强大的视觉表达工具
  • Java生成可控的Word表格功能开发
  • hudi + flinksql 处理 金额汇总的实时场景
  • Nginx 动静分离在 ZKmall 开源商城静态资源管理中的深度优化
  • 【软件测试】:推荐一些接口与自动化测试学习练习网站(API测试与自动化学习全攻略)
  • 面试题-复合
  • 【Linux网络】传输层协议TCP
  • Spring 的 异常管理的相关注解@ControllerAdvice 和@ExceptionHandler
  • Java NIO 深度解析:突破传统IO的性能瓶颈
  • ​​金融合规革命:​​R²AIN SUITE 如何重塑银行业务智能​
  • OpenHarmony系统HDF驱动开发介绍(补充)
  • Kotlin 中 infix 关键字的原理和使用场景
  • C++23 ranges::to:范围转换函数 (P1206R7)
  • iOS视频编码详细步骤(视频编码器,基于 VideoToolbox,支持硬件编码 H264/H265)
  • Linux内核可配置的参数
  • 部署安装gitlab-ce-17.9.7-ce.0.el8.x86_64.rpm
  • QT之信号与槽
  • 深入理解ThingsBoard的Actor模型
  • std::ratio<1,1000> 是什么意思?
  • 互降关税后,从中国至美国的集装箱运输预订量飙升近300%
  • 4月新增社融1.16万亿,还原地方债务置换影响后信贷增速超过8%
  • 广西北部湾国际港务集团副总经理潘料庭接受审查调查
  • 英国首相斯塔默住所起火,警方紧急调查情况
  • 观众走入剧院空间,人艺之友一起“再造时光”
  • 减重人生|走过节食弯路,她如何半年减60斤找回自信?