Abstract

Siam方法通过从当前帧中提取外观模板来解决视觉跟踪问题,该模板用于在下一帧中定位目标。
通常,此模板与前一帧中累积的模板线性组合,导致信息随时间呈指数衰减。 尽管这种更新方法可以改善结果,但其简单性限制了通过学习更新可能获得的潜在收益。 因此,我们建议用一种学习更新的方法来代替手工更新功能。 我们使用一个称为UpdateNet的卷积神经网络,该网络给出了初始模板,累积的模板和当前帧的模板,旨在估计下一帧的最佳模板。 UpdateNet紧凑,可以轻松集成到现有的暹罗跟踪器中。 我们通过将其应用于两个Siamese跟踪器SiamFC和DaSiamRPN来证明该方法的一般性。 在VOT2016,VOT2018,LaSOT和TrackingNet数据集上进行的大量实验表明,我们的UpdateNet有效地预测了新的目标模板,优于标准的线性更新。
在大规模TrackingNet数据集上,我们的UpdateNet改进了DaSiamRPN的结果,相对于成功分数,绝对提高了3.9%。 代码和模型可从https://github.com/zhanglichao/updatenet获得。

2. Related work

  • 跟踪框架。
    大多数现有的跟踪方法要么基于检测跟踪,要么采用模板匹配。 基于跟踪检测的对象跟踪器将目标定位的任务定位为分类问题,其中通过使用来自目标对象和背景的图像斑块在线学习判别式分类器来获得决策边界。 在通过检测进行跟踪的方法中,基于判别相关滤波器的跟踪器[19、48、11、7]最近在几种跟踪基准[42、43、24、22]上显示了出色的性能。 这些跟踪器从目标外观的示例补丁中学习相关过滤器,以区分目标外观和背景外观。
    另一个主要的跟踪框架基于模板匹配,通常使用暹罗网络[1、40、41、18、27、50],该网络通过空间互相关实现相似网络。 Bertinetto等。 [1]提出了一种基于两流架构的暹罗跟踪器。 一个流根据包含要跟踪对象的示例图像提取对象模板的功能。 另一流接收目标图像中的大搜索区域作为输入。 两个输出互相关以生成搜索区域的响应图。 许多跟踪器已经扩展了SiamFC体系结构[40、16、41、27、50、49]进行跟踪。 基于Siamese的跟踪器由于在计算速度和跟踪性能之间提供了良好的折衷,因此受到欢迎。 然而,由于没有在线学习,这些方法大多数都难以对目标进行有效分类,尤其是在存在干扰因素的情况下。 在这项工作中,我们分析了暹罗跟踪器在模板模型更新方面的局限性,并提出了解决方案。

3.更新对象模板

在本节中,我们介绍了学习如何在在线跟踪过程中更新对象模板的方法。 我们首先回顾标准更新机制,以跟踪并确定其缺点。 然后,我们介绍克服它们的公式,并详细描述我们的模型和训练过程。 本文的重点是Siam跟踪器。 但是请注意,我们的方法不仅限于Siam追踪器,相同的提法也可以应用于其他类型的追踪器,例如 DCF [19,11,7]。

3.1。 标准更新

T e i =φ(T 0 GT,T e i-1,T i)。
几种最新的跟踪方法[4、3、19、40、41、27、50]使用简单的平均策略,在给定新数据样本的情况下更新对象外观模型。 这种策略可以追溯到早期的跟踪方法[36],并且由于其可接受的结果并且尽管存在局限性,但长期以来一直是在线更新的标准。 模板将作为运行平均值进行更新,权重随时间呈指数衰减。 选择指数权重将产生以下用于更新模板的递归公式,
在这里,i是帧索引,T i是仅使用当前帧计算的新模板样本,T e i是累积的模板。 通常,假设对象的外观在连续的帧中平滑且一致地变化,则将更新率γ通常设置为固定的小值(例如γ= 0.01)。 在DCF跟踪器中(例如[3,19]),T对应于相关滤波器。 相反,在暹罗跟踪器中,T是由全卷积特征提取器从特定帧提取的对象外观模板。
尽管原始的SiamFC跟踪器[1]不执行任何模型更新,但较新的Siamese跟踪器[1、41、27、50]已采用(1)来更新其模板。
模板平均为集成新信息提供了一种简单的方法,但它具有几个严重的缺点:
• 尽管由于多种因素(例如摄像机运动)可能导致更新需求不同,但它对每个视频都采用恒定的更新速率。 即使在同一视频中,对象模板上所需的更新也可能在不同时间动态变化。
• 更新在模板的所有空间尺寸(包括通道尺寸)上也是恒定的。
这样可以防止仅更新模板的一部分,例如在部分遮挡下需要这样做。
• 跟踪器无法从漂移中恢复。 部分原因是由于它无法访问外观模板T 0,而外观模板T 0无疑是唯一与对象无关的模板。
• 更新功能仅限于先前外观模板的非常简单的线性组合。
这严重限制了更新机制的灵活性,这在目标经历复杂外观更改时很重要。 考虑更复杂的组合功能有望改善结果。

3.2. Learning to update

我们通过提出学习自适应更新策略的模型来解决上面列出的缺点。 由于本文的重点是暹罗跟踪器,因此T在此表示对象外观模板。 为了解决简单模板平均的局限性,我们建议学习一个通用函数,该函数根据以下内容更新模板:

所学习的函数基于初始地面真相模板T 0 GT,最后累积的模板T e i-1和从当前帧中的预测目标位置提取的模板T i来计算更新的模板。
本质上,该函数通过整合当前帧T i给出的新信息来更新先前累积的模板T e i-1。 因此,基于当前模板和累积模板之间的差异,可以使适应当前帧的特定更新要求。 此外,它还在每帧中考虑初始模板T 0 GT,它提供了高度可靠的信息并提高了抵抗模型漂移的鲁棒性。 函数φ被实现为卷积神经网络,它具有强大的表达能力和从大量数据中学习的能力。 我们将此神经网络称为UpdateNet,并在以下部分中对其进行详细描述。

图2.使用UpdateNet跟踪框架的概述。
( 左)对象模板的在线更新由UpdateNet执行,UpdateNet接收初始gt模板,最后累积模板和当前预测模板作为输入,并输出更新的累积模板。
(右)使用到下一帧上的真实对象模板的距离训练UpdateNet。

3.3。 使用UpdateNet跟踪框架

我们训练UpdateNet来预测下一帧中的目标模板,即,如果GT与从下一帧的真实位置提取的模板T i + 1匹配,则预测模板T ei(图2,右) 。 该选择背后的直觉GT是T i + 1是在下一帧中搜索目标时要使用的最佳模板。 为了实现这一目标,我们通过最小化更新模板与下一帧的地面真实模板之间的欧几里德距离来训练UpdateNet,定义为:我们在此介绍UpdateNet的结构,并描述如何将其应用于在线跟踪。 图2(左)概述了使用具有暹罗跟踪器的UpdateNet的自适应对象更新策略。 我们使用与SiamFC跟踪器[1]中相同的特征提取器,通过固定的全卷积网络φ从图像区域提取深层特征。 我们从初始帧(图2中的数字0)的真实地面位置提取T 0 GT。 为了获得当前帧的T i,我们使用所有先前帧T e i-1的累加模板来预测帧i中的对象位置(紫色虚线)并从该区域提取特征(蓝色实线)。 注意,T e i-1对应于先前时间步的UpdateNet输出,为简洁起见,此处未显示。 我们将提取的特征T 0 GT和T i与累积的特征T e i-1连接起来,形成UpdateNet的输入。 然后,通过一系列卷积层(第4.3节)处理此输入,并输出预测的新累积模板T e i。 对于第一帧,我们将T i和T e i-1设置为T 0 GT,因为之前没有任何帧。
UpdateNet唯一使用的真实信息是给定对象在初始帧中的位置,所有其他输入均基于预测位置。 因此,T 0 GT是UpdateNet用来指导更新的最可靠信号。 因此,我们采用了残差学习策略[17],其中UpdateNet学习如何为当前帧修改地面真相模板T 0 GT。 这是通过从T 0 GT向UpdateNet的输出添加跳过连接来实现的。 这种方法仍然考虑了要更新的对象的历史外观集,但是将这种更新放在最准确的样本上。 我们还尝试过添加来自其他输入的跳过连接,并且完全没有残留的学习知识(请参阅第4节)。

3.4。Training UpdateNet

3.3。 使用UpdateNet跟踪框架我们训练我们的UpdateNet来预测下一帧中的目标模板,即,预测的模板T ei应该与下一帧中从真实位置提取的模板T i + 1匹配(图2,右) 。 该选择背后的直觉GT是T i + 1是在下一帧中搜索目标时要使用的最佳模板。 为了实现这一目标,我们通过最小化更新模板与下一帧的地面真实模板之间的欧式距离来训练UpdateNet,定义为

在本节的其余部分,我们将描述用于生成训练数据的过程,并介绍UpdateNet的多阶段训练方法。

  • 训练样本。
    *为了训练UpdateNet以最小化(3),我们需要成对的输入三元组(T 0 GT,T e i-1,T i)和GT输出T i + 1,它们反映了在线应用期间跟踪器的更新需求。 通过从相应帧的地面位置提取特征,可以轻松获得初始帧T 0 GT和目标帧T i + 1的对象模板。 但是,在当前帧的模板T i的情况下,使用真实位置表示实际很少遇到的情况,对于这种情况,当前帧中的预测位置非常准确。 这种不切实际的假设使更新偏向于期望相对于T i的变化很小,因此UpdateNet无法学习有用的更新功能。 因此,我们需要通过在第i帧中使用不完美的定位来提取用于训练的T i样本。 我们可以通过使用累积的模板T e i-1来模拟这种情况,理想地呈现在线跟踪过程中发生的定位错误。
    它会为每个帧生成累积的模板和实际预测的位置。 我们将更新率γ设置为跟踪器的推荐值。 尽管没有那么复杂的线性更新策略,但这对应于UpdateNet在跟踪推断过程中可能输入的第一近似值。 在每个后验训练阶段k∈{1,…,K},我们使用在前一个阶段训练的UpdateNet模型来获得累积的模板和对象位置预测,如下所示
    这样的训练数据样本非常类似于推理时预期的数据分布,因为它们已由UpdateNet输出。 我们在实验部分(第4节)中调查了K级总数的合适值

4. Experiments

4.1. Training dataset

我们使用最近的大规模单一对象跟踪(LaSOT)[13]来训练我们的UpdateNet。 LaSOT在70个类别中有1,400个序列,总计3.52M帧。 每个类别正好包含20个序列,使数据集在各个类之间保持平衡。 它还提供了更长的序列,其中包含1,000多个帧(平均2,512帧),以满足当前的长期跟踪趋势。 我们使用了官方train和test分组,以保持分配的均衡。 实际上,我们仅使用一个子集,其中包含来自20个随机选择类别的20个训练序列,总共45,578帧。(20个类别各拿出一个序列) 从实验上我们发现,这足以学习有效的更新策略,并且附加数据只会在提高培训时间的同时仅带来很小的性能提升

4.2. Evaluation datasets and protocols

我们根据标准跟踪基准评估结果:VOT2018 / 16 [23],LaSOT [13]和TrackingNet [31]。
VOT2018 / 16 [23]。 VOT2018数据集包含60个公共测试序列,共21,356帧。 它用作VOT挑战的最新版本。 VOT协议规定,当评估的跟踪器发生故障时,即与gt的重叠低于给定阈值时,将在故障发生五帧后将其重新初始化到正确的位置。 用于对跟踪器进行排名的主要评估方法是预期平均重叠(EAO),它是准确性(Acc)和鲁棒性(Robu)的组合。
我们还使用VOT2016 [24]进行比较,它与VOT2018 [22]有10个不同的序列。 我们使用提供的工具包[22]计算所有结果。

  • LaSOT [13].
    LaSOT是一个更大,更具挑战性的数据集,包括长期序列,在使用该数据集的最新工作[26,14]之后,我们报告了协议II的结果,即LaSOT测试集。 测试子集共有280个序列,共690K帧。 LaSOT数据集[13]遵循OTB [42]的OPE标准。 它由通过中心位置误差测量的精度图和通过预测边界框与gt之间的并集交点(IoU)测量的成功图组成。 除了精度图和成功图之外,LaSOT还使用归一化精度图来应对以下情况:目标大小和图像分辨率对于不同的帧和视频存在较大差异,这会严重影响精度指标。 我们使用成功图和归一化精度图来评估本文中的跟踪器。 我们使用他们的代码[13]创建所有图。
  • TrackingNet [31].
  • 我们使用SiamFC [1]和DaSiamRPN [50]作为我们的基本跟踪器,而主干Siamese网络采用了经过修改的AlexNet。 除了更新组件外,我们不执行任何更改。 SiamFC的原始实现未执行任何对象更新。 对于训练阶段1中生成的模板,我们从CFNet [40]借用线性更新率γ= 0.0102。我们使用DaSiamRPN的原始版本,该版本未使用任何更新策略。 我们以秒为单位分析了线性更新速率对跟踪性能的影响。 4.7。
    为了训练UpdateNet,我们设置了一组模板,其中包括T 0 GT,T i-1积累,T i和T i + 1,Ti+1GT作为输入。 它们都是从同一视频按顺序采样的。 值得注意的是,T i-1积累和T i是由真实的跟踪程序生成的,而T 0 GT和T i + 1是真实的模板。!!!!
    我们将所有训练对象模板存储在磁盘上,使用线性/无更新(阶段k = 1)或以前版本的UpdateNet(k> 1)提取。 令模板大小为H×W×C。UpdateNet是两层卷积神经网络:一个1×1×3·C×96卷积层,然后是ReLU和第二个尺寸为1×1×96的卷积层 ×C。对于SiamFC,H = W = 6并且C = 256,而DaSiamRPN C =512。在第一阶段,权重从头开始初始化,并且学习率在每个时期从10 -6到10-7呈对数递减。在下一阶段,权重由上一阶段的最佳模型初始化并且学习率在每个时期从10 -7减小到10 -8。 我们使用大小为64的mini-batch训练了50个epochs的模型。我们使用momentum为0.9,重量衰减为0.0005的随机梯度下降(SGD)!!!。

    表1. VOT2018的消融研究[22]。 我们介绍了SiamFC的几种更新策略[1]。 结果以EAO,准确性的标准化加权平均值(A)和鲁棒性评分(R)的标准化加权平均值表示。 “跳过”列指示跳过连接的来源(如果有)。 在此,K是UpdateNet训练的阶段数。

    4.4. Ablation study

    我们通过在不同组件上增加方法来开始评估,以分析它们对最终性能的贡献。 表1显示了在EAO措施下使用VOT2018 [22]数据集的结果。 在表的中间,它显示了在UpdateNet的第一阶段更新对象模板时,相对于T 0 GT进行残余训练会带来好处,因为学习的更新策略基于可靠的对象样本。 此外,我们的多阶段培训进一步提高了UpdateNet的性能,相对于没有更新的原始SiamFC,总体提高了7.4%。 在本文的其余部分,我们使用经过3个阶段训练的UpdateNet,并通过T 0 GT跳跃连接。 ??

4.5. Analysis on representation update空间相关性最大的特征空间

空间相关性最大的特征空间。 更新策略对学习到的功能起作用,可能会干扰它们的关联能力,并可能损害跟踪性能。 为了研究更新策略对功能的干扰,我们在图3中可视化了用于线性更新和UpdateNet的SiamFC累积模板。我们还包括从带注释的边界框中提取的groundtruth模板。
对于每个模板,我们显示了真实模板中四个最动态通道的特征图,这些通道以2×2网格排列。 出于比较的原因,在跟踪过程中使用gt对象位置而不是预测位置来生成累积的模板。
此外,在每个累积的模板旁边,我们还显示了将模板与搜索区域相关时生成的响应图。 我们观察到一些有趣的属性,这些属性支持在实践中看到的性能提升。
首先,与线性更新中的模板相比,使用UpdateNet积累的模板更类似于地面真实性(请参见例如第38帧右下角的突出显示)。 其次,对于UpdateNet,响应图在对象位置上趋于清晰,这表明我们的策略如何不负面影响所学习功能的所需相关性。 最后,线性更新的累积模板以非常慢的速度变化,并且明显不足以跟上视频中显示的外观变化。 Linear更新的劣势


图3.可视化的SiamFC模板。
“框架”列显示了用于提取模板的搜索区域和底线框,我们在“ GT”中显示了前四个通道。 “不更新”会显示将初始模板应用于搜索区域而产生的响应图。 对于“线性”和“ UpdateNet”状态,我们还会显示其累积的模板。

为了进一步研究此观察,我们建议对连续帧模板之间的变化率进行量化。 对于每个i∈{1,…,N},我们将模板中的平均差计算为
其中N是视频中的帧数,总和遍历特征图的每个元素(例如E = 6×6×256)。 我们在图4中显示结果。最下面一行包含VOT2018中所有60个视频的平均变化率δ[22]。 显然,线性更新策略无法提供gt模板特征更改所需的更新率。 另一方面,UpdateNet提供了一种更具适应性的策略,其大小在本质上更接近于真实模板的变化率。 顶部和中间行还显示了图3中两个单独序列“ book”和“ soccer1”的变化率。 我们可以看到UpdateNet在高变化时期模拟了真实模板,这在极端情况下具有很高的相关性。 这样可以预测更好的响应图,如图3所示。

4.6. Generality and tracking speed

在本节中,我们将UpdateNet应用于其他Siam跟踪器,以评估其UpdateNet的一般性,如图5所示。它在VOT2018上就跟踪速度在EAO方面给出了结果。 我们以每秒帧数(FPS)衡量跟踪速度,并在其轴上使用对数刻度。 我们观察到我们在暹罗跟踪器上有所改进,例如 SiamFC [1]和DaSiamRPN [50]通过添加非常小的时间开销来实现。 最后,最高性能的跟踪器如图6所示。我们与包括DRT [37],DeepSTRCF [28],LSART [38],R MCPF [48],SRCT [25],CSRDCF [30],LADCF [ [44],MFT [22],UPDT [2]和ATOM [8]等与[22]相同。 在顶级跟踪器中,我们的方法可实现出色的性能,同时保持很高的效率。
此外,我们的追踪器相对于基本追踪器DaSiamRPN [50]而言,相对性能提高了2.8%。

4.7. Fine-tuning the linear update rate

上一节中的线性更新使用作者推荐的SiamFC更新率[40](γ= 0.0102)和原始跟踪器的DaSiamRPN更新率[50](γ= 0)。 现在我们研究在微调测试集上的更新速率时,线性更新策略是否可以带来更高的性能。 我们测试从[0,0.2]间隔统一采样的几个更新率。 图7显示了DaSiamRPN(浅绿色)和SiamFC(深绿色)的线性更新性能。 顶部的红色虚线和中间的粉红色虚线分别是我们的UpdateNet在DaSiamRPN和SiamFC上应用的性能。 我们可以看到SiamFC的峰值性能确实达到了0.01到0.05之间。 对于DaSiamRPN,没有更新的原始跟踪器性能最好,这证明了对于offline训练的更复杂的sim跟踪器,在线线性更新甚至可能会损害性能。 这表明,即使微调的线性更新也无法进一步改善其结果。 此外,我们的UpdateNet优于所有更新速率值,而无需任何手动微调。 尽管某些视频需要更高的更新率,但我们可以看到随着更新率的提高,性能如何连续而迅速地降低,这证明所有视频均不适合采用固定和一般的更新率。

4.8. Comparison with other updating strategies

最近的一些方法[15,45]为Sim跟踪器提出了替代更新策略。 表2列出了VOT2016上与DSiam [15]和MemTrack [45]的比较,因为[45]仅报告了该VOT版本的结果(有关Via2018上的DSiam结果,请参见图5)。 我们的UpdateNet可以带来更有效的更新和更高的跟踪性能,同时还适用于不同的暹罗体系结构。 尽管DaSiamRPN的性能已经非常出色,但UpdateNet还是带来了4.2%的改进,达到了最先进的水平。 此外,就鲁棒性而言,我们的方法可带来5.6%的绝对收益,这是siam跟踪器的常见弱点。

4.9. LaSOT dataset

我们在最近的LaSOT数据集上测试我们的模型[13]。
由于长期序列在LaSOT中很常见,因此跟踪器的更新组件至关重要,因为可能会出现更多的突然变化,并且对象外观可能会与输入对象模板进一步分离。 我们展示了排名前10位的跟踪器,包括MDNet [32],VITAL [35],StructSiam [49],DSiam [15],SINT [39],STRCF [28],ECO [7],SiamFC [1]和DaSiamRPN [50] 图8中的结果。 我们可以看到UpdateNet如何增强DaSiamRPN的更新功能,并在所有措施上带来显着的性能提升。 因此,我们具有学习更新策略的跟踪器将超过该数据集上所有最新的跟踪器。
在准确的对象定位方面,这进一步证明了自适应更新策略的优势。

4.10. TrackingNet dataset

我们使用TrackingNet [31]的三个评估指标对它们的UpdateNet-DaSiamRPN进行评估(表3)。 与DaSiamRPN相比,我们的UpdateNet + DaSiamRPN在精度,归一化精度和成功度方面获得了3.4%,1.9%和3.9%的绝对收益。 UpdateNet可以在所有三个指标上显着提高性能。 这显示了学习模型更新如何在多个数据集上和不同度量下极大地使siam跟踪器受益。

5. Conclusions

Siam跟踪器通常使用简单的线性更新规则来更新其外观模板。 我们确定了此线性更新的几个缺点,并建议将更新步骤作为优化问题来学习。 我们采用了一个称为UpdateNet的神经网络,该神经网络学习如何在给定第一帧的外观模板,当前帧和上一步的累积模板的情况下更新当前累积的模板。提出的的UpdateNet是通用的,可以集成到所有siam跟踪器中。 四个基准数据集(VOT2016,VOT2018,LaSOT和TrackingNet)的可比较结果表明,相对于标准线性更新(或完全没有更新),建议的更新方法确实可以显着提高跟踪器的性能。

UpdateNet -- 大致理解相关推荐

  1. 如何让人大致理解RxJava思想:第一节 初步理解RxJava

    如何让人大致理解RxJava思想:第一节 初步理解RxJava 首先,我们需要明确,一个人不可能一口气吃成一个胖子,你不可能仅仅花5分钟看完我这篇文章,然后一拍桌子,大叫一声,我知道了,然后赢取白富美 ...

  2. public static final int REMIN_REQUEST_CODE = 0x911 自己的大致理解

    public static final int REMIN_REQUEST_CODE = 0x911; 自己理解为 一个静态常量,也就一个标识,自己目前主要在2个地方常用到 OnActivityRes ...

  3. python yield理解_对Python中Yield的理解

    看到下面这段程序的时候,有点不明白这个yield到底是个啥东西,看了网上很多的博客,大致理解了yield的含义,所以记录下来. 要说yield首先要说python中的生成器,那么什么是生成器? 假设有 ...

  4. 深入理解ReactRedux

    深入理解React&Redux React React是什么 为什么需要React React如何实现组件可复用 Redux Redxu是什么 有了React 为什么需要React Redux ...

  5. cnpm 网络不能连接_(二十七)通俗易懂理解——Resnet残差网络

    Resnet看相关的文章都比较容易理解,本文主要转自两篇对该内容有较为全面解释和理解的文章. 1. 引言 网络的深度为什么重要? 因为CNN能够提取low/mid/high-level的特征,网络的层 ...

  6. 理解 C# 项目 csproj 文件格式的本质和编译流程

    写了这么多个 C# 项目,是否对项目文件 csproj 有一些了解呢?Visual Studio 是怎么让 csproj 中的内容正确显示出来的呢?更深入的,我能够自己扩展 csproj 的功能吗? ...

  7. 【学习笔记】WQS二分详解及常见理解误区解释

    文章目录 应用分析 算法分析 WQS二分精髓的两点细节(博客重点!) 真题分析 [国家集训队]Tree Ⅰ 忘情 星际广播 网上很多博客写得模模糊糊的,对我这个新手可是一点都不友好. 昨天一天都在研究 ...

  8. 我理解的invoke和begininvoke

    我理解的invoke和begininvoke 一直对invoke和begininvoke的使用和概念比较混乱,这两天看了些资料,对这两个的用法和原理有了些新的认识和理解. 首先说下,invoke和be ...

  9. Java核心(二)深入理解线程池ThreadPool

    本文你将获得以下信息: 线程池源码解读 线程池执行流程分析 带返回值的线程池实现 延迟线程池实现 为了方便读者理解,本文会由浅入深,先从线程池的使用开始再延伸到源码解读和源码分析等高级内容,读者可根据 ...

最新文章

  1. ASP.NET 3.5揭秘-读书笔记1
  2. Python+selenium 自动化-基本环境搭建,调用selenium库访问百度查询天气实例演示
  3. Android自定义progressBar
  4. C++ POD与结构体声明
  5. java项目打镜像_docker通过dockerfile打java项目镜像
  6. mysql11导入数据_MySQL专题11之MySQL导出数据、MySQL导入数据
  7. GCC的缺陷,由匿名对象引起的内存泄漏
  8. 下三角矩阵的逆矩阵_上三角或下三角矩阵的逆矩阵能否简便方法求出??只有主副对角线不为0的矩阵能否直接写出逆矩阵。...
  9. html div 画半圆,css画变形的半圆
  10. 微信支付将为O2O画上句号
  11. 软件测试简历制作技巧与方法
  12. 操作系统基础知识详解
  13. java 文字生成图片(图片添加文字)
  14. Macbook实用技巧——小白入门必须会的
  15. win10更新时强制关机会如何
  16. 新C# 操作Excel属性
  17. (6) IFC构件与空间的关系 (Industry Foundation Class)
  18. python培训班报名
  19. HashMap与ConcurrentHashMap万字源码分析
  20. 科技云报道:达·芬奇的机械骑士梦想,RPA会以何种形式实现?

热门文章

  1. iOS 2018 绝密面试题+面试心得2
  2. Android Studio 视频教程分享
  3. 【手把手】ios苹果打包——遇见项目实战|超详细的教程分享
  4. java单词接龙,LeetCode-127.单词接龙(Word Ladder)
  5. SAP 销售订单批量可用性检查(ATP)
  6. Oracle中rank() over()函数排名
  7. 解决visio中形状搜索无法使用
  8. Oracle dataset 工具,[Oracle] 32-bit ODAC 與 Visual Studio工具 (.NET)
  9. 学习Android从0开始之开发工具篇-Android studio详解
  10. 2017淘宝有好货报名要求