Prerequisite: VGG

Ref[Object Tracking] Localization and Detection

SSD Paperhttp://lib.csdn.net/article/deeplearning/53059

SSD Paperhttps://arxiv.org/abs/1512.02325 [Origin, Liu et al., 2015]

17 pages.

摘要:

我们提出了一种使用单个深层神经网络检测图像中对象的方法。

我们的方法,名为SSD,将边界框的输出空间离散化为一组默认框,该默认框在每个特征图位置有不同的宽高比和尺寸。

在预测期间,网络针对每个默认框中的每个存在对象类别生成分数,并且对框进行调整以更好地匹配对象形状。

另外,网络组合来自具有不同分辨率的多个特征图的预测,以适应处理各种尺寸的对象。

我们的SSD模型相对于需要region proposal的方法是简单的,因为它完全消除了proposal生成和后续的像素或特征重采样阶段,并将所有计算封装在单网络中。这使得SSD容易训练和直接集成到需要检测组件的系统。

PASCALVOC,MS COCO和ILSVRC数据集的实验结果证实,SSD与使用额外的region proposal的方法具有可比较的准确性,并且速度更快,同时为训练和推理提供统一的框架。与其他单级方法相比,SSD具有更好的精度,即使输入图像尺寸更小。对VOC2007,在300×300输入,SSD在Nvidia Titan X上58FPS时达到72.1%的mAP,500×500输入SSD达到75.1%的mAP,优于类似的现有技术Faster R-CNN模型。代码链接:https://github.com/weiliu89/caffe/tree/ssd

Abstract. We present a method for detecting objects in images using a single
deep neural network. Our approach, named SSD, discretizes the output space of
bounding boxes into a set of default boxes over different aspect ratios and scales
per feature map location. At prediction time, the network generates scores for the
presence of each object category in each default box and produces adjustments to
the box to better match the object shape. Additionally, the network combines predictions from multiple feature maps with different resolutions to naturally handle
objects of various sizes.

-----------------------------------------------

SSD is simple relative to methods that require object
proposals because it completely eliminates proposal generation and subsequent
pixel or feature resampling stages and encapsulates all computation in a single
network.

因为它完全消除了proposal生成和后续的像素或特征重采样阶段,并将所有计算封装在单网络中.

This makes SSD easy to train and straightforward to integrate into systems that require a detection component.

-----------------------------------------------

Experimental results on the PASCAL
VOC, COCO, and ILSVRC datasets confirm that SSD has competitive accuracy
to methods that utilize an additional object proposal step and is much faster, while
providing a unified framework for both training and inference. For 300 × 300 input, SSD achieves 74.3% mAP1 on VOC2007 test at 59 FPS on a Nvidia Titan
X and for 512 × 512 input, SSD achieves 76.9% mAP, outperforming a comparable state-of-the-art Faster R-CNN model. Compared to other single stage methods, SSD has much better accuracy even with a smaller input image size.

-----------------------------------------------

Code is
available at: https://github.com/weiliu89/caffe/tree/ssd .

关键词:实时对象检测; 卷积神经网络

1、 引言

当前,现有对象检测系统是以下方法的变体:

假设边界框,对每个框重新取样像素或特征,再应用高质量分类器。尽管准确,但这些方法对于嵌入式系统来说计算量过大,即使对于高端硬件,对于实时或接近实时的应用来说也太慢。

本文提出了第一个基于深层网络的对象检测器,它不会对边界框假设的像素或特征进行重新取样,但和这种做法一样准确。

这使高精度检测速度有显着提高(在VOC2007测试中, 58 FPS下 72.1%mAP | 对Faster R-CNN 7 FPS 下mAP 73.2% | YOLO 45 FPS 下mAP 63.4%)。

速度的根本改进来自消除边界框proposal和随后的像素或特征重采样阶段。

The fundamental improvement in speed comes from eliminating bounding box proposals and the subsequent pixel or feature resampling stage.

这不是第一篇这么做的文章(cf [4,5]),但是通过增加一系列改进,我们设法提高了以前尝试的准确性。我们的改进包括使用不同宽高比检测的单独的预测器(滤波器),预测边界框中的对象类别和偏移,并且将这些滤波器应用于网络后期的多个特征图,以便执行多尺度检测

通过这些修改,我们可以使用相对低分辨率的输入实现高精度检测,进一步提高处理速度。

总结我们的贡献如下:

- 我们引用了SSD,一个单次检测器,用于多个类别,比先前技术的单次检测器(YOLO)速度更快,并且更准确很多,实际上和使用regionproposal、pooling的更慢技术    一样准确(包括Faster RCNN)

- SSD方法的核心是使用小卷积滤波器来预测特征图上固定的一组默认边界框的类别分数位置偏移

- 为了实现高检测精度,我们从不同尺度的特征图产生不同尺度的预测,并且通过宽高比来明确地分离预测。

- 总之,这些设计特性得到了简单的端到端训练和高精度,进一步提高速度和精度的权衡,即使输入相对低分辨率图像。

- 实验包括在PASCAL VOC,MS COCO和ILSVRC上评估不同输入大小下模型耗时和精度分析,并与一系列最新的先进方法进行比较。

2、单次检测器(SSD)

本节介绍我们提出的SSD检测架构(第2.1节)和相关的训练方法(第2.2节)。之后, 第3节呈现特定数据集的模型细节和实验结果。

图1:SSD架构。 

(a) SSD在训练期间仅需要每个对象的输入图像和真实标签框。 卷积处理时,我们在具有不同尺度(例如(b)和(c)中的8×8和4×4)的若干特征图中的每个位置处评估不同横宽比的小集合(例如4个)默认框。

对于每个默认框,我们预测对所有对象类别((c 1,c2,...,cp))的形状偏移置信度

在训练时,我们首先将这些默认框匹配到真实标签框。 例如,两个默认框匹配到猫和狗,这些框为正,其余视为负。

模型损失是位置损失(例如平滑L1 [6])和置信损失(例如Softmax)之间的加权和。

Fig. 1: SSD framework. (a) SSD only needs an input image and ground truth boxes for each object during training.

In a convolutional fashion, we evaluate a small set (e.g. 4)
of default boxes of different aspect ratios at each location in several feature maps with different scales (e.g. 8 × 8 and 4 × 4 in (b) and (c)).

For each default box, we predict
both the shape offsets and the confidences for all object categories ((c1, c2, · · · , cp)).

At training time, we first match these default boxes to the ground truth boxes. For
example, we have matched two default boxes with the cat and one with the dog, which
are treated as positives and the rest as negatives. The model loss is a weighted sum
between localization loss (e.g. Smooth L1 [6]) and confidence loss (e.g. Softmax).

2.1 模型

SSD方法基于前馈卷积网络,其产生固定大小的边界框集合和框中对象类别的分数,接着是非最大化抑制步骤以产生最终检测。

早期网络基于高质量图像分类(在任何分类层之前截断(译者注:特征提取网络,例如:VGG、googlenet、alexnet))的标准架构,我们将其称为基础网络(我们的试验中使用了VGG-16网络作为基础,其他网络也应该能产生好的结果)。然后,我们向网络添加辅助结构,产生了具有以下主要特征的检测:

多尺度特征图检测:

我们将卷积特征层添加到截断的基础网络的末尾。

这些层尺寸逐渐减小,得到多个尺度检测的预测值。

检测的卷积模型对于每个特征层是不同的(参见在单个尺度特征图上操作的Overfeat [4]和YOLO[5])。

图2:两个单次检测模型之间的比较:SSD和YOLO [5]。

我们的SSD模型在基础网络的末尾添加了几个特征层,这些层预测了不同尺度和宽高比对默认框的偏移及其相关置信度。

300×300输入尺寸的SSD在VOC2007测试中的精度显着优于448×448输入的YOLO的精度,同时还提高了运行速度,尽管YOLO网络比VGG16快。

检测的卷积预测器:每个添加的特征层(或可选的基础网络的现有特征层)可以使用一组卷积滤波器产生固定的预测集合。

这些在图2中SSD网络架构顶部已指出。对于具有p个通道的大小为m×n的特征层,使用3×3×p卷积核卷积操作,产生类别的得分或相对于默认框的坐标偏移

在每个应用卷积核运算的m×n大小位置处,产生一个输出值。边界框偏移输出值是相对于默认框测量,默认框位置则相对于特征图(参见YOLO [5]的架构,中间使用全连接层而不是用于该步骤的卷积滤波器)。

For a feature layer of size m × n with p channels, the basic element for predicting parameters of a potential detection is a 3 × 3 × p small kernel
that produces either a score for a category, or a shape offset relative to the default box coordinates. At each of the m × n locations where the kernel is applied, it produces an output value.

默认框与宽高比:我们将一组默认边界框与顶层网络每个特征图单元关联。默认框对特征图作卷积运算,使得每个框实例相对于其对应单元格的位置是固定的。

在每个特征映射单元中,我们预测相对于单元格中的默认框形状的偏移,以及每个框中实例的每类分数。

具体来说,对于在给定位置的k个框中每个框,我们计算c类分数和相对于原始默认框的4个偏移量。

这使得在特征图中的每个位置需要总共(c+4)*k个滤波器,对于m×n特征图产生(c+4)*k*m*n个输出。有关默认框的说明,请参见图1。我们的默认框类似于Faster R-CNN [2]中使用的anchor boxes,但我们将其应用于不同分辨率的特征图中。在多个特征图中使用不同的默认框形状,可以有效地离散可能的输出框形状空间。

2.2 训练

训练SSD和训练使用region proposal、pooling的典型分类器的关键区别在于: 真实标签信息需要被指定到固定的检测器输出集合中的某一特定输出。

Faster R-CNN [2]和MultiBox [7]的regionproposal阶段、YOLO [5]的训练阶段也需要类似这样的标签。一旦确定了该指定,则端对端地应用损失函数和反向传播。

训练还涉及选择用于检测的默认框和尺度集合,以及hard negative mining和数据增广策略。

The key difference between training SSD and training a typical detector that uses region
proposals, is that ground truth information needs to be assigned to specific outputs in the fixed set of detector outputs.

Some version of this is also required for training in YOLO[5] and for the region proposal stage of Faster R-CNN[2] and MultiBox[7].

Once this assignment is determined, the loss function and back propagation are applied end-to-end. Training also involves choosing the set of default boxes and scales for detection
as well as the hard negative mining and data augmentation strategies.

匹配策略

在训练时,我们需要建立真实标签默认框之间的对应关系。

请注意,对于每个真实标签框,我们从默认框中进行选择,这些默认框随位置、纵横比和比例而变化。

启始时,我们匹配每个真实标签框与默认框最好的jaccard重叠。这是原始MultiBox [7]使用的匹配方法,它确保每个真实标签框有一个匹配的默认框。

与MultiBox不同,匹配默认框与真实标签jaccard重叠高于阈值(0.5)的默认框。添加这些匹配简化了学习问题:它使得有多个重叠默认框时网络预测获得高置信度,而不是要求它选择具有最大重叠的那个。

训练

SSD训练来自MultiBox[7,8],但扩展到处理多个对象类别

其中N是匹配的默认框的数量,位置损失是预测框(l)和真实标签值框(g)参数之间的平滑L1损失[6]。

选择默认框的比例和横宽比

大多数卷积网络通过加深层数减小特征图的大小。这不仅减少计算和存储消耗,而且还提供一定程度的平移和尺寸不变性。

为了处理不同的对象尺寸,一些方法[4,9]建议将图像转换为不同的尺寸,然后单独处理每个尺寸,然后组合结果。

然而,通过用单个网络中的若干不同层的特征图来进行预测,我们可以得到相同的效果,同时还在所有对象尺度上共享参数。

之前的研究[10,11]已经表明使用来自较低层的特征图可以提高语义分割质量,因为较低层捕获到输入对象的更精细的细节。

类似地,[12]表明,添加从高层特征图下采样的全局文本可以帮助平滑分割结果。

受这些方法的启发,我们使用低层和高层的特征图进行检测预测。图1示出了在框架中使用的两个示例特征图(8×8和4×4),当然在实践中,我们可以使用更多具有相对小的计算开销的特征图。

已知网络中不同级别的特征图具有不同的(经验)感受野大小[13]。幸运的是,在SSD框架内,默认框不需要对应于每层的实际感受野

我们可以设计平铺,使得特定位置特征图,学习响应于图像的特定区域和对象的特定尺度。

假设我们要使用m个特征图做预测。每个特征图的默认框的比例计算如下:

其中smin是0.2,smax是0.95,意味着最低层具有0.2的刻度,最高层具有0.95的刻度,并且其间的所有层是规则间隔的

通过组合许多特征图在所有位置的不同尺寸和宽高比的所有默认框的预测,我们具有多样化的预测集合,覆盖各种输入对象尺寸和形状。例如图 1中,狗被匹配到4×4特征图中的默认框,但不匹配到8×8特征图中的任何默认框。

这是因为那些框具有不同的尺度但不匹配狗的框,因此在训练期间被认为是负样本。

Hard negative mining 

在匹配步骤之后,大多数默认框都是负样本,特别是当可能的默认框数量很大时。这导致了训练期间正负样本的严重不平衡。

我们使用每个默认框的最高置信度对它们进行排序,并选择前面的那些,使得正负样本之间的比率最多为3:1,以代替使用所有的负样本。我们发现,这导致更快的优化和更稳定的训练。

数据增广

为了使模型对于各种输入对象大小和形状更加鲁棒,每个训练图像通过以下选项之一随机采样:

- 使用整个原始输入图像

- 采样一个片段,使对象最小的jaccard重叠为0.1,0.3,0.5,0.7或0.9。

- 随机采样一个片段

每个采样片段的大小为原始图像大小的[0.1,1],横宽比在1/2和2之间。如果真实标签框中心在采样片段内,则保留重叠部分。

在上述采样步骤之后,将每个采样片大小调整为固定大小,并以0.5的概率水平翻转。

3、实验结果

基础网络:我们的实验基于VGG16 [14]网络,在ILSVRC CLS-LOC数据集[15]预训练。

类似于DeepLab-LargeFOV [16],我们将fc6和fc7转换为卷积层,从fc6和fc7两层采样得到参数,将pool5从2×2-s2更改为3×3-s1,并使用atrous算法填“洞”。我们删除了所有的dropout层和fc8层,使用SGD对这个模型进行fine-tune,初始学习率 ,0.9 momentum, 0.0005 weight decay, batch大小32。每个数据集的学习速率衰减策略略有不同,稍后我们将描述详细信息。所有训练和测试代码在caffe框架编写,开源地址:https://github.com/weiliu89/caffe/tree/ssd

4、相关工作

目前有两种已建立的用于图像中对象检测的方法,

  • 一种基于滑动窗口,
  • 另一种基于region proposal分类。<-- better.

在卷积神经网络出现之前,用于检测的两种方法DeformablePart Model(DPM)[22]和选择性搜索[1]性能接近。

然而,在R-CNN[20]带来的显着改进之后,其结合了选择性搜索region proposal和基于卷积网络的后分类,region proposal对象检测方法变得普遍。

原始的R-CNN方法已经以各种方式进行了改进。

  • 第一组方法提高了后分类的质量和速度,因为它需要对成千上万的图像作物进行分类,这是昂贵和耗时的。SPPnet[9]对原始的R-CNN方法大大提速。它引入了空间金字塔池化层,其对区域大小和尺度更加鲁棒,并且允许分类层重用在若干图像分辨率生成的特征图特征。Fast R-CNN[6]扩展了SPPnet,使得它可以通过最小化置信度和边界框回归的损失来对所有层进行端对端微调,这在MultiBox[7]中首次引入用于学习对象。
  • 第二组方法使用深层神经网络提高proposal生成的质量。在最近的工作中,例如MultiBox[7,8],基于低层图像特征的选择性搜索region proposal被直接从单独的深层神经网络生成的proposal所替代。这进一步提高了检测精度,但是导致了一些复杂的设置,需要训练两个神经网络及其之间的依赖。Faster R-CNN[2]通过从region proposal网络(RPN)中学习的方案替换了选择性搜索proposal,并且引入了通过微调共享卷积层和两个网络的预测层之间交替来集成RPN与Fast R-CNN的方法。用这种方式region proposal池化中层特征图,最终分类步骤更快速。我们的SSD与Faster R-CNN中的region proposal网络(RPN)非常相似,因为我们还使用固定的(默认)框来进行预测,类似于RPN中的achor框。但是,不是使用这些来池化特征和评估另一个分类器,我们同时在每个框中为每个对象类别产生一个分数。因此,我们的方法避免了将RPN与Fast R-CNN合并的复杂性,并且更容易训练,更易于集成到其他任务中。
  • 另一组方法与我们的方法直接相关,完全跳过proposal步骤,直接预测多个类别的边界框和置信度。 OverFeat[4]是滑动窗口方法的深度版本,在知道基础对象类别的置信度之后直接从最顶层特征图的每个位置预测边界框。YOLO [5]使用整个最高层特征图来预测多个类别和边界框(这些类别共享)的置信度。我们的SSD方法属于此类别,因为我们没有提案步骤,但使用默认框。然而,我们的方法比现有方法更灵活,因为我们可以在不同尺度的多个特征图中的每个特征位置上使用不同宽高比的默认框。如果顶层特征图每个位置只使用一个默认框,我们的SSD将具有与OverFeat[4]类似的架构;如果我们使用整个顶层特征图并且添加一个全连接层用于预测而不是我们的卷积预测器,并且没有明确考虑多个宽高比,我们可以近似地再现YOLO[5]。

引用

. Uijlings, J.R., van de Sande, K.E., Gevers, T.,Smeulders, A.W.: Selective search for object recognition. IJCV ()

. Ren, S., He, K., Girshick, R., Sun, J.: FasterR-CNN: Towards real-time object detection with region proposal networks. In:NIPS. ()

. He, K., Zhang, X., Ren, S., Sun, J.: Deepresidual learning for image recognition. In: CVPR.()

. Sermanet, P., Eigen, D., Zhang, X., Mathieu, M.,Fergus, R., LeCun, Y.: Overfeat: Integrated recognition, localization anddetection using convolutional networks. In: ICLR. ()

. Redmon, J., Divvala, S., Girshick, R., Farhadi,A.: You only look once: Unified, real-time object detection. In: CVPR. ()

.  Girshick,R.: Fast R-CNN. In: ICCV. ()

.  Erhan, D.,Szegedy, C., Toshev, A., Anguelov, D.: Scalable object detection using deep neuralnetworks. In: CVPR. ()

.  Szegedy,C., Reed, S., Erhan, D., Anguelov, D.: Scalable, high-quality object detection.arXiv preprint arXiv:1412.1441 v3 ()

.  He, K.,Zhang, X., Ren, S., Sun, J.: Spatial pyramid pooling in deep convolutionalnetworks for visual recognition. In: ECCV. ()

. Long, J., Shelhamer, E., Darrell, T.: Fullyconvolutional networks for semantic segmentation. In: CVPR. ()

. Hariharan, B., Arbeláez, P., Girshick, R.,Malik, J.: Hypercolumns for object segmentation and fine-grained localization.In: CVPR. ()

. Liu, W., Rabinovich, A., Berg, A.C.: ParseNet:Looking wider to see better. In: ILCR. ()

. Zhou, B., Khosla, A., Lapedriza, A., Oliva, A.,Torralba, A.: Object detectors emerge in deep scene cnns. In: ICLR. ()

. Simonyan,K.,Zisserman,A.:Verydeepconvolutionalnetworksforlarge-scaleimagerecog-nition. In: NIPS. ()

. Russakovsky, O., Deng, J., Su, H., Krause, J.,Satheesh, S., Ma, S., Huang, Z., Karpathy, A., Khosla, A., Bernstein, M., Berg,A.C., Li, F.F.: Imagenet large scale visual recognition challenge. IJCV ()

. Chen, L.C., Papandreou, G., Kokkinos, I.,Murphy, K., Yuille, A.L.: Semantic image segmentation with deep convolutionalnets and fully connected crfs. In: ICLR. ()

. Jia, Y., Shelhamer, E., Donahue, J., Karayev,S., Long, J., Girshick, R., Guadarrama, S., Darrell, T.: Caffe: Convolutionalarchitecture for fast feature embedding. In: MM, ACM ()

. Glorot, X., Bengio, Y.: Understanding thedifficulty of training deep feedforward neural networks. In: AISTATS. ()

. Hoiem, D., Chodpathumwan, Y., Dai, Q.:Diagnosing error in object detectors. In: ECCV . ()

. Girshick, R., Donahue, J., Darrell, T., Malik,J.: Rich feature hierarchies for accurate object detection and semanticsegmentation. In: CVPR. ()

. Bell, S., Zitnick, C.L., Bala, K., Girshick, R.:Inside-outside net: Detecting objects in context with skip pooling andrecurrent neural networks. In: CVPR. ()

. Felzenszwalb, P., McAllester, D., Ramanan, D.: Adiscriminatively trained, multiscale, deformable part model. In: CVPR. ()

Video: SSD: Single Shot MultiBox Detector (How it works)

PPT: ppt link

这张图对理解很重要!

[Localization] SSD - Single Shot MultiBoxDetector的更多相关文章

  1. SSD: Single Shot MultiBoxDetector英文论文翻译

    SSD英文论文翻译 SSD: Single Shot MultiBoxDetector 2017.12.08    摘要:我们提出了一种使用单个深层神经网络检测图像中对象的方法.我们的方法,名为SSD ...

  2. SSD(Single Shot MultiBox Detector)的安装配置和运行

    下文图文介绍转自watersink的博文SSD(Single Shot MultiBox Detector)不得不说的那些事. 该方法出自2016年的一篇ECCV的oral paper,SSD: Si ...

  3. SSD: Single Shot MultiBox Detector

    By Wei Liu, Dragomir Anguelov, Dumitru Erhan, Christian Szegedy, Scott Reed, Cheng-Yang Fu, Alexande ...

  4. 机器视觉:SSD Single Shot MultiBox Detector

    今天介绍目标检测中非常著名的一个框架 SSD,与之前的 R-CNN 系列的不同,而且速度比 YOLO 更快. SSD 的核心思想是将不同尺度的 feature map 分成很多固定大小的 box,然后 ...

  5. 目标检测--SSD: Single Shot MultiBox Detector(2015)

    SSD: Single Shot MultiBox Detector 作者: Wei Liu, Dragomir Anguelov, Dumitru Erhan, Christian Szegedy, ...

  6. 论文笔记 SSD: Single Shot MultiBox Detector

    转载自:https://zhuanlan.zhihu.com/p/33544892 前言 目标检测近年来已经取得了很重要的进展,主流的算法主要分为两个类型(参考RefineDet):(1)two-st ...

  7. SSD: Single Shot MultiBox Detector 编译方法总结

    SSD是一个基于单网络的目标检测框架,它是基于caffe实现的,所以下面的教程是基于已经编译好的caffe进行编译的. caffe的编译可以参考官网 caffe Installation Instal ...

  8. [论文理解]SSD:Single Shot MultiBox Detector

    SSD:Single Shot MultiBox Detector Intro SSD是一套one-stage算法实现目标检测的框架,速度很快,在当时速度超过了yolo,精度也可以达到two-stag ...

  9. 【计算机视觉】目标检测之ECCV2016 - SSD Single Shot MultiBox Detector

    本文转载自: http://www.cnblogs.com/lillylin/p/6207292.html SSD论文阅读(Wei Liu--[ECCV2016]SSD Single Shot Mul ...

随机推荐

  1. 移动端tap与click的区别 && 点透事件

    移动端的问题 移动端的主要问题是click会有300ms的延迟,主要原因是苹果手机在设计时,考虑到用户在浏览网页时需要放大,所以,在用户点击的300ms之后,才触发click,如果300ms之内还有c ...

  2. C语言事实上不简单:sizeof

    问:C语言中一共同拥有多少个keyword? 答:32个. 答不上来的没关系.非常正常.我们玩的是程序的艺术.而不是背数字. 只是这个特殊的数字1<<5也是非常好记的-.-. 问:size ...

  3. ALSA学习资料

    一.内核文档  Linux Sound Subsystem Documentation 二.一些API 1.snd_pcm_period_elapsed 2.snd_pcm_lib_buffer_by ...

  4. 游戏保护大放送之GPK

    GPK也没有啥特别.龙之谷多开检测和别的不一样. #include "struct.h" #include "FGPK.h" ///////////////// ...

  5. Launch 启动全屏 隐藏上方状态栏

    1:statusBar字体为白色 在plist里面设置View controller-based status bar appearance 为 NO:设置statusBarStyle 为 UISta ...

  6. 全景分割pipeline搭建

    全景分割pipeline搭建 整体方法使用语义分割和实例分割结果,融合标签得到全景分割结果: 数据集使用:panoptic_annotations_trainval2017和cityscapes; p ...

  7. Android之官方导航栏之Toolbar(Toolbar+DrawerLayout+ViewPager+PagerSlidingTabStrip)

    通过前几篇文章,我们对Android的导航栏有了一定的了解认识,本次文章将对Toolbar进行综合应用,主要结合DrawerLayout.ViewPager.PagerSlidingTabStrip一 ...

  8. XMPP使用简介--登录

    在现阶段的通信服务中,各种标准都有,因此会出现无法实现相互连通,而XMPP(Extensible Message and presence Protocol)协议的出现,实现了整个及时通信服务协议的互 ...

  9. 从入门到精通Puppet的实践之路

    本文有感于<精通Puppet配置管理工具>在豆瓣上的某些差评而顺手写的书评. 半路出家   故事要从12年初说起.  某天,部门老大让我所在team的老大调研一下当下业界的配置管理工具.于 ...

  10. SqlSession介绍

    SqlSession是MyBatis的关键对象,是执行持久化操作的对象,类似于JDBC中的Connection.它是应用程序与持久存储层之间执行交互操作的一个单线程对象,也是MyBatis执行持久化操 ...