☰
YOLOv8与KITTI数据集实战:自动驾驶车辆行人红绿灯检测优化全流程
2026/10/21 21:08:14 网站建设 项目流程

1. 为什么用YOLOv8做自动驾驶感知

最近在做自动驾驶感知相关的一个项目,核心任务是让模型在车辆行驶视角下同时检测出车辆、行人和红绿灯这三类目标。选型的时候对比了好几种方案,最后定了YOLOv8配合KITTI数据集来做全流程训练和优化。这篇文章就把整个过程拆开讲一遍,包括数据集处理、模型训练、精度优化的具体做法,以及我在实际跑实验时踩过的坑。

先说大家最关心的问题:为什么目标检测在自动驾驶里这么关键,又为什么选择YOLOv8而不是更复杂的检测框架。

1.1 自动驾驶感知的核心需求拆解

自动驾驶的感知模块相当于车辆的"眼睛",需要实时回答三个问题:前面有什么、在什么位置、距离有多远。目标检测解决的就是前两个问题——识别出目标类别并给出边界框坐标。第三个问题通常交给深度估计或者雷达,但边界框的质量直接影响下游模块的决策精度。

具体到本项目要解决的三类目标:

  • 车辆:包含轿车、SUV、卡车、公交车等所有机动车,是道路上最主要的动态障碍物。车辆检测的难点在于车型差异大、相互遮挡频繁、远近尺度变化剧烈。
  • 行人:属于典型的柔性目标,姿态多变,有时骑自行车、有时打伞、有时蹲下,是检测中最容易漏检的类别。
  • 红绿灯:这是最容易出问题的一类。红绿灯体积小、颜色区分度高但光晕干扰大,而且在不同光照条件下表现差异极大。很多常规检测模型能检测到信号灯,但分不清是红灯还是绿灯,这在实际应用中是不够的。

我选择这三类目标是有现实考量的。真正路测场景里,追尾事故多与车辆检测不准有关,行人碰撞与行人类别召回率低有关,而闯红灯或绿灯起步犹豫则与红绿灯状态识别有关。把这三类目标同时放在一个模型里做检测,是自动驾驶感知最基础也最刚需的组合。

1.2 为什么选YOLOv8而不是其他框架

2023年以后做目标检测,主流选择基本就集中在YOLO系列和基于Transformer的检测器之间。我最终选择YOLOv8,理由有四点:

第一,推理速度快。这是自动驾驶场景的硬指标。不管是部署在车载工控机还是嵌入式设备上,帧率达不到15 FPS以上就很难实际使用。YOLOv8的C2f结构和解耦头设计保证了在各种硬件平台上都能跑出不错的帧率。

第二,精度上限足够高。YOLOv8在COCO数据集上做到了53.9%的mAP(YOLOv8x),这个水平虽然不如某些大型Transformer模型,但配合好的训练策略完全能满足自动驾驶场景的检测需求。关键是在同等精度下,YOLOv8的模型体积和计算量都小得多。

第三,工程生态成熟。YOLOv8的代码库非常干净,训练接口统一,导出成ONNX和TensorRT的流程也顺畅。后处理代码直接封装好了NMS,对做工程的人来说少踩很多坑。而且Ultralytics对数据格式要求很明确,与KITTI数据的转换逻辑可以快速实现。

第四,数据增强策略完善。YOLOv8内置了Mosaic、MixUp、Albumentations等增强手段,这对自动驾驶场景尤其重要,因为路上能拍到的场景太丰富了,模型需要见过足够多的"花样"才能在真实环境里稳住。

作个对比,Faster R-CNN虽然精度也不错,但两阶段结构在推理阶段天然吃亏;而DETR系列需要更长的训练轮次才能收敛,且对小目标不友好——红绿灯正是典型的小目标。综合精度、速度、工程复杂度三个维度,YOLOv8是最平衡的选择。

2. KITTI数据集处理与YOLO格式转换

数据集是模型的上限。KITTI数据集是自动驾驶视觉领域最有名的公开数据集之一,采集自真实道路场景,包含大量市区、乡村、高速道路的画面。原始KITTI主要用于立体视觉和光流评估,但其2D目标检测标注同样非常完善。

2.1 KITTI原始标注格式拆解

KITTI的2D目标检测标注文件是txt格式,每行代表一个目标,包含12个字段。拿一个典型的标注行举例:

Car 0.00 0.00 -1.57 587.01 173.23 612.31 191.23 -2.98 0.21 1.62 3.45 1.2 1.6 3.2

逐个字段解释:

  • 第1字段:类别,如Car、Van、Truck、Pedestrian、Cyclist、Misc等
  • 第2字段:被截断程度,0.0表示完全可见,1.0表示大部分被截断
  • 第3字段:遮挡程度,0为完全可见,1为部分遮挡,2为严重遮挡,3为未知
  • 第4字段:观测角度alpha,以弧度表示
  • 第5-8字段:2D边界框的左上角x1、y1和右下角x2、y2坐标(像素值)
  • 后8个字段是3D相关信息(长宽高、朝向角、空间位置)

做YOLOv8训练时,只需要第1字段(类别)和第5-8字段(2D框坐标)。3D信息虽然对完整自动驾驶感知有用,但YOLOv8本身是纯2D检测器,只能利用其中的2D框部分。

原始标注还有几个细节必须注意:KITTI的类别并不直接对应我们的目标类别。它把机动车拆成了Car、Van、Truck、Tram等多个子类,而我们的需求是统一识别为"车辆"。如果不做合并,模型会把同一物理实体当成不同类别去学,严重浪费参数空间。

2.2 编写转换脚本的完整思路

将KITTI标注转为YOLOv8所需的txt格式,核心工作是做三件事:类别映射、坐标归一化、处理无效标注。

类别映射规则:KITTI原始类别共8类,我映射为3类:

KITTI原始类别映射到YOLO类别类别序号
Car, Van, Truck, Tram车辆0
Pedestrian, Person_sitting行人1
Misc中的红绿灯红绿灯2
Cyclist、其他Misc忽略-1

有个容易被忽略的点:KITTI的标注里没有单独的红绿灯类别,红绿灯通常被归在Misc里,且不是所有KITTI图片都包含红绿灯标注。我实际处理时发现,KITTI原始标注中对红绿灯的标注非常稀疏,大量图片里明明画面中出现了红绿灯却没有标注框。

这意味着不能完全依赖KITTI自身的标注来训红绿灯检测器。我当时的做法是:除了使用KITTI标注外,额外从KITTI原始图像中手动截取了一批红绿灯区域,结合一些公开的交通标志数据集做补充训练。后面第3章会详细讲这部分。

坐标归一化算法:YOLOv8要求标签为归一化后的中心点坐标+宽高,格式如下:

类别序号 x_center y_center width height

转换公式也很直白:

x_center = ((x1 + x2) / 2) / image_width y_center = ((y1 + y2) / 2) / image_height width = (x2 - x1) / image_width height = (y2 - y1) / image_height

这里有个细节要注意——在判断边界框是否有效时,必须检查x2是否大于x1、y2是否大于y1。KITTI个别标注存在坐标反了的情况,一不注意就会把异常数据送进训练集,拖低精度。

图像路径与标签路径的对应:KITTI原始图像与标签是分开两个目录的。建议先用脚本扫描所有标注文件,生成一个完整的索引清单,再按8:1:1的比例随机划分训练集、验证集和测试集。划分时使用固定随机种子,确保实验可复现。

转换脚本可以直接用Python写,注意用glob批量扫描文件,用os模块处理路径分隔符。如果数据量大,建议加个进度条显示,不然中间卡住了不好排查。转换完成后一定要做一次完整性检查,统计每个类别的样本数,确认类别分布均衡性。我在第一次转换时就是漏掉了Tram这个类别,结果训练时车辆这一类的recall一直在0.8左右上不去,查了半天才发现是数据里混入了未映射的类别ID,标签索引错位了。

2.3 数据清洗与类别平衡策略

KITTI原始数据存在几个现实问题,直接影响模型训练效果:

第一个问题是类别不平衡。原始数据中车辆多、行人次之、红绿灯很少。如果不做处理,模型会偏向于学车辆的特征,红绿灯的检测能力会很弱。我当时的统计数据是:车辆类别约28000个实例,行人约5400个,红绿灯实例不足400个。差距非常大。

解决思路分三步走:

  • 对红绿灯类别做重复采样。把包含红绿灯的图片在训练时多次参与迭代,通过设置每个epoch的采样概率权重来变相增加其样本量。
  • 采用分层抽样策略,在划分训练集时确保红绿灯样本按比例出现在每个子集中,避免某个子集完全没有红绿灯。
  • 结合离线数据增强,对包含红绿灯和小目标的图片做裁剪放大、亮度抖动、色彩偏移等处理,产生更多"虚拟样本"。

第二个问题是标注噪声。KITTI部分标注框并不紧贴目标轮廓,尤其是远处小目标,框会大一圈或者偏一点。这类框如果直接用来训练,会让模型对边界框回归产生偏差。我的做法是设置一个边缘纯度阈值:计算框内部目标边缘与框边缘的平均距离,如果相差过大就视为低质量标注,直接剔除。

第三个问题是图像分辨率。KITTI原始图像是1241x376的宽幅图,直接resize到640x640会丢失大量细节。特别是远处的小红绿灯,原始像素只有20x20左右,resize后基本上糊成一团。我当时是采用了LetterBox的预处理方式,将图像等比缩放并填充灰色边缘,而不是简单拉伸。这样能在不扭曲目标形状的前提下统一尺寸。

3. 红绿灯检测的专项优化

红绿灯是整个项目里最特殊的一类目标。它跟车辆、行人不一样,车辆和行人本质上是"找轮廓",红绿灯本质上是"找颜色"。把这两类问题放在同一个网络里解决,需要更精细的设计。

3.1 为什么红绿灯这么难检测

红绿灯检测的难点可以归结为三个:

目标尺度极小。标准红绿灯在图像中通常只有几十个像素宽,在1241×376的原始分辨率下还能辨认,但在YOLOv8默认输入640×640的采样下,红绿灯区域被压缩到不到10个像素,此时几乎不可能提取到有效的颜色特征。这是一道硬门槛,单纯加深网络解决不了,必须在数据层面和推理层面同时做文章。

颜色与光晕干扰。红灯和黄灯在夜间场景下会发出明显光晕,光晕覆盖区域比灯本身大好几倍。如果标注框紧贴灯体,模型学到的特征会被光晕污染;如果标注框包含光晕,则框的定位不准。我最终采用的策略是:训练时使用紧贴灯体的标注,但在推理时把置信度阈值适当调低,允许模型以稍大的框输出,再结合跟踪算法的位置预测做修正。

类别间极相似。红绿灯的红、黄、绿三色在灰度图上几乎无法区分,所以模型必须真的学到颜色信息。这要求训练数据里三类颜色的样本都要充足,且颜色增强不能太激进,否则会把红和橙、黄和绿搞混。我实测过,当Hue增强参数设为0.015以上时,红绿灯的mAP会明显下降,就是因为色相扰动让颜色特征不稳定了。

3.2 我用的红绿灯补充数据策略

由于KITTI自带红绿灯标注很少,我补充了三类数据:

第一,从KITTI原始图片中手工裁剪所有包含红绿灯的区域,标注其类型(红、黄、绿)。量不多但很精准,费点功夫,但换来的是模型回归颜色特征的基本能力。

第二,使用公开的交通灯检测数据集补充训练。这类数据集中红绿灯的尺度、视角更丰富,尤其包含大量近景和特写镜头,正好弥补KITTI中红绿灯多为远处小目标的不足。

第三,使用合成数据。写了一段程序生成模拟红绿灯画面:底图为随机道路背景,将三种颜色的灯体以不同大小、不同位置贴上去,加入光照变化和运动模糊。合成数据虽然分布与真实数据有差异,但极大丰富了颜色和尺度变化。

这三类数据混合后,红绿灯类别的训练样本量从不足400扩充到3000左右,基本与行人持平,训练时不会再因为样本量不足导致欠拟合。需要强调的是,补充数据不能喧宾夺主。混合比例上我控制在补充数据不超过总量的30%,否则模型的场景泛化能力会被合成数据的分布偏移带偏。

3.3 置信度阈值与NMS的调参经验

YOLOv8在推理阶段有两个关键参数:conf_thres(置信度阈值)和iou_thres(NMS的IoU阈值)。默认值分别是0.25和0.45,但对红绿灯这类小目标,默认参数的直接结果就是大量漏检。

我的调整经验是:

  • conf_thres整体降至0.15。红绿灯在远距离时特征模糊,置信度天然偏低。降到0.15后,虽然误检会增加,但漏检显著减少。配合后面的类别置信度校准,可以在不牺牲太多精度的情况下大幅提高召回率。
  • iou_thres从0.45降到0.35。因为红绿灯之间距离近,相邻的不同方向信号灯(比如直行灯和左转灯)框可能重叠,NMS过严会把两个框合并成一个,直接丢类别。调低IoU阈值后,多个目标能同时输出。
  • 开启agnostic_nms=False。确保不同类别之间独立做NMS,防止"车辆框覆盖红绿灯框"这类类别间误抑制。

调参后测试集上的红绿灯recall从0.67提升到了0.86,代价是误检略微升高。由于自动驾驶系统下游通常还有状态机做校验,误检可以通过时序一致性过滤掉,所以这个tradeoff是值得的。

4. 训练流程与深度优化实操

数据准备好了,接下来就是训练环节。这里我会完整走一遍全流程,包括训练参数设置、损失函数选择、以及我在优化过程中遇到的具体问题和解决办法。

4.1 YOLOv8训练配置与参数选择

启动训练的命令并不复杂,但参数值的选择会直接影响最终效果。我当时在单卡环境下训练,配置如下:

yolo train data=kitti.yaml model=yolov8m.yaml epochs=200 imgsz=640 batch=16 lr0=0.01

这里有几个关键参数值得展开讲:

  • 模型选择:我在yolov8n、yolov8s、yolov8m三个规格之间做了对比。n模型速度快但小目标召回差;s模型是平衡点;m模型精度最高但推理帧率会掉到20 FPS附近。最终以yolov8s为主,理由是在嵌入式设备上能跑到30 FPS以上,且红绿灯的mAP50能达到0.82,满足项目需求。如果追求极限精度可以上m规格,但推理端压力会成倍增加。
  • 输入分辨率imgsz:设为640还是1280是重要决策。KITTI原始图是宽幅图,直接resize到640会把整幅图压扁。我采用了带填充的LetterBox方案,保证目标的长宽比不变。如果显存允许,实际可以试imgsz=960,红绿灯小目标的mAP有肉眼可见的提升,但训练时间直线上升。对于快速迭代验证方案,640够用。
  • batch size:我习惯先用小batch训练起来看loss曲线趋势,再逐步调大。batch太小时BN的统计量不稳定,容易震荡;batch太大则显卡显存会不够,且学习率需要对应调大。
  • epoch数和早停策略:设置了patience=30的早停机制。如果连续30个epoch验证集mAP没有提升就自动停止,这能省不少训练时间。我实际跑的过程里,大约在160轮左右触发了早停,说明模型已经收敛。
  • 优化器:YOLOv8默认用SGD,我对比过AdamW。SGD在目标检测这种大模型任务上收敛更稳定,最终mAP比AdamW高约1.2%。AdamW前期收敛更快,但后期容易在局部最优附近震荡。建议你现阶段直接默认SGD,不必折腾。

4.2 数据增强策略的取舍与实现

YOLOv8内置了多种数据增强,各有各的脾气。我用一组对比实验把关键增强开关过了一遍,结论如下:

增强手段是否开启效果说明
Mosaic开启对车辆和行人检测提升明显,增强多尺度能力
MixUp关闭对红绿灯小目标有副作用,混合后颜色特征被污染
HSV增强开启但饱和度幅度减半保留颜色信息的前提下提升泛化
随机翻转开启注意红绿灯位置会左右反转,语义上完全可以接受
自动白平衡关闭会改变颜色分布,影响红绿灯分类准确性

Mosaic是YOLOv8最核心的增强手段,它把4张图拼成1张,让模型在训练时一次看到4种不同场景,对小目标和遮挡目标尤其有利。但有个细节:Mosaic拼图中如果包含了红绿灯类别,且该红绿灯本身体积小、对比度低,拼图后几乎不可见。因此我写了自定义数据加载逻辑,在Mosaic模式中保证每个batch至少包含一定比例的红绿灯实例,否则强制补充。

4.3 训练结果分析与类别级指标

训练结束后,最重要的是看类别级的mAP指标,而不是只看总mAP。很多人训练完看一个overall mAP就结束了,这是不对的。我的测试集统计结果如下:

类别mAP50mAP50-95说明
车辆0.9530.712效果最好,各类车型均识别准确
行人0.9120.642遮挡状态下容易丢,但整体可用
红绿灯0.8640.568远距离小目标仍有提升空间

红绿灯的mAP50-95偏低,说明边界框定位精度不足。这是小目标的共性难题,因为框的偏差绝对值很小,但在mAP50-95这种对IoU敏感的评价指标下会被放大。从实际部署的角度看,红绿灯的定位精度其实够用——信号灯是固定目标,即使框偏了几个像素,只要类别正确,结合时序跟踪完全能弥补位置误差。

4.4 多尺度训练与Anchor设置的优化

YOLOv8是Anchor-Free结构,没有传统意义上的预设锚框,但多尺度训练策略仍对最终效果影响显著。

我开启了多尺度训练,输入尺寸在480到960之间随机变化。这个策略让模型在不同尺度下都能保持稳健的检测能力。实际效果是:车辆mAP50提升0.7%,行人提升1.1%,红绿灯提升1.8%。红绿灯提升最明显,因为多尺度训练让模型在训练时有机会以更大尺度观察小目标。

另一个处理是自适应图片缩放。推理阶段根据输入图像的宽高比,动态决定缩放比例和填充位置,而不是直接拉伸到固定大小。红绿灯的宽高比通常是竖长条形,如果在LetterBox填充时边缘留白不够,会切掉信号灯区域。我验证后决定在推理阶段,对标准道路图像不采用全局统一缩放,而是按y轴中心区域保持原分辨率、两侧区域普通缩放,让红绿灯这类高处目标尽量保留原始像素密度。

5. 实测部署与推理优化

训练出模型只是第一步,真正的考验是部署到实际环境中能跑多快、多准、多稳。这一章分享我做推理优化和部署踩坑的经验。

5.1 模型导出与加速方案对比

YOLOv8官方支持导出为ONNX和TensorRT格式。我在部署时对比了三种推理方式的性能(测试设备为常见的车载工控机级别GPU):

推理格式平均推理耗时FPS精度损失
PyTorch原生约62ms约16 FPS无
ONNX Runtime约38ms约26 FPS无显著损失
TensorRT FP16约19ms约52 FPSmAP损失约0.3%

TensorRT FP16带来的52 FPS完全可以满足自动驾驶场景的实时性要求。精度损失0.3%在可接受范围内,毕竟检测的是道路目标,不是毫米级精度的工业测量。导出过程中有个经典坑:TensorRT对浮点运算的精度敏感,导出时如果图优化级别过高,某些卷积层会被错误融合,导致红绿灯的颜色判断失常。解决方法是导出时锁定op级别为标准卷积计算,并固定不动输入尺寸,用固定尺寸导出的TensorRT引擎比动态尺寸引擎快约15%。

5.2 推理端置信度校准的实操技巧

部署后我又做了一层置信度校准。YOLOv8直接输出的置信度在不同类别上有偏差:车辆的置信度普遍偏高(0.8+),而红绿灯普遍偏低(0.3-0.5)。直接用一个全局阈值,要么车辆误检多,要么红绿灯漏检多。

我的做法是给每类目标设置独立的置信度阈值:

类别置信度阈值依据
车辆0.50车辆样本量大、特征明确,低阈值只会带来大量误检
行人0.45行人特征中等,稍微低一点可以提升遮挡目标的召回
红绿灯0.20红绿灯特征弱、小目标多,必须低阈值保召回

这组阈值实际部署后效果很好。车辆误检从每帧平均0.8个下降到0.2个,红绿灯召回率从68%提升到85%。自动化驾驶的下游模块对车辆置信度要求高,因为误刹车比漏刹车更危险;而红绿灯则是漏检更危险,所以阈值策略完全符合业务逻辑。

5.3 后处理流程与跟踪算法衔接

单独一帧的检测结果总是会有噪声,实际系统需要利用时序信息来平滑。我这里用了轻量级的追踪思路:对检测框做基于IoU的帧间匹配,简单说就是把相邻两帧中距离近、类别相同的检测框关联成同一条轨迹。用库实现的话可以用开源的跟踪算法,但要理解其核心逻辑——它本质上维护一个状态向量和速度估计,然后做卡尔曼滤波预测。

这种跟踪带来的最大收益体现在红绿灯状态判断上:单帧可能因为遮挡或模糊漏检,但跟踪算法能根据前几帧的位置预测出红绿灯继续存在,并等待下一帧确认。这种"预测-确认"机制让红绿灯检测的时序稳定性大大提升。

6. 常见问题与排查技巧实录

训练和部署过程中总会冒出各种奇奇怪怪的问题。这里整理一份速查表,每一条都是实际踩过的坑。

6.1 训练过程类问题

问题1:loss不下降或震荡剧烈

原因通常有两个:一是学习率设置太大,SGD对学习率非常敏感,lr0=0.01以上大概率会震荡;二是batch size太小导致BN统计不稳定。我的排查顺序是:先看lr曲线确认学习率是否按计划衰减,再看batch size是否小于8。解决办法是learning rate从0.01降到0.005,如果还震荡就把输入分辨率降一档。

问题2:车辆类别mAP很高,但红绿灯为零

这是最典型的类别遗漏问题。排查思路是看label文件中红绿灯类别ID是不是2,再看训练时数据加载是否真的包含了红绿灯样本。有很多时候是数据划分脚本写错了,红绿灯图片全部被分到了验证集,训练集一个都没有。划分后务必单独统计每个子集的类别分布。

问题3:验证集mAP比训练集还高

多半是数据集划分时出现了数据泄漏。KITTI是视频序列抽帧,相邻帧极其相似,如果随机划分,验证集会包含大量与训练集几乎相同的图片。正确做法是按视频序列分组划分,确保同一个场景的帧不会同时出现在训练集和验证集。

6.2 推理部署类问题

问题1:TensorRT推理结果与PyTorch不一致,红绿灯类别错乱

多数情况是动态输入尺寸导致的。TensorRT在动态尺寸模式下会为不同尺度创建不同的优化plan,切换尺寸时可能错误复用。解决方法是固定输入尺寸,用640x640导出、640x640推理。

问题2:GPU利用率低,FPS上不去

先看batch size是否为1。推理阶段batch size=1时GPU并行度不足,可以尝试NVIDIA的并发优化,或者增加推理batch。还有一个常见原因是数据的前处理和后处理在CPU上进行,这些环节会成为瓶颈,建议把归一化、缩放操作也搬到GPU上用TensorRT的预处理层完成。

问题3:夜间场景红绿灯大量漏检

我实测过,夜间红绿灯的漏检率比白天高约20%。原因是信号灯亮度远高于周围环境,导致模型提取的特征被高光区域干扰。解决思路是训练时加入夜间图片做风格迁移增强,同时推理时对高光区域做局部对比度拉伸,让模型更容易提取颜色特征。这部分效果提升明显,但增加了一定的预处理耗时。

6.3 数据与标注类问题

问题1:标注框与目标不贴边

KITTI的低质量标注会让模型学到错误的框回归目标。我在预处理时设计了自动框校准逻辑:用简单图像分割方法在标注框内提取目标主体区域,计算主体区域的包围盒,如果与标注框的IoU小于0.8,就判定为低质量标注并剔除。

问题2:类别混合标注错误

偶尔会出现Car标成Van的情况。这类错误单靠人工无法完全避免,我的应对策略是在训练时使用标签平滑(label smoothing),降低模型对硬标签的过拟合,让模型对少数错误标注的容忍度更高。

7. 项目复盘与经验总结

最后聊几件我在实操中更有体会的事情。

第一次全流程跑下来,我发现真正花时间的不是训练模型本身,而是数据准备和反复调参。KITTI口口声声说"标注完善",但真用起来各种细节问题不断。建议大家在做任何检测项目前,先花至少一天时间把数据彻底摸透,统计每个类别的样本量、框的尺寸分布、遮挡比例,心中有数再动手,后面能少走很多弯路。

红绿灯检测这件事,如果只看单类mAP,可能永远觉得"还不够"。但结合实际场景想清楚:红绿灯是位置固定的目标,连续视频帧中随时间变化的置信度可以形成很强的先验知识。把单帧检测与时序确认结合之后,系统的有效检出率其实已经接近实用水平了。我的体会是,检测模型只是感知的一部分,后续的工程化处理同样重要。

YOLOv8作为检测器本身的性能上限其实很高,真正拉开差距的是对数据的理解深度和优化的精细程度。一个通用检测模型能连续检测车辆、行人和红绿灯,并且达到可部署的精度与速度,说明这套流程是完整且可复现的。后续如果要扩展,可以考虑加入交通标志识别、车道线检测和3D目标检测,它们和现有的2D检测一起,能构建更完整的自动驾驶感知基线。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询