news 2026/10/21 23:04:16

无人机+AI智慧河道巡检:违建检测数据集构建全解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
无人机+AI智慧河道巡检:违建检测数据集构建全解析

做智慧水利的朋友应该都有同感:河道巡检这活儿,又累又杂又高频。以前靠人工沿河巡查,一天走十几公里是家常便饭,遇上雨季、汛期,很多河段根本走不到。这两年无人机挂上云台相机,一条几十公里的河道,一架飞机半个多小时就能扫完,效率翻了几十倍。可影像拍回来之后,新的问题出现了——几千张航片堆在硬盘里,靠人眼一帧一帧看,眼睛都快看瞎了。

这就是为什么“无人机+AI”成了河道巡检的标配组合。其中,河道违建检测又是需求最刚性、落地最快的场景之一。今天想聊的,是围绕一套我们实际整理出的数据集——无人机视角的智慧河道巡检违建检测数据集,一共1034张图、1个类别,同时提供VOC和YOLO两种标注格式。很多人觉得数据集嘛,不就是拍拍照片、框一框、转个格式吗?但真上手做一遍就会发现,从飞行采集到标注规范再到格式转换,每一环都有大量“不做不知道”的细节。

这篇文章就把整个过程摊开讲清楚:数据怎么采、标注边界怎么定、VOC和YOLO格式怎么转、1034张图能训到什么程度,以及模型上线之后怎么持续迭代。不管是准备自建数据集做河道巡检的同学,还是接了智慧水利项目想做算法验证的团队,应该都能从中找到直接能用的东西。

1. 河道违建检测:为什么通用目标检测模型一上手就翻车

1.1 航拍视角与地面视角的“语义鸿沟”

这个领域最大的误区,是直接拿 COCO 上训练的通用检测器去查违建。不是说通用模型没用,而是它解决的“找房子”问题,和你要解决的“找违建”问题,根本不是同一个问题。

通用模型看到的是“这里有个屋顶”“这里有面墙”,它不认识什么是“河道管理范围内未经许可的建筑物”。航拍视角下,视觉特征被压缩得相当厉害:一个五层楼和一个两层楼在120米高空看过去都是“一个灰色矩形”;一座审批过的泵站和一栋私自搭的彩钢棚,在像素层面可能长得一模一样。模型如果只按“像不像房子”来框选,那它只会给你输出满屏的框,里面90%都是合法建筑。

这就是第一条要命的认识:河道违建检测,本质上不是“识别建筑”,而是“理解建筑与河道的位置关系,再判断它是否违规”。前者是纯视觉问题,后者是空间规则问题。通用模型只擅长前者,后者必须靠数据集的标注规则去教。

1.2 “违建”不是一种物体,而是一种空间关系

那为什么还要做目标检测,不做语义分割或者后规则拼接?我们的实践结论是:检测框足够用,关键是框的语义要定义清楚。

河道违建这个类别,和“人”“车”“猫”“狗”这类天然类别有个本质区别:它的类别属性不是由物体本身的形状决定的,而是由“它出现在哪里”决定的。同样的彩钢瓦棚子,出现在农田里就是农业设施,搭在河道管理范围内就成了疑似违建。换句话说,同样的像素内容,标注结果可能完全不同。

正因如此,数据集的标注规则必须绑定“河道管理范围线”这个空间概念。实操中我们是在标注软件里把管理范围线叠加到航片上,落在线内的建筑一律标,线外的不管长得多像违建都不标。这条规则是整套数据集的灵魂,后面每一张图都是在这个规则下标的。

1.3 单类别标注的底气从哪来

有人问,为什么不顺便把“合法建筑”“船只”“桥梁”“植被”也标出来,做个多类别多任务?我们一开始也试过,后来砍到只剩1个类别,原因有三。

第一,业务场景只关心“是不是疑似违建”。合法建筑、桥梁、船只这些背景类别对最终决策没有增量价值,标了反而稀释标注员的注意力。第二,类别越多,边界越容易打架。比如一艘住人船,算船还是算违建?一座在建跨河桥,算违建还是算水利设施?单类别配合严格的空间规则,能绕开这些纠缠。第三,1034张图的规模本来就小而精,把预算全部砸在一个类别上,能把标注质量做到更高。

所以这套数据的1个类别不是偷懒,是刻意收敛。它是巡检场景里唯一需要AI帮忙“初筛”的类别,其他东西人工一眼就能认出来。

2. 数据采集:1034张图背后的航线与筛选逻辑

2.1 飞行参数怎么定:高度、重叠率与地面分辨率

数据采集是决定数据集质量的第一道关卡。1034张图听起来不多,但如果采集环节做得好,每一张都能顶十张用;反之如果乱拍一气,后面标注和训练全是灾难。

先算一笔账。地面分辨率(GSD)由飞行高度、传感器像元尺寸和镜头焦距共同决定,公式是:

GSD = 相对航高 × 像元尺寸 / 镜头焦距

举例:某无人机搭载1英寸CMOS,像元尺寸2.4μm,镜头焦距8.8mm,相对航高120m,那么GSD = 120 × 0.0024 / 8.8 ≈ 3.27cm/像素。这个分辨率下,三五米宽的彩钢瓦棚子能占几十到上百个像素,墙体轮廓、屋顶材质都看得清,足够标注和检测。

根据公式反推,想让GSD保持在3~5cm/像素,120~150m的相对航高是比较合理的区间。飞太高,小棚子糊成一团;飞太低,单张覆盖范围太小,巡检效率骤降。航高和效率的平衡,建议从需求倒推:你要能认出的最小违建是多大?让它的长边至少占30~50个像素,这个GSD就够了。

重叠率方面,我们用的是前向重叠80%、旁向重叠60%~70%。这不是正射测绘那种追求三维重建的严格标准,但对检测数据集有个实打实的好处:同一个目标至少在两张相邻航片里都会出现。一方面便于人工复核时交叉确认,另一方面等于给模型做了天然的多视角增强,同一个建筑换个角度、换个距离再看一次,模型学到的特征更稳。

2.2 原始影像清洗:哪些航片必须果断丢弃

飞一趟下来,原始影像里大概有20%~30%是不能直接进数据集的,清洗环节绝对不能省。

首先是运动模糊。无人机转弯、侧风、快门下压不够时,边缘会拖出残影。这种图人眼看着还行,送进网络训练就是灾难,因为模型会把模糊纹理错当成建筑边缘特征。我们定的标准是:在100%缩放下,任何建筑物边缘出现肉眼可见的拖影,直接弃用。

其次是过曝和欠曝。水面反光经常让画面局部亮成一片,屋顶是蓝色铁皮的彩钢棚在强光下容易过曝到发白,丢失纹理。航拍构图的曝光通常是全局平均的,没法像单反那样精准点测光,所以清洗时要把直方图拉到两端爆掉的图挑出来。

第三类是“内容废图”。纯水面、纯植被、大面积农田这类没有建筑物出现的航片,留着只会让负样本比例失衡。你可能会想,模型也需要背景样本啊?这话没错,但更专业的做法是控制比例,我们让包含目标的正样本和纯粹背景的负样本保持大约4:1,既给模型提供了背景上下文,又不会让训练被背景淹没。

2.3 覆盖策略:让模型见够“世面”的采样方法

1034张图要怎么分配,才能让模型见到的场景足够多样?我们的做法是围绕三个维度打散。

维度一是河段类型。城市景观河道、乡镇自然河道、农田灌溉渠道、山区峡谷河段,这几种地形的背景差异非常大。城市河道岸边是硬质护岸和楼房,乡镇河道旁边是农田和村居,山区的河道两侧是山体阴影和植被。模型如果在某一种河段上过拟合,换一条河立马就萎。所以采集时,每个大类河段至少要占到总图量的15%~20%。

维度二是光照条件。无人机巡检大多在白天飞,但同样是白天,顺光、逆光、多云阴天、正午强顶光的差别肉眼可见。逆光下的建筑整体发暗,轮廓模糊;多云天气反而是最友好的,光线均匀、阴影柔和。我们刻意把不同光照条件的图都纳入进来,而不是只挑最好看的晴天图。

维度三是季节。夏天河道里杂草茂盛,建筑可能被树冠挡住半边;冬天树叶落光,藏在岸边的棚子完全裸露出来。同一位置不同季节,模型看到的特征完全不同。如果数据集只来自一个季节,到另一个季节去推理时漏检率会明显升高。1034张图在季节上的分配不一定非得平均,但至少要有意识地覆盖两个以上季节。

3. 标注规范:边界画在哪,直接决定模型上限

3.1 违建的判定标准与标注边界

标注环节最怕的不是累,是标准不统一。同样一张航片,三个标注员能给出三种完全不同的框,最后模型学到的就是一个四不像。

数据集落地时,我们给标注团队定的判定标准很明确:“位于河道管理范围线以内的新建、扩建建筑物或构筑物,且未见合法审批手续的,一律标为违建。”实际执行时,标注员拿到的每张航片都叠加了管理范围线的矢量图层。线内的标,线外的不标。这个规则把主观判断压缩到了最小。

但执行过程中有一堆边界情况,必须提前写进标注手册。我把我们踩过的问题整理一下:

场景标注决策理由
正在施工的工地,只有地基和脚手架标脚手架轮廓也是违建形态,AI要在萌芽期发现它
河面上停靠的住人船、浮台标属于侵占河道的行为,视觉上特征明显
审批过的泵站、水闸等水利设施不标合法设施,标了会让模型混淆
桥梁、栈道等跨河交通设施不标有明确审批属性,不在违建语义内
一半在线内一半在线外的建筑标,整体标注主体在线内即视为违建,宁愿多标不漏标
临时活动板房、集装箱房标典型高发违建形态,必须优先覆盖

3.2 模糊样本的处理原则

航拍图里永远有不清晰、被遮挡、看不全的建筑。处理这些模糊样本,最忌讳的就是“看不清就跳过”。

我们的原则是“能认出轮廓就标,认不出就不标,但不要猜”。具体来说:如果建筑被树冠遮住了60%以上,且边缘完全被打断,没办法判断它的整体范围,那就不标,这张图留给模型当背景。如果只遮了一小半,剩余轮廓能大致勾勒出建筑外边界,那就标,框贴着可见的外轮廓画,宁可稍微紧一点,也不要靠脑补把被遮住的部分拉出来。

还有个容易犯的错:把阴影标进框里。航拍顺光时建筑阴影在地面拉得很长,很多新手会把阴影一起框进去。这个习惯会让模型把阴影学成建筑特征,推理时一到午后低角度阳光,地面阴影全被误检成建筑。正确的做法是框只贴建筑本体,阴影不要进框。阴影信息和建筑本体在视觉上是有明确边界的,标注时稍加引导就能避免。

3.3 质检流程与返工标准

我们实际用了一套两轮标注加抽检的流程,最终质检通过率在95%左右才算合格。

第一轮由标注员完成初标。第二轮由另一位标注员独立复标,不参考第一轮的结果,然后程序自动对比两个版本的框,计算IoU。同一目标两次标注的IoU低于0.7,判定为争议样本,进入三方会审。这种“独立复标+自动对比”的方式,比逐张人工检查效率高得多,而且能把标准差异量化出来。

会审时我们会把标注规范里没覆盖到的新情况收集起来,定期更新标注手册。这里说一个经验:标注规范不是写出来就固定不变了,它是跟着数据迭代走的。前一百张图可能每天都要微调规则,后面越调越少,到几百张之后基本就稳定了。这个“规则收敛”的过程,恰恰说明标注团队的认知和数据本身的分布达成了统一。

4. VOC与YOLO格式转换的完整实操

4.1 两种格式的核心差异

VOC和YOLO是目标检测领域最常用的两种标注格式。很多人第一次接触时被两套格式绕晕,其实核心差异就一句话:VOC存的是像素级绝对坐标,YOLO存的是归一化后的相对坐标。

VOC格式以XML文件存储,每个目标用一个object节点描述,其中bndbox子节点包含xmin、ymin、xmax、ymax四个值,单位是像素。YOLO格式则是一个TXT文件,每行代表一个目标,格式是类别ID x_center y_center width height,四个坐标值全部用目标框宽高除以图像宽高做了归一化,取值都在0到1之间。

转换的核心公式很简单,但有两个关键点容易出错。一是YOLO的x_center和y_center是框中心点坐标,不是左上角坐标;二是所有值都要除以图像宽高,注意x相关除以宽、y相关除以高,不能搞混。下面是我常用的一套转换逻辑,用Python写起来大概这样:

import os import xml.etree.ElementTree as ET def voc_to_yolo(xml_path, img_width, img_height, class_map): tree = ET.parse(xml_path) root = tree.getroot() lines = [] for obj in root.iter('object'): name = obj.find('name').text if name not in class_map: continue class_id = class_map[name] bndbox = obj.find('bndbox') xmin = float(bndbox.find('xmin').text) ymin = float(bndbox.find('ymin').text) xmax = float(bndbox.find('xmax').text) ymax = float(bndbox.find('ymax').text) x_center = (xmin + xmax) / 2.0 / img_width y_center = (ymin + ymax) / 2.0 / img_height box_width = (xmax - xmin) / img_width box_height = (ymax - ymin) / img_height lines.append(f"{class_id} {x_center:.6f} {y_center:.6f} {box_width:.6f} {box_height:.6f}") txt_path = xml_path.replace('.xml', '.txt') with open(txt_path, 'w') as f: f.write('\n'.join(lines))

4.2 标准化目录结构:训练工程化的第一步

格式转换不只是把XML变成TXT,还牵扯到数据集目录怎么组织。YOLO系框架普遍约定的目录结构是这样的:

dataset/ ├── images/ │ ├── train/ │ ├── val/ │ └── test/ ├── labels/ │ ├── train/ │ ├── val/ │ └── test/ ├── data.yaml └── README.md

images和labels下按训练、验证、测试三个子集分开存放,图片和标签用相同文件名关联(比如IMG_0231.jpg对应IMG_0231.txt)。data.yaml里的内容大致是类别数和类别名:

train: dataset/images/train val: dataset/images/val test: dataset/images/test nc: 1 names: ['illegal_building']

这里有个容易踩的坑:YOLO框架在训练时只读yaml里的路径,如果路径写的是相对路径,工作目录一变就报错。我们用了一个最土但最稳的办法:配置和数据集的绝对路径写到yaml里,训练脚本里再统一处理,避免相对路径引发的各种玄学问题。

4.3 转换中容易踩的坑

格式转换这步,代码量不大,但坑不少。我按踩到的频率列一下:

坐标越界。标注时手一抖,xmax可能比图像宽度还大几个像素。这种框进YOLO格式后,归一化值大于1,训练时轻则警告,重则loss直接变NaN。转换脚本里必须做一次clip,把所有坐标约束到图像尺寸范围内。

宽高为0。有些情况下xmin和xmax相等,或者ymin和ymax相等,转换出的width或height是0。这类非法框在训练时会被当成没目标,白白浪费一个样本。转换后要扫描一遍,把这类空框日志打印出来,反查原始XML。

数据划分方式错误。这个坑不在格式转换本身,而在划分训练验证集时。河道航拍图有一个特点:同一航线的相邻航片高度相似,相当于同一河段的“连拍”。如果随机划分,同一河段的图会同时出现在训练集和验证集里,验证集指标虚高,一到新河段推理就现原形。正确做法是按“航次”或“河段”划分,保证同一个河段的图只进一个子集。直白点说:宁可让验证集保守地吃点亏,也不能让指标好看但模型没用。

类目编号错位。如果数据集中途调整过类别顺序,旧的TXT文件和新的类别映射对不上,会出现标号泄露问题。我们在转换脚本里做了强校验:每个类别的框数量统计出来,和原始XML的统计逐类对账,对不上就直接报错。

5. 1034张样本的训练策略与实测效果

5.1 模型选型与预训练权重

1034张图、1个类别,属于典型的小规模数据集。能不能训?能。但要想清楚用什么样的模型底座,以及怎么分配这1000多张图的价值。

模型我们直接选的YOLO系列的s版本,也就是small级别。s级别的参数量在7M到11M左右,既能在普通消费级显卡上快速迭代实验,又能顺利部署到边缘设备。用更重的模型(比如l、x级别)在小数据集上收益很有限,反而更容易过拟合,训练速度还慢,完全不划算。

关于预训练权重,强烈建议加载COCO上预训练好的权重,不要从头训。“为什么?”因为航拍图像虽然域不同,但底层特征——边缘、角点、纹理、屋顶形状——和自然图像是相通的。预训练模型已经具备很强的底层特征提取能力,我们要训练的是让它在“航拍视角下的违建”这个具体语义上收敛。从零训练要学的东西太多了,1000多张图根本喂不饱。

5.2 数据增强:别把航拍图当普通图片

小数据集必须靠数据增强撑起来,但航拍图和普通图片的增强策略有一点本质区别:航拍图的“正立方向”是固定的,相机永远是朝下或斜朝下的,建筑不会像手机照片那样颠倒过来。

所以旋转增强要做,但只做小角度的旋转(比如±15°),不要做90°或180°的整倍旋转。稍微想一下就能理解:一个歪着建的房子在现实中是不存在的,90°旋转出来的图是“不可能出现”的视角,模型学这种特征毫无意义。类似的,水平翻转可以做,垂直翻转要谨慎——垂直翻转相当于把河道从画面下方挪到上方,和真实飞行方向不一致。

Mosaic增强是针对小数据集最有效的招之一。它把四张图拼成一张,等于变相扩大了batch size,让模型在每次迭代里看到更多样的背景组合。我们开着Mosaic跑,损失收敛速度和稳定程度都明显好于不开。还有一个经验:航拍图的颜色增强要克制。HSV色域扰动、随机亮度的幅度都调小一点,因为航拍图的颜色一致性本来就比手机照片强,过度色彩扰动会让模型学到不真实的颜色关系。

5.3 验证结果解读与常见误区

实跑下来,在按河段划分的验证集上,这套数据集训练的模型mAP@0.5大约在0.85~0.9之间,recall在0.75~0.85的区间。这个数字在小数据集里算是不错的,但我要给我的经验结论泼一盆冷水:mAP这个数字在河道违建业务里参考价值有限,recall才是命门。

道理很简单。河道巡检这个场景是典型的“宁错勿漏”:漏掉一处违建,可能意味着问题建筑继续存在好几个月;而AI多报几个候选框,反正后面还有人工复核兜底,多花两分钟看一眼不是大事。所以训练时损失函数里recall的权重、置信度阈值的选择,都应该朝着“高召回”方向调,宁可框多一点、置信度低一点,也不要让模型因为追求精确而把违建漏掉。

常见的评估误区有几个。第一个是拿随机划分得到的虚高mAP当证据,这在前文提过,不再展开。第二个是在测试集上反复调参,调到测试集指标接近完美,实际上相当于把测试集偷偷混进了训练过程。第三个是只看总体mAP,不看分河段的指标。不同河段的难度差异很大:城市河段背景干净,模型轻松拿高分;山区河段阴影复杂,分数掉得厉害。把每一段的指标单独列出来看,才能知道模型真正的短板在哪。

训练完还有个可视化检查步骤:把每张验证集图片的预测结果画出来,人工翻一遍。这一步比任何指标都直观。翻图时重点看漏检的样本——是尺度太小?是被树遮了?还是背景太复杂?这些信息直接决定下一步是补数据还是调参数。

6. 从数据集到巡检闭环:部署与持续迭代

6.1 边缘设备部署的算力取舍

数据集和模型训练出来只是第一步,真实场景里无人机巡检需要的是端侧或近端侧的实时推理。我们的方案是把训练好的模型转换成TensorRT格式,做INT8量化后部署到边缘计算盒子(类似Jetson这类设备,国内也有不少等效产品可选)。

s级别的模型在INT8量化后,模型文件也就10MB上下,量化的精度损失在可接受范围内。实测在边缘设备上处理1280分辨率的航拍图,单张推理耗时大概在几十到一百多毫秒,完全能跟上无人机的拍摄节奏,甚至能做到“边飞边检”——飞机还没降落,嫌疑违建清单已经躺在平板上了。

这里要提醒一句:INT8量化不是所有模型都能无脑转的。量化前先跑一遍验证集,对比FP16和INT8的mAP和recall差距,如果recall掉了超过两个百分点,就要考虑改用FP16,或者在量化校准数据集里加入更多难样本。量化校准数据集的选择,直接决定量化后模型的表现,这一步不能省。

6.2 误报重灾区与业务层兜底

模型上线之后,真正的考验才开始。航拍河道场景的误报来源非常固定,提前摸清它们的特征,能少走很多弯路。

我们统计下来,误报重灾区有四类:一是建筑阴影,低角度阳光时地面阴影会形成“深色块”,模型容易当成建筑边缘;二是光伏板和农业大棚的反光,高亮矩形区域在特征上和彩钢屋顶很像;三是河面上的浮桥、拦网、水面的漂浮物,它们的线条和建筑轮廓有几分神似;四是合法水利设施的附属建筑,比如泵站的管理用房,形态和违建几乎没有差别。

这些误报不可能完全靠模型消除,我们的做法是在业务层加一道“人工二审”流程。AI输出的是候选框和置信度,一线复核人员不用再盯着几千张原图找目标,只需要看系统自动裁剪出来的嫌疑区域截图,判断“是/不是”就行了。从实际效率看,AI初筛至少能把人工看图量压缩80%以上,原来要两个人干一天的活,现在一个小时后出结果。这才是技术落地的真正价值。

6.3 让数据集在巡检中“越用越准”的机制

最后聊一下数据集的持续迭代。很多项目做完一锤子买卖,训完模型数据集就吃灰了。但河道违建检测有一个天然优势:无人机巡检本身是周期性重复的,每次都产出新影像,这些影像就是持续训练的数据来源。

我们形成了一套固定的回流机制:每次巡检的原始影像全部归档;AI初筛加人工复核后,把人工确认的漏检样本(AI没框出来的违建)和误检样本(AI框错了的合法建筑)都挑出来,按季度补充进数据集;每个季度做一次增量训练,重新评估模型,评估通过再替换上线模型。这个闭环跑起来之后,数据集会从1034张慢慢长大,模型在特定河段上的表现也会越来越稳。

这个机制对一个数据集的长期价值影响很大。因为河道违建不是一个静态问题:河岸在变、水流在变、季节在变,连违建本身的形式都在变。今天用1034张图能覆盖的场景,半年后可能就不够用了。所以做数据集的时候,从一开始就要想着为持续迭代留好接口——原始影像归档的目录结构、标注文件的版本管理、模型训练的复现脚本,这些基础设施比多标几百张图更重要。

我个人在整套流程里的体会是:数据集的质量,七成在采集和标注的标准,三成在格式和训练的工程。标准定清楚了,哪怕只有一千张图,也能撑起一个能用的模型;标准是糊的,一万张图训出来的模型照样在业务场上被吊打。所以如果你正准备往这个方向投入,先把飞行参数和标注手册这两件事吃透,后面的事情顺理成章。

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

Linux上搭建Hadoop伪分布式开发环境:从零到WordCount实战

1. 为什么要在Linux上折腾Hadoop开发环境刚接触大数据那会儿,我也觉得搭个Hadoop环境能有多难,不就是解压几个压缩包、改几个配置文件的事。结果第一次动手就卡了整整两天,从虚拟机网络配不通,到NameNode死活起不来,再…

作者头像 李华
网站建设 2026/10/21 22:58:43

文华财经公式拆解:用BACKSET与BARSLAST构建局部高低点识别逻辑

简介:这份文档收录了一套文华财经期货软件指标公式,由一位资深期货交易者编写,面向使用文华财经平台、希望借助程序化指标辅助研判行情的期货投资者与量化爱好者。文件为单个doc文档,压缩包约58KB,内容以公式源码与逻辑…

作者头像 李华
网站建设 2026/10/21 22:58:39

React实战:基于Vite和Redux Toolkit搭建任务协作看板项目

1. 项目概述:从一个奇怪的命名到完整的前端实战 先说个有意思的事。我第一次看到"rea"这个项目名时,第一反应是"Real"拼错了。后来拿到项目正文才知道,这是某位开发者给自己练手项目起的代号,全称其实是"…

作者头像 李华
网站建设 2026/10/21 22:57:26

AI证件照API落地全指南:从人像分割到服务化部署

证件照这个东西,听起来不复杂,做起来是真麻烦。无论是考试报名、简历投递、签证申请还是入职登记,规格要求五花八门,一寸、二寸、小一寸、大一寸,背景颜色白蓝红,头部占比、像素尺寸各有标准。随手翻出一张…

作者头像 李华
网站建设 2026/10/21 22:57:01

CARLA经纬度到全局俯视图像素坐标变换详解

做自动驾驶仿真,很多人一开始都会被CARLA里那套坐标系统绕晕。明明传感器里拿到了车辆的经度、纬度,地图上看位置却对不上;明明想画一张全局俯视图,结果目标框全都飞到了地图外面。我在做某跨平台系统的全局感知融合模块时&#x…

作者头像 李华