[文献翻译]Convolutional Two-Stream Network Fusion for Video Action Recognition

    摘要:

    卷积神经网络(ConvNets)在基于视频的动作识别方面提出了不同的解决方案用于合并外观信息和运动信息。我们研究了多种在空间和时间上融合ConvNet结果的方法,以便最好地利用此时空信息。我们有以下发现:(i)在卷积层上融合时空网络信息,而不是在softmax层上进行融合,并不会损失性能,还可以节省大量参数;(ii)在空间上最后一个卷积层上融合此类网络更合适,而不是在早期进行融合,并且在预测层上额外进行融合可以提高准确性;最后(iii)在时空邻域上合并抽象卷积特征进一步提高了性能。 基于这些研究,我们提出了一种新的ConvNet架构,用于视频的时空融合,并在标准基准上评估其性能,该架构可实现SOTA。我们的代码和模型可以在以下网址参考:http://www.robots.ox.ac.uk/vgg/software/two stream action

    1.介绍

    基于视频的动作识别是一个非常活跃的研究领域,而最先进的系统与人类的表现相差还是很大。与计算机视觉的其他领域一样,最近的工作集中在将卷积神经网络(ConvNets)应用于此任务,并在许多方向取得了进展:学习局部时空滤波器[11,28,30]),并结合了光流片段[22],并为扩展时间序列进行了建模[6,17]。

    但是,行动识别方向尚未取得卷积网络在其他领域取得的实质性成果,例如图像分类[12、23、27],人脸识别[21]和人体姿态估计[29]。实际上,当前在诸如UCF101[24]和HMDB51[13]等标数据集上的SOTA[30,34]是通过ConvNets和Fisher编码[20]的手工编码特征(如在密集轨迹[33]上的HOF [14])的组合。

    缺乏进展的部分原因可能是当前用于训练的数据集太小或太嘈杂(我们将在下面的相关工作中提到这一点)。与图像分类相比,视频中的动作分类还面临动作和视点变化的挑战,因此,与ImageNet相比,可能需要更多的训练示例(每类1000个),但UCF-101每个类别只有100个示例。另一个重要原因是,当前的ConvNet架构无法充分利用时间信息,因此其性能通常受到空间(外观)识别的主导。

    从图1可以看出,仅从静止图像的外观就可以识别出一些动作(在这个例子中为射箭)。但是,对于其他而言,单张图片可能会使结果模棱两可,因此需要运动结合。例如,考虑区别走路和跑步,打哈欠和大笑,游泳和爬行。双流体系结构[22]通过分别单独训练ConvNet来显示静态图像和光流堆栈,从而结合了运动信息。确实,这项工作表明仅光流信息就足以区分UCF101中的大多数动作。

    但是,双流体系结构(或任何先前的方法)不能利用两个非常重要的线索来进行视频中的动作识别:(i)用光流识别(时间提示)和外观识别(空间提示)知道是什么物体在移动(ii)这些线索如何随着时间演变。

    本文的目标是通过构建一个结构来解决这一问题,这个结构能够在特征提取过程的级别上融合空间和时间线索,并具有空间和时间结合特征。特别在第3部分研究融合的三个方面:(i)在3.1考虑到空间信息,如何融合两个网络(空间和时间)?(ii)在3.2两个网络在哪里融合?最后在3.3(iii)如何暂时融合网络?在每一项研究中,我们都选择最佳结果(部分4) 然后,把这些放在一起(在4.6),提出一个新的架构(3.4)用于双流网络的时空融合以实现SOTA。

    我们使用MatConvNet工具箱[31]实现了我们的方法,并在以下网址公布:

    https://github.com/feichtenhofer/twostreamfusion

    2.相关工作

    近年来,利用ConvNets进行视频动作识别的一些研究工作,已经探讨了如何改变使用框架化的外观信息,进而利用时序信息的问题。自然想到是将连续的视频帧堆叠起来,并将2D卷积扩展到时间[10],以便第一层学习时空特征。[11] 研究时间采样的几种方法,包括早期融合(让第一层滤波器在帧上操作,如[10])、缓慢融合(随着层的增加,持续增加时间接收域)和晚期融合(合并两个独立网络的全连接层,这两个网络在时间上相距遥远的帧上运行)。他们的架构对时间建模并不特别敏感,他们通过一个纯粹的空间网络达到了类似的性能水平,这表明他们的模型并没有从时间信息中获得太多的信息。

    最近提出的C3D方法[30]在16帧的有限时间上学习3D卷积,所有滤波器核的大小为3×3×3。他们报告指出,让所有过滤器在空间和时间上运行能取得比[11]更好的性能。然而,他们的网络被认为比[10,11]更深,其结构类似于[23]的深度网络。[26]提出了学习时空关系的另一种方法,其中作者将3D卷积分解成2D空间卷积和1D时间卷积。具体而言,它们的时间卷积是随时间和特征的2D卷积,并且仅在网络的更高层执行。

    [17]比较了几种时间特性架构,以便组合更长时间信息。他们的结论是,卷积层的时间池化比慢速、局部或延迟池以及时间卷积性能更好。他们还通过将卷积特征输入具有长短期记忆(LSTM)细胞的递归网络来研究有序序列模型。然而,与卷积特征的时间池相比,使用LSTMs并没有改进。

    与我们最密切相关的工作,也是我们在扩展的工作,是[22]中提出的双流ConvNet架构。该方法首先利用RGB和光流将视频分解为空间和时间部分。这些部分被输入到单独的deep ConvNet架构中,来学习有关场景中物体外观和运动的空间时间信息。每一个流都在自行进行视频识别,再通过softmax后期融合进行组合获得最终的分类。作者比较了几种光流场框架的排列方法,认为简单的L=10水平和垂直光流场叠加效果最好。他们还利用UCF101和HMDB51上的多任务学习来增加训练数据的数量并提高两者的性能。迄今为止,该方法是将深度学习应用于动作识别的最有效方法,尤其是在训练数据有限的情况下。双流法已被重新应用于几种动作识别方法中[4,6,7,17,25,32,36]。

    与我们的工作相关的还有双线性方法[15],它通过在图像的每个位置形成一个外积来关联两个卷积层的输出。由此在所有位置产生的双线性特性汇集到一个无序描述符中。这与手工编制的SIFT功能的二阶池[2]密切相关。

    在数据集方面,[11]介绍了Sports-1M数据集,该数据集包含大量视频(≈1M)和类(487)。 但是,视频是自动收集的,因此存在标签错误。另一个大规模数据集是THUMOS数据集[8],具有超过45M帧。不过,其中只有一小部分实际上包含标记的动作,因此对于监督特征学习很有用。由于标签噪声,学习时空卷积仍然很大程度上依赖于较小但时间上一致的数据集,例如UCF101 [24]或HMDB51 [13],其中包含动作的简短视频。 这有助于学习,但存在严重过拟合的风险。

    3.方法

    我们以[22]的双流建筑为基础。这种体系结构有两个主要缺点:(I)它不能学习空间和时间特征之间的像素级对应关系(因为融合仅基于分类分数),以及(ii)它在时间尺度上是有限的,因为空间卷积网络仅在单个帧上操作,而时间网络仅在L个时间上相邻的光流帧的堆栈上操作(例如,L = 10)。[22] 在一定程度上解决了后一个问题,即通过视频中规则间隔的样本进行时间采样,但这不能对动作的时间变化进行建模。

    3.1空间融合

    在本节中,我们将考虑融合两个流网络的不同体系结构。当然,在空间上融合任意两个网络不固定于某个特定的应用时。

    需要明确的是,我们在这里的目的是融合这两个网络(在一个特定的卷积层) ,这样在同一像素位置的响应是对应的。 为了解决比如区分刷牙和刷头发行为的问题。如果一只手在某个空间位置周期性地移动,那么时间网络可以识别这个运动,而空间网络可以识别这个位置(牙齿或毛发) ,然后它们的组合就可以区分这个动作。

    当两个网络在要融合的层上具有相同的分辨率时,这种空间融合使很容易实现的,只需将一个网络层叠加到另一个网络层上(我们在下面做了精确的说明)。 然而,还有一个问题,即一个网络中的哪个通道对应于另一个网络的通道。

    假设空间网络中的不同通道负责不同的面部区域(嘴、头发等) ,时间网络中的一个通道负责这种类型的周期性运动场。 然后,在通道堆叠之后,后续层中的滤波器必须学习这些适当通道之间的对应关系(例如卷积滤波器中的权重) 以便最好地区分这些动作。

    为了更具体地说明这一点,我们现在讨论两个网络之间融合层的一些方法,每一种方法都以对应的方式描述结果。

    讨论:这些操作说明了可能的融合方法。也可以考虑其他方法,例如:获取通道的像素级乘积(而不是其总和或最大值),或没有求和池化的(分解后的)外部乘积[18]。

    如图2(左)所示,加入融合层可能会对双流网络中的参数和层数产生重大影响,尤其是保留融合的网络不变而另一网络被截断时。表1显示了对于两个包含五个卷积层和三个全连接层的VGG-M-2048模型(在[22]中使用),不同的融合方法如何影响层数和参数。  ReLU5(在最后一个卷积层之后)上的最大值,求和,卷积融合除去了体系结构中几乎一半的参数,因为融合后仅使用了一个全连接层的流。与求和,最大值融合(97.31M)相比,卷积融合具有更多的参数(97.58M),这是由于用于通道融合和降维滤波器所致。 级联融合涉及更多参数,融合后不涉及降维,因此使第一个全连接层的参数加倍。相比之下,softmax层的求和融合需要两个塔的所有层(16)和参数(181.4M)。

    在实验部分(第4.2节)中,我们根据分类精度评估了每种融合方法的性能。

    3.2在哪里融合网络

    如上所述,可以将融合应用于两个网络中的任何一点,唯一的限制是两个输入映射在时间t具有相同的空间尺寸。这可以通过使用“上卷积”层来实现[38],或者如果尺寸相似,则可以通过将较小的图填充零来实现上采样。

    表2比较了VGG-M模型情况下两个网络中不同层融合的参数数量。在不同的转换层之后进行融合对参数数量的影响大致相同,这些影响大多数都在全连接层中。如图2所示(右),两个网络也可以在两层融合。这样就达到了从每个网络(在conv5处)进行逐像素融合的原始目的,且不会导致参数数量减少(例如仅在conv5处融合,则减少了一半)。 在实验部分(第4.3节)中,我们评估并比较了不同级别的融合以及同时进行多层融合的性能。

    3.3时间融合

现在,我们考虑结合时间t上的特征图xt生成输出图yt的技术。 处理时间输入的一种方法是通过平均一段时间内的网络预测(如[22]中所使用)。 在这种情况下,架构仅以2D(xy)合并; 参见图3(a)。


    讨论:[17]的作者评估了其他几种在时间上组合双流卷积网络的方法。他们发现在卷积层上使用时间最大池化表现最佳。 我们将此处的最大池化归纳为3D池化,从而使特征在随时间微小变化时保持一定。 此外,3D转换允许学习时空滤波器[28,30]。例如,过滤器可以学习对中央时间样本进行中心加权,或者在时间或空间上进行区分。

    3.4提出的架构

    现在,我们将前几节的内容融合在一起,以提出新的时空融合架构,并根据我们在第4节中的评估来驱动我们的选择。空间融合方法,层融合和时间融合的选择分别基于第4.2节、4.3节和4.5节中的实验。

    我们提出的架构(如图4所示)可以看作是图2(左)的架构随时间的扩展。我们将最后一个卷积层(在ReLU之后)的两个网络融合到空间流中,通过使用3D Conv融合和3D池化将其转换为时空流(请参见图4,左)。 此外,我们不会截断时间流,而且还会在时间网络中执行3D池化(请参见图4右)。 两条流的损失都用于训练,在测试过程中,我们将两条流的预测取平均。 在我们的评估(第4.6节)中,我们表明保持两个流的效果比融合后截断时间流的效果略好。

    在讨论了如何随着时间融合网络之后,我们在这里讨论如何对时间序列进行采样的问题。时间融合层接收相隔τ帧的T个时间块;即,两个流塔在时间t,t +τ... t + Tτ处应用于输入视频如图4所示,这使我们能够在时态网络的输入端捕获短尺度(t±L/2)时域特征。绘制箭头,并在网络的较高层(较长的时间尺度(t + Tτ))中将它们置于上下文中(例如抽箭,弯弓和射箭)。

    由于光流具有L=10帧的时间接收场,因此该架构在T×L的总时间接收场上工作。融合后,我们让3D池在相隔τ帧的T空间特征图上进行操作。由于特征可能会随时间改变其空间位置,因此将空间和时间池与3D池结合起来是有意义的。例如,conv5处的VGG-M网络的输出输入步幅为16像素,并从139×139像素的接收场中捕获高阶特征。因此,时间间隔为τ帧的conv5映射的时空合并可以捕获同一对象的特征,即使它们稍微移动也是如此。

    3.5实施细节

    流架构:我们采用了两个预训练的ImageNet模型。 首先,为了与原始的双流法[22]进行比较,使用具有5个卷积层和3个全连接层的VGG-M-2048模型[3]。第二,非常深的VGG-16模型[23],具有13个卷积层和3个全连接层。我们首先按照[22]中的描述分别训练两个流,但是有一些细微的区别:我们不使用RGB颜色抖动;在验证误差饱和后,我们降低学习速度,而不是按照固定的时间表降低学习速度。 为了训练空间网络,我们对前两个全连接层使用较低的随机失活0.85。 甚至更低的随机失活(最高0.5)也不会显着降低性能。

    对于时间网络,我们使用L = 10帧[22]的光流[1,37]堆叠。 我们还使用在ImageNet上预先训练的模型来初始化时间网络,因为与从头开始训练的模型相比,该方法通常可以提高训练速度,而不会降低性能。网络输入预先进行了缩放,因此帧的最小边等于256。我们还在训练之前预先计算了光流,并将流场存储为JPEG图像(位移矢量的剪切大于20个像素)。我们不使用批处理规范化[9]。

    卷积融合:对于融合,这些网络以96的批量大小和从0.001的学习率进行微调,一旦验证精度达到饱和,学习率就会降低10倍。我们仅传播回注入的融合层,因为完全反向传播并没有改善。在我们的实验中,我们仅在具有相同输出分辨率的层之间融合;除了将ReLU5_3上的VGG-16模型与ReLU5上的VGG-M模型融合在一起外,在这里我们用行和列零填充VGG-M的较小输出。对于卷积融合,我们发现注入融合层的初始化(如(4)中所示)非常重要。 我们比较了几种方法,发现通过身份矩阵(将两个网络相加)进行初始化与执行随机初始化一样好。

    时空架构。对于3.4节中描述的最终结构中,3D卷积融合核f的尺寸为3×3×3×1024×512,T = 5,即时空滤波器的尺寸3×3×3,D=1024将来自空间和时间流的ReLU5级联得到1024个结果,并且D’= 512与后面的FC6层的输入通道数匹配。

    3D卷积过滤器还通过堆叠两个单位矩阵初始化,用于将1024维特征映射到512维。由于最后一个卷积层的时间激活大约比其外观对应层的激活低3倍,因此我们初始化了f高3倍。f的时空部分是使用大小为3×3×3且σ= 1的高斯初始化的。此外,我们在训练期间不会在预测层上融合,因为这会使损失值偏向时间结构,因为时空架构需要更长的时间才能适应融合的功能。

    训练3DConvNet 甚至比双流卷积融合更容易出现过拟合,需要如下额外增强。在微调过程里每次训练迭代中,我们从96个视频中的每个随机抽取T=5帧作为起始帧,然后随机抽取时间长度∈[1,10](所以总共在15-50帧之间)。 不是裁剪一个固定大小的224*224的输入,我们随机抖动它的宽度和高度的25% ,并缩放到224*224。 重新缩放是随机选择的,并且可能会更改纵横比。仅在距图像边框最大距离(相对于宽度和高度)的25%上裁剪画面。注意,裁剪的位置(以及大小、尺寸、水平翻转)是在第一帧(多帧堆叠)中随机选择的,然后将相同的空间裁剪应用于其中中的所有帧。

    测试。除非另有说明,与[22]中的25帧相比,仅对T = 5帧(及其水平翻转)进行采样,以促进快速的经验评估。此外,我们使用了全卷积测试,其中使用了整个帧(而不是空间部分)。

    4.评估

    4.1.数据集和实验方案

    我们在两个主流的动作识别数据集上评估了我们的方法。首先,UCF101 [24],由101个类别的13320个动作视频组成。 第二个数据集是HMDB51 [13],其中包含6766个视频,这些视频已针对51个动作进行了注释。 对于这两个数据集,我们都使用提供的评估方法,并在训练和测试数据的三个划分中报告平均平均准确性。

    4.2.如何在空间上融合两个流?

    对于这些实验,我们使用与[22]中相同的网络体系结构。 即两个VGG-M-2048网[3]。经过整改后,融合层放在最后的卷积层,即它的输入是来自双流的ReLU5的输出。选择它的原因是,在初步实验中,它提供了比其他替代方法例如conv5的未校正输出更好的结果。在这点上特征已经提供了丰富的信息,同时也提供了粗略的位置信息。在融合层之后,使用单流来处理。

    我们在表1中比较了不同的融合策略,同时报告了UCF101第一部分的平均准确性。我们首先观察到,我们softmax平均(85.94%)的表现比[22]中报告的要好。其次,我们看到最大值和级联如何表现低于求和和卷积融合。卷积融合性能最好,略优于双线性融合和求和融合。对于卷积融合结果,卷积核f由两个特征图求和的单位矩阵初始化。与单位矩阵(85.96%)相比,通过随机高斯噪声进行的初始化最终具有类似的性能(85.59%),然而,所需的训练时间更长。有意思的是,因为这个以及求和融合的优秀效果,表明简单地相加特征图已经是一个很好的融合技术,学习一个随机的初始化组合不会导致明显的不同/更好的结果。

    对于表1所示的所有融合方法,与ReLU5相比,FC层的融合性能不佳,方法的顺序与表1相同,除了在FC层不可能进行的双线性融合。在所有FC层中,FC8的性能优于FC7和FC6,卷积融合准确率为85.9%,求和融合准确率为85.1%。我们认为ReLU5表现更好的原因是在这一层外观和运动之间的空间对应关系被融合而到FC层已经被破坏了[16]。

    4.3.在哪里将双流在空间上融合?

    表2比较了在不同层的融合。使用卷积融合且用前面层激活的求和的单位矩阵作初始化。有趣的是,在ReLU5上融合并截断一个网络与在预测层(FC8)上进行融合相比,在UCF101的第一部分中实现的分类精度大致相同(85.96%对86.04%),但参数数目要低得多(97.57M和181.68M)。图2显示了如何实现这两个示例。

    4.4由深层模型到超深层模型

    出于计算复杂性的原因,所有先前的实验均使用两个VGG-M-2048网络执行(如[22]中所述)。但是,使用更深层的模型,例如[23]中的非常深层的网络,可以在图像识别任务中带来更高的性能[5,15,27]。 接下来,我们在UCF101和HMDB51上训练了16层网络,VGG-16 [23]。除用UCF101时间流模型初始化HMDB51时间流网络外,所有模型都在ImageNet上进行了预训练,并分别针对目标数据集进行了训练。 对于VGG-16,我们使用TV-L1光流[37],并应用与3D卷积训练(见第3.5节中所述)类似的增强技术,该技术从图像角及其中心采样[35]。 学习率将设置为50-4,并当验证目标达到饱和后降低10倍。

    深层和超深层模型的比较见表3。在这两个数据集上,人们观察到更深的空间模型显著提高了性能(8.11%和10.29%),而更深的时间网络产生更低的精度增益(3.91%和3.73%)。

    4.5如何在时间上融合这两股流?

    不同的时间融合策略如表4所示。在表4的第一行,我们观察到卷积融合比平均输出表现更好(参见表3)。接下来,我们发现在融合层之后应用3D池化而不是使用2D池化提高了两个数据集的性能,在HMDB51上具有更大的增益。最后,表4的最后一行列出了应用3D滤波器进行融合的结果,这进一步提高了识别率。

    4.6与SOTA相比较

    最后,我们在表5中将UCF101和HMDB51的所有三种拆分与最新技术进行比较。我们使用如上所示的相同方法,即通过3D卷积和3D池化进行融合(如图4所示)。为了测试,我们通过对输入视频及其水平翻转进行密集采样,平均每个网络产生的20个时间预测。一个有趣的比较是与最初的双流法[22]相比,我们通过使用VGG-16空间(S)网络和VGG-M时间(T)模型,在UCF101和HMDB51上提高了3%,以及当对双流都使用VGG-16时,提高了4.5% (UCF)和6% (HMDB)。另一个有趣的对比是[17]中的双流网络,它在GoogLeNet[27]的最后一个降维层之后采用了时间卷积池化。他们报告说,当使用120帧以上时,在UCF101上的准确率为88.2%,使用LSTM进行融合时,准确率为88.6%。在这里,我们92.5%的结果强调了我们提出的方法的重要性。还要注意,在时间融合后使用单个流准确率91.8%,相比之下,保持双流准确率92.5%,但是单流参数少得多,架构更简单。

    作为最后一项实验,我们探索人工设计的iDT[33]与我们的网络结构的融合效果。我们简单地将FV编码的iDT描述符(即HOG、HOF、MBH)的SVM分数与我们的ConvNet表示的预测(在softmax之前获得)进行平均。结果性能如表6所示。我们在UCF101和HMDB51上分别实现了93.5%和69.2%的准确率。这个SOTA结果说明人工设计的特征表示和我们端到端学习的卷积网络方法之间仍然有互补作用。

    5.结论

    我们为双流网络提出了一个新的时空结构,在网络之间有一个新的卷积融合层,和一个新的时间融合层(结合3D卷积和池化)。与以前的方法相比,新的体系结构没有显著增加参数的数量,但是在两个基准数据集上SOTA。我们的结果表明,在空间和时间上学习高度抽象的卷积特征之间的对应关系非常重要。一个有趣的发现是,通过将卷积网络预测与FV编码IDT特征相结合,仍然有改进。我们认为,如果有更多的训练数据,这种差异可能会随着时间的推移而消失,但除此之外,它指明了未来研究应该关注的领域。

    最后,我们回到当前数据集太小或太嘈杂的问题上。因此,本文中的一些结论应该谨慎对待。

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

推荐阅读更多精彩内容