智能驾驶-任务部署-目标检测跟踪融合-网络模型设计优化部署---粗浅之言

本文主要是介绍智能驾驶-任务部署-目标检测跟踪融合-网络模型设计优化部署---粗浅之言,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

注意:杂乱无章,感兴趣可看
问题涉及有:硬件平台、软件系统框架、目标检测、目标跟踪、多传感器融合算法、网络模型设计、训练、优化、嵌入式部署等一系列技术体系;根据自己对相关方面的理解,现做一粗浅的小结。
硬件平台,如安霸的CV2,它主要有SOC和MCU;SOC上有一个linux系统,用于某些处理以及调度相关任务,比如调度视觉感知任务等;因为视觉感知处理相对耗时,且摄像头接在SOC上,所以被部署于SOC上,其它处理速度快的模块,被部署于MCU上,如控制模块等,当然从安全性角度考虑,控制模块也应该部署在MCU上,这样实时性控制更高,如果控制模块部署在SOC上,就会多了一步SOC通过UART或SPI总线等向MCU传输控制量的时间,安全性会低一些,当然,MCU上也应该有一个实时系统(如RTOS)做一些处理以及调度任务等;对于某个复杂功能而言,它可能包含多个处理模块,如感知、规划、控制等,这样就可以将感知模块部署于SOC,规划、控制模块部署于MCU,系统上电启动后,两边linux和rtos系统分别调度开启各个任务模块,此时状态机运行,然后SOC和MCU两边各个任务模块就可以通过UART或SPI总线传输任务间的交互数据和信号,彼此协调工作,从而实现整个功能。
目标检测主要包括视觉检测和雷达检测(如毫米波雷达、激光雷达),因为单一传感器检测的目标漏检率较高,安全性较低,且不同的传感器拥有不同的自身优势,如雷达测距较视觉准确,视觉可识别出目标物的类别等,所以多传感器融合是一种大趋势,可有效降低目标检测的漏检率,提高安全性,当然这也只是一定程度的降低漏检率,所以从安全性考虑,感知在自动驾驶还有很长的路要走,可以说是没有尽头,需要一直走下去,逐步提高汽车安全性,减少事故的发生;多传感器融合可降低漏检,另外也可实现各传感器的优势互补,集各传感器优势于一体,从而输出更好的感知结果。
多传感器融合就是将同一帧数据下的同一目标的不同传感器数据关联起来,单一目标的数据融合较简单,因为只有一个目标,而重点需要考虑的是多目标下的多传感器数据融合,因为这种情况下一方面需要考虑摄像头的m个目标和雷达的n个目标他们的同一目标关联问题,有m=n和m!=n的情况,即可能出现目标间的一对一、一对多或多对一问题需要处理;待同一目标关联起来之后,另一方面就是同一目标下不同传感器数据融合问题;
融合之后,就是另一问题——目标跟踪,单一目标的跟踪较简单,因为只有一个目标,是他是他就是他;重点考虑的也是多目标跟踪,因为这种情况下需要考虑不同帧之间同一目标的关联问题,即第t帧的m个目标和第t+1帧的n个目标如何关联,有m=n, m>n(有目标被遮挡或丢了)和m<n(有新目标出现了)的情况;另外,不同帧间同一目标的相似性该如何处理,通过位置、颜色还是什么描述子呢,这样计算相似性,稳定性、可靠性怎么样呢?,即也可能出现目标间的一对一、一对多或多对一问题需要处理;
多传感器融合可以看成是同一目标的一种横向数据关联,多目标跟踪也可看成是同一目标的一种纵向数据关联;
对于不同的任务,设计网络模型时,它的宽度和深度大小多少合适呢?这是一个需要思考的问题,我总觉得任务不同,应该有个与任务相适的网络宽度和深度,就相当于有个合适的表达式来表示输入与输出的关系,如果表达式太简单就无法表达,太复杂,虽说也可以表达,但就太过了,还是找个合适的才是最好的,但是现在合适的她不好找啊,没有方向;目前也只能通过多次实验、不断调整,以良好的精度为目标进行确定;网络其它结构也已参考当前论文中好的设计思想而设计,当然也还需要相应的图像处理、机器学习相关知识;如此,在实验中不断训练、调整、优化自己的网络模型;
根据任务场景的不同,选择合适的摄像头;由于摄像头自身,如鱼眼摄像头,采集的图像是存在一定畸变的,需要进行畸变矫正,然后不同的颜色空间的图像数据也存在不同的特性,所以也需要根据采集的原图像和网络需要的图像进行颜色空间转换,还需要进行一些其它预处理,如缩放、标准化等;另外训练数据集的量需要多大合适呢,目前好像也是越大越好,由于数据集通常是不足的,为了提高网络模型的性能,往往还需要进行数据扩充,如此,送入网络逐步训练、优化自己的网络,朝着越来越好而多次不停实验着;
网络模型训练好了,就需要思考该如何部署到嵌入式端应用了,可以通过将移动端框架,如腾讯的NCNN\TNN,阿里的MNN等移植到SOC的linux上进行编译,生成相应的头文件和库文件在arm-cpu上供调用;但这样对于实时性要求不高的任务而言是可行的;对于驾驶的目标检测等实时性要求高的任务而言就不可行了,这时就需要进行优化,软件优化是一方面,但主要还是需要根据专门的硬件进行相应的代码移植,通过硬件加速处理,提高计算速度;如,对于安霸的CV2芯片,里面貌似集成有NPU,然后安霸工程师根据该NPU开发出相应的SDK,此时,我们训练好自己的网络模型后,然后就可以通过人家提供的cvFlow工具进行模型转换,然后任务移植上去就可以使用人家提供的接口进行相应的调用处理了,此时就在NPU上进行计算了,看起来快了好多,此时你会觉得一切都是那么的美好;

这篇关于智能驾驶-任务部署-目标检测跟踪融合-网络模型设计优化部署---粗浅之言的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/790902

相关文章

MySQL 主从复制部署及验证(示例详解)

《MySQL主从复制部署及验证(示例详解)》本文介绍MySQL主从复制部署步骤及学校管理数据库创建脚本,包含表结构设计、示例数据插入和查询语句,用于验证主从同步功能,感兴趣的朋友一起看看吧... 目录mysql 主从复制部署指南部署步骤1.环境准备2. 主服务器配置3. 创建复制用户4. 获取主服务器状态5

MySQL深分页进行性能优化的常见方法

《MySQL深分页进行性能优化的常见方法》在Web应用中,分页查询是数据库操作中的常见需求,然而,在面对大型数据集时,深分页(deeppagination)却成为了性能优化的一个挑战,在本文中,我们将... 目录引言:深分页,真的只是“翻页慢”那么简单吗?一、背景介绍二、深分页的性能问题三、业务场景分析四、

Linux进程CPU绑定优化与实践过程

《Linux进程CPU绑定优化与实践过程》Linux支持进程绑定至特定CPU核心,通过sched_setaffinity系统调用和taskset工具实现,优化缓存效率与上下文切换,提升多核计算性能,适... 目录1. 多核处理器及并行计算概念1.1 多核处理器架构概述1.2 并行计算的含义及重要性1.3 并

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

如何在Ubuntu 24.04上部署Zabbix 7.0对服务器进行监控

《如何在Ubuntu24.04上部署Zabbix7.0对服务器进行监控》在Ubuntu24.04上部署Zabbix7.0监控阿里云ECS服务器,需配置MariaDB数据库、开放10050/1005... 目录软硬件信息部署步骤步骤 1:安装并配置mariadb步骤 2:安装Zabbix 7.0 Server

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

MyBatisPlus如何优化千万级数据的CRUD

《MyBatisPlus如何优化千万级数据的CRUD》最近负责的一个项目,数据库表量级破千万,每次执行CRUD都像走钢丝,稍有不慎就引起数据库报警,本文就结合这个项目的实战经验,聊聊MyBatisPl... 目录背景一、MyBATis Plus 简介二、千万级数据的挑战三、优化 CRUD 的关键策略1. 查

Golang如何对cron进行二次封装实现指定时间执行定时任务

《Golang如何对cron进行二次封装实现指定时间执行定时任务》:本文主要介绍Golang如何对cron进行二次封装实现指定时间执行定时任务问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录背景cron库下载代码示例【1】结构体定义【2】定时任务开启【3】使用示例【4】控制台输出总结背景