Online Pseudo Label Generation by Hierarchical Cluster Dynamics for Adaptive Person Re-identifica...

自适应人员重新识别(adaptive ReID)旨在将学习到的知识从标记的源域转移到未标记的目标域。交替生成伪标签和优化训练模型的基于伪标签的方法在该领域表现出极大的有效性。然而,生成的伪标签不准确,不能反映未标记样本的真实语义。我们认为这种不准确性源于伪标签的滞后更新以及所采用的聚类方法的简单标准。为了解决这个问题,我们提出了一种通过自适应 ReID 的层次集群动态生成在线伪标签。特别是,为数据集中的所有样本构建了分层标签库,我们在每个即将到来的小批量中更新样本的伪标签,同时执行模型优化和标签生成。为标签更新构建了一个新的分层集群动态,其中集群合并和集群分裂由标签传播计算的可能性驱动。我们的方法可以实现更好的伪标签和更高的reid准确率。 Market-to-Duke、Duke-to-Market、MSMT-to-Market、MSMT-to-Duke、Market-to-MSMT 和 Duke-to-MSMT 的大量实验验证了我们提出的方法的有效性。

一、简介

人员重新识别(ReID)旨在通过不同的摄像机检索同一个人的图像 [45、13、46、22、15、17]。尽管 ReID 与深度学习模型 [23, 34, 37, 44, 3] 取得了巨大进步,但由于不同相机系统捕获的图像分布不同,ReID 仍然是一个挑战,这被称为域偏移。因此,提出了无监督自适应人员重新识别(Adaptive ReID),以从标记的源域(数据集)转移学习到的知识,以正确测量未标记的目标域(数据集)中的实例间亲和力。

基于聚类的方法 [30, 54, 55, 14, 58] 主导了自适应和无监督 ReID 任务的最新性能。他们采用了迭代的两阶段训练方案,其中伪标签是通过在每个训练时期之前对提取的特征进行聚类来离线生成的。尽管集群伪标签可以粗略地捕捉全局分布,但我们认为这些标签的监督信号是次优的,因为离线标签生成方案无法捕捉变化的特征分布以及动态的网络优化。此外,现有方法以相同的聚类标准平等地对待所有数据点,忽略了复杂现实世界数据的细粒度分布。例如,由同一摄像机(域)捕获的人物图像应该被施加比跨摄像机(域)更严格的聚类标准。

为了应对上述挑战,我们提出了一种在线伪标签生成策略,通过探索如何在自下而上的框架下动态、渐进地更新伪标签。借助自下而上的框架,我们可以捕获复杂现实世界数据的细粒度分布。通过精心设计的集群拆分和合并动力学,我们可以捕捉到特征空间的即时语义变化。使用所提出的方法,可以在每次训练迭代中同时进行伪标签生成和特征学习。

具体来说,为了实现在线伪标签生成,我们构建了一个特征库和一个分层标签库,分别用于存储和更新所有未标记数据的特征和伪标签。给定小批量样本的编码特征,特征库中的相关样本特征进行动量更新,并通过合并到现有集群或拆分为新集群来细化相应的标签。合并和拆分操作是通过根据集群到样本或样本到样本的亲和力在一组集群之间传播伪标签来实现的,在我们的论文中被称为“集群动力学”。迭代地进行集群动力学以形成分层的伪标签进程(如图 1 所示)。分层标签细化结构也被证明对于捕获真实图像的复杂特征分布是有效的。与生态系统中的互惠共生类似,引入的集群动力学和分层推进的伪标签可以正确捕捉特征空间中的即时和多样化分布变化,从而提高自适应 ReID 的性能。

我们工作的贡献总结为三个方面。 (1) 我们首次引入在线生成和更新自适应 ReID 的伪标签,其中特征学习和伪标签生成同时进行。 (2) 提出了一种新的聚类动力学方法,以在自下而上的层次结构中迭代地实现伪标签进展和细化。 (3) 在多个自适应 ReID 基准上的广泛实验证明了我们的方法正确捕获变化和细粒度特征分布的优越性。

二、相关工作

自适应人员重新识别。自适应人员重新识别(adaptive ReID)由于可以节省人对图像标注的工作量而备受关注。一般来说,它可以分为两类,即基于伪标签的方法[41、14、58、15、55、64、53]和基于域转移的方法[7、17、24]。域迁移学习目标是从样式迁移的源域图像中学习域不变特征。 SPGAN [9] 和 PT-GAN [48] 转换源域图像以匹配目标域的图像样式,同时保持原始人的身份。然后使用风格转移的图像及其身份标签来微调模型。 HHL [64] 学习了相机风格传输图像的相机不变特征。域转移方法的性能很大程度上依赖于生成图像的质量,并且它们都忽略了目标域中图像的有价值的依赖性。

基于伪标签的方法长期以来一直是自适应 ReID 的最新技术。该流中的第一项工作 [12] 提出了对特征进行聚类并交替使用伪标签优化网络。 SSG [14] 引入了为全局和局部特征分配硬伪标签,其性能在很大程度上受到硬标签噪声的阻碍。 MMT [15] 然后专注于标签提炼,并提出了一种相互学习的方案以获得更好的伪标签。 AD-Cluster [55] 用增强和生成的图像细化了集群。与我们最相关的工作是 SpCL [16] 和 BUC [30]。 SpCL [16] 应用了一种自定进度的学习方案,为所提出的统一对比损失逐步生成更可靠的集群。然而,SpCL 中的伪标签在每个 epoch 之后都会更新,因此无法捕捉到提取特征的即时标签变化,这成为伪标签细化的瓶颈。我们的方法提出了一个在线聚类框架,它可以捕获特征空间中的不同分布。 BUC [30] 在生成伪标签时还提出了一种在线分层聚类框架。但是,它只定义了聚类合并标准,没有提出分裂机制。因此,BUC 中没有动态的双向集群调整,即拆分和合并。此外,BUC 仅利用了传统的层次聚类标准,未能考虑特征空间中的数据分布。

伪标签生成典型的伪标签生成可以分为两类:离线伪标签生成和在线伪标签生成。传统的聚类方法如 K-Means [33]、谱聚类 [40] 和 DBSCAN [11] 都属于离线伪标签生成,并且依赖于数据分布的某些假设,例如凸形、相似大小或相同密度的簇。最近,一些离线但基于神经网络的方法 [5, 19, 52, 51, 18] 被提出来从训练样本中感知数据分布,因此它们通过放松强手动假设来改进传统算法。虽然单独的离线聚类在稳定空间中实现了最先进的特征,但它们并不是自适应 ReID 的最佳解决方案,特别是考虑到网络优化带来的不同特征分布。

为了捕捉自适应 ReID 中不同的特征分布,在线伪标签生成可能是更好的解决方案,因为它在看到新样本后立即分配标签 [29]。詹等人[57] 在训练中利用在线 K-means 聚类,为无监督学习实现了更高的性能和效率。 Swav [2] 为在线聚类构建了一个优化问题,并将其纳入对比学习中。然而,[57, 2] 中的类数是预定义的超参数,并且在训练期间是固定的,这在自适应 ReID 中是不实用的。相比之下,我们的方法将相似度阈值设置为超参数,并且集群的数量是自适应的。因此,我们的方法可以利用在线聚类的优势,摆脱之前工作中不合适的类数。

3. 初步

问题表述。自适应人 ReID 的目标是学习一个特征提取器 fθ,该特征提取器可以很好地在目标域上用标记的源域数据进行泛化。该任务提供两种训练数据。一种是源域的标记数据 Ds = {(xsi , yis )}Ns ,其中 i=1 每个示例 (xsi , yis ) 由图像 xsi ∈ X s 和标签 yis ∈ Ys 组成。另一个是目标域 Dt = {xti}Nt 的未标记数据。这里,Ns 和 Nt 分别表示源域和目标域中 i=1 的图像数量。源域和目标域通常具有非常不同的数据分布。对比损失的基于伪标签的方法。当前基于伪标签的方法采用迭代和替代的两阶段管道进行自适应 ReID。

具体来说,他们构建了一个特征库 B =

{v1s, v2s, ..., vNs , v1t , v2t , ..., vNt },其中 vis 和 vit 代表

分别发送源域图像和目标域图像的存储特征。在每个 epoch 的训练之前,它对目标域数据进行离线聚类以生成伪标签 Y = {1, 2, ..., Nt}。聚类中心 ck 是具有伪标签 k 的样本的特征平均值。考虑到带有真实标签的源域数据和带有伪标签的目标域数据,可以根据 SpCL [16] 为每个特征 f = fθ(x) 定义对比损失函数,

其中 z+ 表示 f 的正类原型。如果 f 是源域特征,则 z+ = wk 是 f 所属的源域类 k 的中心。如果 f 属于第 k 个目标域簇,则 z+ = c+k 是第 k 个簇中心。此外,τ 是根据经验设置为 0.05 的温度,ns 是源域类的数量,nt 是目标域簇的数量。特征库由 ImageNet 预训练模型提取的特征初始化,并以动量方式更新 [49、66、6、20、42、16]。

4. 在线伪标签生成

我们在对比学习框架中加入了一种新的在线伪标签生成机制,其中伪标签生成与模型优化同时进行。总体框架如图 2 所示。特别是,每批中的训练样本都是从源域 Ds 和目标域 Dt 中采样的。这些样本中新提取的特征用于以动量的方式更新特征库 B。 mini-batch 中的目标域样本被送入分层标签库 H。利用 B 中提供的特征嵌入,进来的样本在 hi-由集群动力学表示的随机银行,最终获得可靠的伪标签。基于 B 中的特征和 H 中的标签,我们优化了方程中的损失函数。 1. 我们提出的方法的伪代码在补充材料中给出。

4.1。分级标签库

分层标签库 H = {Y1 , Y2 , ..., YH } 由 H 个级别组成,并以自下而上的方式对即将到来的样本进行聚类。在聚类期间,它遵循聚类保留属性。也就是说,在低层属于同一类的样本在高层也应该属于同一类。

基于此属性,我们在分层标签库的不同级别上执行一系列集群拆分和集群合并操作。具体来说,为了在第 (h+1) 层拆分一个簇,我们以合并操作后的第 h 层簇为基本单元,通过标签传播确定它们是否仍然属于同一个簇。这样,如果基本单元不是那么健壮而不能在同一个簇中,第 (h+1) 层的簇就会被破坏。类似地,为了合并第 h 层中的集群,我们只尝试将属于第 (h+1) 层中的一个集群的那些集群合并。将标签传播后属于同一个簇的可能性高的簇合并为一个簇。第 h 层库 Yh 上伪标签的更新与相邻层的聚类结果密切相关,即 Yh-1 和 Yh+1,保证了在线伪标签生成的鲁棒性。

4.2.集群动力学

我们现在深入研究第 h 层的集群动态细节,其中集群分裂和集群合并是通过统一框架中的标签传播来执行的。

标签传播。我们方法中的标签传播用于计算两个样本/集群属于同一类的可能性。它是一种迭代算法,具有封闭形式的解决方案:

P∗ = (I − αS)−1Y0, (2)

其中 P∗ = (p1, p2, ..., pn) ∈ Rn×K 是标签传播的结果。 n 是要分配标签的单元数,K 是 n 个单元可能属于的类别数。对于第 i 个单元,结果 pi = (pi,1,...,pi,K),其中 pi,j 是第 i 个单元采用标签 j 的概率。 Y0 ∈ Rn×K 是我们将在集群合并和集群分裂中具体定义的初始标签概率。 S ∈ Rn×n 是归一化后的亲和矩阵 [32]。

受重新排序 [62] 的启发,归一化亲和矩阵 S ∈ Rn×n 不仅基于余弦相似度,还基于排序顺序。具体来说,我们将 Nk(ci) 表示为 ci 的 k 最近邻,其中 ci 是第 i 个单元的特征中心。亲和力是在彼此相邻的两个单元之间计算的,在数学上可以表示为

等式中的归一化亲和矩阵 S。 2 然后由 S^ 遵循 [32] 获得。因为具有正亲和力的样本对属于同一类的置信度很高,所以方程。 3比共同余弦相似度更严格,保证了聚类精度。

集群分裂。在第 h 层,簇分裂将一个簇 Cih 分成小簇。拆分单元是第 (h-1) 层中包含 Cih 中的样本的簇。我们将这些集群表示为 Oh−1 = {Ch−1, Ch−1, ..., Ch−1},其中 n 是集群编号。相应的中心特征被收集在 oh−1 = {ch−1 , ch−1 , ..., ch−1 } 中。为了分割 i i,1 i,2 i,n 簇 Ch,我们首先从 oh-1 中选择 K 个锚样本,然后利用标签传播将 {1, .., K} 的标签分配给 oh-1 中的中心。因此 Oh-1 中的簇将具有不同的标签。 Cih中的样本终于借用了标签

在 Oh-1 中完成集群分裂。在集群分裂的过程中,我们利用密度

峰值选择 [39] 来选择 K 个标签锚。使用标签锚,如果 ch-1 是第 j-0ij 个标签锚,我们初始化 (Yh) = 1,否则初始化 (Y0h)ij = 0。亲和度矩阵根据方程式计算。 3. 在我们通过方程得到封闭形式的解 (Ph)* 之后。 2,第 k 个簇 Ch-1 i,k 将被分配一个标签

在标签库中,我们通常会选择一个新的标签索引来表示 ykh,以避免标签重叠。

集群合并。在第 h 层,聚类合并旨在合并极有可能属于同一语义类的小聚类。为了遵守簇保留特性,第 h 层要合并的簇应该属于第 (h+1) 层中的同一簇。假设在第(h+1)层有n个簇属于同一个簇Ch+1的第h层。这些簇 i 用 Oh = {Ch , Ch , ..., Ch } 表示,相应的 cen- ii,1 i,2 i,n ter 特征用 oh = {chi,1 , chi,2 , . .., 下巴 }。为了合并 Oih 中的集群,我们首先利用标签传播来计算两个单元属于同一类的可能性,然后使用阈值 σ 来确定它们是否应该合并。因此 Oih 中的一些簇将获得相同的标签来完成簇合并。

在聚类合并过程中,单元数等于类数,即 n = K,因此我们初始化 Y0h = In×n。使用聚类合并中相同的亲和矩阵定义和闭式解 (Ph )∗ ,我们合并聚类 Cuh 和 Cvh,即 yuh ← yvh,如果 phu,v > σ。在标签库中,我们通常将标签重新组织为 {1, 2, ..., N },其中 N 是 m 之后的类数

5. 实验

5.1。实验装置

数据集。我们在三个大规模人员 re-ID 数据集上评估我们的方法:Market-1501 [61]、DukeMTMC-reID [38] 和 MSMT17 [48]。 Market-1501 由 6 台摄像机拍摄的 1,501 个身份的 32,668 张带注释的图像组成,其中 751 个身份的 12,936 张图像用于训练,750 个身份的 19,732 张图像在测试集中。 DukeMTMC-reID 包含 36,411 个标记图像,属于 1,404 个身份。它有 702 个身份的 16,522 个人物图像用于训练,其余的其他身份图像用于测试。所有图像都是从 8 个相机收集的。 MSMT17 是最大和最具挑战性的数据集。它由 15 台摄像机拍摄的 4,101 个身份的 126,441 个边界框组成,其中 1,041 个身份的 32,621 个图像用于训练。

评估协议。我们采用平均精度(mAP)和累积匹配特征(CMC)来评估方法在目标域数据集上的性能。没有实施诸如重新排序[62]或多查询融合[61]之类的后处理技术。实施细节。我们在 PyTorch [36] 上实现我们的框架,并采用在 ImageNet [8] 上预训练的 ResNet50 [21] 作为提取器 fθ 的主干。我们使用权重衰减为 0.0005 的 Adam [27] 来优化我们的网络。初始学习率设置为 3.5 × 10−4,每 8,000 次迭代降低到其先前值的 0.1,总共 24,000 次迭代。在 SpCL [16] 之后,方程中的温度 τ。 1 设置为 0.05,特征库更新为动量等于 0.2。在训练期间,每个小批量包含 64 个源域图像和 64 个目标域图像。输入图像的大小被调整为 256 × 128。我们采用随机翻转、随机裁剪和随机擦除 [63] 来增强数据。为了节省计算和内存成本,我们采用了三层层次结构。对于集群动力学,方程式中的α。对于集群合并和集群拆分,2 设置为 0.99。我们在方程式中采用 30 k-最近邻。 3 用于所有数据集,并使用 0.25 的固定阈值进行所有级别的集群合并。在拆分过程中,我们为每个集群选择多达 8 个锚样本。

5.2.实验结果

自适应人 ReID。我们将我们提出的框架与表 1 中关于自适应 ReID 的最先进方法进行了比较。我们的方法优于所有当前具有普通 ResNet50 主干的最先进技术。我们将我们的框架与最具竞争力的方法 SpCL [16] 进行比较。与我们的方法类似,SpCL 也使用特征库和标签库来进行对比损失。然而,它采用简单的聚类算法,即 DBSCAN,并且仅在每个 epoch 之后更新伪标签,这可能无法捕获多样化和变化的特征分布。相比之下,我们的方法可以捕获变化的特征分布,因为它同时提炼标签并优化特征提取器,即为每个即将到来的小批量提炼标签。为了捕获不同的分布,我们的方法从下到上细化标签,并利用标签传播通过考虑特征空间中的相邻信息来动态拆分和合并每个级别的集群。基于上述差异,我们的方法在 Duke-to-Market 上的 mAP 提高了 2.5%,在 Duke-to-MSMT 和 Market-to-MSMT 等更具挑战性的任务中,mAP 提高了 3%。

无人监督的人 ReID。无监督人 ReID 专注于在没有任何标记数据的情况下训练 ReID 模型,即从训练集中排除源域数据。通过排除方程式中的 wk,我们的方法可以很容易地推广到这样的设置。 1. 如表 2 所示,我们的方法在 Market-1501 和 DukeMTMC-reID 上的 mAP 上超过了所有当前最先进的方法约 5%。我们将我们的方法与除 SpCL 之外的最相似的 BUC [30] 方法进行了比较。 BUC 提出了一种自下而上的聚类方法,但它只在每一步合并两个聚类对,而不考虑聚类周围的分布。此外,它不包括拆分步骤,并通过设置固定的合并速度来保持聚类的平衡。缺乏拆分机制可能会使 BUC 不如我们的方法有效。我们的方法在 Market-1501 和 DukeMTMC-reID 上的 mAP 方面优于 BUC 39.8% 和 38.1%。

6. 消融研究

为了研究层次聚类和聚类动态的贡献,我们在表 3 中对自适应 ReID 任务的方法进行了组件分析。 “源。 only”仅使用具有真实 ID 的源域图像在目标域上进行训练和测试。 “源。 + tgt。 instance”将每个目标域样本视为一个不同的类。 “源。 + tgt。 HC w/o LP”采用典型的层次聚类结构,具有平均链接标准。 “源。 + tgt。 HC(merge)w LP”是去除集群分裂动态的框架,只允许通过标签传播进行集群合并。 “源。 + tgt。 LP w/o HC”利用 1 级库上的标签传播。 “源。 + tgt。 HC w LP”是提出的方法,采用标签传播的层次聚类和聚类动态(拆分和合并)。

6.1。不同组件的有效性

分层标签生成的有效性。我们首先探讨聚类的必要性,然后探讨层次标签生成的有效性。通过比较“Src。只有”和“Src。 + tgt。实例”,我们总结用等式中的实例特征 vk 替换特征中心 ck。 1 导致性能低于“Src.只要”。结果表明,将无监督图像分类中的典型对比损失直接推广到 ReID 是不适用的,并且有必要提供伪标签,因为 ReID 旨在探索类内和类间关系。对于分层标签生成,我们比较“Src. + tgt。 LP w/o HC”和“Src。 + tgt。 HC w LP”,得出结论,分层标签生成通过在 Duke-to-Market 和 Market-to-Duke 的 mAP 中改进模型 5.4% 和 1.2% 来提供更好的伪标签。

集群动力学的有效性。聚类动力学可以通过自动合并和分裂聚类来提供更好的伪标签,而传统的聚类方法只包括样本/聚类合并。为了验证拆分机制的有效性,我们比较了“Src. + tgt。 HC(合并)w LP”和“Src。 + tgt。 HC w LP”。我们可以看到集群拆分在 Duke-to-Market 和 Market-to-Duke 上的 mAP 分别提高了 5.0% 和 8.4%,这证明了集群拆分的有效性。标签传播的有效性。集群合并和集群拆分使用标签传播来动态更新标签。为了说明标签传播的有效性,我们进行了使用平均链接作为集群合并和拆分标准的实验。通过“Src. + tgt。 HC w/o LP”和“Src。 + tgt。 HC w LP”,我们可以看到标签传播在 Duke-to-Market 和 Market-to-Duke 的 mAP 方面分别实现了 26.7% 和 11.1% 的改进。

6.2.分层标签生成

级别数。分层标签生成的设计旨在捕获不同的特征分布。为了探索分层标签库级别数量的影响,我们对 Duke-to-Market 和 Market-to-Duke 进行了实验,分层标签库从 1 级到 5 级。从图 4 中,我们可以观察到,通过将级别数从 1 更改为 2,结果有明显的跳跃。当层数不断增加时,mAP 只会略微增加并逐渐收敛。它表明,对于person ReID,增加层数可以获得更好的伪标签,并在mAP方面实现改进。至于 2 个级别后的增长停滞,我们将此现象归因于学术数据集拍摄条件的简单性。在学术数据集中,具有相似背景的图像中的人往往具有相似的姿势,这使得两级结构具有足够高的效果。不同级别的伪标签的准确性。为了更深入地了解层次结构,我们在图 5 中显示了不同级别指标的平均召回率、平均精度和 BCubed F-score [1],总共 5 个级别,即 H = 5。我们可以观察到平均召回率显着增加,但平均精度仅从 1 级到 5 级略有下降。平均召回率的增加主要是由于在高级层次结构中捕获语义信息,而平均精度的轻微下降是召回率提高的不可避免的代价。我们还报告 BCubed F-score 来评估每个级别的整体表现。结果表明,BCubed F-score随着级别指数的增加而增加,这表明层次聚类有效地提高了标签的准确率。

可视化。为了更直观地呈现提出的分层标签生成,我们可视化了不同级别的聚类结果。如图 6 所示,在低水平(h = 1)下,同一簇中的样本具有高度相似性,例如相同的拍摄角度和相同的背景。在高级别(h = 2),收集具有相同身份且人体姿势和背景变化较大的样本。

6.3.集群动力学

标签更新间隔。与其他利用离线聚类的最新技术相比,我们的在线伪标签生成的优势是通过网络优化和伪标签细化同时捕获变化的特征空间。我们进行实验以探索标签更新间隔的影响。间隔越大,与网络优化和伪标签的不一致越大。如表 4 所示,我们可以观察到测试结果随着更新间隔的增加而下降。这种趋势说明了同时更新伪标签和特征的重要性。

聚类分裂中的锚样本选择方法。锚样本作为聚类分裂的种子。我们认为更好的集群种子将有利于最终性能。为了探索锚样本选择方法的影响,我们用不同的方法进行了实验,包括随机选择、最远点采样[10]和密度峰值[39]。如表 5 所示,在 Market-to-Duke 和 Duke-to-Market 上进行测试时,密度峰值优于其他方法。这可能归因于高密度样本更具代表性,这将提高拆分结果的准确性。

Α。研究方程中 α 的影响。在图 2 中,我们比较了 mAP 与不同的合并 αM 和拆分αS 的性能。如表 6 所示,当 αM 和 αS 都设置为 0.99 时,我们的方法实现了最佳性能。结果表明,无论集群合并和集群拆分如何,当考虑更多关于周围邻居的信息时,性能都会提高。

7. 结论

伪标签噪声是进一步改进基于聚类的自适应人员重新识别方法的瓶颈之一。在本文中,我们认为这种标签噪声源于伪标签的滞后更新和所采用的聚类算法的简单标准。我们提出了一种具有层次聚类动态的在线标签生成,用于自适应人员重新识别。通过在线标签生成,我们在即将到来的小批量中细化样本标签并同时优化网络。借助分层集群动态,我们在自下而上的框架中拆分和合并集群,捕获多样化和复杂的特征分布。对各种人员重新识别数据集的广泛实验验证了我们提出的方法的有效性。

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

推荐阅读更多精彩内容