【《基于卷积网络立体匹配算法分析案例》12000字】_第1页
【《基于卷积网络立体匹配算法分析案例》12000字】_第2页
【《基于卷积网络立体匹配算法分析案例》12000字】_第3页
【《基于卷积网络立体匹配算法分析案例》12000字】_第4页
【《基于卷积网络立体匹配算法分析案例》12000字】_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

[15]18.4714.9611.1812.02表1.4描述了各个网络模型在2,3,4,5像素误匹配率的表现,误匹配率越小代表算法效果越好,37-3Conv代表输入感受野为37像素大小,卷积网络层数为3层的情况。在2,3,4,5误匹配率上本文方法分别比MC-CNN-acrt少4.16%,4.92%,5.22%,5.37%。由图1.9我们可以看出,4Conv与9Conv的网络模型是收敛最快的,并且在像素误匹配率中,9Conv网络模型在2,3像素误差中表现最好,4Conv网络模型在4,5像素误差中表现最好。其中,4Conv与9Conv网络卷积核参数每一层均相同,并且一味的增加卷积层层数并不能使匹配结果更好。1.3有关感受野与立体匹配结果的讨论感受野(ReceptiveField)REF_Ref66095421\r\h[45]的概念是卷积网络中的每一层输出特征图上的每个位置在上一个特征图中映射区域的大小,即特征图上的某个点对应输入图上的区域。如图1.10所示,最右边蓝色圆圈的感受野对应最左边整幅输入图像。一般情况下,网络层数越多,深度越深的网络结构,其感受野范围越大。图1.10以图像化方式表示感受野感受野的计算公式如下式表示,RF代表当前层感受野大小,是前一层感受野大小,kernel_sizel+1是当前层卷积核大小,dilationl+1是当前层的空洞率,stridel是前一层卷积的步长。对于本文使用的网络,最后特征图上对应的感受野均为整幅输入图像,表1.表1.54Conv网络结构各层感受野计算layer#kernel_sizestridedilationpaddinginput_sizeoutput_sizereceptive_field11011037281021011028191931011019102841011010137表1.69Conv网络结构各层感受野计算Layer#Kernel_sizestridedilationpaddinginput_sizeoutput_sizereceptive_field15110373352511033299351102925134511025211755110211721651101713257511013929851109533951105137输入感受野越大,其中蕴含的图像纹理信息越多,匹配正确率会自然提高。本小节针对不同尺寸输入感受野继续增加实验,将不同的网络结构与不同的感受野相结合,以验证上述理论。表1.7不同输入感受野情况下,各网络模型在KITTI2015上的误匹配率(%)输入图像尺寸网络模型2-pixel-error3-pixel-error4-pixel-error5-pixel-error3Conv11.4910.298.797.9229×294Conv12.769.988.637.845Conv12.810.18.788.037Conv11.2110.449.138.3633×334Conv12.349.598.257.458Conv11.1110.318.637.844Conv10.617.696.415.6641×415Conv10.397.646.435.698Conv11.038.216.966.2110Conv11.478.517.216.454Conv10.487.556.245.4745×455Conv10.547.696.445.698Conv10.787.886.625.85结合表1.7与表1.4,我们可以看到随着输入感受野的增大,误匹配率也逐渐降低。将输入图像尺寸从29×29像素提升到45×45像素时,2,3,4,5像素的误匹配率分别下降了2.28%,2.43%,2.39%,2.37%。直观来看,输入感受野的增大会带来更多的匹配信息,比如增加感受野中的纹理区域、边缘区域等,从而降低误匹配率。1.4卷积核金字塔图像特征提取通过1.2部分的实验,我们可以看出对于一些层数相同的网络结构,感受野越大,匹配正确率表现越好。在网络层数相同的情况下,由1.1.2中的网络参数计算公式可以得出,感受野越大也意味着整体网络参数越多,网络得到的匹配正确率越高。本小节使用卷积核金字塔图像特征提取方法,首先用小尺寸卷积核对图像进行特征提取,获得局部图像细节信息,进而用大尺寸卷积核对图像特征进行汇总,获得全局图像特征信息,同时增大网络参数数量,使网络得到充分训练,进而提高匹配正确率。图1.11卷积核金字塔特征提取示意图类比于经典的神经网络架构,如LeNetREF_Ref62236332\r\h[47],AlexNetREF_Ref66901374\r\h[48],VGGNetREF_Ref66901389\r\h[49]等网络结构,我们可以看到卷积核尺寸设置通常是由大到小进行设置,这样设置的目的是为了在卷积网络卷积运算开始的时候将特征图尺寸快速缩小,再配合后续网络层中恒定尺寸的卷积核进行运算。本文使用的卷积网络在特征提取过程中没有使用Padding操作,并且输入图像尺寸较小,所以不需要将其特征图尺寸快速缩小。由图1.11所示,本章节首先使用了较小尺寸的卷积核对输入图像局部信息进行运算提取,随后使用较大尺寸的卷积核将提取到的特征进行汇总,此种方法可以在相同网络层数的情况下增大网络的参数规模,使网络得到充分训练。结合表1.4与表1.7,可以发现拥有恒定尺寸卷积核的4Conv与9Conv网络结构匹配率表现最好,我们将4Conv卷积网络结构、37×37像素大小的输入感受野与本小节方法相结合,进行多组实验,观察网络参数数量对卷积网络匹配误匹配率的影响。本小节主要基于4Conv设置6种不同的网络结构,卷积核参数设置如表1.8所示表1.86种针对不同的4Conv设置的网络参数4Conv_14Conv_24Conv_3Conv(7)+BN+ReLUConv(8)+BN+ReLUConv(8)+BN+ReLUConv(10)+BN+ReLUConv(10)+BN+ReLUConv(9)+BN+ReLUConv(11)+BN+ReLUConv(10)+BN+ReLUConv(11)+BN+ReLUConv(12)+softmaxConv(12)+softmaxConv(12)+softmax4Conv_54Conv_64Conv_7Conv(12)+BN+ReLUConv(12)+BN+ReLUConv(12)+BN+ReLUConv(11)+BN+ReLUConv(10)+BN+ReLUConv(11)+BN+ReLUConv(10)+BN+ReLUConv(10)+BN+ReLUConv(9)+BN+ReLUConv(7)+softmaxConv(8)+softmaxConv(8)+softmax我们将上文中实验过的4层卷积核参数均为10的网络结构命名为4Conv_4,分别在KITTI2015数据集上进行实验验证。表1.9不同的网络结构下在KITTI2015数据集上的表现(%)网络模型2-pixel-error3-pixel-error4-pixel-error5-pixel-error4Conv_110.377.596.355.624Conv_210.567.696.425.664Conv_310.407.586.325.574Conv_426.014Conv_511.608.447.046.234Conv_611.448.286.896.094Conv_711.818.557.116.27表1.10网络模型对应的参数数量网络模型4Conv_14Conv_24Conv_34Conv_4网络参数数量1504448142131214295041248000网络模型4Conv_54Conv_64Conv_7网络参数数量113356811089921117184由表1.9与表1.10可知,在同一网络结构下,不同大小尺寸的卷积核会导致整体网络参数不同。相较于4Conv_4、4Conv_5、4Conv_6、4Conv_7,4Conv_1、4Conv_2、4Conv_3拥有的网络参数数量更多,匹配率表现更好。4Conv_1取得了2像素最低误匹配率10.37%,4Conv_3取得了3,4,5像素最低误匹配率7.58%,6.32%,5.57%。同时对比与表1.7,输入感受野尺寸在45像素情况下,表现最好的4Conv网络模型,2,3,4,5像素误匹配率分别为10.48%,7.55%,6.24%,5.47%。本小节网络模型4Conv_3已经在2像素误匹配率上超过了其表现,并且其余像素误匹配率的差距均在0.1%以内。本章对本文使用的基础卷积网络的结构、图像预处理过程、网络训练过程及网络参数规模进行了详细的阐释。在本章末尾,类比以前的经典网络模型,本章节提出了一种新的卷积核特征提取方法,该方法在相同网络结构中能够得到较高的匹配正确率,后文中的方法将与之结合。本章将介绍基于移动机器人的数据自动采集平台。首先介绍平台的整体架构以及数据采集执行流程;紧接着,分别从平台的硬件设计、软件设计这两个方面进行详细地介绍。数据自动采集平台由四主要的模块组成:移动机器人模块、数据采集模块、目标物升降模块以及逻辑调度模块。平台的整体结构如图1.1所示。图1.1数据自动采集平台整体结构移动机器人主要负责携带采集设备,并移动至预先设定的位置;数据采集模块主要负责主动发射超声脉冲信号并采集数据;目标升降模块主要负责改变目标物的高度,以模拟目标物与采集设备的相对俯仰角的变化;调度控制模块负责调度平台的运行,确保采集到正确的数据。所述模块之间采用TCP/IP协议进行通信。平台的总体执行流程如图1.2所示,在平台启动后,首先移动机器人模块进行位置校正,确定自己在地图中的位置坐标;随后机器人导航移动至接收到的目标位置的坐标处,并且进行精定位:扫描目标位置预设的二维码,若能扫描到,则根据二维码上的信息进行位置微调以及姿势调整,确保机器人精准到达指定位置,并且朝向指定方向;如若无法扫描到二维码,则说明未能导航至该目标位置,则重新执行上述流程直至完成精定位。图1.2数据自动采集平台整体流程图在机器人到达目标位置后即开始采集数据:首先目标升降模块调整目标物高度,用以调整目标物和采集设备之间的相对俯仰角;随后转动搭载仿蝙蝠耳接收装置的旋转头部,以调整目标物和采集设备之间的相对方位角。由此可以采集到不同俯仰角与方位角的回声信号。最后,当所有采集任务完成后,将目标升降模块、头部等复位后,程序结束。实验平台的硬件主要由移动机器人模块、数据采集模块、目标物升降模块组成(逻辑调度模块主要由一台PC机运行逻辑调度程序,故此不多做介绍),本节主要介绍上述三个模块的硬件设计。移动机器人模块主要由四轮可变向车、激光雷达、工控机、旋转头部、底部相机以及电源等组成,其实物图如图1.3所示。该模块基于科力公司生产的LS-2027DE/H03型激光雷达,使用同步定位和建图(simultaneouslocalizationandmapping,LSAM)技术对进行实验的空间进行建图;基于激光雷达扫描得到的二维平面地图进行路径规划,得到路径节点的地图坐标与转向数据;最后工控机来驱动四轮可变向车进行移动与姿势调整,从而实现移动机器人的自动移动功能。图1.3移动机器人工控机计由主控制盒、扩展板及红外接收盒三部分组成,其结构框架图如图1.4所示。图1.4工控机的结构框架主要包括主控制盒、电机驱动器以及其他的传感器交互接口。工控机使用一台微型计算机作为主控制盒,搭载了基于Ubuntu16.04的机器人操作系统(RobotOperatingSystem,ROS),通过接口接收传感器收集到的信息,并传达控制程序输出的控制指令给电机驱动器。同时主控制盒搭载有无线网卡,形成局域网,可以与同一局域网下的其他模块进行网络通信。旋转头部主要由步进电机头部支架以及压力传感装置组成,如图1.5所示。本文使用头部支架固定数据采集模块的传感器以形成仿生声纳头;步进电机固定在移动机器人模块的顶部,并将头部支架固定在步进电机的旋转头上;工控盒连接电机,在平台运行时向其发送旋转信号,步进电机带动头部支架转动,用以机器人头部转动。为防止旋转头部转动过多引起后续装置连接线的缠绕拉扯,头部转动范围限制为±90°,以压力传感装置作为边界:当旋转头部接触压力传感装置时,工控机会受到受力反馈信号,控制步进电机停止转动。 图1.5旋转头部底部相机安装于四轮可转向小车的底盘下方,并且有伴随照明系统,为底部相机提供良好的拍摄环境;底部相机视野方位覆盖四轮可旋转小车底部,并与工控机相连,可以为实验平台提供预设位置上的标志物,为移动机器人的精准定位与姿势调整提供了必要的信息。目标升降模块主要由单片(Single-ChipMicrocomputer)控制器、步进电机、滑轮以及目标物构成。该模块采用意法半导体公司生产的STM32F103型单片机作为控制器,单片机连接步进电机以控制步进电机的旋转时机与旋转角度;步进电机通过一细线连接目标物,并且通过滑轮使目标物悬挂在一空旷位置。目标升降模块实物如图1.6所示。 图1.6目标升降模块实物数据采集模块主要由主动脉冲信号发射器以及仿蝙蝠耳的麦克风阵列两部分组成。对于主动脉冲信号发射器,该部分使用Avsisoft公司的UltraSoundGatePlayerBLPro2型超声喇叭作为发射器发生超声波以模仿蝙蝠叫声。对于仿蝙蝠耳的麦克风阵列,其中的蝙蝠耳模型参考了1.2.2节中RolfMüller以及RomanKuc等人的研究,使用大耳蝠(Plecotusauritus)的耳朵作为样品,使用断层扫描仪对大耳蝠耳朵进行扫描,得到灰度图像,并进一步将灰度图处理成黑白图像,最后将每一层的黑白图像按照三维放置,设置合适的间距,即可得到大耳蝠耳的立体模型。最后,我们使用3D打印技术打印大耳蝠耳模型,为了提高打印精度,我们将大耳蝠耳的3D扫描图像按比例放大3倍后再进行3D打印。最终得到的高精度的仿大耳蝠耳实物模型如图1.7所示。而后,我们将knowles公司的SPU0410LR5H型麦克风置于前文所述的高精度的大耳蝠耳模型根部作为接收器,模仿大耳蝠耳接收回声信号。使用美国国家仪器(NationalInstrumental,NI)公司的信号采集器对麦克风收到的模拟信号以较高的采样频率进行采样,得到采样信号,并确保信号不失真。在采集数据时,我们使用超声喇叭发射频率为20~5khz的线性调频脉冲信号以模拟蝙蝠叫声,脉冲持续时间为5ms。信号采集器使用100khz的采样频率对仿蝙蝠耳麦克风阵列收到的信号进行采样,得到足够高精度的数字信号。图1.7仿蝙蝠耳模型我们使用由两只防蝙蝠耳模型组成的接收装置接收回声信号。其中,左右两只防蝙蝠耳模型相互垂直,采集到的两路信号包含正交关系。接收装置位于超声喇叭上方,以模仿蝙蝠的声呐系统,如图1.8所示。图1.8仿蝙蝠声纳头平台的主要模块在传输层采用TCP/IP协议进行通信,在应用层遵循websocket协议约定对通信数据进行封装,使C/S架构来组织各模块之间的逻辑关系,整体软件架构如图1.9所示。TCP协议是一种可靠的协议。它通过超时重传、拥塞避免等措施来保证其可靠性,并且向用户保证:发送的数据将十分准确地被连接的对端接收。采用TCP协议可以使得模块间的通信具有很好的可靠性,但是可能会出现响应的粘包现象,在应用层上,对需要发送的数据进行封装,对接收到的数据进行“拆包”,确保正确解析出每一条消息。图1.9软件整体架构本文在在应用层使用websocket协议。Websocket协议是新兴的应用层协议,其相比HTTP(HyperText

Transfer

Protocol)协议,具有长轮询、服务端主动推送等功能。长轮询功能能较少程序间的无用通信;服务端主动推功能能提高程序通信的实时性,确保当前程序出现异常时对端程序能够及时掌握。逻辑调度程序负责调度整个平台的行为,以确保采集到的数据,以及数据所对应的标签的正确性。调度程序直接调度采集模块的控制程序与机器人控制程序,并且通过机器人控制程序间接调度目标升降模块的控制程序。逻辑调度程序采用多线程模式,每个子线程维持一个TCP连接,专职负责一个事物;主线程按照既定的调度逻辑进行逻辑调度。子线程主要包括数据采集线程、机器人状态监控线程、机器人行为调度线程等。在逻辑调度程序开启时,首先创建上述任务线程,并根据所对应的任务,与相应的程序建立连接,以便后续的逻辑调度,如图1.10所示。图1.10创建任务线程机器人行为调度线程机器人行为调度线程主要负责机器人控制机器人的移动、姿势调整以及头部转动,以模拟实际场景,其调度流程如图1.11所示图1.11机器人行为调度线程执行流程首先,调度线程向机器人控制程序发送校正位置以及导航坐标指令,机器人确定自己在地图中所处位置之后,导航至预设位置坐标处。调度线程待机器人完成导航后,发送精定位指令,机器人尝试扫描事先放在预设位置的二维码图片:如果未能扫描到二维码,则说明机器人未能准确导航至指定坐标位置(导航精度不足),则重新执行校正位置-导航流程;扫描到二维码之后,根据二维码的位置以及二维码中的方向信息,微调自身位置以及姿势,确保机器人正对目标物。随后,调度线程读取一组机器人头部旋转角度,并逐一发送:每发送一个旋转角度后,调度线程等待采集任务完成后发送下一个旋转数据;如果当前组数据发送完毕,则发送头部复位指令,以便执行下一组数据;当所有数据发送完毕之后,发送头部复位指令并销毁线程。机器人状态监控线程机器人状态监控线程主要监控查询机器人的状态,并更新整个逻辑调度程序进程内的相关状态信息,以保证程序的调度的效率。设置监控线程的原因主要有两个:其一,机器人控制程序的许多功能接口诸如“导航”、“精定位”以及“头部旋转”等均是异步的,即该程序接收并验证控制指令正确性之后即回复调度程序“指令可行”或者“指令不可行”,随后对控制机器人执行相应的“动作”,但是每种“动作”需要执行的时间是不一样的,并且每种“动作”的可靠性也是不一样的(如转动头部只需要控制步进电机,可靠性几乎能达到百分之百;导航功能的可靠性则相对薄弱,在特殊情况下甚至可能出现导航中断情况),因此我们需要在下达指令之后监控机器人的状态,在机器人执行当前指令完毕之后再执行下一条指令。其二,由于移动机器人模块与数据采集模块共用移动电源,因此我们需要监控电池电量,定时查询,确保平台安全运行。当电量达到预设警戒值时,调度进程的相关状态信息,停止下一批次的数据采集,并且在终端提示警报信息。监控线程的执行流程如图1.12所示,主逻辑为一事件循环,在循环中主要做两件事:其一,向机器人控制程序发送一条请求,查询电池余量,并判断是否低于安全阈值,若低于安全阈值,则将进程中的电量信息更新为“低电量”;反之则更新为“安全电量”。其二,查询“导航指令”标识,若为“导航中”,则不断向机器人控制程序发送请求,轮询机器人的导航状态并更新;当机器人的导航状态为“导航中断”或“导航等待”则说明导航完成(无论导航成功或失败),在更新导航状态并将“导航指令”标识复位后,停止查询,线程程序进入下一轮循环。监控线程对于整个调度程序而言是一个辅助性线程,其主要作用在定时查询机器人状态,以维护整个调度程序中的机器人状态信息,为数据的采集调度提供了依据。图1.12机器人状态监控线程执行流程数据采集线程数据采集线程主要负责与数据采集程序建立连接,向数据采集程序发送数据采集的请求,并且验证数据采集程序的参数是否正确。数据采集线程的执行流程如图1.13所示。数据采集线程的主体逻辑也是一个事件循环,其在与数据采集程序建立连接之后,开始进入事件循环。首先,数据采集线程会不断检查采样标识符。当采样标识符为“Ture”时,读取相关参数(包括采样率、采样时间、超声脉冲文件路径以及采样数据标签等信息),并且按照约定好的格式封装成请求包,并发送给数据采集程序。随后数据采集线程读取TCP缓冲区中的数据,进入阻塞状态(当TCP读缓冲区中没有数据到来时,读取函数会使线程进入阻塞状态,直到读取到对端发送的数据后返回。数据采集线程读取到数据采集程序返回的响应包后,从中解析出采集参数,并进行验证。当验证结果为正确时,数据采集线程将采样标识符重置为“false”,随后进入下一轮的循环;当验证结果为错误时,数据采集线程重新发送该请求以重新采集数据,确保采集到的数据以及对应的标签的正确性。图1.13数据采集线程的执行流程逻辑调度线程逻辑调度线程(即主线程)负责实验平台整体的调度工作。调度线程的工作主要由两个:其一,与用户交互获取相关用户参数,初始化相关参数;其二,创建任务子线程,记录任务进度,并维护子线程的运行标志。首先,调度线程提供采集数据过程中所必要的参数(包括俯仰角范围、方位角范围、采样率等),随后与用户交互,询问用户是否需要修改相关参数。等待用户修改或确认后,对任务参数进行初始化,并且据此计算出任务所需的数据如每次头部旋转的角度、次数,升降控制模块的步进电机旋转的次数、每次旋转的圈数等,并初始化各子线程的运行标志、任务状态信息等。随后,调度线程创建各子线程并执行。子线程通过修改调度线程事先创建的任务状态信息返回结果。调度线程统计子线程的执行情况并做记录,当预期任务完成时,调度线程修改各子线程运行标志通知各子线程运行结束(即各子线程的通过该标识循环执行任务),并阻塞回收子线程。调度线程的执行流程如图1.14所示。图1.14调度线程执行流程逻辑调度程序使用多线程,通过直接访问、修改进程内的状态变量进行通信,在线程间通信时,使用互斥锁进行同步,相对于多进程模型具有极

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论