阅读论文SiamMOT网络

我现在的问题:

问题描述: 给定一个目标进行跟踪,注意观察到人物的遮挡、进入人群中或者视角变化等因素下
SiamMOT专注于改进局部跟踪,在轨迹不可见的情况下也能向前跟踪,即跟踪器知道连续τ\tauτ帧未能跟踪到相应的目标是才终止轨迹。

在线跟踪器在实时场景中专注于改进连续帧上的局部连接,而不是构建一个离线图来识别跨大时间间隔的实例。

文章主要工作:

  • 提出SiamMOT模型,使用基于区域的特征开发(显式)模板匹配来估计实例运动能够对跟踪场景(快速运动)更加鲁棒。
  • 在Faster R-CNN的基础上进行改进,提出EMM的方法证明在密集光流估计建模和实例级运动估计SOT中的有效性。
  • 消融分析表明实例级运动级建模对鲁棒的在线运动估计非常重要,尤其在有挑战性的跟踪场景中。

Siamese结构的网络通常在第二帧的搜索区域内跟踪第一帧中的目标对象。而且Siamese网络通常学习两个检测到的实例之间的相似性函数,Siamese跟踪器是用于用于在更大的上下文区域内搜索检测到的实例的匹配函数。

SiamMOT:Siamese Multi-Object Tracking

Faster R-CNN = Region Proposal Network + region-based detection network.

在Faster R-CNN基础上,SiamMOT增加了一个基于区域的Siamese跟踪器来模拟实例级运动。

输入It,It+δI^t,I^{t+\delta}It,It+δ和一系列检测实例Rt={R1t,...Rit,...}R^t = \{R^t_1,...R^t_i,...\}Rt={R1t​,...Rit​,...}。输出从t的检测实例到t+δt+\deltat+δ的检测实例。

理解:

首先输入两个帧,里面包含物体的检测实例,然后通过主干网络,上路进行尺寸调整ROIAlgin得到特征图,下路通过保持相同的几何中心来计算出得到最后的特征图。

SiamMOT Tracker: 将得到的特征图进行互相关操作算子进行处理。得到的特征图表示相似性不同的方面。然后使用全卷积网络进行处理,vi表示每个像素包含目标对象的可能性,pi表示从该位置到左上角和右下角边界框角的编码的密集位置映射层。最后使用推断函数进行预测。

推断的过程:

  • 首先对检测子网络中的输出Rt+σR^{t+\sigma}Rt+σ和Siamese跟踪器中的输出R~t+σ\tilde R^{t+\sigma}R~t+σ独立的使用标准的基于IoU的NMS运算。

  • 使用空间匹配特征将Rt+σ,R~t+σR^{t+\sigma},\tilde R^{t+\sigma}Rt+σ,R~t+σ合并。检测在空间上匹配 IOU≥0.5IOU \geq 0.5IOU≥0.5 到任何跟踪的实例被抑制并被移除。

  • 采用标准在线求解器:1)若轨迹的可见置信度vit>αv^t_i \gt \alphavit​>α,则轨迹是连续的。2)若存在非匹配检测,并且置信度高于β\betaβ,则产生轨迹。3)若连续τ\tauτ帧的可见性置信度vit<αv^t_i \lt \alphavit​<α,则轨迹被终止。
    总结:

  • 本文脉络:提出一个基于区域的网络模型SiamMOT,可以同时检测和关联对象实例。其中检测到的实例由Siamese跟踪器短时连接,该跟踪器跨帧模拟实例运动。

  • 只是单类目标的追踪,可以有效地处理遮挡,通过消融实验可以得出30帧以内的遮挡都可以很好地处理。

  • 通过参数τ\tauτ来定义隐式运动模型或显式运动模型。试验获得显式运动模型性能较好。

  • 在消融实验中,联合训练的效果比较好,具体Tracker+EMM > Tracker+IMM > Trakcer+Flow > Tracker

  • 联合采样也能提高模型的性能,例如P+F+H > P+F等。

具体原理

给出t时间的帧,然后模型在t+δt+\deltat+δ帧中位置附近进行搜索,(vt+δ,R~it+δ)=τ(fRt,fSit+δ;Θ)(v^{t+\delta},\tilde R^{t+\delta}_i)=\tau(f^t_R,f^{t+\delta}_{S_i};\Theta)(vt+δ,R~it+δ​)=τ(fRt​,fSi​t+δ​;Θ),最后一项是函数的参数,fRitf^t_{R_i}fRi​t​是在ItI^tIt帧中区域RitR^t_iRit​提取的特征图。fSit+δf^{t+\delta}_{S_i}fSi​t+δ​是在It+δI^{t+\delta}It+δ帧中搜索区域的特征图。

为啥搜索框的范围看起来很大:因为在计算的时候引入因子r>1来维持几何中心。使用ROIAlign来提取图像中的特征,最后等式左边第一项是在t+δt+\deltat+δ时间后实例i的置信度。所以只要实例在目标帧中可见,那么就会有很高的置信度。

多目标跟踪情况下,多次使用上面的特征,对于每一个检测到的实例都使用一次。SiamMOT架构允许这些操作并行运行,只需要计算一次主干特征可以使得跟踪推理更加高效。

如果发生以下情况,会使前后两帧的检测实例匹配失败:

  • R~t+σ\tilde R^{t+\sigma}R~t+σ和Rt+σR^{t+\sigma}Rt+σ中的正确实例不匹配
  • vit+σv^{t+\sigma}_ivit+σ​对于在t+σt+\sigmat+σ处的可见行人值偏低

之前的工作主要隐式的模拟实例在网络中的运动,但是更细粒度的空间级监控对于在具有挑战性的场景明确学习鲁棒的目标匹配函数具有重要意义。

使用τ\tauτ的不同参数化实现隐式运动模型和显式运动模型。

隐式运动模型(Implicit Motion Model)

IMM模型使用MLP隐式估计两帧之间的实例级运动。将fSit,fSit+σf^t_{S_i},f^{t+\sigma}_{S_i}fSi​t​,fSi​t+σ​连接起来送入到MLP预测可见置信度viv_ivi​,相对位置和比例变化:
mi=[xit+σ−xitwit,yit+σ−yithit,log⁡wit+σwitlog⁡hit+σhit]m_i = [\frac {x^{t+\sigma}_i-x^t_i} {w^t_i},\frac {y^{t+\sigma}_i-y^t_i} {h^t_i},\log \frac {w^{t+\sigma}_i} {w^t_i}\log \frac {h^{t+\sigma}_i} {h^t_i}] mi​=[wit​xit+σ​−xit​​,hit​yit+σ​−yit​​,logwit​wit+σ​​loghit​hit+σ​​]
其中,(xit,yit,wit,hit)(x^t_i,y^t_i,w^t_i,h^t_i)(xit​,yit​,wit​,hit​)是RitR^t_iRit​的参数化。通过上述公式可以推导出Rit,miR^t_i,m_iRit​,mi​。

Loss
L=ℓfocal(vi,vi∗)+I[vi∗]ℓreg(mi,mi∗)\mathbf L = \mathcal \ell_{focal}(v_i,v^*_i)+\mathbb I[v^*_i]\mathcal \ell_{reg}(m_i,m^*_i) L=ℓfocal​(vi​,vi∗​)+I[vi∗​]ℓreg​(mi​,mi∗​)
vi∗,mi∗v^*_i,m^*_ivi∗​,mi∗​是从Rit+σR^{t+\sigma}_iRit+σ​得出的真实值、第一项是分类的局部损失,第二项是回归常用的平滑L1损失。

显式运动模型(Explicit Motion Model)

显式运动模型使用通道方式的互相关算子*生成像素级response rir_iri​。也证明在密集光流估计建模和实例级运动估计SOT中是有效的。在SiamMOT中,此操作将搜索特征图fSit+σf^{t+\sigma}_{S_i}fSi​t+σ​中的每一个位置和目标特征图fRitf^t_{R_i}fRi​t​使用ri=fSit+σ⋆fRitr_i = f^{t+\sigma}_{S_i}\star f^t_{R_i}ri​=fSi​t+σ​⋆fRi​t​连接在一起。每一个映射ri[k,:,:]r_i[k,:,:]ri​[k,:,:]捕捉相似性的不同方面。受FCOS的启发,EMM使用全卷积网络ψ\psiψ来检测特征映射的匹配实例。特别的,ψ\psiψ预测一个密集的可见性置信图ViV_iVi​表示每个像素包含目标对象的可能性。以及对从该位置到左上角和右下角边界框角的偏移进行编码的密集位置映射pip_ipi​,因此我们可以通过一下变换R(p(x,y))=[x−l,y−t,x+r,y+b]\mathcal R(\mathbf p(x,y))=[x-l,y-t,x+r,y+b]R(p(x,y))=[x−l,y−t,x+r,y+b],当p(x,y)=[l,t,r,b]\mathbf p(x,y)=[l,t,r,b]p(x,y)=[l,t,r,b]左上右下角的坐标。
R~it+σ=R(pi(x⋆,y⋆))vit+σ=vi(x∗,y∗)s.t.(x∗,y∗)=arg⁡maxx,y(vi⊙ηi)\tilde{\mathcal R}^{t+\sigma}_i=\mathcal R(\mathbf p_i(x^\star,y^\star))\\ v^{t+\sigma}_i = \mathbf v_i(x^*,y^*)\\ s.t. (x^*,y^*)=\arg max_{x,y}(\mathbf v_i \odot \mathbf {\eta_i}) R~it+σ​=R(pi​(x⋆,y⋆))vit+σ​=vi​(x∗,y∗)s.t.(x∗,y∗)=argmaxx,y​(vi​⊙ηi​)
⊙\odot⊙是逐元素乘法,η\etaη是一个惩罚图,为相应候选区域指定了非负惩罚分数。
ηi(x,y)=λC+(1−λ)S(R(p(x,y)),Rit)\mathbf {\eta_i}(x,y) = \lambda \mathcal C + (1-\lambda)\mathcal S(\mathcal R(\mathbf p(x,y)),R^t_i) ηi​(x,y)=λC+(1−λ)S(R(p(x,y)),Rit​)
λ\lambdaλ是加权标量,C\mathcal CC是余弦窗函数,前一个目标区域Rit,S\mathcal R^t_i,\mathcal SRit​,S的几何中心是高斯函数。候选区域p(x,y)\mathbf p(x,y)p(x,y)和RtR_tRt​之间的相对比例(宽度、高度)变化。引入惩罚图是为了阻止跟踪过程中的剧烈运动

Loss:三元组(Rit,Sit+σ,Rit+σ)(R^t_i,S^{t+\sigma}_i,R^{t+\sigma}_i)(Rit​,Sit+σ​,Rit+σ​),训练损失:
L=∑x,yℓfocal(vi(x,y),vi∗(x,y))+∑x,yI[vi∗(x,y)=1](w(x,y)⋅ℓreg(pi(x,y),pi∗(x,y)))L = \sum_{x,y} \ell_{focal}(\mathbf v_i(x,y),\mathbf v^*_i(x,y))\\ +\sum_{x,y}\mathbb I[\mathbf v^*_i(x,y)=1](w(x,y)\cdot \ell_{reg}(\mathbf p_i(x,y),\mathbf p^*_i(x,y))) L=x,y∑​ℓfocal​(vi​(x,y),vi∗​(x,y))+x,y∑​I[vi∗​(x,y)=1](w(x,y)⋅ℓreg​(pi​(x,y),pi∗​(x,y)))
(x,y)列举Sit+σS^{t+\sigma}_iSit+σ​中的所有有效位置,ℓreg\ell_{reg}ℓreg​为回归的IoU损失,ℓfocal\ell_{focal}ℓfocal​为分类问题的焦点损失。vi∗,pi∗\mathbf v^*_i,\mathbf p^*_ivi∗​,pi∗​是像素级的真实值映射,如果(x,y)在Ri∗t+σR^{*t+\sigma}_iRi∗t+σ​内,则vi∗(x,y)=1\mathbf v^*_i(x,y)=1vi∗​(x,y)=1。pi∗=[x−x0∗,y−y0∗,x1∗−x,y1∗−y]\mathbf p^*_i=[x-x^*_0,y-y^*_0,x^*_1-x,y^*_1-y]pi∗​=[x−x0∗​,y−y0∗​,x1∗​−x,y1∗​−y]对应于真实值边界框的左上角和右下角坐标。

用w(x,y)w(x,y)w(x,y)来生成ℓreg\ell_{reg}ℓreg​,它是位置(x,y)相对于目标实例Rit+σR^{t+\sigma}_iRit+σ​的中心,定义为:
w(x,y)=min(x−x0,x1−x)max(x−x0,x1−x)⋅min(y−y0,y1−y)max(y−y0,y1−y)w(x,y)=\sqrt {\frac {min(x-x_0,x_1-x)} {max(x-x_0,x_1-x)} \cdot \frac {min(y-y_0,y_1-y)} {max(y-y_0,y_1-y)}} w(x,y)=max(x−x0​,x1​−x)min(x−x0​,x1​−x)​⋅max(y−y0​,y1​−y)min(y−y0​,y1​−y)​​
EMM改进了IMM:

  • 使用与信道无关的相关操作来允许网络明确地学习连续帧中相同实例之间的匹配函数。
  • 现了一种更细粒度的像素级监控机制,这对于减少错误匹配干扰物的情况非常重要。

训练特性:
ℓ=ℓrpn+ℓdetect+ℓmotion\ell = \ell_{rpn} + \ell_{detect} + \ell_{motion} ℓ=ℓrpn​+ℓdetect​+ℓmotion​
前两项是Faster R-CNN里RPN标准损失和检测子网络的损失。第三项ℓmotion=∑xi∈χL(xi)\ell_{motion}=\sum_{x_i \in \chi}\mathbf L(x_i)ℓmotion​=∑xi​∈χ​L(xi​)用于训练Siamese跟踪器。χ=⋃i=1M(Rit,Sit+σ,Rit+σ)\chi=\bigcup^M_{i=1}(R^t_i,S^{t+\sigma}_i,R^{t+\sigma}_i)χ=⋃i=1M​(Rit​,Sit+σ​,Rit+σ​)是训练三元组。如果RitR^t_iRit​不包括真实值实例或者实例RiTR^T_iRiT​在Sit+σS^{t+\sigma}_iSit+σ​中不可见,那么Rit+σ=∅R^{t+\sigma}_i= \varnothingRit+σ​=∅。类似于Faster R-CNN训练,我们从RPN的输出采样RitR^t_iRit​。

在推断时,首先对检测子网络中的输出Rt+σR^{t+\sigma}Rt+σ和Siamese跟踪器中的输出R~t+σ\tilde R^{t+\sigma}R~t+σ独立的使用标准的基于IoU的NMS运算。接下来,使用空间匹配特征将Rt+σ,R~t+σR^{t+\sigma},\tilde R^{t+\sigma}Rt+σ,R~t+σ合并。检测在空间上匹配 IOU≥0.5IOU \geq 0.5IOU≥0.5 到任何跟踪的实例被抑制并被移除。采用标准在线求解器:1)若轨迹的可见置信度vit>αv^t_i \gt \alphavit​>α,则轨迹是连续的。2)若存在非匹配检测,并且置信度高于β\betaβ,则产生轨迹。3)若连续τ\tauτ帧的可见性置信度vit<αv^t_i \lt \alphavit​<α,则轨迹被终止。

短时间遮挡处理:在短时间遮挡的情况下,目标的可见性置信度会很低,我们没有将其排斥在外,而是将这些轨迹保存在内存中,并在未来τ\tauτ帧中搜索,已检查他们是否可以恢复。最后使用预测的位置及其对应的特征作为搜索模板。

实验设置

数据集度量

MOT17:是最广泛使用的多人跟踪基准。由7个训练和7个测试视频组成,时长从7秒到90秒不等。这些视频以室内商场或室外街道的拥挤场景为特色。评估指标:MOTA多目标跟踪精度)、IDF1 (IDF1得分)、FP(假正例)、FN(假反例)和IDsw (ID开关)。

TAO-person:是一个新建立的大型多人跟踪基准。它是TAO数据集的子集,由418个训练和826个验证视频组成。为了包含场景的大量可变性,视频是通过混合现有数据集收集的,如AVA(普通电影),Charades(室内活动),BDD(街道),Argoverse(街道)和其他体育视频。

Caltech Roadside Pedestrians(CRP):加州理工路边行人,是一个用于视频中人物分析的数据集。它由7个视频组成,每个大约20分钟长。这些视频是开车时安装在汽车上的摄像头拍摄的,主要以室外路边场景为特色。由于快速的摄像机运动,行人看起来比在其他数据集中移动得相对快得多。

数据集分析

MOT17 TAO-person CRP
即使任务运动速度不快以及姿势恒定,跟踪人也具有挑战性 包括各种场景类型和视频损坏工件 场景不拥挤,但摄像头运动快,行人位置变化很快

由于视频没有密集标注(即每一帧),我们用δ\deltaδ(时间差)来归一化m,图三中展示了数据集特定的直方图,与TAO和CRP中的人相比,MOT17数据集中的人运动相对较小。

实现细节

网络结构:使用特征金字塔的标准DLA-34作为Faster R-CNN的主干,设置r=2,这样搜索区域就是跟踪目标大小的2倍。在IMM中fSit,fSit+σf^t_{S_i},f^{t+\sigma}_{S_i}fSi​t​,fSi​t+σ​具有相同的形状Rc×15×15\mathbb R^{c \times15\times15}Rc×15×15,并且模型被参数化为具有512个隐藏层神经元的两层MLP。在EMM中,fRit∈Rc×15×15,fSit+σ∈Rc×30×30f^t_{R_i}\in\mathbb R^{c \times15\times15},f^{t+\sigma}_{S_i}\in\mathbb R^{c \times30\times30}fRi​t​∈Rc×15×15,fSi​t+σ​∈Rc×30×30,使他们处于同一空间尺度,该模型是2层全卷积网络具有3×3卷积核和群归一化的stack。

训练过程:在成对的图像上训练SiamMOT,当视频注释不可用时,采用空间变换(裁剪或重新缩放)和视频模拟变化(运动模糊)来生成相应的图像对。当,使用视频训练,其中对最多相隔1s的两个随机帧进行采样。

训练:共同训练tracker和detection网络。从RPN输出的256个图像区域进行财旺来训练它们。使用SGD作为优化器。对CrowdHumand训练25k迭代,COCO训练50k个迭代。调整图像大小使得短边具有800个像素。学习率0.02,在60%进度以后减少10倍,80%进度后再次减少。权重衰减参数10−410^{-4}10−4,batchsize 16 image pairs.

推断:设置连接置信度,检测置信度α=0.4,β=0.6\alpha=0.4,\beta=0.6α=0.4,β=0.6,保持轨迹活动,知道τ=30\tau=30τ=30帧看不见为止。

消融实验

在上述三个数据集上进行消融实验。因为没有大规模的诗品注释来训练通用模型,所以采用图像训练来训练SiamMOT模型。在CrowdHuman的全身标注来训练模型,在MOT17-train和CRP数据集上进行评估,因为他们有独立的边界框注释。使用CrowdHuman和COCO训练模型,他们有可视化的标注,在TAO-person上评估。这样做是为了尽可能地保持模型的可比性,同时仍然坚持每个数据集的注释范式。为了直接比较针尖的跟踪,采用和tracker一样的跟踪器,在这之中,如果轨迹不可见τ=1\tau=1τ=1立即将其杀死。

实例级建模

比较SiamMOT和IMM,EMM两种baseline:1)我们通过从SiamMOT中移除Siamese跟踪器,使用检测网络来回归目标在当前帧中的位置来取代。2)Tracker+Flow. 增加了一个基于流程的模型来估计人在帧间的移动。这个基于流的模型可以被认为是一个简单的前向跟踪器,它将前一个目标区域“移动”到当前帧,然后使用检测网络(如在跟踪器中)回归到它在当前帧中的精确位置。人实例的移动是通过取其组成像素的中值流场来估计的。在我们的实验中,我们使用预先训练的最先进的PWCnet来估计像素级的光流场。最后,为了公平比较,我们对所有四个模型使用相同的检测。

总结:Tracker:该模型在CRP上性能不那么好,因为运动模型太弱,不能跟踪移速过快的人。

加入流之后可以显著提高性能,对于IMM和EMM可以显著提高其性能。

研究,为什么加入流之后性能MOTA和IDF1可以大幅增加?

​ 在这两者之间,EMM在CRP上的表现与IMM相似,但在MOT17和TAO-pers上明显更好。这表明了显式模板匹配的重要性。

实验顺序重要性 Tracker < Flow < IMM < EMM 跟踪性能不断提高。

结论:SiamMOT比Tracker+Flow更有效果,在Tracker中,流不和跟踪器共享计算。

加?

​ 在这两者之间,EMM在CRP上的表现与IMM相似,但在MOT17和TAO-pers上明显更好。这表明了显式模板匹配的重要性。

实验顺序重要性 Tracker < Flow < IMM < EMM 跟踪性能不断提高。

结论:SiamMOT比Tracker+Flow更有效果,在Tracker中,流不和跟踪器共享计算。

训练SiamMOT:triplets采样
从{It,It+σ}\{\mathbf I^t,\mathbf I^{t+\sigma}\}{It,It+σ}里面的三元组χ=⋃i=1N(Rit,Sit+σ,Rit+σ)\chi = \bigcup^N_{i=1}(R^t_i,S^{t+\sigma}_i,R^{t+\sigma}_i)χ=⋃i=1N​(Rit​,Sit+σ​,Rit+σ​),这个三元组可正可负可hard。当RitR^t_iRit​不包括一个人时为负,当Rit,Sit+σR^t_i,S^{t+\sigma}_iRit​,Sit+σ​包括同一个人时为正,当RitR^t_iRit​包含一个人但是Sit+σS^{t+\sigma}_iSit+σ​不包含目标任务时为hard。

P+H获得很好的IDF1,因为跟踪器在跟踪人方面做得很好,但是有相对较低的MOTA,无法消除假正例的轨迹,深究之因为SiamMOT经常从噪声检测开始,而不是从行人的标注区域开始。P+N能获得比较好的效果,P+N+H更好。

训练SiamMOT:联合训练

比较Siamese跟踪器和基于区域的跟踪器的性能。

跟踪性能:只用Faster R-CNN和增加光流,再加上IMM和EMM可以看出性能明显在提升。说明联合训练的好处。

检测性能:比较两个Faster R-CNN模型其中一个有Siamese跟踪器,在MOT17数据集上,两个模型达到了73.3%和73.4%的效果当AP@IOU=0.5。说明在SiamMOT中联合训练对检测网络没有负面影响。

SiamMOT推论

只要人是可见的,SiamMOT就专注于改进局部跟踪,遮挡或彼此交叉时,人就很快不可见,在这种情况下,允许SiamMOT即使在轨迹不可见的情况下也能向前跟踪,即跟踪器直到连续τ帧未能跟踪到相应的目标时才终止轨迹。

表格中说明当τ=30\tau=30τ=30帧的时候达到饱和。论文之后说改进以期可以处理更长时间的遮挡。

与SOTA方法比较

基于区域的特征在实例识别和定位方面始终更好。

TAO数据集中,将轨迹与人的重新识别嵌入相联系是很重要的,因为有许多视频中人在摄像机的视野之内和之外移动,在这种情况下,这超出了瞬时运动建模的能力。

SiamMOT+ 是tracklets和off-the-shelf person re-id model

HiEve数据集由19个训练视频和13个测试视频组成,时长从30秒到150秒不等,视频主要以地铁、餐馆、商场和户外街道的监控场景为特征。SiamMOT(DLA-34)与挑战赛中顶级表现相匹配。SiamMOT(DLA-169)击败了大量调整的获胜方法。

目标追踪与定位学习笔记10-SiamMOT论文阅读相关推荐

  1. 目标追踪与定位学习笔记8-排斥损失:检测人群中的行人

    Repulsion Loss: Detecting Pedestrians in a Crowd 排斥损失:检测人群中的行人 论文链接:arXiv 1. 论文思路 本文通过为拥挤场景设计普通边界框回归 ...

  2. 目标追踪与定位实战笔记2-一生之敌:Cuda out of memory!

    1. 环境配置 将代码从github上下载解压之后需要配置python环境,然后安装requirements.txt中的依赖,然后我们进入readme界面,下载好maskrcnn_benchmark, ...

  3. 08年A题数码相机定位学习笔记

    To Be Continue- 文章目录 数码相机定位学习笔记 一.摘要 二.问题分析 三.刚体变换 3.1世界坐标系→\rightarrow→相机坐标系 3.2相机坐标系→\rightarrow→图 ...

  4. 史上最牛最强的linux学习笔记 10.shell基础

    史上最牛最强的linux学习笔记 10.shell基础 写在最前面: 本文是基于某站的视频学习所得,第一个链接如下: https://www.bilibili.com/video/BV1mW411i7 ...

  5. JavaWeb黑马旅游网-学习笔记10【项目代码】

    Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb黑马旅游网-学习笔记01[准备工作] JavaWeb黑马旅游网-学习笔记02[注册功能] JavaWeb黑马旅游网-学习笔记03[登陆和 ...

  6. thinkphp学习笔记10—看不懂的路由规则

    原文:thinkphp学习笔记10-看不懂的路由规则 路由这部分貌似在实际工作中没有怎么设计过,只是在用默认的设置,在手册里面看到部分,艰涩难懂. 1.路由定义 要使用路由功能需要支持PATH_INF ...

  7. SpringMVC:学习笔记(10)——整合Ckeditor且实现图片上传

    SpringMVC:学习笔记(10)--整合Ckeditor且实现图片上传 配置CKEDITOR 精简文件 解压之后可以看到ckeditor/lang下面有很多语言的js,如果不需要那么多种语言的,可 ...

  8. springmvc学习笔记(10)-springmvc注解开发之商品改动功能

    springmvc学习笔记(10)-springmvc注解开发之商品改动功能 springmvc学习笔记(10)-springmvc注解开发之商品改动功能 标签: springmvc springmv ...

  9. Hadoop学习笔记—10.Shuffle过程那点事儿

    Hadoop学习笔记-10.Shuffle过程那点事儿 一.回顾Reduce阶段三大步骤 在第四篇博文<初识MapReduce>中,我们认识了MapReduce的八大步骤,其中在Reduc ...

最新文章

  1. HighCharts基本使用
  2. linux网络编程-posix信号量与互斥锁(39)
  3. Nginx 出現 500 Error 修復 (too many open file, connection)
  4. Excel函数公式 (日期函数)
  5. 北交大计算机学院教授,北京交通大学计算机与信息技术学院研究生导师:鲁凌云...
  6. 分享:我是怎么在github上找到优秀的仓库的?
  7. AliOS Things手势识别应用演示
  8. Git由浅入深之分支管理
  9. Java—读取指定路径下文件的内容
  10. OpenStack基本安装步骤
  11. 工作效率低,怎么办?
  12. STM32使用HSE/HSI配置时钟(六)
  13. 计算机打印机密码怎么设置,如何设置电脑开机密码(电脑如何安装打印机)
  14. 国产服务器飞腾/鲲鹏/龙芯下Linux(统信UOS、麒麟系统)下GB28181/Onvif/RTSP监控视频平台的部署操作
  15. [PTA]实验3-6 计算个人所得税
  16. 瓜子二手车 翻页 csv
  17. Unity Shader学习:体积光/体积阴影
  18. 将营销进行到底的逸仙电商,难向“完美”
  19. Matlab常用清除命令:clc、clear、clear all、clf、close、close all
  20. 心理学与计算机交叉学,认知心理学其与邻近学科交叉产物

热门文章

  1. 单例模式(Singleton)的6种实现
  2. Ubuntu Linux 携手诺基亚进军手机操作系统市场
  3. 数据通信原理期末总复习
  4. /var/run目录详解
  5. 计算机date时间和‘千年虫事件’
  6. 有关加班费,你得知道这些
  7. 百度地图 获取地址转换为经纬度
  8. Xshell使用密钥登录Linux服务器
  9. 如何利用谷歌邮箱别名功能获取无限 Gmail 邮箱
  10. PMP知识点总结-七大激励理论