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

端侧视觉

端侧视觉与应用场景

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

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方案的难点在于算法组件的内存和实现技术突破。

后续算法优化的方向

  • 数据工程:多场景及多城市下的数据积累与数据仓库管理
  • 开发流程:开发流程规范化,支持算法快速迭代部署
相关推荐
尚可签1 分钟前
怎么降低AI率(文本)?最近发现了非常简单的思路
人工智能
咕噜企业分发小米4 分钟前
阿里云AI教育产品如何助力企业提升客户粘性?
人工智能·microsoft·阿里云
漫随流水7 分钟前
leetcode算法(145.二叉树的后序遍历)
数据结构·算法·leetcode·二叉树
华如锦10 分钟前
四:从零搭建一个RAG
java·开发语言·人工智能·python·机器学习·spring cloud·计算机视觉
Tony_yitao12 分钟前
22.华为OD机试真题:数组拼接(Java实现,100分通关)
java·算法·华为od·algorithm
2501_9418752815 分钟前
在东京复杂分布式系统中构建统一可观测性平台的工程设计实践与演进经验总结
c++·算法·github
F_D_Z16 分钟前
TensorFlow Playground 交互式神经网络可视化工具
人工智能·神经网络·tensorflow
sonadorje17 分钟前
梯度下降法的迭代步骤
算法·机器学习
漫随流水19 分钟前
leetcode算法(94.二叉树的中序遍历)
数据结构·算法·leetcode·二叉树
杭州泽沃电子科技有限公司21 分钟前
核电的“热血管”与它的智能脉搏:热转换在线监测如何守护能源生命线
人工智能·在线监测