版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
任务4.5基于ADSF的目标检测算法开发学生手册任务4.5基于ADSF的目标检测算法开发【任务导入】 目标检测作为智能领域的核心基础,在智能驾驶中已经有相对成熟的应用。然而,基于AdaptiveAUTOSAR的算法开发需要复杂且繁琐的配置过程,我们将探索如何在ADSF框架中更简洁地开发目标检测算法。【学习目标】素质目标通过学习摄像头和激光雷达的接入方法,培养学生的研究兴趣;了解国内汽车市场现状,激发学生科技强国的责任感;通过对摄像头数据的可视化,培养学生综合分析能力。知识目标能理解自动驾驶系统ADSF框架在开发中的作用[K61];能描述基于ADSF框架的目标识别开发流程[K62]。能力目标能掌握目标检测算法中各工具的使用[A51];能运用开发手册查阅api接口相关信息[A52];能总结归纳Camera和Lidar开发流程的异同点[A53]。
【知识准备】Camera目标检测算法开发Camera所接收的数据是图像数据,在图像领域中比较成熟的是深度学习算法,对于目标检测来说有YOLO系列、SSD、Fast-RCNN算法等,在MDC上可以基于ADSF框架这类深度学习算法的开发,开发涉及Camera数据接收、节点间通信、MDCNN加速引擎、DVPP硬件加速实现图像预处理等内容。在“任务4.4-ADSF简介”中,已经学习关于ADSF的框架以及基础API接口,接下来将讲解如何使用ADSF框架进行Camera目标检测算法的开发。目标检测算法开发流程MDC针对NN(NeuralNetworks)神经网络,配备专门的NN加速引擎,NN加速引擎在软件上分为四层包括:Device层、Context层、Stream层、Task/Kernel层,如所示。Device层:指定计算设备,MDC上每个mini有一个Device,Device的ID都为0,都是一个独立的Device。Context层:Context在Device下,一个Context一定属于一个唯一的Device;Context与用户线程绑定,一个用户线程对应一个Context。Stream层:Device上的执行流,在同一个Steam中的任务是串行执行的,不是同一个Stream中的任务是并行执行的;开发者的编程阶段Task/Kernel:Device上真正的执行体,从属于Stream。图4-5-SEQ图4-5-\*ARABIC1NN加速引擎基于AI或者NN类的算法开发,一般包含以下4个步骤,如REF_Ref28429\h图4-5-2所示。图4-5-SEQ图4-5-\*ARABIC2开发流程模型训练准备训练好AI的模型,将AI模型(如Caffe框架的.caffemodel模型、ONNX框架的.onnx模型)通过MindStudio/ATC工具将已经训练好的AI模型转化成MDC支持的.om模型,可回顾“任务2.3基于AI框架应用的开发及调优”的实操内容。开发过程在MDCDevelopmentStudio集成开发工具中编写代码。调用功能软件框架Init函数初始化框架,其中同时包括了:初始化;调用功能软件框架Sub函数启动数据接收服务;调用功能软件框架Pub函数启动数据发送服务;调用功能软件框架AI模型加载函数加载已经转换好的OM模型;调用功能软件框架图像/点云处理函数做数据预处理;调用功能软件框架AI推理引擎做AI模型推理;调用功能软件框架图像/点云处理函数做数据后处理。编译工具使用交叉编译包部署交叉编译环境。运行在MDS中编译程序,并拷贝到MDC的AI处理器上运行。基于ADSF框架的开发流程接通Camera传感器参考“任务4.3MDC执行器和传感器接入”Camera的接入方法,保证Camera抽象中图像输出,确保节点能接受图像数据做算法处理。选定ADSF框架根据算法的输入输出选择通讯框架,例如Camera目标检测算法的输入是Camera的图像数据,输出是检测出的目标框,因此可以选择Camera目标检测框架作为Camera目标检测算法的通讯框架。MDC中提供的各ADSF框架如REF_Ref24794\h图4-5-3所示。也可通过“MDC6101.1.027-T000产品文档/智能驾驶应用算法开发/ADSFI智能驾驶服务框架/接口式框架”查看具体接口说明。图4-5-SEQ图4-5-\*ARABIC3ADSF自动驾驶服务框架代码开发调框架初始化:读取配置文件,启动发送与接收服务;NN初始化:创建context,载入模型,创建模型的输入与输出;获取输入图像;图像预处理:图像颜色空间转换与缩放处理;模型推理:将预处理的数据输入模型并执行推理;解析结果并发送:解析推理的结果,将结果发送出去。ADB接口加速ADB提供一套统一的接口,包括公共接口与基础算法接口,可实现MDC硬件加速的功能。ADB的接口API一般以Haf开头,具体调用方式可参考“MDC6101.1.027-T000产品文档/智能驾驶应用算法开发/加速库(ADB)”框架初始化CameraDetDemoApp::Initialize,如REF_Ref399\h图4-5-4所示;图4-5-SEQ图4-5-\*ARABIC4框架初始化NN初始化ImageDetInference::Initialize,如REF_Ref412\h图4-5-5所示;图4-5-SEQ图4-5-\*ARABIC5NN初始化获取输入图像CameraDetDemoApp::ObjectDetectionThread,如REF_Ref432\h图4-5-6所示;图4-5-SEQ图4-5-\*ARABIC6获取输入图像图像预处理,如REF_Ref448\h图4-5-7所示;图4-5-SEQ图4-5-\*ARABIC7图像预处理模型推理CameraDetDemoApp::ModelAddInput,如REF_Ref467\h图4-5-8所示;图4-5-SEQ图4-5-\*ARABIC8模型推理解析结果并发送,以Caffe框架中的YOLOv3为例,如REF_Ref484\h图4-5-9所示;图4-5-SEQ图4-5-\*ARABIC9解析结果并发送框架配置代码开发完成后,还需要修改框架的配置文件Config.yaml,每个框架都有一个需要配置的Config.yaml文件,配置文件中定义了日志模式、日志级别、框架输入输出的端口(instanceid)等重要信息,如REF_Ref4386\h图4-5-10所示。图4-5-SEQ图4-5-\*ARABIC10配置文件样例Lidar目标检测算法开发基于ADSF框架的Lidar目标检测算法开发流程与Camera目标检测算法的开发流程类似,总共分为5个步骤:框架选择、开发过程、编译、运行、可视化,如REF_Ref6329\h图4-5-11所示。图4-5-SEQ图4-5-\*ARABIC11开发流程框架选择框架的选择与Camera的框架选择依据基本一致,根据输入的激光雷达点云数据,输出的检测目标框(位置、大小、朝向)信息,和ADSF的Lidar目标检测框架的输入输出匹配对应的通讯框架,如REF_Ref1717\h图4-5-12所示。图4-5-SEQ图4-5-\*ARABIC12ADSF自动驾驶服务框架开发过程Lidar目标检测框架提供了Init()、Stop()、GetLidar()、SendObject()通信接口来完成通信服务的启动、停止及消息收发的功能。框架初始化:创建Lidar目标检测框架实例,调用Init()接口完成通信服务的启动,如REF_Ref2240\h图4-5-13所示;图4-5-SEQ图4-5-\*ARABIC13框架初始化Mviz初始化,如REF_Ref2393\h图4-5-14所示;图4-5-SEQ图4-5-\*ARABIC14Mviz初始化调用GetLidar()接口获取点云数据;核心算法代码开发;结果发送:调用SendObject()通信接口来完成检测结果AP消息的发送;将检测结果转换为viz-lib消息,调用viz-lib的Publish发送。第3)、4)、5)步,如REF_Ref3027\h图4-5-15所示。图4-5-SEQ图4-5-\*ARABIC15算法开发流程编译使用MDS(MDCDevelopmentStudio)工具导入整个ADSF_Sample工程。MDS中使用CMake和Make工具实现工程的编译,该过程将源文件编译为MDC上可运行的目标文件,如REF_Ref4326\h图4-5-16所示。①MDS通过build按钮完成对工程的编译;②编译后的目标二进制文件保存在build目录下,方便进行部署配置;图4-5-SEQ图4-5-\*ARABIC16算法编译Lidar目标检测应用可以运行在mini和Host,mini和Host二进制文件依赖不同,涉及AI算力的应用只能部署在mini。运行MDS编译完成后,在Ubuntu开发环境下打开终端,切换到ADSF_Sample的目录下,执行命令bash./get_target.sh,将adsf_sample/lidar_det复制到MDCHost或者Mini上;将获取的AP数据包,拷贝到MDCHost上,执行rtfbagplay***.bag--dds-network=192.168.1.6-l循环播放数据包;或者拷贝到MDCMini上,执行rtfbagplay***.bag–l;Host运行:进入lidar_det目录,修改配置文件,执行bashstart.shlidar_det_host命令,成功运行;Mini运行:进入lidar_det目录,修改配置文件,执行bashstart.shlidar_det_mini命令,成功运行。成功运行后的日志示例,如REF_Ref5361\h图4-5-17所示。图4-5-SEQ图4-5-\*ARABIC17成功运行打印日志示例 可视化激光点云的可视化可分为激光点云原始数据可视化和Lidar目标检测算法输出的3D障碍物可视化。激光点云数据可视化为了能够快速查看MDC的激光雷达数据,在版本中内置了Lidar可视化应用,需要在MDC和MViz上运行相应的操作和配置。在MDC上:进入/opt/cfg/conf_run/viz/目录,在viz_address.conf中添加上位机ip;进入/opt/platform/mdc_platform/script/,使用lidar_mviz_start.sh脚本启动Lidar_mviz应用。在MViz上:在Topic处选择一路lidar的Topic;如果观察到Status:Error,查看具体错误,如果是提示Transform错误,则复制提示的frame值,如REF_Ref6919\h图4-5-18所示。图4-5-SEQ图4-5-\*ARABIC18选择对应topic将frame值填写到FixedFrame处,如REF_Ref7112\h图4-5-19所示;图4-5-SEQ图4-5-\*ARABIC19填入frame值在3D显示区域即可查看到点云数据,如REF_Ref7180\h图4-5-20所示。图4-5-SEQ图4-5-\*ARABIC20点云画面3D障碍物可视化在MDC上操作完成后,开发者还可以到上位机进行3D障碍物可视化的操作,调用viz-lib的接口发送ObjectArray数据,数据接口可参考“MDC6101.1.027-T000产品文档/应用调测/MDCApplicationVisualizer使用/MVIz接口说明/MViz扩展数据类型/ObjectArray”查看3D空间的障碍物显示的字段。最终呈现的可视化效果如REF_Ref8996\h图4-5-21所示。蓝色框表示3D障碍物目标框,红色点表示原始的激光点云。图4-5-SEQ图4-5-\*ARABIC213D障碍物可视化
【任务实施】一、摄像头数据可视化启动mviz右键点击MDC_Application_Visualizer-Ubuntu20-3.0.002文件夹,在出现的选项中选择在终端打开,如REF_Ref22729\h图4-5-22所示。图4-5-SEQ图4-5-\*ARABIC22打开终端打开终端后运行rosore的命令启动ROS系统的核心节点,如REF_Ref22774\h图4-5-23所示。roscore图4-5-SEQ图4-5-\*ARABIC23启动ROS系统的核心节点在终端框中右键鼠标新建标签页,并输入以下命令,自动启动MViz,Mviz界面如REF_Ref24144\h图4-5-24所示。./run.py图4-5-SEQ图4-5-\*ARABIC24启动MViz2.启动摄像头1)在终端框中右键鼠标再次新建标签页,并输入以下指令,登录到mdc账户,密码为Huawei12#$,如REF_Ref22804\h图4-5-24所示。sshmdc@192.168.30.42图4-5-SEQ图4-5-\*ARABIC25登录mdc账户继续在该终端框中输入以下指令,启动摄像头脚本文件,如REF_Ref22836\h图4-5-25所示。cd/opt/platform/mdc_platform/script/./camera_mviz_start.sh71图4-5-SEQ图4-5-\*ARABIC26启动脚本文件3)在打开的MViz显示界面上,右键Displays并勾选MDCVision选项,如REF_Ref22866\h图4-5-26所示。图4-5-SEQ图4-5-\*ARABIC27勾选MDCVision4)勾选之后,摄像头的界面就可以在MDCVision插件中实时显示出来,如REF_Ref22895\h图4-5-27所示。图4-5-SEQ图4-5-\*ARABIC28摄像头界面二、调用摄像头进行轨迹跟踪导入工程文件1)打开主文件夹/“MDC_Development_Studio-3.0Ubuntu20”文件夹,双击mdc_development_studio图标,启动MDS软件,如REF_Ref23013\h图4-5-29所示。图4-5-SEQ图4-5-\*ARABIC29启动MDS2)启动之后,会弹出如REF_Ref24280\h图4-5-30所示的界面,在“Workspace”处确认工作空间路径。(可选择勾选)弹窗左下角“Usethisasthedefaultanddonotaskagain”,以方便后续使用,最后单击“Launch”,运行MDS软件。图4-5-SEQ图4-5-\*ARABIC30确定MDS工作空间路径3)进入MDS界面后,然后点击“File”->“Import”选项,如REF_Ref23153\h图4-5-31所示。图4-5-SEQ图4-5-\*ARABIC31点击导入选项4)在弹出来的界面中,点击“MDC”->“ImportasaMDCProject”->“Next”选项,如REF_Ref23196\h图REF_Ref23196\h4-5-32所示。图4-5-SEQ图4-5-\*ARABIC32选择导入类型5)在“ImportasaMDCProject”窗口中,点击“Browse”,选择导入项目的路径,如REF_Ref23277\h图4-5-33所示。图4-5-SEQ图4-5-\*ARABIC33选择导入项目的路径6)找到eisa/Sample/cam_det文件夹,点击“打开”,如REF_Ref23316\h图4-5-34所示。图4-5-SEQ图4-5-\*ARABIC34选择cam_det项目文件夹7)随后跳转回到“ImportasaMDCProject”窗口,点击“Finish”。完成示例工程的导入,如REF_Ref23375\h图4-5-37所示。图4-5-SEQ图4-5-\*ARABIC35完成工程导入8)导入成功后,可在左侧工具栏中查看该工程文件的目录,工程中包含轨迹追踪和定位两个应用的相关程序,如REF_Ref23408\h图4-5-37所示。图4-5-SEQ图4-5-\*ARABIC36导入成功源码编译发送1)在MDS菜单栏点击Build(类似小锤子的选项)对该工程进行编译,编译成功的结果如REF_Ref22637\h图4-5-37所示。图4-5-SEQ图4-5-\*ARABIC37编译程序2)编译源码之后,右键cam_det工程,在出现的选项中点击RunAs之后打开RunConfigurations运行配置选项,如REF_Ref29727\h图4-5-38所示。图4-5-SEQ图4-5-\*ARABIC38进入运行配置打开的运行配置界面,其中具体配置项包括:Executable(执行文件):camera_track(轨迹追踪应用)Connetion(连接设备):RemoteHostRemoteAbsoluteFilePathforMDCApplication(MDC的远程绝对路径):/home/mdc/wks/camera_tracker配置完成后点击Applyandclose按键,完成运行配置,如REF_Ref23542\h图4-5-40所示。图4-5-SEQ图4-5-\*ARABIC39完成运行配置配置完成后点击运行按键,将编译后的轨迹追踪执行文件发送到MDC指定的路径上,如REF_Ref8585\h图4-5-40所示。图4-5-SEQ图4-5-\*ARABIC40运行程序同理,还需要将定位应用的执行文件发送到MDC上(参考上述步骤)。再次右键cam_det工程,在出现的选项中点击RunAs之后打开RunConfigurations运行配置选项,如REF_Ref10034\h图4-5-41所示。 图4-5-SEQ图4-5-\*ARABIC41进入运行配置打开的运行配置界面,其中具体配置项包括:Executable(执行文件):loacation(定位应用)Connetion(连接设备):RemoteHostRemoteAbsoluteFilePathforMDCApplication(MDC的远程绝对路径):/home/mdc/wks/location配置完成后点击Applyandclose按键,完成运行配置,如REF_Ref10779\h图4-5-42所示。图4-5-SEQ图4-5-\*ARABIC42完成运行配置配置完成后点击运行按键,将编译后的轨迹追踪执行文件发送到MDC指定的路径上,如REF_Ref10812\h图4-5-43所示。图4-5-SEQ图4-5-\*ARABIC43运行程序在MDC上运行定位应用在桌面空白出右键鼠标打开终端框,如REF_Ref11664\h图4-5-44所示。图4-5-SEQ图4-5-\*A
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《电路建模与基本定律:大学本科电气信息类专业电路原理第一章教案》
- 初三化学专题复习:基于微观探析与动态平衡观的离子反应实质与物质共存判断
- 建筑工地技术文物保护计划
- XX客运站车务段安全生产月活动总结
- 防溺水安全知识竞赛试题及答案2026
- 施工现场养老机构安全整治安全技术交底
- (完整版)康复医学治疗技术初级考试试题及答案
- 2026年卫生人才评价考试(临床医学工程技术-初级)历年参考题库含答案
- 学校食堂食品安全知识培训内容
- 2026年幼儿园安全知识竞赛试题有答案
- DB32∕T 4191-2022 江苏省绿色航道建设指南
- 《液化天然气甲醇燃料加注趸船规范》2025
- DB61T 568-2013 地理标志产品 定边荞麦
- DB11∕T 2227-2024 职业健康检查质量控制规范 纯音听阈测试
- 四川省内江市2024-2025学年八年级下学期期末考试数学试卷(含答案)
- 西工大航空航天技术概论教学大纲
- 消防减灾安全教育课件教学
- 临床儿科实习生出科试题及答案2025版
- 侗歌弹唱教学课件下载
- 碳排放培训课件
- 脐带脱垂体位急救处理
评论
0/150
提交评论