两轮车载图像感知与端侧视觉

端侧视觉

端侧视觉与应用场景

端侧视觉是指在终端设备上实现图像处理和计算机视觉的技术,它可以在设备本地进行计算和数据处理,支持实时图像处理和视觉分析。

AI领域是端侧视觉落地产品和方向非常多的领域,如手机端、手表、智能监控设备、平板电脑。目前的几个风口方向,如特斯拉FSD自动驾驶,也采用了纯视觉的端侧解决方案。VR和AR等视觉领域、机器人领域也采用了端侧视觉相关的技术。

多种视觉方案的区别

整体的视觉方案总结成5种,包括端侧视觉、云端视觉、混合视觉、边缘云视觉和传感器级视觉。对比的4个维度有数据处理位置、实时性要求、网络依赖性和用户的隐私与安全。

端侧视觉领域相关技术

我们在本地或用户端采集数据,通过训练模型的方式,把模型放到云端或端侧进行部署。接着服务端进行请求,通过前向推理的过程得到响应,反馈给服务端。

在端侧和云侧算法需要考虑很多因素,端侧会考虑系统架构、性能优化、并发处理、容错与故障处理、监控和日志、版本管理、安全性、合规性、资源管理等,云端则会考虑云服务选择、成本管理、弹性伸缩、数据传输和存储、服务级别协议(SLA)、云端安全等。

云端和端侧的主要区别在于推理过程,不得不提推理系统和推理引擎。推理系统保证算法推理的稳定性,推理引擎更多考虑具体的实施细节。

回归本源,从AI系统的全栈架构中看,可以分为五部分。一是体系架构,包括CPU、GPU、NPU等硬件设备、网络加速器和超级计算节点。二是编译编程,编译器在AI领域包括AI专用的编译器和传统的编译器。三是框架,包括常见的PyTorch、TensorFlow等AI推理框架和芯片厂商自研的推理引擎。四是开发层,包括Python等常见的编程语言。五是应用层,包括大模型、CV、NLP等。

端侧视觉算法设计注意点

  • 严格约束功耗、热量、模型尺寸小于设备内存
  • 硬件算力对推理服务来说不足
  • 模型在边缘更容易受到攻击
  • DNN平台多样,无通用解决方案

端侧视觉算法如何优化提升效果和性能

  • 应用层算法优化:考虑到移动端部署的苛刻资源约束条件下,提供针对移动端部署的 AI 模型
  • 高效率模型设计:通过模型压缩的量化、剪枝、蒸馏、神经网络结构搜索(NAS)等技术,减少模型尺寸
  • 移动端框架-推理引擎:TensorFlow Lite,MNN、TensorRT,ONNX Runtime等推理引擎
  • 移动端芯片:高效低功耗芯片支持,如 Google Edge TPU,NVIDIA Jetson等系列

两轮车载图像感知

算法落地

两轮车载图像感知目前的落地在泊车功能,我们会智能识别车道线,通过摄像头处理车道线的位置信息、类别信息,从而判别停车是否规范。

相机标定

相机标定的目的是为了确定相机内部和外部参数,将图像坐标系与世界坐标系之间建立联系。

相机标定广泛应用于计算机视觉、机器人视觉、三维重建、虚拟现实等领域,它为后续的图像处理和分析提供了基础数据,保证了数据的精度和准确性,从而提高了系统的可靠性和稳定性。

坐标系

  • 世界坐标系:代表物体在真实世界里的三维坐标,坐标系用 <math xmlns="http://www.w3.org/1998/Math/MathML"> X w X_w </math>Xw、 <math xmlns="http://www.w3.org/1998/Math/MathML"> Y w Y_w </math>Yw、 <math xmlns="http://www.w3.org/1998/Math/MathML"> Z w Z_w </math>Zw表示;
  • 相机坐标系:代表以相机光学中心为原点的坐标系,光轴与z轴重合,坐标系用 <math xmlns="http://www.w3.org/1998/Math/MathML"> X c X_c </math>Xc、 <math xmlns="http://www.w3.org/1998/Math/MathML"> Y c Y_c </math>Yc、 <math xmlns="http://www.w3.org/1998/Math/MathML"> Z c Z_c </math>Zc表示;
  • 图像坐标系:代表相机拍摄图像的坐标系,原点为相机光轴与成像平面的交点,是图像的中心点,坐标系用X、Y表示;
  • 像素坐标系:由于图像的基本单位是像素,所以该坐标系是图像上点在图像存储矩阵中的像素位置,坐标原点在左上角,坐标系用u、v表示。前三个坐标系的单位是毫米,而最后一个坐标系的单位是像素。

(1)世界坐标系到相机坐标系的变换:世界坐标系是真实世界的基准坐标系,我们需要知道相机坐标系下的点在真实世界中的位置,利用其次坐标变换矩阵。

(2)相机坐标系到图像坐标系的变换:该变换可以看做是简单的射影变换(将相机看作小孔成像模型),将三维坐标变换为二维坐标。其中f为相机的焦距。

(3)图像坐标系到像素坐标系的变换:设图像x方向每毫米有 <math xmlns="http://www.w3.org/1998/Math/MathML"> f x f_x </math>fx个像素,y方向每毫米有 <math xmlns="http://www.w3.org/1998/Math/MathML"> f y f_y </math>fy个像素。其中 <math xmlns="http://www.w3.org/1998/Math/MathML"> c x c_x </math>cx、 <math xmlns="http://www.w3.org/1998/Math/MathML"> c y c_y </math>cy是图像坐标系原点在像素坐标系下的坐标。

内参矩阵取决于相机内部参数,外参矩阵取决于相机坐标系和世界坐标系的位置。

相机畸变

除了坐标系的因素,还需要考虑相机畸变的因素。径向畸变(枕型畸变、桶型畸变)是由于透镜本身质量决定的,切向畸变是由于透镜和像平面不平行导致,属于工程安装误差。

张正友标定法

目前解决这一问题成熟的一套方法是张正友标定法,感兴趣的同学可以看一下相关的论文。

Reference: Zhang Z . A Flexible New Technique for Camera Calibration[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2000, 22(11):1330-1334.

泊车方案的做法与难点

如图是算法引擎的架构。用户端创建订单后,通过硬件平台拿到码流信息交给算法引擎。算法引擎完成码流信息的编解码工作,解析完后送到算法,算法处理后把结果反馈给硬件平台,硬件平台再反馈给用户端。

方案的落地

我们做了CPU和NPU两套方案,CPU方案的难点在于传统算法的瓶颈较高,硬件对算法的内存以及耗时要求也比较严苛。NPU方案的难点在于算法组件的内存和实现技术突破。

后续算法优化的方向

  • 数据工程:多场景及多城市下的数据积累与数据仓库管理
  • 开发流程:开发流程规范化,支持算法快速迭代部署
相关推荐
林开落L7 分钟前
前缀和算法习题篇(上)
c++·算法·leetcode
远望清一色8 分钟前
基于MATLAB边缘检测博文
开发语言·算法·matlab
千天夜9 分钟前
激活函数解析:神经网络背后的“驱动力”
人工智能·深度学习·神经网络
tyler_download10 分钟前
手撸 chatgpt 大模型:简述 LLM 的架构,算法和训练流程
算法·chatgpt
大数据面试宝典10 分钟前
用AI来写SQL:让ChatGPT成为你的数据库助手
数据库·人工智能·chatgpt
封步宇AIGC15 分钟前
量化交易系统开发-实时行情自动化交易-3.4.1.2.A股交易数据
人工智能·python·机器学习·数据挖掘
m0_5236742117 分钟前
技术前沿:从强化学习到Prompt Engineering,业务流程管理的创新之路
人工智能·深度学习·目标检测·机器学习·语言模型·自然语言处理·数据挖掘
HappyAcmen27 分钟前
IDEA部署AI代写插件
java·人工智能·intellij-idea
SoraLuna30 分钟前
「Mac玩转仓颉内测版7」入门篇7 - Cangjie控制结构(下)
算法·macos·动态规划·cangjie
我狠狠地刷刷刷刷刷33 分钟前
中文分词模拟器
开发语言·python·算法