news 2026/6/6 0:12:49

ArcGIS Pro 3.0实战:手把手教你制作YOLO格式的遥感影像训练集

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ArcGIS Pro 3.0实战:手把手教你制作YOLO格式的遥感影像训练集

ArcGIS Pro 3.0实战:从遥感影像到YOLO训练集的全流程解析

柑橘园里,无人机掠过树冠层拍摄的高清影像正在工程师的屏幕上闪烁。这些包含数千棵果树定位信息的遥感数据,即将通过一套标准化流程转化为YOLOv7模型能识别的训练集——这正是现代智慧农业中物体检测技术落地的关键一环。本文将手把手带您完成从ArcGIS空间标注到YOLO格式数据集的完整转换,解决遥感影像处理中特有的多时相数据整合与高重叠度切片难题。

1. 项目环境与数据准备

在开始标注前,需要确保软硬件环境满足以下条件:

  • ArcGIS Pro 3.0+:必须安装Image Analyst扩展模块
  • Python 3.7+:配置arcpyxmltodict
  • 遥感影像要求
    • 空间分辨率建议0.1-0.5米/像素
    • 建议使用GeoTIFF格式存储
    • 坐标系建议选择UTM或高斯-克吕格投影
# 检查arcpy模块可用性 import arcpy print(arcpy.CheckExtension("ImageAnalyst")) # 应返回"Available"

注意:如果处理多时相数据,务必确保所有影像已完成辐射校正和几何配准,时相间偏移量不应超过2个像素。

2. 创建智能标注工作流

与传统标注工具不同,ArcGIS Pro允许直接在原始影像上建立拓扑关系完整的矢量标注:

  1. 在目录视图中右键点击数据库 → 新建 → 要素类
  2. 设置名称为citrus_annotation,类型为面要素
  3. 关键字段配置:
    • 添加class_value字段(短整型)
    • 添加is_occluded字段(文本型)用于标记遮挡情况
# 通过arcpy自动创建要素类 arcpy.management.CreateFeatureclass( out_path="C:/GIS/citrus.gdb", out_name="citrus_annotation", geometry_type="POLYGON", spatial_reference=arcpy.SpatialReference(32650) # WGS84/UTM zone 50N )

标注过程中,建议使用以下技巧提升效率:

  • 启用自动完成多边形工具连续绘制
  • 使用捕捉功能确保相邻树冠边界贴合
  • 对模糊边界按F12键切换至像素级编辑

3. 高级标注策略实战

针对柑橘树这类具有显著季节特征的目标,可采用时相融合标注法:

时相类型标注要点适用场景
花期影像重点标注花簇分布模式早期识别
果期影像标注果实密集区轮廓产量预估
落叶期影像标注主干投影形状树龄分析
# 多时相标注合并脚本示例 import arcpy from datetime import datetime # 合并不同时相的标注 workspace = "C:/GIS/temporal_annotation.gdb" time_phases = ["bloom", "fruit", "dormant"] merged_features = [] for phase in time_phases: feature_class = f"citrus_{phase}_2023" with arcpy.da.SearchCursor(feature_class, ["SHAPE@", "class_value"]) as cursor: merged_features.extend([row for row in cursor]) # 写入合并后的要素类 output_fc = "citrus_merged" arcpy.management.CopyFeatures(merged_features, output_fc)

提示:对阴影遮挡超过30%的样本,建议在is_occluded字段标记"partial",后期训练时可单独设置损失权重。

4. 数据集导出与格式转换

使用Export Training Data For Deep Learning工具时,关键参数配置如下:

  • 输入栅格:选择配准后的多光谱影像栈
  • 输出文件夹:建议路径不含中文和空格
  • 标注要素类:选择合并后的标注要素
  • 参数配置:
    • Tile Size X/Y:设置为640×640(适配YOLO输入)
    • Stride X/Y:建议设为256(60%重叠)
    • Format:选择"PASCAL Visual Object Classes"
    • Batch Size:根据GPU显存设置为8-32
# 导出后的XML转YOLO格式脚本 import xml.etree.ElementTree as ET import os def xml_to_yolo(xml_path, class_mapping): tree = ET.parse(xml_path) root = tree.getroot() size = root.find('size') width = int(size.find('width').text) height = int(size.find('height').text) yolo_lines = [] for obj in root.iter('object'): cls = class_mapping[obj.find('name').text] bndbox = obj.find('bndbox') xmin = int(bndbox.find('xmin').text) ymin = int(bndbox.find('ymin').text) xmax = int(bndbox.find('xmax').text) ymax = int(bndbox.find('ymax').text) # 转换为中心点+宽高格式 x_center = ((xmin + xmax) / 2) / width y_center = ((ymin + ymax) / 2) / height box_width = (xmax - xmin) / width box_height = (ymax - ymin) / height yolo_lines.append(f"{cls} {x_center:.6f} {y_center:.6f} {box_width:.6f} {box_height:.6f}") return yolo_lines # 使用示例 class_map = {"citrus": 0, "partial_citrus": 1} yolo_labels = xml_to_yolo("image_001.xml", class_map) with open("image_001.txt", "w") as f: f.write("\n".join(yolo_labels))

5. 质量验证与增强技巧

生成数据集后,建议进行以下质量检查:

  1. 空间分布检查

    • 使用QGIS打开train.txtval.txt
    • 确保训练/验证集地理分布均匀
  2. 标注一致性验证

    • 随机抽取5%的样本
    • 使用OpenCV可视化标注框
# 标注可视化检查脚本 import cv2 import random def visualize_annotation(image_path, label_path): image = cv2.imread(image_path) height, width = image.shape[:2] with open(label_path) as f: for line in f.readlines(): cls, x, y, w, h = map(float, line.strip().split()) x1 = int((x - w/2) * width) y1 = int((y - h/2) * height) x2 = int((x + w/2) * width) y2 = int((y + h/2) * height) cv2.rectangle(image, (x1,y1), (x2,y2), (0,255,0), 2) cv2.imshow("Preview", image) cv2.waitKey(0) # 随机抽样检查 sample_images = random.sample(os.listdir("images"), 10) for img in sample_images: base_name = os.path.splitext(img)[0] visualize_annotation(f"images/{img}", f"labels/{base_name}.txt")

针对小目标检测的特别处理:

  • 在导出时启用Reference System参数保持地理坐标
  • 对密集区域使用512×512子窗口二次切片
  • 在YOLO配置中设置fl_gamma=1.5增强小目标权重

6. 项目交付与持续改进

完整的项目交付应包含以下目录结构:

citrus_detection_dataset/ ├── raw_imagery/ # 原始遥感影像 ├── annotations/ # ArcGIS标注工程文件 ├── yolo_dataset/ # 最终训练集 │ ├── images/ # 切片图像 │ │ ├── train/ │ │ └── val/ │ └── labels/ # YOLO格式标注 │ ├── train/ │ └── val/ ├── preprocessing_scripts/ # 所有转换脚本 └── dataset_report.pdf # 数据分布分析报告

在实际柑橘园项目中,我们通过这种流程将标注效率提升了3倍——原本需要两周完成的5平方公里果园标注,现在只需5个工作日即可交付符合YOLO训练要求的高质量数据集。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/6 0:12:11

做口播找不到合适背景音乐?5个技巧+12个优质素材站整理

根据《2025年中国短视频内容创作生态白皮书》数据显示,超过68%的口播内容播放量下滑和背景音乐选择不当有关,BGM适配度直接影响观众停留时长超过30%,对于口播内容来说,选对合适的背景音乐直接决定内容的完播率和转化效果&#xff…

作者头像 李华
网站建设 2026/6/6 0:11:42

成都企业投标资料总是找不齐,AI招投标知识库该怎么建?

一、资料找不齐,本质上是投标证据链断了很多成都企业在投标前都有相似的混乱:商务在群里问最新营业执照,销售在翻历史项目案例,技术在找上一版方案,财务临时补审计报告,法务还要确认授权文件能不能继续使用…

作者头像 李华
网站建设 2026/6/6 0:07:05

僵尸进程、孤儿进程原理、识别、排查、彻底解决

一、前言Linux 进程异常分为 僵尸进程、孤儿进程,是服务器卡顿、资源泄露、服务异常的常见隐形原因。面试高频、运维必查。二、基本概念1. 孤儿进程父进程退出,子进程还在运行会被 init/systemd(PID1) 收养无害,系统自…

作者头像 李华
网站建设 2026/6/6 0:00:18

终极指南:3分钟学会使用国家中小学智慧教育平台电子课本下载工具

终极指南:3分钟学会使用国家中小学智慧教育平台电子课本下载工具 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载,让您更方便地获取课本内容。 …

作者头像 李华
网站建设 2026/6/5 23:59:40

备战蓝桥杯国赛【最终篇】

一、写在前面 兄弟们,Day 28,明天就要上考场了! 今天把最后几道真题过一遍,主要是查漏补缺。这几道题覆盖了二分查找、异或DP、质因数分解、集合运算和字符串处理,都是国赛里容易出大题的方向。考前的最后一天&#…

作者头像 李华