3. 视觉感知算法在EyeQ上的部署
EyeQ系列芯片(EyeQ3/EyeQ4/EyeQ5)是Mobileye视觉感知算法的专用载体,其核心设计思路是把深度神经网络推理、传统计算机视觉算子、以及多路视频流水线固化到专用加速器中。理解这五类感知任务在EyeQ上的部署方式,关键不是记住"用了什么网络",而是理解每类任务在芯片上占用的计算资源、输入输出形式、以及它们如何共享同一帧图像数据。
一、EyeQ的部署基础:从图像到感知结果
EyeQ的典型输入是单目或多目摄像头的YUV/RAW图像,分辨率常见为1280×960或1920×1080,帧率30fps。芯片内部由多个异构计算单元组成:VMP(Vector Microcode Processor)负责像素级预处理与光流、MPC(Multi-threaded Processing Cluster)负责多线程控制与后处理、PMA(Programmable Macro Array)负责卷积加速,以及专用的CNN加速器(EyeQ4起显著增强)。五类感知任务并非各自独立跑一遍完整网络,而是共享底层特征:前几层卷积提取的边缘、纹理、梯度信息被多个任务复用,这是EyeQ能在有限功耗(约3W)下同时运行多任务的关键。
二、五类任务的部署要点
车道线检测:EyeQ上通常采用"语义分割+曲线拟合"的两段式。前端用轻量CNN对图像下半部分做逐像素分类,输出车道线、路缘、路面标记的概率图;后端在VMP上用RANSAC或三次多项式拟合出车道线方程,输出为y = a·x³ + b·x² + c·x + d的系数。部署时ROI通常限制在图像下方60%区域,分辨率可降采样到640×480,以降低PMA负载。
车辆检测:采用锚框(anchor)检测头,输出目标框、类别(轿车/卡车/巴士)和距离估计。EyeQ上常用单阶段检测器(类似SSD/YOLO的轻量变体),在特征图上直接回归。距离估计不依赖激光雷达,而是通过目标框底边在图像中的位置结合相机标定参数反推:Z = f·H / (y_bottom - y_horizon),其中f为焦距,H为相机高度,y_horizon为地平线像素行。
行人检测:与车辆检测共享主干网络,但增加高分辨率特征分支,因为行人目标更小、姿态变化更大。EyeQ上会针对行人做专门的ROI放大和难例挖掘训练。输出包括行人框、朝向和粗略的骨骼关键点(用于判断是否在行走)。
交通标志识别:分两步——先检测圆形/三角形/矩形标志区域,再对裁剪出的标志块做分类(限速、禁止、警告等)。EyeQ上分类网络非常小(输入32×32或48×48),因为标志类别有限且形状规整。部署时要注意颜色空间转换:标志检测对红色和蓝色敏感,通常在YUV空间直接做阈值分割,比RGB更省算力。
可行驶区域分割:这是最"重"的任务,需要对全图逐像素判断是否可行驶(路面、草地、障碍物)。EyeQ上采用编码器-解码器结构,编码器降采样提取语义,解码器上采样恢复分辨率。输出为二值或三值掩码(可行驶/不可行驶/未知)。部署时常用空洞卷积替代池化,以保持空间分辨率同时扩大感受野。
三、部署中的实际约束与调优
在EyeQ上部署这五类任务,最常遇到的瓶颈不是算法精度,而是内存带宽和功耗。以EyeQ4为例,同时运行五类任务时,DDR带宽占用可能接近上限。实际工程中会采取以下措施:
- 特征图复用:车道线和可行驶区域共享编码器前几层,车辆和行人共享检测头前的特征图,避免重复计算。
- ROI分级:车道线只处理图像下半部分,交通标志只处理图像上半部分,行人检测在车辆检测结果附近做二次精检。
- 时序降频:交通标志识别不需要每帧运行,可每3帧或5帧执行一次;车道线在高速场景可降低到15fps。
- 量化校准:INT8量化时,用真实道路数据做校准集,确保激活值动态范围不溢出。典型校准集需要500~1000帧。
四、结果输出与下游接口
五类任务的输出最终汇入MPC做时序融合。车道线输出为多项式系数和置信度;车辆和行人输出为目标列表(ID、位置、速度、类别);交通标志输出为标志类型和位置;可行驶区域输出为掩码图。这些结果通过EyeQ的CAN或以太网接口发送给域控制器或执行器。部署时要注意:输出数据结构必须与下游约定一致,例如目标ID的分配策略、坐标系定义(图像坐标系还是车辆坐标系)、时间戳对齐方式。这些接口细节往往比算法本身更容易在集成阶段出问题。
总结来说,EyeQ上的视觉感知部署是一个算力、带宽、精度三者的平衡过程。理解每类任务的输入输出、共享关系和资源占用,比单纯追求某个任务的精度更有工程价值。