Detect-SLAM论文翻译

news2024/11/15 7:25:01

Detect-SLAM:实现目标检测与SLAM的互利共赢

摘要 - 尽管近年来在SLAM和目标检测方面取得了重大进展,但这两项任务仍然存在一系列挑战,例如动态环境中的SLAM和复杂环境中的目标检测。为了解决这些挑战,我们提出了一种新的机器人视觉系统,该系统将SLAM与基于深度神经网络的目标检测器相结合,使两者相互受益。该系统使机器人能够在未知的动态环境中可靠、高效地完成任务。实验结果表明,与目前最先进的机器人视觉系统相比,该系统具有三个优点:1.通过利用目标检测器去除运动对象的不可靠特征,极大地提高了SLAM在动态环境中的准确性和鲁棒性;2.它使用这两个功能的协同作用,以在线方式构建环境的实例级语义映射,用于进一步的语义应用;3.它可以改善对象探测器,从而通过利用对象图来有效地检测/识别物体在更具挑战性的条件下有效地检测对象,例如异常的视点,较差的照明条件和运动模糊。

1.引言

近年来,同步定位与制图(SLAM)和基于图像的目标检测领域取得了巨大进展。作为一个被广泛研究的课题,许多基于视觉的SLAM系统已经被提出,其定位精度低至几厘米,可以实时构建大尺度的三维地图[5,12,18]。随着近年来深度卷积神经网络(CNN)的发展,基于图像的目标检测性能得到了提升[14,24,26]。然而,这两个功能在各自独立运行时,其性能和应用都受到一系列棘手问题的限制。例如,SLAM系统通常在动态环境中容易发生故障,检测器对视点变化[22]、遮挡等很敏感。尽管如此,这两项任务可以互补:SLAM旨在从视频中估计环境的自我运动和几何形状;对象检测器通过在实例周围放置带有预定义对象类的绑定框来表示图像的语义信息。从直观上讲,能否将SLAM与目标检测器集成在一个系统中,实现几何信息和语义理解的共享,使两者相互受益?
受最近将SLAM与目标检测相结合的成功[2,3,7,21,32]的启发,我们提出了一种新的框架Detect-SLAM,它将视觉SLAM与基于深度神经网络(DNN)的目标检测器相结合,使它们相互受益。在Detect-SLAM中,我们利用语义信息来消除SLAM管道中移动物体所带来的负面影响。为了克服主要由通信和检测引起的语义信息延迟,我们提出了一种实时传播各关键点移动概率的方法。在SLAM管道中,我们还构建了一个对象地图,一个由建图线程中所有检测到的静态对象组成的语义地图。这种对象地图可以看作是一个包含对象类和位置知识的数据库。利用这张地图,机器人可以执行命令,比如把书从离我最近的桌子送到我身边,或者回答关于场景语义的问题,比如我们房间里有多少台显示器?为了提高目标检测器在异常视点、光照条件差和严重遮挡等条件下的工作能力,我们利用目标地图作为检测器的先验知识,并将目标地图投影到二维图像平面上,提出了时空一致的目标区域建议。这种SLAM增强检测器可用于挖掘挑战条件下的难样例,这些硬示例随后可以用作训练数据,以改善/调整原始深度检测器。
据我们所知,这是第一个将SLAM和基于dnn的检测器结合起来同时完成三个视觉任务的工作:提高SLAM在动态环境中的鲁棒性,构建语义图,提高目标检测性能,如图1所示。
在这里插入图片描述
我们在Detect-SLAM中采用了ORB-SLAM[18]和单镜头多盒目标检测器(SSD)[14]。ROS[23]接口用于系统组件之间的通信,这使得在移动设备和GPU设备之间实时分发Detect-SLAM非常简单。
在本文的其余部分,我们将在第2节讨论相关工作,在第3节介绍我们系统的技术细节,在第4节用实验结果演示我们的系统,并在第5节得出结论。

2.相关工作

同步定位和制图:对于大多数以前的SLAM系统[36,11,34],核心假设是环境在很大程度上是静态的,相机是场景中唯一移动的物体。然而,这些理想的情况很难满足室内或室外。[9,37]试图将这些移动的物体(主要是人)视为异常值,并将其从环境表征中移除。其他一些SLAM系统,如[13,16,17,35],使用将SLAM系统与目标跟踪和检测相结合的框架,以提高动态环境中的定位精度。
这种将SLAM和检测相结合的框架近年来仍在使用。与我们的研究最密切相关的是Paschalis等人[20]和Sun等人[33]。这两种工作都是逐帧检测运动物体,而不像我们的系统那样为运动物体建立模型。[20]关注的是三维点云,而Sun等[33]关注的是二维斑块。这两种方法都包括分割和获得运动物体的掩码,但我们的系统省略了这些操作,通过更新特征的运动概率来过滤属于运动物体的特征,这意味着我们的方法是基于特征级表示的,可以更加鲁棒和高效。
基于深度神经网络的目标检测:随着深度神经网络[8,14,24,25,26]的进步,基于图像的目标检测精度得到了提高[1,10]。更快的R-CNN[26]是PASCAL VOC数据集中准确率超过80%的深度神经网络之一,这取决于区域建议算法的节奏[6]。Redmon等人为YOLO[24]及其改进模型YOLOv2[25]设计了一个统一的架构,使YOLOv2成为最快的网络之一,在PASCAL VOC数据集上,使用69% mAP以91 FPS处理图像,或使用78.6% mAP以40 FPS处理图像[6]。单镜头多盒目标检测器(Single Shot Multibox Object Detector, SSD)[14]是第一个基于dnn的实时目标检测器,在PAS- CAL VOC数据集[6]中实现了70%以上的mAP,在TitanX中实现了40 FPS。这种检测器很好地平衡了速度和准确性,因此我们在Detect-SLAM中部署了SSD作为检测器模块。
然而,在与SLAM通信或在嵌入式系统中部署时,很难达到实时性。为了克服SLAM和检测器之间的延迟,我们避免逐帧检测,并考虑连续帧的时空一致性。
SLAM与目标检测相结合:前人[3,21,29]将SLAM或SfM技术与目标检测相结合,解决SLAM与识别中的问题。Pillai等人[21]设计了一个slam支持的目标识别系统,获得了优异的性能。McCormac等人[15]将SLAM与CNN相结合,高效地生成了语义三维地图。Bowman等[2]将离散识别和数据关联问题与连续SLAM优化整合为一个优化问题,从而得到更精确的轨迹。[7]提出了一种基于单眼目标检测器的方法来解决传统单眼SLAM系统中的尺度模糊和漂移问题。Sucar等人[32]将基于卡尔曼滤波的单目SLAM与检测器提供的语义信息相结合,在贝叶斯方案中估计三维模型的全局尺度。然而,所有这些组合系统都是为了解决单个问题而设计的。为了在组合系统中完成更多的任务,Chhaya等[3]将SLAM与形状先验算法相结合,从多个视角检测和重构车辆,改进了流程中的3D形状估计和鲁棒相机轨迹估计。不幸的是,这个管道必须离线运行。相比之下,我们的detection -SLAM框架是实时运行的,同时完成了三个视觉任务:提高SLAM在动态环境中的鲁棒性,构建语义图和提高目标检测的性能。

3.Detect-SLAM

在本节中,我们将介绍有关Detect-SLAM的技术细节。在Detect-SLAM中,我们将基于DNN的目标检测器集成到SLAM系统中,如图1所示。在这里插入图片描述
Detect-SLAM是基于ORB-SLAM2[18]构建的,它有三个主要的并行线程:Tracking、Local Mapping和Loop Closing。与ORB-SLAM2相比,Detect-SLAM包括三个新的进程。

  • 移动对象移除,过滤掉与移动对象相关的特征。
  • 对象地图,重建在关键帧中检测到的静态对象。目标地图由指定目标ID的密集点云组成。
  • slam增强的检测器,利用对象映射作为先验知识,在具有挑战性的环境中提高检测性能。

3.1 移动对象剔除

对于移动物体的移除,我们修改了ORB-SLAM2中的Tracking and Local Mapping线程,以消除移动物体的负面影响,如图3所示。注意,在这个过程中移动的对象属于当前或将来可能移动的可移动类别,例如人,狗,猫和汽车。例如,一旦检测到一个人,无论是行走还是站立,我们都将其视为一个潜在的移动物体,并去除图像中属于检测到人的区域的特征。
检测增强SLAM的一个关键问题是目标检测的效率。目标检测过程要足够快,能够实现逐帧实时检测,以便在SLAM逐帧跟踪过程中去除不可靠区域。然而,天真地在每帧中应用检测器并不是一个可行的选择,因为在我们的初步实验中,即使是最先进的SSD[14]方法也只能以大约3 FPS的速度运行。
在本节中,我们提出了两种策略来有效地克服这一问题:1)只检测关键帧中的运动物体,然后更新局部地图中点的运动概率,以加速跟踪线程;2)在跟踪线程中通过特征匹配和匹配点扩展来传播运动概率,从而在相机姿态估计之前有效地去除运动目标上提取的特征。
我们把一个特征点属于运动物体的概率称为运动概率。如图2所示,我们根据移动概率将这些关键点分为四种状态。在匹配点展开中使用两个高置信度点,将移动概率传播到邻近的不匹配点。在每个点通过传播得到运动概率后,我们去除所有的动态点,并使用RANSAC过滤其他离群点进行姿态估计。
在这里插入图片描述
更新移动概率。考虑到检测的延迟和连续帧的时空一致性,我们只选取关键帧的彩色图像进行检测,如图3所示。关键帧选择规则与ORB-SLAM2相同。然后对彩色图像通过深度神经网络进行预处理和前向传播。同时在跟踪线程中逐帧传播移动概率。一旦获得检测结果,我们将关键帧插入到局部地图中,并更新局部地图中的移动概率。我们根据以下公式更新了在关键帧中找到匹配关键点的3D点的概率:
在这里插入图片描述
其中 P t − 1 ( X i ) P_{t-1}(X^i) Pt1(Xi)是3D点 X i X^i Xi在最后一个关键帧 I t − 1 I_{t-1} It1更新之后的移动概率。如果是一个新点,设置 P t − 1 ( X i ) = P i n i t = 0.5 P_{t-1}(X^i) = P_{init} = 0.5 Pt1(Xi)=Pinit=0.5。关键帧 I t I_t It中的匹配关键点 x i x^i xi状态是 S t ( x i ) S_t(x^i) St(xi)。这取决于检测到的区域。如果关键点XI位于移动对象的边界框中,我们将其视为确定的动态点,其状态值 S t ( x i ) = 1 S_t(x^i) =1 St(xi)=1。其余的作为确定的静态点,状态值 S t ( x i ) = 0 S_t(x^i) =0 St(xi)=0。α是平滑即时检测结果的影响因子。值越高,表示对即时检测结果越敏感,值越低,表示考虑多视图的历史结果越多。在我们的实验中,由于我们观察到检测器有时会在复杂的环境中提供错误的结果,我们将α设为0.3。
移动概率传播。在跟踪线程中,我们通过特征匹配和匹配点扩展两种操作逐帧估计每个关键点的移动概率。我们称之为运动概率传播,因为当前帧的运动概率是从上一帧的关键点开始传播的,局部地图上的点不需要检测。图4给出了移动概率在符号中的传播细节。
在这里插入图片描述
特征匹配。我们使用与ORB- SLAM2相同的特征进行特征匹配,以利用ORB特征的鲁棒性和效率[28]。在特征匹配过程中,当关键点 x t i x^i_t xti与最后一帧的另一个关键点 x t − 1 i x^i_{t-1} xt1i匹配时,传播移动概率 P t t ( x t 1 i ) Pt_t(x^i_{t 1}) Ptt(xt1i)
除此之外,一旦关键点匹配到局部地图任何3D点 X t i X^i_t Xti,它还被分配了一个移动概率,该移动概率等于匹配点 P ( X t i ) P(X^i_t) P(Xti)的值。另外,如果一个点不仅在最后一帧中找到匹配点,而且在局部地图中也找到匹配点,则应该优先考虑局部地图的概率。我们给这个坐标系中其他不匹配的点赋一个初始的概率值。初始概率 P ( i n i t ) P(init) P(init)设置为0.5,因为我们没有先验假设这些点属于哪个状态。我们将使用特征匹配传播移动概率的操作总结为如下等式:
在这里插入图片描述
式中 φ ( x t i ) φ(x^i_t) φ(xti) φ ( x t − 1 i ) φ(x^i_{t-1}) φ(xt1i) φ ( X t i ) φ(X^i_t) φ(Xti)分别表示点 x t i x^i_t xti、点 x t − 1 i x^i_{t-1} xt1i、点 X t i X^i_t Xti的orb特征。θ是特征匹配的阈值。
匹配点扩展。该操作旨在将高置信度点的移动概率扩展到特征匹配操作中不对应任何匹配点的其他邻近点。它依赖于邻域点的状态在大多数情况下是一致的假设。
因此,通过特征匹配传播后,我们选择高置信度点χt,包括静态点和动态点。然后将高置信度点的影响区域扩展为半径为r的圆形区域,并在该区域内寻找不匹配的点。找到点的概率按照如下规则更新:
在这里插入图片描述
这里 P ( i n i t ) P_{(init)} P(init)是初始概率。如果一个点受到多个高置信度点的影响,我们将对这些相邻高置信度点的所有影响求和。考虑移动概率 P m ( x t j ) − P i n i t P^m(x^j_t) - P_{init} Pm(xtj)Pinit和距离因子λ(d)的差异,我们制定了高置信度点的影响。如果该点位于高置信度点的冲击区域(d<=r),距离因子 λ ( d ) = C e − d / r λ(d) = Ce^{-d/r} λ(d)=Ced/r,C是一个常数,否则d>r, λ ( d ) = 0 λ(d)=0 λ(d)=0

3.2 建图对象

在地图中重构环境是SLAM系统的核心能力,但大多数地图都是建立在像素或低级特征上,没有语义。近年来,随着目标检测技术的不断进步,目标检测器支持的语义映射的生成越来越有前景。
在此过程中,我们重建一个包含所有检测到的对象的对象地图。地图上的每个3D点都被分配了一个对象ID以供识别。该工艺流程如图1所示。
原始的ORB-SLAM仅建立稀疏的地图目标,以提高定位精度。对于语义地图,这种稀疏映射不足以满足进一步的应用。因此,我们在现有的基于RGB-D的ORB-SLAM的基础上构建,并插入一个密集点云建图器,类似于其他一些基于RGB-D的密集映射解决方案[4]。
预测区域ID。在建图过程开始时,我们预测图像空间中每个检测区域的目标ID。区域ID预测的目的是在对象地图中找到对应的对象ID,或者在第一次检测到时生成一个新的ID。物体ID预测是基于一个几何假设,即如果投影区域和检测区域属于同一物体,则投影区域和检测区域应该重叠。因此,我们计算两个区域之间的交集来表示重叠的程度:
在这里插入图片描述
其中R1为检测区域,R2为目标映射投影区域。当我们发现两个区域重叠(IOU > 0.5)时,我们估计它们之间的深度似然。
在这里插入图片描述
其中,误差(深度)是重叠区域的观测深度和投影深度之间的MSE。在这里插入图片描述
其中Do(u, v)和Dp(u, v)表示在像素(u, v)中观测和投影的深度。N表示投影到重叠区域R1交R2中的点云数量。
如果深度似然值高于阈值θd,我们将投影区域的目标ID分配给检测区域。相反,我们为该区域分配一个新的对象ID。
背景切割:尽管检测器提供了图像中物体的边界框,但它是一个矩形框,包含了一些意想不到的背景,用于构建干净的物体图。因此使用Grab-Cut[27]算法进行背景切割,以重叠区域内重构对象投影的服务点作为前景种子,边界框外的服务点作为背景。
重建。利用物体遮罩,我们创建了带有物体ID的物体点云,并对三维空间中的噪声点进行了过滤。最后,我们将物体点云转换成相机姿态的世界坐标,并将其插入到物体地图中。

3.3 增强SLAM的检测器

语义地图不仅可以用于优化轨道估计[2,15],还可以用于改进目标检测[21]。与经典的逐帧对象检测方法相反,机器人从不同的视角多次观察环境中相同的对象实例。
通过向目标检测中提供重建的三维上下文的几何信息来改进目标检测器是很自然的,这保证了目标检测器在空间上的一致性。当目标检测器得到重建的目标图和精确估计的相机姿态支持时,它会得到增强。
区域的建议。在slam增强的目标检测器中,通过跟踪估计当前相机的姿态,将三维目标地图M投影到二维平面上,从而确定每个目标的区域。使用投影图像,我们通过聚类具有相同对象ID的像素来提出可能包含对象的候选区域。由于在构建目标地图时,对目标地图中的点云进行了对象ID标记,因此投影图像中的每个对应像素自然得到相同的对象ID。这样可以直接识别每个区域的目标ID。
区域滤波器。但是仍然存在一些意想不到的区域,例如由噪声点云引起的小区域或包含被遮挡物体的区域。因此,在区域检查阶段,我们剔除区域大小小于20x20 px的小候选区域,并估计观测深度与投影深度之间的似然值,以检测遮挡候选区域。候选深度的可能性类似于区域似然函数(式5),除了IoU = 1的常数。
硬例挖掘。以前的工作[30]已经证明,选择难的例子来训练或微调深度神经网络可以显著提高检测性能。为了使深度检测器在没有SLAM的情况下具有更好的性能,我们将SLAM增强的目标检测器用于挖掘难样例,从而增加了训练数据。然后,我们对原始SSD网络进行微调,以提高类似场景下的检测性能。硬例的情况如图7所示。
在这里插入图片描述

4.实验

在我们的系统中,我们用python实现了基于dnn的检测器,其他进程用c++实现。我们使用预训练的基于Inception v3的SSD模型1作为我们的深度检测器,并使用基于RGB-D的ORB-SLAM2作为我们的基本SLAM系统。SSD和SLAM之间的通信是通过机器人操作系统来实现的[23]。所有实验都是实时进行的。
我们已经分别评估了我们系统的两个主要功能,移动物体去除和slam增强检测器。对于数据集的不完美,不计算对象映射。但SLAM增强检测器性能的提高可以看作是目标映射的积极证明。我们的系统实时运行在intel酷睿i7-4700笔记本电脑上,拥有16GB RAM和Nvidia GPU GTX960M。GPU仅用于深度检测器。

4.1 动态环境下的鲁棒SLAM

在本节中,我们演示了基于检测器的移动对象去除方法在TUM RGB-D数据集上。Sturm等。[31]使用RGB-D Kinect摄像头收集了几个视频序列,以评估RGB-D SLAM 系统。他们还提供了从高准确运动捕获系统获得的相机轨迹。相机自我动作有各种图案,例如沿X-y-Z轴移动,沿着滚动式轴轴旋转,并遵循半球形的轨迹。该数据集包含几个典型的动态场景。例如,在fr3/w/rpy序列中,两个人在旋转时绕着桌子走来走去。由于可见的场景的大部分是Dynamic,因此构成了非常艰巨的任务。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

UE使用UnLua(一)

一、概述 Unlua是个功能丰富的插件&#xff0c;可以在UE中进行蓝图绑定&#xff0c;在Lua中进行逻辑开发&#xff0c;使用Lua热更新的特性&#xff0c;可以快速开发迭代表层逻辑 二、UnLua环境 首先下载UnLua的插件包&#xff0c;点击下载&#xff0c;不会吧不会吧还有人打不…

基于simulink使用前景检测跟踪汽车(附源码)

一、前言 此示例基于simulink演示如何使用高斯混合模型 &#xff08;GMM&#xff09; 检测和计数视频序列中的汽车。 二、模型 下图显示了使用前景检测跟踪汽车模型&#xff1a; 三、检测和跟踪结果 检测和计数汽车可用于分析交通模式。检测也是执行更复杂的任务&#xff0…

【Linux】C++项目实战-实际应用

目录 典型IO的两个阶段(网络IO)Linux上的五种IO模型1.阻塞 blocking2、非阻塞3、IO复用4、信号驱动5、异步 Web ServerHTTP协议&#xff08;应用层的协议&#xff09;简介概述工作原理HTTP请求格式HTTP响应报文格式HTTP请求方法&#xff08;仅作了解&#xff09;HTTP状态码 服务…

【Java|多线程与高并发】死锁以及哲学家吃饭问题

文章目录 1. 什么是死锁2. 哲学家吃饭问题3.如何解决死锁 1. 什么是死锁 死锁&#xff08;Deadlock&#xff09;是多线程编程中的一个常见问题&#xff0c;指的是两个或多个线程相互等待对方释放资源&#xff0c;导致程序无法继续执行的状态。 在一种典型的死锁情况中&#x…

建立点到多点的IPSec隧道(IKE安全策略方式)

目录 1. 组网需求1.1 网络拓扑1.2 配置思路1.3 版本 2. 配置USG5500 A2.1 基本配置2.2 配置域间包过滤规则2.3 配置到达分支的静态路由2.4 定义被保护的数据流2.5 配置名称为tran1的IPSec安全提议2.6 配置序号为10的IKE安全提议2.7 配置IKE Peer2.8 配置IPSec安全策略组map12.9…

哈工大计算机网络课程数据链路层协议详解之:多路访问控制(MAC)协议

哈工大计算机网络课程数据链路层协议详解之&#xff1a;多路访问控制&#xff08;MAC&#xff09;协议 在上一小节介绍完数据链路层功能和所提供的服务后&#xff0c;接下来我们介绍一个在数据链路层非常重要的一个协议&#xff1a;多路访问控制MAC协议。 多路访问控制主要是…

简易登录页面实现

导言 本文将介绍一个简单的登录页面的实现&#xff0c;使用HTML、CSS和JavaScript完成。该登录页面具有选项卡切换和表单提交功能。 HTML基础知识 首先&#xff0c;我们来了解一下HTML文档的基本结构&#xff1a; <!DOCTYPE html> <html> <head><titl…

python创建多个logging日志文件

为每一个计算过程创建一个单独的日志文件&#xff0c;并写入对应的结果&#xff0c;同时保留控制台输出的功能&#xff0c;控制台输出与日志文件记录可以分开单独控制。 import os import loggingdef creat_logger(log_path,logging_name,suf_name):if not os.path.exists(log…

NC65 输出打印模板设置流程

NC65 输出打印模板设置流程 一、添加打印模板 1、可以在单据模板初始化设置中生成打印模板&#xff08;这里以结算单为例&#xff09; 输入模板编码和名称&#xff0c;然后按确定即可。 此时&#xff0c;去输出模板初始化节点查看&#xff0c;就可以查看到刚才生成的打印模…

第五章 中央处理器 第六节指令流水线

5.6.1 指令流水线的概念 5.6.2 指令流水线的影响因素和分类

MySQL基础(五)视图、存储过程和存储函数、变量

目录 常见的数据库对象 ​编辑 视图 创建视图 改变视图 优缺点 存储过程与存储函数 创建存储过程 创建存储函数 存储过程和存储函数的区别 存储过程和函数的查看、修改、删除 查看 修改 删除 存储过程的优缺点 优点 缺点 变量 系统变量 查看系统变量 修改…

h5页面如何与原生交互

本文讲述h5页面跟原生通信&#xff0c;比如在app内&#xff0c;调用相机&#xff0c;获取相册内的图片&#xff0c;在app内拉起微信小程序等等&#xff0c;h5页面没有这么多权限能够直接调用移动端的原生能力&#xff0c;这个时候就需要与原生进行通讯&#xff0c;传递一个信号…

链表、列表、列表项

链表、列表、列表项 FreeRTOS 列表与列表项 List_t //List_t 列表typedef struct xLIST{listFIRST_LIST_INTEGRITY_CHECK_VALUE //校验值volatile UBaseType_t uxNumberOfItems; // 列表中的列表项数量:用于记录列表中列表项的个数&#xff08;不包含 xListEnd&#xff0…

AcWing 1497:树的遍历

【题目来源】https://pintia.cn/problem-sets/994805342720868352/exam/problems/994805485033603072https://www.acwing.com/problem/content/description/1499/【题目描述】 一个二叉树&#xff0c;树中每个节点的权值互不相同。 现在给出它的后序遍历和中序遍历&#xff0c;…

Verilog 基础知识(一) Verilog 基础语法与注意事项

基础知识 0.1 模块(Module) Verilog中的module可以看成一个具有输入输出端口的黑盒子&#xff0c;该黑盒子有输入和输出接口(信号)&#xff0c;通过把输入在盒子中执行某些操作来实现某项功能。(类似于C语言中的函数) 图1 模块示意图 0.1.1 模块描述 图1 所示的顶层模块(top…

1.Git使用技巧-常用命令2

1.Git使用技巧-常用命令2 文章目录 1.Git使用技巧-常用命令2一、本地仓库整理二、查看本地仓库查看过滤 二、逆向操作1. 检出覆盖本地文件 workspace -> NULL1.1 删除workspace 文件 2. 本地仓库回滚3. 远程仓库1. 远程仓库未基于代码做修改 逆操作总结 三、删除1. 删除远程…

基于 Jieba 和 Word2vec 的关键词词库构建

最近有空&#xff0c;把论文中用到的技术和大家分享一下&#xff08;以组件化的形式&#xff09;&#xff0c;本篇将讲述如何从大量的语料中获取诸多关键词和构建关键词词库或 xx 关键词词库&#xff08;细分领域&#xff09;。举例以购物网站的在线评论作为语料库&#xff0c;…

Python实现PSO粒子群优化算法优化Catboost回归模型(CatBoostRegressor算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 PSO是粒子群优化算法&#xff08;Particle Swarm Optimization&#xff09;的英文缩写&#xff0c;是一…

Git--多人协作开发

文章目录 前言一、多人协作一开发目标将dev分支内容合并至master分支 二、多人协作二开发者1操作开发者2操作突发情况内容合并至master分支 三、解决git branch -a打印已被删除的远程分支的方法总结 前言 目前,我们所完成的工作如下 : 基本完成Git的所有本地库的相关操作,git…

学无止境·MySQL(4-2)(多表查询加强版)

多表练习试题 试题2&#xff08;加强版&#xff09;1、创建表2、表中添加数据3、找出销售部门中年纪最大的员工的姓名4、求财务部门最低工资的员工姓名5、列出每个部门收入总和高于9000的部门名称6、求工资在7500到8500元之间&#xff0c;年龄最大的人的姓名及部门7、找出销售部…