论文翻译及笔记:QATM: Quality-Aware Template Matching For Deep Learning

论文地址:http://openaccess.thecvf.com/content_CVPR_2019/papers/Cheng_QATM_Quality-Aware_Template_Matching_for_Deep_Learning_CVPR_2019_paper.pdf
QATM是CVPR2019的一篇论文,方向是模板匹配,作者是Jiaxin Cheng, Yue Wu, Wael Abd-Almageed 以及 Premkumar Natarajan。

翻译如下:

Abstract

在搜索图像中找到模板是许多计算机视觉的核心问题之一,例如语义图像语义,图像到GPS验证等。我们提出了一种新颖的质量感知模板匹配方法QATM(quality-aware template matching),该方法不仅作为独立的模板匹配算法,同时也是可轻松嵌入任何深度神经网络的可训练层。 在这里,我们的Quality可以解释为匹配对的独特性。 具体来说,我们使用所有匹配对之间的软排名(softranking)来评估匹配对的quality,因此不同的匹配方案(例如一对一,一对多和多对多)将反映不同的值 。 我们对经典模板匹配benchmark和深度学习任务的广泛评估证明了QATM的有效性。 当单独使用时,它不仅优于最新的模板匹配方法,而且还大大改善了现有的深度网络解决方案。

1. Introduction and Review

模板匹配是计算机视觉应用中最常用的技术之一,可以应用在视频跟踪,图像拼接,目标检测,字符识别和3D重建等方向上。 传统的模板匹配方法通常使用平方差和(SSD,sum-of-squared-differences)或归一化积相关(NCC,normalized cross-correlation)来计算模板与基础图像之间的相似度得分。

SSD

在搜索图S中,以(i,j)为左上角,取MxN大小的子图,计算其与模板的相似度;遍历整个搜索图,在所有能够取到的子图中,找到与模板图最相似的子图作为最终匹配结果。数值越大相似度越小。


SSD.png

NCC

利用子图与模板图的灰度,通过归一化的相关性度量公式来计算二者之间的匹配程度。


NCC.png

传统算法评价:

  • 优点:
    ①思路简单,容易理解。
    ②运算过程简单,匹配精度高。
  • 缺点:
    ①运算量偏大。
    ②对噪声非常敏感。

当模板和目标搜索图像之间的转换很简单时,这些方法效果很好。 但是,当转换复杂或非刚性时(stretching or shrinking),这些方法的成功率会大幅下降。 另外,其他因素(例如遮挡和颜色偏移)也会对这些方法造成很大影响。

为了克服使用标准模板匹配的这些缺陷,目前已经提出了很多办法:

  • Dekel等人提出了Best- Buddies-Similarity(BBS),该措施侧重于nearest-neighbor(NN)匹配,以排除由背景像素引起的潜在和不良匹配。(详见此篇https://zhuanlan.zhihu.com/p/59348003

  • 文献[26]中介绍了Deformable Diversity Similarity(DDIS),它明确考虑了可能的模板变形,并使用了模板和搜索图像中潜在匹配区域之间的NN特征匹配的多样性。

  • 在[14]中引入了基于共现的模板匹配(CoTM),以量化模板和搜索图像中潜在匹配区域之间的差异。

这些方法确实提高了模板匹配的性能。但是,由于两个局限性,这些方法无法用于深度神经网络(DNN)中:

  • (1)使用不可微分的运算(例如阈值,计数等)
  • (2)使用对DNN无效的运算,例如作为循环和其他非批处理操作。

现有的基于DNN的方法使用简单的方法来模拟模板匹配的功能[15、30、28、27、4],例如计算两个batch tensor(大小为B×H×W×L和 B×H′×W′×L)沿着特征维(即此处的L)的点积,生成一个包含所有成对特征点积结果的B×H×W×H′×W′大小的batch tensor。 当然,也可以应用诸如最大池化之类的其他操作[30、31、18、7]。

在本文中,我们提出了质量感知模板匹配(QATM)方法,该方法可用作独立的模板匹配算法,或在深度神经网络中用作具有可学习参数的可训练层。它考虑了配对的唯一性,而不是简单地评估匹配分数。 QATM由可区分且批次友好的操作组成,因此在DNN培训期间非常有效。更重要的是,QATM的灵感来自评估源模板和目标模板的匹配质量,因此能够处理不同的匹配方案,包括一对一,一对多,多对多和不匹配。在不同的匹配案例中,只有一对一匹配才被认为是高质量的,因为它比一对多和多对多案例更具特色。

在本文的其余部分安排如下。 第2节讨论动机并介绍QATM。 在第3节中,将在经典模板匹配设置中研究QATM的性能。 在第4节中对QATM进行了语义图像对齐和图像至GPS验证问题的评估。我们在第5节中对本文进行了总结并讨论了未来的工作。

2 Quality-Aware Template Matching

2.1 Motivation

在计算机视觉中,尽管有该应用程序的应用,但许多方法都隐式地尝试解决以下问题的某些变体:给定典型图像(或图像补丁),以查找目标图像中最感兴趣的相似区域。 经典模板匹配[11、26、14],约束模板匹配[31],图像到GPS匹配[7]和语义对齐[18、19、8、13]方法都包括对模板匹配的某些排序,尽管算法们在细节上有一些差异, 在不损失一般性的前提下,我们将重点讨论基本模板匹配问题,并说明在以后的部分中适用于其他问题。

大多数现有模板匹配方法中的一个已知问题是,通常在测量模板相似性时会考虑模板以及目标图像中的候选窗口中的所有像素(或特征)。在许多情况下,例如在目标对象后面的背景在模板和目标图像之间变化时,这样会对结果造成影响。为了解决这个问题,BBS [11]方法依赖于模板和目标之间的最近邻居(NN)匹配,因此它可以排除大多数背景像素进行匹配。 在BBS之上,DDIS [26]方法使用NN字段中的附加变形信息,以进一步提高匹配性能。

表1.png

如表1所示,t和s分别是模板T和搜索图像S中的补丁。
“一对一”表示精确匹配,即两个匹配的对象。
“一对多”和“ 多对一”表示s或t是导致多个匹配项的均匀或有图案的补丁(例如天空或地毯补丁)。
“多对多“表示S和T中都有许多均匀或有规律的补丁。
在四种匹配情况中,只有一对一匹配才被认为是高质量的。这是由于以下事实:在其他三个匹配情况下,即使对可能非常相似,由于多个匹配的候选对象,匹配的区别性也较小。原来这降低了该对的可靠性。可以发现S中的最佳匹配区域是使整体匹配质量最大化的地方。 因此,我们可以对等式进行定量评估。

公式(1)

这样,S中使整体匹配质量最大化的区域R将成为最佳匹配区域。 R是固定大小的候选窗口,我们在实验中将对象的大小用作窗口大小。

2.2 Methodology

为了使等式 (1)适用于模板匹配,我们需要定义Quality(s,t),即评估(s,t)之间的匹配质量的得分。 在本节的其余部分,我们导出quality-aware template matching(QATM)度量,它是理想质量评估Quality(s,t)的代理函数。

设我们有待测图像S和模板T,从中得到图像补丁s和模板补丁t,令fs和ft为s和t的特征表示,ρ(·)是s和t之间的预定义相似性度量(例如余弦相似度)。L(t|s)为与模板图像中的所有其他补丁相比当前补丁t的软排名,也可以将其视为具有可学习温度参数(即α——将在后文讨论)的SoftMax激活层(heated-up SoftMax embedding)。


公式(2).png

定义QATM(s,t)为s在T中匹配的似然函数值与t在S中匹配的似然函数值的乘积。


公式(3).png

当ft和fs相似时,ρ(·)会得出较高的值, 当t和s真正匹配时,ρ(ft,fs)应该大于那些不匹配的情况ρ(),即最高得分ρ( )是最佳匹配。选择适当的α参数( 作用:匹配的补丁将具有尽可能接近1的排名得分,不匹配的补丁的排名得分应尽可能接近0。)并用softmax激活后,理想的一对一情况下该分数应为1,同样,当t匹配s个补丁中的N个时,我们应该具有N个同样高的匹配分数, L(s | t)= 1 / N。
表2.png

表2总结了所有五个案例的理想分数,其值与表1所示的个别案例的主观质量评估相符。一旦我们得到S和T之间的成对QATM结果,就可以发现ROI的匹配质量为 如(4)所示。


公式(4).png

其中q(·)表示匹配质量函数。 最终,我们可以找到最匹配的区域R *,从而使整体匹配质量最大化,如(5)。


公式(5).png

2.3 QATM As An Algorithmic DNN Layer

QATM会连续评估匹配质量。 因此,可以通过单个函数的链规则轻松计算其梯度(所有这些都可以通过标准DNN层(例如softmax激活)或大多数DNN框架中提供的基本数学运算符来实现)。

在Alg.1中,我们演示了如何计算QATM和两张图片的匹配程度(使用诸如Tensorflow和Pytorch之类的深度学习库,可以轻松地在大约30行Python代码中将其实现到DNN中。 ):我们以余弦相似度为例来评估原始的逐段相似度,tf.einsum(第4行)以批处理方式计算所有逐段相似度得分。一旦计算了QATM(t,s),我们就可以分别计算出模板图像T和目标搜索图像S的模板匹配映射(第9-10行)。当α参数是不可训练的固定值时,QATM层降级为经典模板匹配算法。


Alg1.png

2.4 Discussion on α

在本节中,我们讨论如何在不涉及训练DNN的直接模板匹配场景中选择α。 稍后我们将展示QTAM可以轻松地作为可训练层嵌入DNN中,以执行模板匹配,而无需根据任务手动调整结构。

应用公式(2)时,α有两个作用:


公式(2).png
  • (1)匹配的补丁将具有尽可能接近1的排名得分
  • (2)不匹配的补丁的排名得分应尽可能接近0。

可以看到,随着α的增加,匹配情况的可能性L(t | s)+也将增加,并且在经过一些α后将很快达到其最大值1。 但是,这并不意味着我们可以轻松地选择足够大的α,因为非常大的α也会使L(t | s)-(不匹配情况的可能性)偏离0。因此,一个好的α选择可以是 被选为提供最大质量可辨别性的一种,如等式(6)


公式(6).png

实际上,在不知道关于匹配和不匹配对的相似性得分分布的细节的情况下,难以手动地适当地设置α。但是,如果两个分布都已知,我们就可以模拟L(t | s)+和L(t | s)-。在不失一般性的前提下,假设T中有N个补丁。无论(t,s)是否为匹配对,L(t | s)可以通过模拟一个ft特征和N个fs特征来获得,或者等效地,通过根据其定义等式模拟N个ρ(ft,fs)相似度分数。 (2)。匹配和不匹配案例之间的主要区别在于,对于L(t | s)+,我们需要从匹配对的分数分布中获得一个分数,而从L(t | s)+的不匹配对的分布中获得N-1分数,而从L(t | s)−的不匹配对。


图(1).png

图1显示了当真实分数和冒名顶替分数遵循正态分布N(µ +,0.01)时,不同α值的E [L(t | s)+]与max {L(t | s)-}之间的差异。对于N = 2200,则为N(0,0.05)。可以看出,差异图是单峰的,并且最佳α随着平均µ +的减小而增加。当使用的特征来自DNN并且使用的原始相似性度量是余弦相似性时,该数字更有意义。 Zhang等提供了不匹配对的理论余弦相似度得分分布,其均值为0,方差为1 / d,其中d为特征维。我们的经验研究表明,许多DNN特征的μ+值都高于0.3,例如VGG19功能。因此,当使用余弦相似度时,DNN特征的合理α大致在[12.5,33.7]中。

3. QATM Performance in Template Matching

首先评估有关经典模板匹配问题的QATM性能。
代码:https://github.com/cplusx/QATM.3.1

3.1 Experimental Setup

为了在搜索图像S中找到匹配区域,我们通过NeuralNetQATM层(不学习α)(请参见alg1)在S上计算匹配质量映射,该层将搜索图像IS和模板图像IT作为输入。 因此,可以使用公式找到S中最匹配的区域R ∗。 (5)。


公式(5).png

我们遵循[24]中给出的评估过程,并使用标准的OTB模板匹配数据集[32],其中包含来自35色视频的105个模板图像对。 我们使用来自预先训练的ImageNet-VGG19。 将标准的并口交集(IoU)和曲线下面积(AUC)方法用作评估指标。 将QTAM与BBS [11],DDIS [26]和CoTM [24]三种最先进的方法进行比较,再加上使用SSD和NCC进行的经典模板匹配。

3.2 Performance On The Standard OTB Dataset

在本实验中,我们遵循[14]中的所有实验设置,并在标准OTB数据集上评估了提出的QATM方法。 α值设置为28.4,这是VGG曲线的峰值(见图1)。 QATM性能以及所有基线方法性能如图2-(a)所示。可以看到,拟议的QATM的性能优于最新方法,并且在AUC评分方面领先第二(CoTM)约2%,与两者之间1%的性能差距相比,这显然是明显的改进BBS及其后续DDIS。
由于所提出的QATM方法具有参数α,因此我们在变化的α值下评估QATM性能,如图2-(b)所示。显然,当α在最佳解附近时,总体QATM性能对值的选择不是很敏感。如图2-(b)中的水平虚线所示,α范围(而不是单个值)比现有方法具有更好的性能。在图3中可以找到更多定性结果。


图(1).png

图(2).png

3.3 Performance On The Modified OTB Dataset

标准OTB数据集中的一个问题是它不包含任何负样本,但是我们不知道在实际应用中搜索图像中是否存在感兴趣的模板。因此,我们创建了一个修改过的OTB(MOTB)数据集。具体来说,对于OTB中的每对搜索图像S和模板T,我们(1)将MOTB中的这对(S,T)作为正样本重用,并且(2)在用新模板T'替换T时保持S不变。 T'来自不同的OTB视频,并将其(S,T')用作否定样本。负模板T'选择为与T相同的大小,并从视频帧中随机裁剪。
这项研究的总体目标是在阴性样品存在的情况下公平地评估模板匹配性能。对于MOTB中的每个样本(一对,模板,搜索图像),我们将其馈送到模板匹配算法,并在搜索图像中记录找到的区域的平均响应。对于提出的QATM方法,我们再次使用α= 28.4。然后将这些响应以及每对的真实标记用于绘制图2-(c)所示的AUC曲线。凭直觉,良好的模板匹配方法应给阴性样品提供比正样品低得多的匹配分数,从而获得更高的AUC分数。拟议的QATM方法明显优于三种最新方法,其AUC得分约为9%。更重要的是,所提出的QATM方法在低假阳性率下显然获得了更高的真阳性率。由于建议的QATM具有质量意识,因此此结果不足为奇。
例如,当否定模板是同质的时,所有方法都会在搜索图像中找到同质区域,因为它是最相似的区域。 不同之处在于我们的方法具有质量意识,因此这种类型的匹配分数将比阳性模板低得多,而其他方法则没有此功能。


图(3).png

图3:定性模板匹配性能。 从左到右的列分别是:模板框架,重叠有预测边界框的目标搜索框架(不同的颜色表示不同的方法)以及QATM,BBS,DDIS和CoTM的响应图。 从上到下的行:前四个是来自OTB的正样本,而下四个是来自MOTB的负样本。 在彩色和放大模式下观看效果最佳。

3.4 Discussions

图3从提出的QATM方法和其他最新方法中提供了更定性的结果。这些结果证实了QATM的使用,它可以赋予一对一,一对多和多对多匹配情况不同的权重,不仅可以在搜索图像中找到更准确的匹配区域,还可以在无对应的情况下减少响应。例如,在最后一行中,当给出接近均质的否定模板时,所提出的QATM方法是唯一倾向于给出低分数的方法,而其他方法仍会返回高响应。
最后,匹配速度也很重要。因此,我们使用整个OTB数据集估算每种方法的处理速度(秒/样本)。所有评估均分别基于Intel Xeon E5-4627 v2 CPU和GeForce GTX 1080 Ti GPU。表3比较了不同方法的估计时间复杂度。尽管QATM包含相对昂贵的softmax操作,但其DNN兼容特性使GPU处理成为可能,这显然是最快的方法。


表(3).png

4.Learnable QATM performance

在本节中,我们重点介绍在不同的模板匹配应用程序中,将建议的QATM用作具有可学习参数的可区分层。

用于图像到GPS验证的QATM

图像到GPS验证(IGV)任务尝试通过视觉验证来验证给定图像是否是要求的GPS位置。 IGV首先使用标注的位置在第三方数据库(例如 Google StreetView)中找到参考全景图像,然后将给定的图像和参考作为网络输入,以通过模板匹配来验证视觉内容并产生验证决定。
与经典模板匹配问题相比,IGV任务的主要挑战是:

  • (1)在参考图像中仅可以验证查询图像中的一小部分未知视觉内容
  • (2)参考图像是全景图,其中 潜在的匹配ROI可能会失真。

4.1.1Baseline and QATM Settings

为了理解IGV任务中的QATM性能,我们使用baseline方法[7],并重复其网络训练,数据增强,评估等操作,不同之处在于,我们用NeuralNetQATM层代替了原有的Bottom-up Pattern Matching module。


图(4)[7] 中提出的baseline network,虚线代表了代替顺序.png

自下而上的模式匹配模块首先计算两个图像特征之间的余弦相似度,然后仅汇总出最大响应。 更准确地说,给定模板T,其对补丁s的匹配得分取决于公式(7),而QATM版本则取决于公式(4)。


公式(4).png

公式(7).png

4.1.2 Performance Comparison

为了评估QATM性能,我们重用了[7]使用的两个数据集,即Shibuya和Wikimedia Common数据集,这两个数据集均包含平衡的正样本和负样本。比较结果在表4中列出。在较困难的Shibuya数据集上,建议的QATM解决方案优于baseline BUMP方法,而在Wikimedia Common数据集上,QATM解决方案的性能稍差一些。原因可能为:baseline方法中的Verification(参见图4)是被提出来优化BUMP性能而不是QATM性能,因此使用QATM的优势尚未完全转移到验证任务中。

表(4).png

因此,我们用Wikimedia Common数据集的多边形边界框注释匹配区域,以更好地评估匹配性能。借助这些标注,我们仅在定位任务(预测全景图像中的匹配区域)上就可以公平地比较QATM和BUMP。这些结果显示在表5中,对于F1和IoU测量,QATM分别将BUMP定位性能提高了21%。 QATM本地化的优越性可以在图5所示的定性结果中得到进一步证实,其中QATM改进的版本所产生的响应图比baseline BUMP方法更清晰。
表(5).png

图(5).png

图5:定性图像到GPS的结果。 从左到右的列是:查询图像,叠加有预测边界框的参考全景图像(GT,拟议的QATM和基线BUPM)以及标注层,QATM和BUPM的响应图。

4.2 QATM for Semantic Image Alignment

语义图像对齐(SIA)任务的总体目标是变形给定图像,以便在变形后将其按照类别级别的对应关系与参考图像对齐。 用于语义图像对齐任务的典型DNN解决方案需要两个输入图像,一个用于变形,另一个用于参考,并且通常输出一组参数用于图像变形。 有关问题的更详细说明,请参见[18,19,13] .234

4.2.1 Baseline and QATM Settings

要了解SIA任务中的QATM性能,我们选择baseline方法GeoCNN [18],并模拟所有与网络相关的设置,包括网络架构,训练数据集,损失函数,学习率等,除了我们使用 NeuralNetQATM层(图6中的黄色框)替换了方法的匹配模块(图6中的橙色框)
与模板匹配不同,SIA任务依赖于所有模板和搜索图像补丁之间的原始匹配分数(这样就隐式保留了几何信息)来回归变形参数。 [18]中的匹配模块仅计算两个patch之间的余弦相似度,即ρ(S,T)(参见图1中第4行的ρst),并使用该tensor作为回归的输入。 结果,除了匹配质量映射之外,我们还进行了相应的更改,使NeuralNetQATM产生原始QATM匹配分数,即QATM(S,T)(请参见图1第8行中的QATM)。


图(6).png

4.2.2 Performance Comparisons

为了公平地比较SIA性能,我们遵循[13]中提出的评估协议,该协议将标准PF-PASCAL benchmark分为训练,验证和测试三个子集,分别包含700、300和300个样本。以正确关键点(correct key points PCK)的百分比表示系统性能[33,13],该百分比计算了转换后与ground truth的距离低于阈值的关键点的百分比。
在实验中,阈值设置为图像大小的τ= 0.1。


表(6).png

表6比较了此数据集上的不同方法。QATM方法明显优于所有baseline方法,并且是20个子类中的7个子类中排名最高的方法。此外,与我们的baseline GeoCNN方法相比,SCNet [13]使用更高级的功能和匹配机制。 [19]使用PF-PASCAL的训练子集在GeoCNN上以很小的学习率进行了微调。
但是,我们的结果证实,与使用更复杂的网络而不对PF-PASCAL子集进行微调相比,仅用那些quality aware的得分代替原始匹配得分会带来更大的收获。[20]采用了类似的想法,通过softmax函数作为QATM重新对匹配分数进行排名。他们通过找到一个soft mutual nearest neighbor来重新分配匹配分数,当在PF-PASCAL子集上进行训练时,效果优于QATM。更多定性结果可以在图7中找到。


图(7).png

图7:PF-PASCAL数据集的定性结果。 从左到右的列代表源图像,目标图像,QATM的转换结果,GoeCNN [18]和[19]。 圆圈和十字表示源图像和目标图像上的关键点。

5 Conclusion

我们介绍了一种新颖的质量感知模板匹配方法QTAM。 QTAM受到不同匹配案例之间自然质量差异这一事实的启发。 还以使其匹配分数准确反映当前匹配对与其他匹配对的相对匹配性的方式进行设计。 更重要的是,QTAM可以通过可学习的参数来区分,并且可以轻松地通过现有的通用深度学习层来实现。 QTAM可以直接嵌入DNN模型中,以实现模板匹配的目标。
我们广泛的实验表明,单独使用时,它的性能优于最新的模板匹配方法,并在GPU的帮助下产生更准确的匹配性能,更少的错误警报以及至少10倍的加速。 当插入用于模板匹配相关任务的现有DNN解决方案时,我们证明了它可以显著提高图像语义对齐任务和图像至GPS验证任务的得分。

参考文献

详见论文

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