OPPO布局自动驾驶?基于语义地图的自动驾驶汽车单目定位

news2024/11/25 10:37:25

论文标题:

Monocular Localization with Semantics Map for Autonomous Vehicles

论文作者:

Jixiang Wan, Xudong Zhang, Shuzhou Dong, Yuwei Zhang, Yuchen Yang, Ruoxi Wu, Ye Jiang, Jijunnan Li, Jinquan Lin, Ming Yang

作者单位:OPPO研究院、上海交通大学

导读:

该研究提出一种轻量级视觉语义定位算法,以解决自动驾驶中的定位难题。算法使用稳定语义特征替代易变的纹理特征,通过离线构建语义地图并在线关联实时数据进行定位,提高了定位的准确性和效率。实验验证表明,该方法适用于多种自动驾驶场景,是可靠的定位技术。©️【深蓝AI】编译

1. 摘要

对于自动驾驶汽车而言,实现精确且鲁棒的定位依旧是当下的一个重大挑战。传感器的成本以及本地计算效率的局限性,使得该技术难以扩展到大规模的商业应用中。传统的基于视觉的方法侧重于易受光照、季节、视角和外观变化影响的纹理特征。此外,带有描述符的地图的庞大存储容量及复杂的优化过程也阻碍了系统性能。为了平衡效率与准确性,本文提出了一种新颖的轻量级视觉语义定位算法,该算法采用稳定的语义特征而非低级别的纹理特征。首先,通过摄像头或LiDAR传感器检测地面标记、车道线、柱子等语义对象,在离线状态下构建语义地图。随后,通过在线关联视觉数据中的语义特征与地图对象来进行实时定位。本文在公开的KAIST城市数据集以及本文自行记录的场景中评估了提出的定位框架。实验结果表明,本文的方法在多种自动驾驶定位任务中是一种可靠且实用的解决方案。

2. 介绍

自动驾驶技术近期备受关注,核心在于自我定位,对安全、路径规划至关重要,但需平衡成本与精度。GPS-RTK与LiDAR虽精度高,成本问题限制其普及,故转向成本效益好的视觉传感器,特别是摄像头。

视觉定位技术,特别是PnP问题解决,依赖预建3D地图与2D图像特征匹配,需高度稳定一致的特征。深度学习推进了特征描述与匹配优化,端到端姿态估计展现潜力,但新环境适应性待测。语义信息融合被视为提高定位精度与鲁棒性的关键,尤其在复杂城市环境,利用稳定语义特征如车道线简化计算并强化定位。

研究表明,语义信息集成极大提升定位准确性和鲁棒性,优化视觉特征并减小计算开销,自动驾驶中,通过检测语义对象如车道线实现高效定位。这些语义特征在城市环境普遍存在,且在多变条件下稳定性强,相比传统特征。构建语义地图采用语义对象而非密集点,降低了地图的存储与传输成本。

将当前观测到的语义线索与语义地图中的元素关联起来,为自动驾驶单目视觉定位提供了极具前景的解决方案。然而,这样的做法面临几个挑战:

1)标准矢量高清晰度(HD)地图通常需要专门的数据采集设备和大量人力进行标注;

2)由于维度降级缺陷,将2D图像中的目标正确转换为3D真实形状是一个难题。

因此,本文提出了一种面向自动驾驶的轻量级视觉定位流程,包括无需人工注释的语义地图构造器和使用低成本摄像头及IMU设备的定位模块。本文的主要贡献总结如下:

• 本文提出了一种增强型逆透视映射模型,考虑了相机旋转,可在运动中准确计算鸟瞰图。

• 本文提出了一种算法,利用常规LiDAR并最少的人工辅助或监督来构建全局语义地图。

• 本文提出了一种基于常见道路视觉语义特征的单目定位算法,并在实际交通场景中验证了其有效性。

3. 相关工作

3.1 视觉定位

●VINS和ORB-SLAM是常见的视觉SLAM框架,整合了特征点处理、关键帧优化、回环检测等模块,实现精确轨迹估计,但面对大规模城市环境实时定位仍具挑战。

●Hloc构建了包含图像检索、特征匹配和姿态估计的全局定位框架,而LaneLoc、TM3Loc、RSCM、Dt-loc和LAVIL等方法分别通过利用车道线、高清地图语义地标、形状分类、距离变换及结合LiDAR里程计等策略,探索提升定位精度与效率,同时强调降低预构建地图的人工成本。

3.2 雷达SLAM

●LiDAR技术因能直接获取物体的真实尺度和位置信息,极大地促进了高精度语义地图的构建。

●从LOAM算法开始,后续发展如Lego-LOAM通过剔除地面点和加入回环检测减小计算量与漂移,LIOM引入IMU预积分实现紧耦合SLAM,FAST-LIO系列则通过IMU辅助减少运动畸变,优化计算效率,并在FAST-LIO2中提出增量k-d树数据结构,进一步提升了大规模点云处理的效率。

4. 本文算法

本文介绍了一种基于语义地图的视觉定位方法,如图1所示。系统包含两部分:

1)生成全局语义地图:采集车辆(LIDAR、GPS-RTK、IMU)数据,LiDAR SLAM建点云图,提取特征构建语义地图;

2)定位:CNN从摄像头图像提取语义信息,IPM处理地面像素建局部图并与全局语义图对齐。杆状物投影至图像线匹配,最小化重投影误差确定6DOF车辆姿态。

在这里插入图片描述
图1|系统结构示意图©️【深蓝AI】编译

4.1 语义地图

通过在位姿图优化模块中融合GPS-RTK信息改进的FAST-LIO2算法,确保了全局位置精度,LiDAR收集的数据被注册为高精度点云地图。从点云中分割出杆状语义特征,并利用欧几里得聚类和RANSAC线性拟合提取每个杆的两端点。地面点云通过预训练的KPConv模型和平面生长法提取。为了准确分割地面标记,本文将KPConv分割结果投影到俯视图(BEV)平面上,将路面点云的反射率视为像素值。此处采用OTSU算法进一步二值化反射率值,以便清晰分离车道标记和路面。最后,利用3D点云与BEV图像之间的映射关系,将分割结果反投影回3D点云中,实现相关元素的三维空间语义分割,如图2所示:(a)为原始点云地图。(b)是由LiDAR SLAM产生的地面点云。©给出了一个俯视图(BEV)图像示例,其中每个像素代表一个10厘米的体素。(d)展示了OTSU二值化结果,该结果保留了道路上的高对比度特征,包括车道线和路面标记。

在这里插入图片描述
图2|展示了点云地图生成及俯视图分割的过程©️【深蓝AI】编译

4.2 图像分割

采用轻量级的BiSeNetV2模型对图像进行语义分类,主要分为地面标记、杆状物和背景三类。为了提升效率,使用OpenCV提取地面标记轮廓代替全图语义掩模,并对杆状物实例应用最小二乘法拟合为直线,便于后续距离计算。图3展示了这一过程在实际交通场景中的应用效果。(a)是由前视摄像头捕捉的原始图像。(b)是语义分割的结果。其中,橙色像素和灰色像素分别代表地面标记和杆状物。绿色像素着重标示出地面标记的轮廓,而红色像素则标识出了杆状物拟合的直线。需要注意的是,为了减少噪声干扰,较短的杆状物已被排除在处理之外。

在这里插入图片描述
图3|为图像分割说明©️【深蓝AI】编译

4.3 逆透视变换

该步骤将图像中分割出的地面标记转换到车辆坐标系下,通过针孔摄像机模型原理完成从地面点到图像点的投影,如图4所示,这一转换对于后续的视觉定位至关重要。

在这里插入图片描述
图4|基本逆透视映射(IPM)模型的示意图©️【深蓝AI】编译

实际驾驶场景中,移动车辆的偏转角度通过集成IMU数据进行计算。随后,使用带有旋转补偿的IPM模型计算特定像素的投影坐标,以精确恢复它们在空间中的3D位置。图6(a)展示了未经补偿的标准IPM模型所产生的扭曲的俯视图(BEV)图像。相反,图6(b)呈现了经过角度补偿的增强型IPM模型的结果。这说明即使在行驶过程中角度发生微小变化,也会在俯视图图像中产生显著的扭曲现象。

在这里插入图片描述
图5|(a) 是通过基础IPM转换得到的俯视图(BEV)图像;(b) 是在考虑了偏转角度补偿(roll, pitch, yaw = (0.8°, −1.9°, −1.2°))后的增强型IPM结果©️【深蓝AI】编译

4.4 优化求解器

在对第 k k k帧图像的姿态进行优化之前,必须准备好车辆状态信息,这包括先前的姿态以及地面标记和杆状特征的位置。然后使用迭代非线性优化方法,将当前特征与全局语义地图进行匹配,从而得出车辆的当前位置。

· 先前姿态(Prior Pose)

Vins-mono提出了一种视觉惯性测距(VIO)方法,能够提供车辆的相对位置和旋转信息。为提高先前姿态的准确性,计算第 k k k帧与 k − 1 k-1 k1帧之间的相对姿态变换,并将其融入到前一帧的语义定位结果中。这样做有助于减少由IMU积分累积造成的误差。第 k k k帧的先前姿态,记为 T k ∗ T^*_k Tk,可以通过以下公式表达:

T k ∗ = T k − 1 ( T ^ k − 1 ) − 1 T ^ k T_k^{*} = T_{k-1} \left( \hat{T}_{k-1} \right)^{-1} \hat{T}_k Tk=Tk1(T^k1)1T^k

其中, T k − 1 T_{k-1} Tk1表示通过本文的语义定位算法获得的前一帧的定位结果; T ^ k − 1 \hat{T}_{k-1} T^k1 T ^ k \hat{T}_k T^k分别是对应帧的VIO输出结果。

· 地面标记表示

在第 k k k帧图像中,本文保留了地面标记轮廓的像素。将车道线轮廓中的 m m m个点的位置指定为 P I , lane , k = { ⟨ p i , lane ⟩ } i = 1 m P_{I,\text{lane},k}=\{\langle p_{i,\text{lane}}\rangle\}_{i=1}^m PI,lane,k={⟨pi,lane}i=1m,其中 p i = [ u i , v i ] T p_i=[u_i, v_i]^T pi=[ui,vi]T代表像素坐标。因此,车道线点在车辆坐标系 { V } \{V\} {V}中的表示为:

P V , lane , k = T V C M ipm ( P I , lane , k ) P_{V,\text{lane},k}=T_{VC}M_{\text{ipm}}(P_{I,\text{lane},k}) PV,lane,k=TVCMipm(PI,lane,k)

其中,矩阵 T V C T_{VC} TVC是从坐标系 { C } \{C\} {C} { V } \{V\} {V}的外部参数,保持恒定。 M ipm ( ⋅ ) M_{\text{ipm}}(\cdot) Mipm()代表IPM模型。

鉴于单个图像有限的视野和分割噪声,本文采用滑动窗口积累多帧车道数据。本文生成由最近 c c c帧地面特征组成的局部语义地图,并限制其大小不超过50米。随后,利用先验姿态 T W , V ∗ , k T_{W,V}^{*}{}_{,k} TW,V,k,将局部地图转换到世界坐标系 { W } \{W\} {W}中。通过构建全局语义地图的KD树,搜索附近的点 P ‾ W , lane \overline{P}_{W,\text{lane}} PW,lane,公式表述如下:

P ‾ W , lane ≈ P W , lane , k = T W , V ∗ , k ∑ i = 0 c − 1 [ T V C M ipm ( p I , lane , k − i ) ] \overline{P}_{W,\text{lane}} \approx P_{W,\text{lane},k} = T_{W,V}^{*}{}_{,k} \sum_{i=0}^{c-1}[T_{VC}M_{\text{ipm}}(p_{I,\text{lane},k-i})] PW,lanePW,lane,k=TW,V,ki=0c1[TVCMipm(pI,lane,ki)]

最终,本文仅考虑距离小于某一阈值(例如1米)的邻近点。损失函数计算如下:

L lane = ∑ ∥ ∥ P W , lane , k − P ‾ W , lane ∥ ∥ 2 + ∑ D ( P W , lane , k , L ‾ W , lane ) L_{\text{lane}} = \sum\|\|P_{W,\text{lane},k} - \overline{P}_{W,\text{lane}}\|\|^2 + \sum D(P_{W,\text{lane},k}, \overline{L}_{W,\text{lane}}) Llane=∥∥PW,lane,kPW,lane2+D(PW,lane,k,LW,lane)

其中, L ‾ W , lane \overline{L}_{W,\text{lane}} LW,lane表示使用语义地图中最邻近的5个点拟合的直线,而 D ( ⋅ ) D(\cdot) D()用于衡量点到直线的距离。

· 杆状物体表示

当地面标记不可见时,仅依赖于平行的车道线无法为车辆前进方向提供有效的约束。杆状物体(如杆子、灯柱、树干等)是笔直且垂直于地面的,可以用来解决这个问题。

本文在语义地图中使用端点对来表示 n n n个杆状物体,记为 P ‾ W , pole = { ⟨ p 1 i , p 2 i ⟩ } i = 1 n \overline{P}_{W,\text{pole}} = \{\langle p_{1i}, p_{2i}\rangle\}_{i=1}^n PW,pole={⟨p1i,p2i}i=1n,每个杆状物体 i i i由两个端点表示 p 1 i = [ x i , y i , z 1 i ] T p_{1i} = [x_i, y_i, z_{1i}]^T p1i=[xi,yi,z1i]T p 2 i = [ x i , y i , z 2 i ] T p_{2i} = [x_i, y_i, z_{2i}]^T p2i=[xi,yi,z2i]T。此外,这些杆状物体借助于先验姿态和投影函数被投影到第k帧图像中,形成 P ‾ I , pole \overline{P}_{I,\text{pole}} PI,pole

P ‾ I , pole , i = 1 z C i K ( T V C ) − 1 ( T W , V ∗ , k ) − 1 P ‾ W , pole , i \overline{P}_{I,\text{pole},i} = \frac{1}{z_{C_i}}K(T_{VC})^{-1}(T_{W,V}^{*}{}_{,k})^{-1}\overline{P}_{W,\text{pole},i} PI,pole,i=zCi1K(TVC)1(TW,V,k)1PW,pole,i

其中, z C i z_{C_i} zCi是杆状物体点 i i i在相机坐标系 { C } \{C\} {C}中的z坐标。

对于投影到图像上的每个端点,本文找到由杆状物体分割结果拟合的最近直线。从端点 P ‾ I , pole \overline{P}_{I,\text{pole}} PI,pole到相应拟合直线 L I , pole , i L_{I,\text{pole},i} LI,pole,i的距离被计算为残差。

L pole = ∑ i = 0 n D ( P ‾ I , pole , i , L I , pole , i ) L_{\text{pole}} = \sum_{i=0}^{n}D(\overline{P}_{I,\text{pole},i}, L_{I,\text{pole},i}) Lpole=i=0nD(PI,pole,i,LI,pole,i)

最后,最优的全局一致性匹配是一个非线性最小二乘问题,本文采用带有LM算法的Ceres求解器来求解车辆的姿态。

T W , V , k = arg ⁡ min ⁡ T W , V ∗ , k ( L lane + L pole ) T_{W,V,k} = \arg\min_{T_{W,V}^{*}{}_{,k}}(L_{\text{lane}} + L_{\text{pole}}) TW,V,k=argTW,V,kmin(Llane+Lpole)

5. 实验评估

5.1 数据集

本文使用两个自动驾驶视觉定位的数据集:

1)KAIST数据集,包含城市复杂环境的多种传感器数据,适用于多种驾驶场景;

2)自主研发数据集,涵盖重庆6公里道路网,由自动驾驶车辆搭载

多传感器采集,用以构建地图和定位验证,GPS-RTK数据作为定位基准。

图7中,图(a)显示了本文自记录数据集中工业园区区域的卫星地图。图(b)是工业园区的全局语义地图,其中地面标记以黄色绘制,杆状物的端点以红色标出。蓝色框表示缺少足够车道语义信息的区域。图©是在工业园区场景中实时姿态优化的视觉示例。图(d)展示的是公共道路的情况。

在这里插入图片描述
图7|展示了定性结果的说明©️【深蓝AI】编译

5.2 视觉定位精度

为评估系统性能,本文对比了CL+PA、PC semantic、fusion SFM等语义定位算法,测试基于KAIST数据集,依据基准标准评价x、y定位及航向角精度,采用ATE的RMSE为指标,含RMSE平移与旋转。表1显示,本文的算法在各场景与基线相比,定位精度相当。

在这里插入图片描述
表1|KAIST城市数据集的RMSE结果©️【深蓝AI】编译

为进一步评估本文系统的有效性和泛化能力,本文基于自录数据集进行了一项实验,并将本文的算法与最先进的视觉定位工具箱Hloc进行了对比。与Hloc详细对比的结果见表2。

在这里插入图片描述
表2|提案算法在自记录数据集上的性能对比©️【深蓝AI】编译

Hloc针对公园数据集需4.5GB colmap地图数据,而本文的系统仅需2MB语义点云地图,即便如此,本文系统在平移与旋转精度上超越基线。工业区定位精度受车道线缺失影响低于公共道路(图7b),Hloc则利用密集建筑在开阔道路表现更佳。图7c-d展示了算法在不同场景的实时定位示例。图8揭示了定位误差分布,水平误差集中、趋近零,证明车道线,尤其是主车道线,对横向定位有强约束。垂直方向与航向角误差较大,或因杆状物监控不足。

在这里插入图片描述
图8|展示了定位误差在垂直方向、水平方向以及航向角上的概率分布图©️【深蓝AI】编译

为了详细评估每个提议特征的有效性,本文在公共道路数据集上进行了消融研究。为了与VIO结果公平对比,本文也采用了EVO计算相对姿态误差(RPE),如表3所示。本文的方法通过融入全局地图消除了VIO的累积漂移误差,使得平移RMSE达到0.492米,这对于自动驾驶任务是可以接受的。有趣的是,无论是在RPE方面,语义地图中的车道线和杆状物特征都优于基线,表明视觉特征有助于实现更高效和鲁棒的定位精度

在这里插入图片描述
表3|不同方法在公共道路数据集上的验证结果©️【深蓝AI】编译

6. 总结

本研究提出一种自动驾驶视觉定位系统,依托LiDAR构建语义地图,利用地面标记、车道线等特征进行车辆定位。系统在复杂交通实测中展现了较基线更高的定位精准度(平移与旋转)。未来研究方向将探索集成GPS等低成本传感器,以增强在复杂场景下的定位鲁棒性。

编译|匡吉

审核|Los

移步公众号【深蓝AI】,第一时间获取自动驾驶、人工智能与机器人行业最新最前沿论文和科技动态。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1845984.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CoAP协议详解:物联网通信的轻量级解决方案

什么是CoAP协议 CoAP(Constrained Application Protocol)是一种专门为物联网(IoT)设计的应用层协议。它的目标是为受限设备和网络提供轻量级的通信解决方案。CoAP协议基于REST(Representational State Transfer&#x…

云手机群控功能讲解

接触云手机之前,很多企业或者个人卖家都对群控有浓厚的兴趣,云手机群控具体是什么呢?云手机群控,顾名思义,是指能够同时对多台云手机进行集中控制和管理的功能。打破了传统单台手机操作的限制,实现了规模化…

数据资产与企业绩效的紧密关联:深入解析数据资产如何直接影响企业绩效,并探讨如何通过策略性利用数据,优化运营,进而提升企业的整体业绩与竞争力

目录 一、引言 二、数据资产与企业绩效的紧密关联 (一)数据资产的定义与价值 (二)数据资产对企业绩效的影响 三、策略性利用数据资产优化运营 (一)建立数据驱动的企业文化 (二&#xff0…

ACM顶会SIGGRAPH 2024最佳论文出炉:英伟达两篇最佳论文,三支国内团队获荣誉提名,浙大周昆获时间检验奖

文章目录 1. 最佳论文最佳论文 1最佳论文 2最佳论文 3最佳论文 4最佳论文 5 2. 最佳论文荣誉提名最佳论文荣誉提名 1最佳论文荣誉提名 2最佳论文荣誉提名 3最佳论文荣誉提名 4最佳论文荣誉提名 5最佳论文荣誉提名 6最佳论文荣誉提名 7最佳论文荣誉提名 8最佳论文荣誉提名 9最佳…

【VS Code 插件】SQLite 可视化插件

VScode 插件分享篇之sqlite可视化工具 项目经常用到SQLite这个轻量型数据库,于是乎,就想着找一个可视化工具,但是我有时候只是想方便预览数据 表,又不想安装额外的程序,那么这款插件很适合你。 用习惯VS Code的小伙伴…

测试的基础知识大全【测试概念、分类、模型、流程、测试用例书写、用例设计、Bug、基础功能测试实战】

测试基础笔记 Day01阶段⽬标⼀、测试介绍⼆、测试常⽤分类2.1 阶段划分单元测试集成测试系统测试验收测试 2.2 代码可⻅度划分⿊盒测试:主要针对功能(阶段划分->系统测试)灰盒测试:针对接⼝测试(阶段划分->集成测…

服务器机柜和网络机柜有什么区别

服务器机柜和网络机柜虽然在外观上可能相似,都遵循19英寸的标准,但它们的设计目的、功能、结构和特性存在明显的区别。下面是两者的主要区别: 1. 用途 服务器机柜:主要用于承载和组织服务器设备,包括主机、存储设备、交…

redis以后台的方式启动

文章目录 1、查看redis安装的目录2、Redis以后台的方式启动3、通过客户端连接redis4、连接后,测试与redis的连通性 1、查看redis安装的目录 [rootlocalhost ~]# cd /usr/local/redis/ [rootlocalhost redis]# ll 总用量 112 drwxr-xr-x. 2 root root 150 12月 6…

人工智能导论 题目

目录 1.人工神经网络参数个数的计算 2.卷积神经网络卷积和池化的计算 知识表示 命题 谓词 谓词公式 1.连接词 2.量词 3.量词的辖域 逻辑等价式 范式 推理规则 全程量词和存在量词之间的关系 产生式 产生式系统 3.命题/谓词逻辑证明 1.​ ​2. 3. 4. 5. 6. …

双阶段目标检测算法

双阶段目标检测算法 本文将系统的过一遍双阶段目标检测的经典算法,文献阅读顺序如下: R-CNN → \rightarrow → SPPnet → \rightarrow → Fast R-CNN → \rightarrow → Faster R-CNN → \rightarrow → Mask R-CNN R-CNN 一、研究背景 R-CNN可…

跟《经济学人》学英文:2024年6月15日这期 Durians

China is going crazy for durians Locals love the pungent fruit. The government sees an opportunity 这是阅读2024年6月15日《经济学人》杂志的China is going crazy for durians这篇文章的学习笔记。 durian:美 [ˈdʊriən] 榴莲 A whiff of diplomacy 一…

适合孩子学习用什么的落地灯?五款精品护眼大路灯分享

适合孩子学习用什么的落地灯?说到护眼落地灯,都会出现两种呼声:一种是认为是“智商税”,而另外一种则是妥妥的照明神器!护眼大路灯到底是哪种定义呢?贵的护眼灯一定好吗? 这么年,护…

湖北建筑施工特种作业人员建筑起重信号司索工:年薪多少?

"湖北建筑施工特种作业人员建筑起重信号司索工:年薪多少?前景如何?" 2024湖北建筑施工特种作业人员建筑起重信号司索工 2024年湖北省建筑施工特种作业人员中的建筑起重信号司索工,是一项关键的工种,其在建筑…

5步快速了解电商渠道数字化管理||电商API数据采集|数据分析

随着电商平台的飞速发展,电商渠道占据品牌经销渠道的比重越来越大,以前只有线下经销渠道的时代已经结束,但是随着渠道的拓展,其中出现了很多问题,如线上渠道或者店铺数量更大、扰乱秩序成本更低、日常上线和下线变动价…

数据中心技术:大数据时代的机遇与挑战

在大数据时代,数据中心网络对于存储和处理大量信息至关重要。随着云计算的出现,数据中心已成为现代技术的支柱,支持社交媒体、金融服务等众多行业。然而,生成和处理的大量数据带来了一些挑战,需要创新的解决方案。在这…

【阅读论文】-- SWS:时空核密度可视化的复杂性优化解决方案

SWS: A Complexity-Optimized Solution for Spatial-Temporal Kernel Density Visualization 摘要1 引言2 预备知识2.1 STKDV 问题陈述2.2 基于范围查询的解决方案(RQS) 3 基于滑动窗口的解决方案(SWS)3.1 时间维度的滑动窗口3.2 …

HTML(14)——结构伪类选择器和伪元素选择器

结构伪类选择器 作用&#xff1a; 根据元素的结构关系查找元素 选择器说明E:first-child查找第一个E元素E:last-child查找最后一个E元素E:nth-child(N)查找第N个E元素(第一个元素N值为1) 例如&#xff1a;查找第一个li标签&#xff0c;将背景改为绿色 <style> li:fir…

YOLOv10改进 | Conv篇 |YOLOv10引入RepGhost

1. RepGhost介绍 1.1 摘要: 特征重用一直是轻量级卷积神经网络(CNN)设计中的一项关键技术。 当前的方法通常利用串联运算符通过重用其他层的特征图来廉价地保持大量通道数(从而获得大的网络容量)。 尽管串联是无参数和无 FLOP 的,但其在硬件设备上的计算成本是不可忽略的…

VBA学习(13):获取多层文件夹内文件名并建立超链接

代码使用了FileSystemObject对象和递归的方法实现文件夹和文件的遍历功能。分别将文件夹名称和文件名提取在表格的A/B列&#xff0c;并对文件名创建了超链接。 示例代码如下&#xff1a; Sub AutoAddLink()Dim strFldPath As StringWith Application.FileDialog(msoFileDialog…

生产实习Day9 ---- Scala介绍

文章目录 Scala&#xff1a;融合面向对象与函数式编程的强大语言引言Scala与Java的互操作性Scala在大数据处理中的应用Scala的并发编程Scala的学习资源和社区结论 Scala&#xff1a;融合面向对象与函数式编程的强大语言 引言 Scala&#xff0c;全称Scalable Language&#xff…