翻译论文:ImageNet Classification with Deep Convolutional Neural Networks


                   基于深度卷积神经网络的图像网络分类

摘要:

我们训练了一个大的,深度卷积神经网络来分类在ImageNet LSVRC-2010比赛中的120万个高分辨率图像进入了1000个不同的类别。在测试数据上,我们实现了前1和前5的错误率为37.5%和17.0%,它比以前的先进技术要好得多。该神经网络由6000万个参数和650,000个神经元组成五个卷积层,其中一些接着的是最大池化层,和三个全连接层,以及最后的1000个类别softmax。为了加快训练速度,我们使用了非饱和神经元和一种非常有效的卷积运算GPU实现。为了减少全连接中的过度拟合,我们采用了最近开发的称为“dropout”的正则化方法,这种方法被证明是非常有效的。我们还在该模型中输入了该模型的变体在ILSVRC-2012竞赛中并取得了15.3%的前5个测试错误率,相比之下,第二好的进入实现了26.2%。

介绍:

   目前的对象识别方法是机器学习中必须要使用的方法。为了证明他们的表现,我们可以收集更大的数据集,学习更强大的模型,并使用更好的技术来防止过度拟合。直到最近,有标签图像的数据集相对较小—数万张图像的数量级(例如,NORB [16],Caltech-101/256 [8,9]和CIFAR-10/100 [12])。使用这种大小的数据集可以很好地解决简单的识别任务,特别是如果它们增加了标签保留转换。例如,MNIST数字识别任务(<0.3%)的当前最佳错误率接近人类表现[4]。但是在实际设置中的对象表现出相当大的可变性,因此要学会识别它们必须使用更大的训练集。实际上,小图像数据集的缺点已被广泛认可(例如,Pinto等人[21]),但最近才有可能收集带有数百万张图像的有标签的数据集。新的更大的数据集包括LabelMe [23],其中由数十万个完全被分割的图像和ImageNet [6]组成,它由超过22,000个类别中超过1500万个有标签的高分辨率图像组成。

要了解数以百万计的图像中的数千个对象,我们需要一个具有大量学习的模型容量。然而,对象识别任务的巨大复杂性意味着即使是与ImageNet一样大的数据集也无法指定此问题,因此我们的模型也应该有很多以前的知识来补偿我们没有的所有数据。卷积神经网络(CNNs)构成了一类这样的模型[16,11,13,18,15,22,26]。他们的容量可以通过改变他们的深度和广度来控制,他们也可以做出强有力的,大多数正确的假设关于图像的性质(即统计的平稳性和像素依赖性的位置)。因此,与具有类似大小的层的标准前馈神经网络相比,CNN具有更少的连接和参数,因此它们更容易训练,而它们理论上最好的表现可能只会轻微恶化。

尽管CNN具有吸引人的品质,尽管其本地架构相对有效,它们在大规模应用于高分辨率图像时仍然过于昂贵。 幸运的是,当前的GPU与高度优化的2D卷积实现相结合,功能强大足以促进有趣的大型CNN和最近的数据集(如ImageNet)的训练包含足够的标签示例来训练此类模型而不会出现严重过拟合。

   本文的具体贡献如下:我们训练了一个最大的卷积神经网络追溯到在ILSVRC-2010和ILSVRC-2012竞赛中使用的ImageNet子集。并取得了迄今为止在这些数据集上报告的最佳结果。我们写了一篇高度优化的2D卷积GPU实现以及我们公开提供在训练卷积神经网络中固有的所有其他操作。我们的网络包含一系列新的和不寻常的特征,可以改善其性能并缩短培训时间,详见第3节。我们的网络规模甚至超过了一个重大问题,有120万个标记的训练样例,所以我们使用了几种有效的技术预防过拟合,在第4节中描述。我们的最终网络包含五个卷积和三个全连接的层,这个深度似乎很重要:我们发现删除任何卷积层(每个卷积层包含的参数不超过模型参数的1%)导致性能低下。

   最后,网络的大小主要受当前GPU可用内存量的限制以及我们愿意容忍的训练时间。 我们的网络需要五个人在两台GTX 580 3GB GPU上训练六天。 我们所有的实验都表明了我们的结果可以通过等待更快的GPU和更大的数据集变得可用来改进。

数据集:

ImageNet是一个超过1500万个标记的高分辨率图像的数据集,大约有22,000个类别。 图像是从网上收集的,并由人类贴标机使用Ama zon-Mechanical Turk众包工具进行标记。 从2010年开始,作为Pascal Visual Object的一部分挑战,一项名为ImageNet大规模视觉识别挑战的年度竞赛(ILSVRC)已经举行。 ILSVRC使用ImageNet的一个子集,每个子集大约有1000个图像1000个类别。 总共有大约120万个训练图像,50,000个验证图像,以及150,000个测试图像。

ILSVRC-2010是ILSVRC的唯一版本,测试集标签可用,所以这是我们执行大部分实验的版本。 因为我们也进入了我们的模型在ILSVRC-2012竞赛中,在第6节中,我们将此数据集版本的结果报告为好的,哪些测试集标签不可用。在ImageNet上,习惯上报告两种错误率:top-1和top-5,其中前5个错误率是正确标签的测试图像的少部分不属于该模型认为最可能的五个标签之一。

ImageNet由可变分辨率图像组成,而我们的系统需要恒定的输入维度。 因此,我们将图像下采样到256x256的固定分辨率,给予的一个矩形图像,我们首先重新缩放图像,使得较短边的长度为256,然后从结果图像中裁剪出中心256×256的补丁。我们没有对图像进行预处理以任何其他方式,除了从每个像素减去训练集上的平均活动。所以我们在像素的(居中)原始RGB值上训练我们的网络。

架构:

我们网络的架构如图2所示。它包含八个学习层 - 五个卷积和三个全连接。 下面,我们描述一些新颖的或不寻常的我们网络架构的特点。第3.1-3.4节根据我们的估计进行排序它们的重要性,首先是最重要的。

ReLU非线性:

   模拟神经元的标准方法-输出f为输入x的函数是f(x)= tanh(x)或

在训练时间方面具有梯度下降,这些饱和非线性比非饱和非线性慢得多f(x)= max(0,x)。 继Nair和Hinton之后[20],我们将具有这种非线性的神经元称为整流线性单位(ReLUs)。 深度卷积神经网络与ReLU训练的速度比它们快几倍与tanh单位的等价物。 这证明了图1显示了在CIFAR-10上达到25%训练错误所需的迭代次数特定四层卷积网络的数据集。 这个情节表明我们不会能够用这种大型神经网络进行实验对于这个工作,如果我们使用传统的饱和神经元模型。

我们不是第一个考虑用CNN替代传统神经元模型的人。 例如,Jarrett等。 [11]声称非线性f(x)= | tanh(x)|特别适用于他们的对比标准化类型,然后是局部的平均池化Caltech-101数据集。 然而,在这个数据集上,主要关注的是防止过拟合,所以他们观察的不同的加速能力的效果能够拟合我们在使用ReLU时报告的训练集。 更快的学习有很大的影响在大型数据集上训练的大型模型的性能。


图1:四层卷积神经网络使用RELU激活函数(实线)在CIFAR上达到25%的训练错误率-比一个同等的网络采用TANH激活函数(虚线)快6倍。 每个网络的学习率是独立选择的,以使训练尽可能快。没有采用任何形式的正则化。这里所显示的效果巨大基于各种各样的网络结构。但是使用ReLU的网络学习速度要比使用饱和神经元的同类网络快几倍。

在多GPU上训练:

一个GTX 580 GPU只有3GB的内存,这限制了可以在其上训练的网络的最大的大小。事实证明,120万个训练实例足以训练网络,这太大了拟合在一个GPU上,所以不能安装在一个GPU上。因此,我们将网络分布在两个GPU上。当前的GPU特别适合跨GPU并行化,因为它们能够直接读取和写入到一个内存,不经过主机内存。我们使用的并行化方案实际上将一半的内核(或神经元)放在每个GPU上,还有一个额外的技巧:GPU只在某些层进行通信。这意味着,例如,第3层的内核从第2层的所有内核映射中获取输入。然而,第4层中的内核只从那些第三层的内核中接收输入,位于同一GPU上。选择连接模式是交叉验证的一个问题,但这允许我们精确地调整通信量,直到它成为计算量的可接受的部分。

其结果架构与Ciresan等人使用的“柱状”CNN的结构有些相似。[5],但我们的柱状不是独立的(见图2)。这个方案减少了我们的top-1和top-5错误率分别通过1.7%和1.2%,与在一个GPU上训练的每个卷积层中有一半多内核的网络相比。两个GPU网络对训练的使用时间稍微短一些超过一个GPU网络。

局部响应归一化:

ReLU具有理想的属性,它们不需要输入规范化来防止它们饱和。 如果至少一些训练实例对ReLU产生积极的输入,那么学习将会发生在那个神经元中。 然而,我们仍然发现以下本地规范化方案有助于概括。用

表示通过在位置(x,y)上应用内核i计算的神经元的活动,然后应用ReLU非线性,响应标准化活动

由下式给出表达方式:


其中总和在相同空间位置的n个“相邻”核映射上运行,N是在层中的总的内核数量。内核映射的顺序当然是任意的并且是确定的在训练开始之前。这种响应归一化实现了一种横向抑制的形式灵感来自真实神经元中的类型,为神经元之间的大型活动创造竞争使用不同内核计算的输出。常数k,n,α和β是超参数值使用验证集确定; 我们使用k = 2,n = 5,α=

,β= 0.75。 我们在某些层中应用ReLU非线性后应用此归一化(参见第3.5节)。

该方案与Jarrett等人的局部对比度归一化方案有一些相似之处。[11],但是我们的更正确地被称为“亮度归一化”,因为我们不会减去均值活动。响应规范化将我们的top-1和top-5错误率分别降低了1.4%和1.2%。 我们还验证了该方案在CIFAR-10数据集上的有效性:四层CNN在没有归一化的情况下实现了13%的测试错误率,在归一化时达到了11%。

重叠池化:

   在CNN中的池化层总结了同一内核映射中相邻组的神经元组的输出。传统上,由相邻池化单元汇总的邻域不重叠(例如,[17,11,4])。 更确切地说,可以将池化层视为由池化网格组成单位间隔s个像素,每个单元总结了以该位置为中心的大小为z×z的邻域池化单位。如果我们设置s = z,我们就会获得常用的传统本地池化在CNN中。如果我们设置s

总体架构:

   现在我们准备描述CNN的总体架构。 如图2所示,网络包含八层权值; 前五个是卷积,其余三层是全连接的。 最后一个全连接层的输出被馈送到产生的1000条路径的softmax分布在1000个类别的标签上。 我们的网络最大化了多项逻辑回归目标,相当于最大化对数概率的训练案例的平均值在预测分布下的正确标签。

第二,第四和第五卷积层的内核仅连接到那些内核上一层中的映射位于同一GPU上(参见图2)。 第三个卷积层的内核被第二层中的所有内核映射连接。 全连接层中的神经元被前一层中的所有神经元连接。 响应归一化层遵循第一和第二卷积层。 部分中描述的最大池化层3.4,遵循响应归一化层以及第五个卷积层。 ReLU非线性应用于每个卷积层和全连接层的输出。

第一卷积层过滤224×224×3输入图像,96个大小为11×11×3的卷积核,步幅为4个像素(这是内核映射中相邻神经元的感受野中心之间的距离)。第二卷积层以第一卷积层的响应归一化和池化输出为输入,使用大小为5×5×48的256个内核过滤。第三、第四和第五个卷积层彼此连接,没有任何中间的池化或归一化层。第三层卷积层有384个大小为3×3×256的核与第二卷积层的输出(归一化,池化)相连。第四卷积层有384个内核大小为3×3×192,第五层有256个3×3×192的卷积核。全连接层有4096个神经元每个。


图2:CNN架构的图示,明确显示了责任的划定在两个GPU之间。 一个GPU运行图顶部的图层部分,而另一个运行图层部分在底部。 GPU仅在某些层进行通信。 网络的输入是150,528维,并且网络剩余层中的神经元数量被给出通过253,440-186,624-64,896-64,896-43,264-4096-4096-1000。

减少过拟合:

   我们的神经网络体系结构有6000万个参数。虽然ILSVRC的1000个类使每个训练示例对从图像到标签的映射施加了10字节的约束,但这被证明是不够学习这么多的参数没有相当多的过拟合。下面,我们描述了两种主要的方法来对抗过拟合。

数据增强:

  减少图像数据过拟合的最简单和最常用的方法是人为放大使用标签保留变换的数据集(例如,[25,4,5])。 我们采用两种不同的形式数据增强,两者都允许从计算量很小的原始图像生成转换图像,因此转换后的图像不需要存储在磁盘上。在我们的实现中,在CPU上用Python代码生成的转换后的图像当GPU正在对前一批图像进行训练时。所以这些数据增强方案实际上在计算上是免费的。

第一种形式的数据增强包括生成图像转换和水平反射。我们做这个通过从256×256图像中随机提取224X224个补丁(关于他们的水平反射),并在这些提取的补丁上训练我们的网络。这增加了我们的训练集的规模虽然由此产生的训练样例具有高度的相互依赖性,但训练集的系数为2048。 如果没有这种方案,我们的网络就会遭受严重的过拟合迫使我们使用更小的网络。 在测试时,网络通过提取五个224X224个补丁(四个角落补丁和一个中心补丁)以及它们的水平反射(因此总共十个补丁)进行预测,并且通过十个补丁在softmax层上进行网络的平均预测。

第二种形式的数据增强包括改变RGB通道的强度来训练图像。具体来说,我们在整个RGB像素值的集合上执行PCA通过ImageNet训练集。 对于每个训练图像,我们添加多个找到的主成分,其幅度与相应的特征值成比例,乘以从中得出的随机变量高斯基于均值为0和标准差0.1。 因此,每个RGB图像像素

我们添加以下数量:


其中pi和λi是RGB像素的3×3协方差矩阵的第i个特征向量和特征值,分别地,αi是上述随机变量。 每个αi只绘制一次对于特定训练图像的所有像素,直到该图像再次用于训练,在该处指出它被重新绘制。该方案近似地捕捉了自然图像的重要属性,即,该物体标识对于照明的强度和颜色的变化是不变的。 这个方案将前1个错误率降低了1%以上。

Dropout:

   结合许多不同模型的预测是减少测试误差的非常成功的方法[1,3],但对于已经训练几天的大型神经网络而言,它似乎太昂贵了训练。然而,有一个非常有效的模型结合版本只需要花费在训练期间大约两个因素。最近引入的技术称为“dropout”[10]将概率为0.5的每个隐藏神经元的输出设置为零。这样的神经元就不会对正向传播做出贡献,也不参与反向传播。因此,每次输入时,神经网络都会采用不同的架构,但所有这些架构共享权重。这种技术减少了神经元的复杂共适应,因为神经元不能依赖于其他特定的神经元的存在。因此,它被迫学习更有力的特征,这些特征可以与许多不同的其他神经元的随机子集结合。在测试时,我们使用所有神经元,但将它们的输出乘以0.5,即a合理逼近采用由此产生的预测分布的几何平均数许多指数级的dropout网络。

我们在图2的前两个全连接的层中使用了dropout。如果没有dropout,我们的网络会出现严重的过拟合。Dropout大约收敛了所需的迭代次数的两倍。

学习的细节:

   我们用随机梯度下降训练我们的模型,一批的大小为128个实例,动量为0.9,权重衰减为0.0005。我们发现这种微小的权重衰减是很重要的对于学习的模型。换句话说,这里的权重衰减不仅仅是正则化的:它减少了模型的训练误差。权重w的更新规则是:


其中,i是迭代索引,v是动量变量,


是学习率,


是目标值对w的偏导数的第i批Di上的平均值,在wi上进行评估。

我们从零均值的高斯分布中初始化了每一层的权重,标准差为0.01.我们初始化了第二层、第四层和第五卷积层的神经元偏差,在全连接的隐藏层中,有常数1。这种初始化通过向ReLU提供积极的输入,加快了学习的早期阶段。我们用常数0初始化了在剩余层中的神经元偏差。

我们对所有层次都使用了相同的学习速率,在整个训练过程中我们手动调整了这一比率。我们遵循的启发式方法是,当验证错误率已经停止时随着当前的学习速度的提高,学习率除以10。学习速度在0.01开始,终止前下降了3倍。我们通过训练了大约90个循环的网络通过120万张图像的训练集,在两个NVIDIA GTX 580 3GB GPU上花费了5到6天。

结果:

我们在ILSVRC-2010上的结果汇总在表1中。我们的网络实现了TOP-1和TOP-5测试集错误率分别为37.5%和17.0%.在ILSVRC-2010比赛中取得的最佳成绩有47.1%和28.2%的人采用了一种方法,即平均从六个不同特性上训练的稀疏编码模型中得出的平均预测值[2],此后发表的最佳结果分别为45.7%和25.7%用一个方法,平均二分类预测对费舍尔向量(FVS)计算来自密集抽样特征的两种类型[24]。

我们还在ILSVRC-2012竞赛中加入了我们的模型,并在表2中报告了我们的结果。由于ILSVRC-2012测试集标签是不可公开的,所以我们不能报告我们尝试的所有模型的测试错误率。在本段的其余部分中,我们交替使用验证和测试错误率,因为在我们的经验中,它们的差异不超过0.1%(见表2)。这个 本文所描述的CNN的误差率为18.2%.平均五个相似的CNN的预测结果的误差率为16.4%。训练一个CNN,增加第六个卷积层在最后一个池化层上,对整个ImageNet 2011年秋季发行版(1500万张图像,22000类别)进行分类,然后在ILSVRC-2012上对其进行“微调”,错误率为16.6%。平均预测在2011年整个秋季发布中,有两个CNN与上述五个CNN一起进行了预训练,其误差率为15.3%。第二名比赛项目的误差率为26.2%。 这是一种从不同类型的密集采样特征中计算出的几种在FVS上训练的分类器的预测平均值的方法[7]。


表1:ILSVRC-2010测试集结果的比较。斜体是其他人取得的最好结果。

最后,我们还报告了2009年秋季版ImageNet的错误率,包括10184个类别和890万幅图像。在这个数据集中,我们遵循了文献会议中使用一半的图像用于训练,一半用于测试。因为没有已建立的测试集,我们的拆分必然与以前的作者使用的拆分不同,但这并不会对结果产生明显的影响。我们在这个数据集上的前1和前5错误率分别为67.4%和40.9%,由上面描述的网络实现,但是在最后一个池化层上有一个额外的第六个卷积层。在此数据集上发表的最好结果分别为78.1%和60.9%[19]。


表2:ILSVRC-2012年验证和测试集错误率的比较。斜体是其他人取得的最好结果。带有星号*的模型经过“预训练”,以对整个2011年秋季发布的ImageNet进行分类。详情见第6节。

定性评价:

图3显示了网络的两个数据连接层学习到的卷积核。该网络已经学习了各种频率和方向选择内核,以及各种彩色斑点。请注意这两个GPU显示的专门化,这是第3.5节中描述的受限连接的结果。GPU 1上的内核在很大程度上是颜色不可知的。在GPU 2上很大程度是特定颜色的.这种专门化在每次运行时都会发生,并且独立于任何特定的随机权重初始化(以GPU的重编码为模)。


图3:在224×224×3输入图像上,第一卷积层学习到大小为11×11×3的96个卷积核。前48个核是在GPU 1上学习的,而最下面的48个核是在GPU 2上学习到的。详情见6.1节。


图4:(左)8个ILSVRC-2010测试图像和5个标签最可能被我们的模型考虑。在每个图像下写入正确的标签,并将该概率分配给正确的LA BEL也显示有红色条(如果碰巧位于顶部5)。(右)第一列中的五个ILSVRC-2010测试图像。其余列显示生成特征V的六个训练图像 在最后一个隐层中,从特征向量到测试图像的欧几里得距离最小。

在图4的左边面板中,我们通过计算8个测试图像的前5个预测图像来定性地评估网络已经学到了什么。注意,即使是偏离中心的对象,例如在左上角的螨虫,可以被网络识别。大多数前五的标签似乎都是合理的。例如,只有其他类型的猫被认为是豹子的合理标签。在某些情况下(栅栏、樱桃)关于照片的预期焦点存在真正的歧义。

另一种探索网络视觉知识的方法是考虑图像在最后的4096维隐层中引起的特征激活。如果两个图像产生特征激活具有较小的欧几里得距离,可以说神经网络的较高层次认为它们是相似的。图4显示了来自测试集的5个图像和来自训练集的6个图像。 根据这一标准,获得与每一组最相似的。注意,在像素级中,检索到的训练图像通常在L2中对第一列查询的图像不接近。例如,检索到的狗和大象以各种姿势出现。我们在补充材料中给出了更多测试图像的结果。

利用两个4096维实数向量之间的欧几里得的距离来计算相似度是效率低下的,但是通过训练一个自动编码器来压缩这些向量,可以提高相似度的计算效率。 对于二进制编码。这应该产生比将自动编码器应用于未使用图像标签的原始像素[14]的更好的图像检索方法,因此倾向于检索具有相似边缘模式的图像,无论它们在语义上是否相似。

讨论:

我们的结果表明,一个大型的、深度卷积神经网络能够利用单纯的监督学习在极具挑战性的数据集上获得破记录结果。值得注意的是如果删除单个卷积层,则网络的性能会降低。例如,对于网络的前1性能,移除任何中间层都会导致约2%的损失。所以这个深度对取得我们的成果真的很重要。

为了简化我们的实验,我们没有使用任何无监督的预训练,尽管我们期望它会有所帮助,特别是当我们获得足够的计算能力来显著增加网络的大小的时候。在没有得到相应的标记数据量的情况下。到目前为止,我们的结果已经有所改善,因为我们已经使我们的网络更大,训练更长,但我们仍然有很多数量级为了匹配人类视觉系统的下颞通路。最终,我们希望在视频序列上使用非常大和深的卷积网络。时间结构提供了非常有用的信息,这些信息在静态图像中是缺失的或者是不那么明显的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,524评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,869评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,813评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,210评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,085评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,117评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,533评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,219评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,487评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,582评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,362评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,218评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,589评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,899评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,176评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,503评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,707评论 2 335