多模态模型汇总-按需更新三

注意:时间逆序排列
关键词:ALBEF, CLIP, UniT, Vx2TEXT

多模态模型汇总-按需更新一:2019年发布的多模态模型汇总:Unicoder-VL, VisualBERT, ViLBERT, VideoBERT
多模态模型汇总-按需更新二:2020年发布的多模态模型汇总:UNIMO, UNITER, Pixel-BERT, Oscar
多模态模型汇总-按需更新三:2021年发布的多模态模型汇总

前言

多模态模型,这里主要是视觉和文本2个模态交互的模型。
一般的思路是,分别对文本和视觉进行特征提取,得到embedding,然后进行early或者late fusion,再根据预训练任务进行参数更新。

特征提取

  1. 视觉的提取,大多用的是Faster R-CNN:
    1.1 直接提取视觉向量;
    1.2 进行目标检测,输出bounding box和对应位置;
    1.3 进行目标检测,提取类别特征。
    潜在问题:提取的信息有冗余和噪音,对下游任务有益的视觉信息没有被有效提取,和对应的文本信息有语义鸿沟,不好做视觉-文本对齐等。
  2. 文本一般会用BERT或者Roberta做初始化,大规模训练集会从头开始训练。

Early fusion:特征提取后,一般是直接concat,进入transformer;
Late fusion:特征提取后,模态内部再进行深度学习,再做模态交互。

多模态数据集+预训练任务汇总

模型 数据集 预训练任务
ALBEF 图文对:COCO,VG,CC,SBU Caption ITC, MLM,ITM
CLIP 400million 网络公开数据集 对比学习
UniT 视觉/文本单模态和多模态的8个数据集 基于8个数据集的7个任务,包含目标检测,VQA,NLU
Vx2TEXT 视频用Kinetics,音频使用AudioSet TVQA, AVSD,TVC
UNIMO 文本:BookWiki and OpenWebText;
图片:OpenImages,unlabeled COCO;
图文对:COCO,VG,CC,SBU Caption
对比学习,MLM,MRM
UNITER 图文对:COCO,VG,CC,SBU Caption conditional MLM和MRM,ITM,WRA
Pixel-BERT 图文对:MS-COCO,VG MLM,ITM
Oscar 图文对:COCO,CC,SBU Caption,flicker30k, GQA等4.1million;
text-tag-image三元组:6.5million
对比学习,MTL
Unicoder-VL 3.8M 图文对齐数据;
包含3M的CC和0.8M的SBU Captions
MLM,ITM,MOC
VisualBERT 图文对:COCO
一张图片对应5个描述,共10w张图片
MLM,ITM
ViLBERT 图文对:CC,3.3million,文本弱相关 MLM,ITM
VideoBERT YouCook II dataset
包括2k视频,平均时长5.26m
3种masked learning,text-only, video-only和text-video

数据集说明
VG:Visual Genome
CC:Conceptual Captions

预训练任务说明
MLM:masked language model
MTL:masked token loss
MRM:masked region model
ITM:image text matching
MOC:masked object classification
WRA:Word-Region Alignment
TVQA:video questions answering
TVC:video captioning,同TVQA,但视频节选方式不同
AVSD:audio-visual scene-aware dialog

模型概况

ALBEF

  1. 双流模型;
  2. 在预训练和下游任务时,使用momentum distillation,缓解图文数据集中的噪声问题;
  3. 从Mutual Information的视角看图文对信息对齐。

CLIP

  1. 双流模型,文本和视觉分别进入transformer encoder,经过线性投影计算不同图文对的相似度;
  2. 使用对比学习,将图片分类转换成图文匹配任务。

UniT:文本和视觉分别encoder,concat之后进入transformer decoder,根据head进行不同任务的训练。

Vx2TEXT

  1. 基于backbone network提取模态特征,经过分类器,使用Gumbel-softmax 采样得到k个类别,和文本一样,映射到统一的语言空间;
  2. 端对端的文本生成模型。

UNIMO

  1. 目的:集成单模态和多模态结果的预训练模型,在多模态任务上表现不错,在单模态任务上,效果也不会下降太多;
  2. 数据增强:通过text rewriting,text/image retrieval 增强正负样本。

UNITER

  1. 目的:构建一个统一的图文学习框架,适用于各种图文任务;
  2. 分别对图文做embedding,经过Layer Normalization进入transformer;
  3. 提出conditional masking和OT-based WRA预训练任务。

Pixel-BERT

  1. 目的:之前都是用Faster R-CNN做目标检测提取视觉特征,存在噪音冗余和语义鸿沟,通过pixel-based 特征提取,提高视觉表达的鲁棒性;
  2. pixel-based:random pixel sampling mechanism,视觉特征提取后,在每个feature map里提取pixel作为视觉特征,相当于feature map内部的dropout。

Oscar

  1. 目的:同图片中的object tags作为anchor points辅助学习多模态对齐的信息;
  2. 输入为3元组Word-Tag-Image;
  3. 通过Faster R-CNN检测的k个高精度region作为object tags。

Unicoder-VL

  1. 目的:构建图片和长序列的联合表征的预训练模型;
  2. 提取的100个region feature 和文本 concat一起,进入multi-layer transformers。

VisualBERT

  1. Embedding有3种:视觉bounding region,区分视觉和文本的segment embedding和视觉和文本对齐的position embedding;
  2. 用了多种fusion方式,实验结果显示early-fusion最好。

ViLBERT:双流模型,每个模态先进入自己的TRM(transformer block),再做模态交叉Co-TRM(co-attentional transformer)。

VideoBERT

  1. 通过BERT学习text-to-video和video-to-text任务;
  2. 视觉文本对齐处理;
  3. 3种masked learning,text-only, video-only和text-video。

模型详情

ALBEF [Salesforce Research 21.07]

Align before Fuse: Vision and Language Representation Learning with Momentum Distillation

https://arxiv.org/pdf/2107.07651.pdf
https://github.com/salesforce/ALBEF

提取的视觉token和文本token不对齐,做图文特征交叉是个难点。
之前的模型,使用bounding box提取region feature,本文提出ALBEF,通过cross-modal attention,实现图文表征学习。且为了从noisy的web数据上提升模型效果,提出momentum distillation,这是一种self-training method,学习pseudo-targets。实验结果显示,模型在多个下游任务上,达到SOTA。


ALBEF 模型框架

数据:CC,SBU Captions,COCO,VG,共4M张图片,5.1M个图文对,另外加入了更加nosier的Conceptual 12M dataset,共14.1M张图片。
输入:对齐的图文数据
模型:3个encoder组成

  1. Image encoder
    模型:12-layer visual transformer ViT-B/16,在ImageNet-1k上进行权重初始化;
    输入:Image I
    输出:开头添加[CLS]token的embedding 序列,\lbrace{ v_{cls}, v_1, ...,v_N \rbrace}

  2. Text encoder
    模型:6-layer transformer,BERTbase前6层初始化
    输入:序列T
    输出:\lbrace{ w_{cls}, w_1, ...,w_N \rbrace}

  3. Multimodal encoder
    模型:6-layer transformer,BERTbase后6层初始化
    输入:图像embedding 序列 + 文本embedding 序列

MoD(Momentum Distillation)!!!重要
本文认为,训练集有噪音:正样本对是弱相关(weakly-correlated),文本部分描述和图片无关,或者图上有些实体没有在文本中表现出来。
这样在进行ITC任务时,部分负样本的描述和图片匹配;进行MLM时,存在其他词来(甚至更好的)表述图片信息。但ITC和MLM对所有负样本一视同仁,没有考虑负样本的相关性。
基于这个背景,本文提出通过momentum-model来生成pseudo-targets,作为additional supervision。

The momentum model is a continuously-evolving teacher which consists of exponential-moving-average versions of the unimodal and multimodal encoders.
在训练阶段,用base模型做训练,然后让他的predictions和momentum model匹配。

Mutual Information Maximize perspective!!!重要
ITC,MLM和MoD可视为生成视图的不同方式。
背景:用a和b表示一个数据点的不同视图,在自监督学习中,a和b可以表示为同一个图片的增强,视觉-文本表征学习中,a和b可表示为图文对中语义信息的不同变体。
目的:本文意在学习对视图变化的不变的表示。
模型:最大化a和b的互信息。实际应用时,通过最小化InfoNCE loss来最大化MI(a,b)的下界。
L_{NCE} = -E_{p(a,b)}[log \frac {exp(s(a,b))}{\sum_{\hat b\in \hat B} exp(s(a,\hat b))}]
其中:
s(a,b):score function,可以是向量之间的dot-production
\hat B:正样本集b

预训练任务

  1. ITC:image-text contrastive learning
    目的:fusion前学习单模态表征
    目标函数:similarity function,使得对齐图文有更高的相似分数
    s = g_v(v_{cls})^Tg_w(w_{cls})
    g_vg_w:对应的[CLS] embedding 经过softmax normalization得到256d的向量
    特点:受MoCo启发,用2个队列存储最近的M个图文对(本文M=65536),标准化后的特征可表示为:g_v'(v_{cls}'),g_w'(w_{cls}'),则
    s(I,T) = g_v(v_{cls})^Tg_w'(w_{cls}')
    s(T,I) =g_w(w_{cls})^T g_v'(v_{cls}')
    p_m^{i2t}(I) = \frac {exp(s(I,T_m)/t)}{\sum_m^M exp(s(I,T_m)/t)}
    p_m^{t2i}(T) = \frac {exp(s(T,I_m)/t)}{\sum_m^M exp(s(T,I_m)/t)}
    y^{i2t}(I),y^{t2i}(T)表示图文匹配真实标签,则损失函数为:
    L_{i2c} = \frac 12 E_{(I,T) \in D} [H(p^{i2t}(I),y^{i2t}(I)) + H(p^{t2i}(T) ,y^{t2i}(T))]

    MoD-ITC
    先通过momentum unimodal encoders计算图文相似度,得到:
    s(I,T)'= g_v'(v_{cls}')^Tg_w'(w_{cls}')
    s(T,I)'= g_w'(w_{cls}')^Tg_v'(v_{cls}')
    然后用s'替代s,计算soft pseudo-targest q^{i2t}q^{t2i}
    L_{i2c} = \frac 12 E_{(I,T) \in D} [H(p^{i2t}(I),y^{i2t}(I)) + H(p^{t2i}(T) ,y^{t2i}(T))]
    L_{i2c}^{mod} = (1-\alpha)L_{i2c} + \frac {\alpha}{2} E_{(I,T) \in D} [KL(p^{i2t}(I),q^{i2t}(I)) + KL(p^{t2i}(T) ,q^{t2i}(T))]

    Max MI-ITC
    L_{i2c} = \frac 12 E_{p(I,T)} [log \frac {exp(s(I,T)/t)}{\sum_m^M exp(s(I,T_m)/t)} + log \frac {exp(s(T,I)/t)}{\sum_m^M exp(s(T,I_m)/t)}]

    Max MI-MoD-ITC
    MoD中的KL-divergence loss可转换为以下方式:
    KL(p^{i2t}(I),q^{i2t}(I)) = -\sum_m q_m^{i2t}(I)logp_m^{i2t}(I) = - \sum_m \frac {exp(s'(I,T_m)/t)}{\sum_m^M exp(s'(I,T_m)/t)} log \frac {exp(s(I,T_m)/t)}{\sum_m^M exp(s(I,T_m)/t)}

  2. MLM:masked language learning
    目的:联合图文数据预测被masked words
    \hat T表示被masked text,P^{mask}(I,\hat T)表示模型预测的token的概率,则损失函数为:
    L_{mlm} =E_{(I,\hat T) \in D} H(P^{mask}(I,\hat T),y^{mask})

    MoD-MLM的损失函数为:
    L_{mlm} ^{mod}=(1-\alpha) L_{mlm} + \alpha E_{(I,\hat T) \in D} KL(P^{mask}(I,\hat T),q^{mask}(I,\hat T))

    Max MI-MLM的损失函数为:
    L_{mlm} = \frac 12 E_{p(I,\hat T)} [log \frac {exp( \psi (y^{msk})^Tf(I,\hat T)))}{\sum_{y \in V} exp( \psi (y)^Tf(I,\hat T)))}]
    其中:
    \psi (y):V -> R^d:s a lookup function in the multimodal encoder’s output layer that maps a word token y into a vector and V is the full vocabulary set;
    f(I,\hat T)):returns the final hidden state of the multimodal encoder corresponding to the masked context。

  3. ITM:image-text matching
    目的:预测图文是否匹配
    负样本:online contrastive hard-negative mining,hard-negative为语义相似但fine-grained details不同。
    使用multimodal encoder的output embedding中的[CLS] token,softmax(FC(CLS))预测二分类概率p^{itm}
    L_{ITM} =E_{(I,T) \in D} H(P^{itm}(I,T),y^{itm})

预训练目标函数: L = L_{itc} + L_{mlm} + L_{itm}

实验

进行下游实验时,同样使用了MoD。最终的loss为原始loss和KL-divergence的weighted combination。为简化操作,本文预训练和下游任务的\alpha都为0.4,在第一个epoch,经过linearly ramp-up,将\alpha从0提升到0.4。

本文一共做了5个V+L(视觉文本)任务。

  1. Image-text retrieval
    包含IR和TR。
    数据集:Flickr30K + COCO
    实验方案:在2个数据集上分别做fine-tune,以及在COCO上做fine-tune,在Flickr30K上进行zero-shot检索。
  2. Visual Entailment(SNLI-VE)
    预测图片和文本之间的关系是entailment,neutral还是contradictory。
    实验方案:借鉴UNITER,将VE任务视为3分类,用[CLS]做类别预测。
  3. VQA
    给定图片和问题,生成答案。
    实验方案:接入6层的transformer-decoder用来做答案生成,用[CLS]做decoder的输入,[SEP]作为终止符。


    ALBEF 下游实验模型结构
  4. NLVR
    图文是否匹配。
    实验方案:设计text-assignment(TA)任务,给定2张图一个文本,模型做3分类,判断文本和其中哪张图片相关or都不相关。
    和SOTA相比,提升了3.84%。
  5. VG(visual grounding)
    根据文本描述,找到图上位置。
    数据集:RefCOCO+ dataset
    实验方案:是弱监督式学习,没有bounding box。推理时,用Grad-CAM做热力图,对检测的proposal做排序。

CLIP [OpenAI 21.03]

Learning Transferable Visual Models From Natural Language Supervision

https://arxiv.org/pdf/2103.00020.pdf
https://github.com/openai/CLIP
详情:https://www.jianshu.com/p/7db808d57bba

一般的目标检测,图片分类等CV任务,都会预设有哪些类别,要识别哪些种类。实际图片信息是很丰富的,除了这些预设的类别,其他的视觉信息没有被充分利用,如果还要识别图上其他类别,就需要再加标签。

本文提出CLIP,Contrastive Language–Image Pre-training,用4亿对来自网络的图文数据集,将文本作为图像标签,进行训练。进行下游任务时,只需要提供和图上的concepts对应的文本描述,就可以进行zero-shot transfer。
模型在30个CV数据集上做了实验,实验任务包括OCR, action recognition in videos, geo-localization, and many types of fine-grained object classification。模型在大部分的任务上都达到最佳。而且,一般不用再做specific training,就可以和其他baseline 模型媲美。

数据:4亿个网络公开的图文对。为覆盖到更多的视觉concepts, 用了50w个query在搜索引擎搜索图片,一个query差不多有2w张图片。
输入:一个batch有N个图像文本对;

CLIP 模型框架

模型:对比学习,预测N\times N对图文数据,将图片分类任务转换成图文匹配任务:

  1. 双流,2个encoder分别处理文本和图片数据,text encoder使用Transformer,image encoder用了2种模型,ResNetVision Transformer(ViT)
    a. 5种ResNet:ResNet-50, ResNet-101, EfficientNet-style的ResNet,包括RN50x4, RN50x16, RN50x64;
    b. 3种ViT:ViT-B/32, ViT-B/16, ViT-L/14;
  2. encoder representation直接线性投影到multi-modal embedding space;
  3. 计算2模态之间的cosine similarity,让N个匹配的图文对相似度最大,不匹配的图文对相似度最小;
  4. 对称的cross-entropy loss;
  5. 数据增强:对resized图片进行random square crop。

伪代码如下:

CLIP 伪代码


UniT [FAIR 21.02]

Multimodel Multitask Learning with a Unified Transformer

https://arxiv.org/pdf/2102.10772.pdf

基于8个数据集的7个任务学习,包含目标检测,VQA,自然语言理解等等。
在这之前,很多基于transformer的单模态,多模态模型都取得不错的效果:

  1. 单领域或指定的多模态领域,比如ViT,DETR只关注视觉任务,BERT只负责文本任务,而VisualBERT,ViLBERT等多模态模型会应用到指定的多模态任务;
  2. fine-tuning时,不同任务之间的参数不能共享,以至于N个下游任务就要有N倍的参数;
  3. 在多任务上面做单领域的相关性/相似分析任务时,训练比较hard-coded,比如T5只能用作文本模态,而VILBERT-MT只能用在视觉-文本任务上。

因此本文提出UniT,输入图片或者文本,或者图文数据,进行多任务训练。


UniT 样例
UniT 模型框架

输入:文本和视觉
模型:Transformer encoder-decoder结构
Transformer Encoder:视觉文本分开处理。
Image Encoder

  1. 视觉特征:ResNet-50模型结构,采用C5 block,得到feature map:
    x^v \in R^{H_v \times W_v \times d_v^b}
  2. 参考DETR模型,提取的feature_map进入transformer,得到视觉hidden state:
    h^v \in R^{L \times d_v^b}
  3. 针对不同的任务w_v^{task},经过线性投影P_{b \to e},得到不同的视觉表达:
    h^v = \lbrace{h_1^v,h_2^v,...,h_L^v \rbrace} = E_v(P_{b \to e}(x^v),w_v^{task})

Text Encoder

  1. 和BERT一致,对序列长度为S的文本,hidden state:
    h^t \in R^{S \times d_t^e}
  2. 针对不同任务,有不同的文本表达:
    h^t = \lbrace{h_1^t,h_2^t,...,h_S^t \rbrace} = BERT(\lbrace{w_1,..,w_S \rbrace},w_v^{task})
    实验发现,这种投影操作的效果和最后一层的[CLS]差不多。

Transformer Decoder
基于目标任务类型,进行单模态或多模态的decoder。
视觉任务:h^{enc} = h^v
文本任务:h^{enc} = h^t
多模态任务:h^{enc} = concat(h^v, h^t)
目标任务q^{task}\lbrace{h^{dec,l} \rbrace} = D(h^{enc}, q^{task})

Task-specific output heads
基于任务t的decoder hidden state \lbrace{h^{dec,l} \rbrace}
目标检测任务,和DETR模型一样,用一个class head输出类别,一个box head输出每个位置的bounding box;
如果每个box上有对应的属性标签,就类似BUTD模型,再用一个attribute classification head做标签分类。

预训练任务
每次迭代,随机选择一个任务及对应数据集进行训练。
根据数据集的大小和empirical evidence,人为设置了采样概率。

实验

  1. Multitask learning on detection and VQA:
    1.1 目标检测任务使用COCO detection dataset和Visual Genome数据集;
    1.2 VQA使用VQAv2 dataset。
    实验设置
    a. 针对不同的任务,使用不同的decoder,参数不同享;
    b. 使用一个参数共享的decoder来处理不同类型的任务。
  2. A Unified Transformer for multiple domains:
    2.1 一个任务对应一个decoder,单任务训练;
    2.2 一个任务对应一个decoder,多任务训练;
    2.3 多任务训练,共享一个decoder。

Vx2TEXT [Facebook AI 21.01]

VX2TEXT: End-to-End Learning of Video-Based Text Generation From Multimodal Inputs

https://arxiv.org/pdf/2101.12059.pdf

本文希望实现多模态的端对端的文本生成模型。
多模态文本生成任务需要实现3个目标:

  1. 如何从每个模态中提取salient information;
  2. 基于query,如何混合多个模态提供的信息;
  3. 生成合理的文本。

本文通过一个end-to-end模型框架,实现以上3个目标:

  1. 通过一个learnable tokenizer,提取视频,音频,语音等模态的特征,并转换到语言空间;
    使用modality-specific classifiers,对每个模态提取的特征信息进行分类,仅选择top classes的textual labels作为该模态的salient information,通过预训练语言模型(比如T5)转换成word-embedding;
    实际可以理解为每个模态都做标签分类,如果直接提取这些标签,可能存在很多噪音,或者跟下游任务无关,因此,仅选择top的标签,表征该模态。
    为什么会提到这个呢?

https://arxiv.org/pdf/1902.05660.pdf
Cycle-Consistency for Robust Visual Question Answering提到了一个现象,如下图,同一个问题,用不同方式问,模型产出的答案不同。

Cycle-Consistency

  1. 使用relaxation scheme实现end-to-end训练;
  2. 通过language encoder融合不同模态的embeddings,结合一个autoregressive decoder进行文本生成,这种text decoder可以解决'video+x to text'的问题。

在 video-based text-generation tasks,比如captioning, question answering 和 audio-visual scene-aware dialog3种任务上,都达到SOTA。

输入
多模态表示:x = \lbrace x_1, x_2,...,x_M \rbracex_M表示第M个模态;
task token:t \in \lbrace Answer, Caption, dialog,...\rbrace
模型表示:F(t, x_1, x_2,...,x_M;W)
模型输出text tokens:y = [y_1, y_2,...,y_N]

Vx2TEXT

Differentiable Tokenization

之前很多模型通过cross-modal来进行fusion操作,这种方式比较burdensome且计算开销大。因此,本文通过将不同模态信息映射到同一个semantic language space,来实现fusion。
对每一个模态:

  1. 预定义language vocabularies(categories);
  2. modality network提取模态特征,接入分类器,输出modality categories,使用Gumbel-Softmax trick对这些categories进行sampling,并通过Straight-Though Estimator保证K_m的categories可微;
    为什么要进行sampling?
    2.1 不是每一个category都对下游任务有帮助;
    2.2 仅选择top categories不可微,就没办法finetuning,且会丢失模态信息,训练过程带来偏差。
    Straight-Though Estimator\nabla G \approx \nabla w_m \frac {exp(logp_m(c|x) + g_m(c))}{\sum_{c'}^{|C_m|} exp(logp_m(c'|x) + g_m(c'))}
  3. 通过预训练语言模型将top的modality categories映射到语言空间。

Generative Encoder-Decoder

视频数据:Kinetics,共400个action categories,训练时随机选择32帧,测试用了10帧数据,仅 sample K_v = 12 个categories表征视频模态;
视频backbone network:R(2+1)D-34;
音频数据:AudioSet,共527个acoustic events,用K_a = 6个categories表征音频;
音频backbone network:CNN14
(备注:音频和视频的categories的个数选择,本文做了实验。)
预训练语言模型:HuggingFace的T5-base

输入:不同模态的K个categories的embeddings,用e_S做separator token,e_m^{K_m}表示第m个模态的第k个类别的embedding,
z = F_{En}(e_t, e_S, e_1^1, ...,e_1^{K_1}, e_S,...,e_S, ..., e_M^{K_M})
第i个token的输出:\hat g_i =F_{De}(z, \hat g_i,...,\hat g_{i-1})
训练时使用teacher-forcing\hat g_i =F_{De}(z, g_i,..., g_{i-1})
损失函数L = \min \frac 1n \sum_i CE(\hat g_i, g_i)
预测时,一个decoder既可以实现生成任务,也可以实现判别任务(其他模型可能是用multi-head,不同head负责不同任务):

  1. generative task:Beam Search或Greedy Decoding;
  2. discriminative task:TVQA选择题任务,将候选集作为模型额外输入,then evaluate each candidate output under the probability distribution defined by the autoregressive decoder(这句话感觉说的不清楚)。

实验

  1. TVQA:video questions answering
    数据集:6 TV series的video clips,每个视频有7个问题,每个问题有5个候选答案,根据视频片段和对应语音信息,从候选集中选择答案。
  2. AVSD:audio-visual scene-aware dialog
    数据集:Charades dataset,每段视频包含10个QA对,一个没看过视频的人和看过视频的人之间的对话,通过对话,了解视频内容;
  3. TVC:video captioning
    数据集:和TVQA一样,视频节选方式不同。

各个任务SOTA汇总

多数据集比较

多数据集比较-UniT

多数据集比较-UNIMO
多数据集比较-UNIMO

VQA

VQA 模型结果-Pixel-BERT

VCR

VCR 模型结果-VisualBERT

NLVR

NLVR 模型结果-Pixel-BERT

Flickr30K

Flickr30K 模型结果-Pixel-BERT

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

推荐阅读更多精彩内容