SSD與yolov1的對比

yolo系列和ssd發(fā)表的時(shí)間順序是yolov1,ssd功舀,yolov2,yolov3,當(dāng)然現(xiàn)在yolov4也出現(xiàn)了。這個(gè)是我之前在看完yolov1之后閱讀ssd論文的時(shí)候記錄的筆記楼咳,因此會(huì)涉及到很多和yolov1實(shí)現(xiàn)的對比。

一烛恤、簡單的介紹

fast rcnn系列的模型的套路:
1.使用事先設(shè)定的bounding boxes,

  1. 對每個(gè)boxes重新采樣像素或者特征,
  2. 應(yīng)用一個(gè)高質(zhì)量的分類器母怜。
    缺失是太慢了。想要提高速度就必然需要降低準(zhǔn)確率棒动。


    1.png

    SSD是一種不需要對每個(gè)假定的bounding boxes重新采樣像素或者特征同時(shí)可以保證準(zhǔn)確率的方法糙申。
    Our improvements include using a small convolutional filter to predict object categories and offsets in bounding box locations, using separate predictors (filters) for different aspect ratio detections, and applying these filters to multiple feature maps from the later stages of a network in order to perform detection at multiple scales. With these modifications—especially using multiple layers for prediction at different scales—we can achieve high-accuracy using relatively low resolution input, further increasing detection speed.
    ssd對低分辨率圖像也可以有一個(gè)比較好的識(shí)別效果,提供了一個(gè)速度和準(zhǔn)確率的trade-off船惨。

和fasterRCNN區(qū)別是沒有使用RPN和Pooling操作

論文的貢獻(xiàn):
1. 引入了一種單階段的檢測器柜裸,比以前的算法YOLOv1更準(zhǔn)更快,并沒有使用RPN和Pooling操作粱锐;
2. 使用一個(gè)小的卷積濾波器應(yīng)用在不同的feature map層從而預(yù)測BB的類別的BB偏差疙挺;
3. 可以在更小的輸入圖片中得到更好的檢測效果(相比Faster-rcnn);
4. 在多個(gè)數(shù)據(jù)集(PASCAL怜浅、VOC铐然、COCO、ILSVRC)上面的測試結(jié)果表明恶座,它可以獲得更高的mAp值搀暑;

二、SSD的模型

整個(gè)是一個(gè)基于前向反饋的卷積網(wǎng)絡(luò)跨琳,SSD模型最終提供一個(gè)固定大小的bounding boxes集合以及這些bounding boxes是否存在分類物品的得分的集合自点,通常在模型之后,添加了一個(gè)非極大抑制步驟來提供最終的檢測結(jié)果脉让。


ssd2.png

主干網(wǎng)絡(luò)backbone network
主干網(wǎng)絡(luò)是基于VGG的桂敛, 是一個(gè)高質(zhì)量的分類網(wǎng)絡(luò),把這個(gè)基礎(chǔ)模型作為ssd的前面層溅潜,用于給后面的層提供高質(zhì)量的圖片分類术唬,我們稱這個(gè)層為基礎(chǔ)網(wǎng)絡(luò),注意這個(gè)基礎(chǔ)模型在使用的時(shí)候滚澜,需要截去最后面的分類層粗仓。在這里使用的VGG16網(wǎng)絡(luò)。然后添加輔助的結(jié)構(gòu)來 提供最終的檢測功能。

主干網(wǎng)對VGG16的修改:
1. 將VGG16的FC6和FC7層轉(zhuǎn)化為卷積層借浊,如圖1上的Conv6和Conv7眶掌;
2. 去掉所有的Dropout層和FC8層;
3. 添加了Atrous算法(hole算法)巴碗,參考該鏈接;
4. 將Pool5從2x2-S2變換到3x3-S1即寒;


ssd1.png

最終的檢測功能的實(shí)現(xiàn)依賴于下面提到的關(guān)鍵技術(shù):

1. 多尺度的特征圖Multi-scale feature maps for detection橡淆。

在基礎(chǔ)網(wǎng)絡(luò)之后,添加了很多個(gè)卷積層母赵,卷積層不斷的減小特征圖的寬高尺寸逸爵,比如從88經(jīng)過一層卷積之后就變成44了。然后在這些特征圖上都應(yīng)用目標(biāo)檢測算法凹嘲。正如上面那張圖所示师倔,對于前面一層來說,相當(dāng)于是在一個(gè)比較小的88的尺度上周蹭,對每個(gè)位置檢測4個(gè)固定橫縱比的bounding box趋艘,而對于后面一層來說,就是在一個(gè)相對較大的44尺寸上對每個(gè)位置檢測4個(gè)固定橫縱比的bounding box凶朗。這樣就實(shí)現(xiàn)了在多尺度特征圖上檢測的目的瓷胧。

2.png

圖中的所有信道的對應(yīng)位置的像素點(diǎn)集合被認(rèn)為是一個(gè)anchor,那么對于每個(gè)anchor就會(huì)有N個(gè)比率的bounding box,需要注意的是,每一層的bounding box數(shù)量不一定是一樣的棚愤。

2. 檢測目標(biāo)的卷積預(yù)測器Convolutional predictors for detection

我們從feature layer或者說feature map上抽取特征搓萧。feature layer可能是基礎(chǔ)網(wǎng)絡(luò)上面的某一層,也可以是在基礎(chǔ)網(wǎng)絡(luò)后面添加的卷積層宛畦。對于一個(gè) m x nxc的feature layer瘸洛,使用一個(gè)3x3xp的核過濾器(small kernel),那么對于每一個(gè)輸出的pixel次和,都可以得到一個(gè)channel數(shù)為p大小的檢測結(jié)果反肋,一般p=4(|Classes|+4)大小,最終可以得到mnp大小的檢測結(jié)果斯够。這個(gè)檢測結(jié)果中包含了每個(gè)位置的分類物品出現(xiàn)的置信度以及四個(gè)表示位置和偏移的(cx,cy,w,h)囚玫。因?yàn)樵O(shè)置了bounding box的數(shù)量為4,所以結(jié)果是4(|Classes|+4).
需要注意到這里使用的卷積預(yù)測器而不是全連接層(yolov1使用的是全連接層)读规。

默認(rèn)的boxes和橫縱比Default boxes and aspect ratios

這里的bounding box的概念類似于Faster R-CNN中的anchor boxes.但是這里不同的feature map層可以安排不同形狀和數(shù)量的bounding box抓督。,這樣可以有效的離散化可能的輸出box的空間(想象一下束亏,如果每個(gè)feature map的bounding box長的差不多铃在,那么得到的可能差異只在大小上,我們需要的是不同大小和形狀的box來擬合真實(shí)的物品的坐標(biāo),因此box越多樣越好定铜。


3.png

三阳液、訓(xùn)練

The key difference between training SSD and training a typical detector that uses region proposals, is that ground truth information needs to be assigned to specific outputs in the fixed set of detector outputs.

把真實(shí)的物品坐標(biāo)框稱為ground truth,對于一張圖片揣炕,在經(jīng)過SSD模型的各層檢測帘皿,會(huì)有8732個(gè)prior box(也就是檢測結(jié)果),需要標(biāo)記這些檢測結(jié)果中畸陡,哪些是正樣本鹰溜,那些是負(fù)樣本。 這些標(biāo)記過程都是在訓(xùn)練之前做好的丁恭;不同層的default box的數(shù)量和大小也是在訓(xùn)練錢都確定好的曹动;還需要準(zhǔn)備好難負(fù)例挖掘的策略。

1. 匹配策略 matching strategy:

對于打標(biāo)的真實(shí)框GT牲览,需要選擇哪個(gè)預(yù)測框是與真實(shí)框?qū)?yīng)的墓陈。這里選擇是jaccard overlap>0.5的所有默認(rèn)框。這樣正負(fù)樣本就不會(huì)很懸殊第献。Multibox論文中則只會(huì)選擇jaccard overlap最高的一個(gè)框框贡必。

個(gè)人理解中,這里的預(yù)測框是指沒有偏移變化的預(yù)測框prior box痊硕,也叫先驗(yàn)框(prior box)赊级。在GT確定、輸入圖像尺寸固定岔绸、prior box確定之后理逊,就可以得到j(luò)accard overlap>0.5的所有先驗(yàn)框。然后學(xué)習(xí)的時(shí)候盒揉,這些正例需要根據(jù)ground truth進(jìn)行偏移和長寬比縮放的學(xué)習(xí)晋被。而其他負(fù)例則不需要學(xué)習(xí)位置參數(shù)。

jaccard overlap

為圖像的面積的交并比.


4.png

下面是來自參考文獻(xiàn)的關(guān)于匹配策略的敘述:

在訓(xùn)練過程中刚盈,首先要確定訓(xùn)練圖片中的ground truth(真實(shí)目標(biāo))與哪個(gè)先驗(yàn)框來進(jìn)行匹配羡洛,與之匹配的先驗(yàn)框所對應(yīng)的邊界框?qū)⒇?fù)責(zé)預(yù)測它。

在Yolov1中藕漱,ground truth的中心落在哪個(gè)單元格欲侮,該單元格中與其IOU最大的邊界框負(fù)責(zé)預(yù)測它。但是在SSD中卻完全不一樣肋联,SSD的先驗(yàn)框與ground truth的匹配原則主要有兩點(diǎn)威蕉。

首先,對于圖片中每個(gè)ground truth橄仍,找到與其IOU最大的先驗(yàn)框韧涨,該先驗(yàn)框與其匹配牍戚,這樣,可以保證每個(gè)ground truth一定與某個(gè)先驗(yàn)框匹配虑粥。通常稱與ground truth匹配的先驗(yàn)框?yàn)檎龢颖荆ㄆ鋵?shí)應(yīng)該是先驗(yàn)框?qū)?yīng)的預(yù)測box如孝,不過由于是一一對應(yīng)的就這樣稱呼了),反之娩贷,若一個(gè)先驗(yàn)框沒有與任何ground truth進(jìn)行匹配第晰,那么該先驗(yàn)框只能與背景匹配,就是負(fù)樣本彬祖。一個(gè)圖片中g(shù)round truth是非常少的但荤, 而先驗(yàn)框卻很多,如果僅按第一個(gè)原則匹配涧至,很多先驗(yàn)框會(huì)是負(fù)樣本,正負(fù)樣本極其不平衡桑包,所以需要第二個(gè)原則南蓬。

第二個(gè)原則是:對于剩余的未匹配先驗(yàn)框,若某個(gè)ground truth的 IOU 大于某個(gè)閾值(一般是0.5)哑了,那么該先驗(yàn)框也與這個(gè)ground truth進(jìn)行匹配赘方。這意味著某個(gè)ground truth可能與多個(gè)先驗(yàn)框匹配,這是可以的弱左。但是反過來卻不可以窄陡,因?yàn)橐粋€(gè)先驗(yàn)框只能匹配一個(gè)ground truth,如果多個(gè)ground truth與某個(gè)先驗(yàn)框IOU大于閾值拆火,那么先驗(yàn)框只與IOU最大的那個(gè)先驗(yàn)框進(jìn)行匹配跳夭。第二個(gè)原則一定在第一個(gè)原則之后進(jìn)行,仔細(xì)考慮一下這種情況们镜,如果某個(gè)ground truth所對應(yīng)最大IOU小于閾值币叹,并且所匹配的先驗(yàn)框卻與另外一個(gè)ground truth的IOU大于閾值,那么該先驗(yàn)框應(yīng)該匹配誰模狭,答案應(yīng)該是前者颈抚,首先要確保某個(gè)ground truth一定有一個(gè)先驗(yàn)框與之匹配。

2. 訓(xùn)練目標(biāo)嚼鹉,也就是損失函數(shù)的定義

損失函數(shù)是回歸損失和置信度損失的加權(quán)平均


5.png

下面是位置回歸損失函數(shù)的介紹贩汉,看著就很暈。


6.png

N表示匹配的框锚赤,應(yīng)該可以理解為正樣本框匹舞。首先g表示是ground truth box的各個(gè)指標(biāo),d是先驗(yàn)框的各個(gè)指標(biāo)宴树,l是預(yù)測結(jié)果的各個(gè)指標(biāo)策菜。g^ 這個(gè)是根據(jù)g和d得到的可以和預(yù)測結(jié)果匹配計(jì)算損失函數(shù)的指標(biāo)。比如g^cx 這個(gè)指標(biāo),是歸一化的橫坐標(biāo)偏移指標(biāo)又憨,因?yàn)橄闰?yàn)框的中心不會(huì)完全和ground truth的中心重合翠霍,因此計(jì)算實(shí)際的偏移量。這個(gè)值就是我們希望模型學(xué)習(xí)到的值蠢莺。同理寒匙,先驗(yàn)框的寬度也不會(huì)完全重合ground truth的寬度,我們用log函數(shù)來計(jì)算g^w躏将,這也意味著我們希望學(xué)習(xí)到的寬度也是這種變換的锄弱。

smoothL1損失函數(shù)長這樣:


7.png

分類的置信度損失函數(shù)如下,正樣本的softmax loss函數(shù)以及負(fù)樣本的背景置信度損失.


8.png

選擇默認(rèn)的bounding box的縮放尺度和角度比率

在某些論文的方法中祸憋,為了獲得不同縮放的圖片的結(jié)果会宪,通過現(xiàn)將圖片縮放在不同的尺度然后在最后將每個(gè)縮放尺度的結(jié)果組合起來。而在這篇論文中使用的方式是使用同一個(gè)網(wǎng)絡(luò)中的不同層上抽取的feature map來獲得和上面的縮放效果一樣的結(jié)果蚯窥。

我覺得這個(gè)idea真的很贊掸鹅,超級(jí)贊。這樣不僅僅可以利用參數(shù)共享拦赠,而且很方便巍沙。已經(jīng)有研究表明使用前面層的feature map可以優(yōu)化語義分段質(zhì)量semantic segmentation quality,因?yàn)榍懊娴膶涌梢垣@得更多的細(xì)節(jié)的優(yōu)質(zhì)的關(guān)于輸入的信息荷鼠。


10.png

這張圖上有兩個(gè)feature map句携。我們知道網(wǎng)絡(luò)的不同層有不同的感受野。在SSD中允乐,bounding box的大小不需要匹配對應(yīng)層的感受野矮嫉。我們設(shè)計(jì)了bounding box的尺寸規(guī)則,這樣每個(gè)feature map就可以自己計(jì)算牍疏。
如果我們使用m個(gè)feature map,其中1表示較低層敞临,m表示叫高層。bounding box的默認(rèn)尺度按照如下的計(jì)算公式計(jì)算


11.png

bounding box的橫縱比尺度為


12.png

這里的bounding box的橫縱比是固定的麸澜,作者提到也可以設(shè)計(jì)特定的bounding box的橫縱比分布來更好的適應(yīng)數(shù)據(jù)集挺尿,這不就是yolov2做的事情嗎?yolov2使用聚類的方式得到了5個(gè)適應(yīng)數(shù)據(jù)的橫縱比尺寸炊邦,然后發(fā)現(xiàn)5個(gè)bounding box的平均IOU已經(jīng)和9個(gè)anchor box的IOU值接近了编矾。

4. hard negative mining

什么是hard negative mining:
【1】對于目標(biāo)檢測中我們會(huì)事先標(biāo)記處ground truth,然后再算法中會(huì)生成一系列proposal馁害,這些proposal有跟標(biāo)記的ground truth重合的也有沒重合的窄俏,那么重合度(IOU)超過一定閾值(通常0.5)的則認(rèn)定為是正樣本,以下的則是負(fù)樣本碘菜。
【2】然后扔進(jìn)網(wǎng)絡(luò)中訓(xùn)練凹蜈。However限寞,這也許會(huì)出現(xiàn)一個(gè)問題那就是正樣本的數(shù)量遠(yuǎn)遠(yuǎn)小于負(fù)樣本,這樣訓(xùn)練出來的分類器的效果總是有限的仰坦,會(huì)出現(xiàn)許多false positive履植,把其中得分較高的這些false positive當(dāng)做所謂的Hard negative,既然mining出了這些Hard negative悄晃,就把這些扔進(jìn)網(wǎng)絡(luò)得到類別的損失函數(shù)玫霎,將這些難負(fù)樣本的損失函數(shù)作為背景損失函數(shù),從而加強(qiáng)分類器判別假陽性的能力妈橄。

絕大部分的bounding box最后匹配出來是沒有物品的庶近,這樣會(huì)導(dǎo)致負(fù)樣本和正樣本嚴(yán)重失衡。SSD這里沒有使用全部的負(fù)樣本眷蚓,而是對每個(gè)負(fù)樣本的bounding box根據(jù)其confidence loss排序鼻种,然后選擇最大的一批作為負(fù)樣本,這樣是的負(fù)樣本和正樣本的比率穩(wěn)定在3:1沙热。實(shí)踐證明普舆,這樣的方式是的優(yōu)化的碎度更快,訓(xùn)練也更加穩(wěn)定校读。

5. 數(shù)據(jù)的擴(kuò)充策略

數(shù)據(jù)的擴(kuò)充策略中數(shù)據(jù)來自于以下三種之一

  1. Use the entire original input image.
  2. Sample a patch so that the minimum jaccard overlap with the objects is 0.1, 0.3,
    0.5, 0.7, or 0.9.
  3. Randomly sample a patch.
    采樣的圖片大小占原始尺寸的(0.1,1)之間,橫縱比在(0.5,2)之間祖能。如果物體的中心在采樣圖片中歉秫,那么會(huì)保持物品框的覆蓋范圍。

實(shí)驗(yàn)結(jié)果

1. 簡單概述

base netowrk是VGG16养铸。SSD300的模型就是上面那張結(jié)構(gòu)圖所示雁芙。新的層的初始化使用xavier方式(https://zhuanlan.zhihu.com/p/22028079https://zhuanlan.zhihu.com/p/22044472)钞螟。實(shí)驗(yàn)認(rèn)為和RCNN相比兔甘,SSD在定位localization上更加優(yōu)秀,因?yàn)樵谏窠?jīng)網(wǎng)絡(luò)模型中直接學(xué)習(xí)回歸了物品的形狀鳞滨。但是SSD很容易有分類錯(cuò)誤問題洞焙,尤其是類似的類別(比如動(dòng)物)。SSD對bounding box的大小很敏感拯啦,也就是說澡匪,小物體的表現(xiàn)不如大物體。結(jié)合模型來看褒链,因?yàn)樾∥矬w的預(yù)測使用的是網(wǎng)絡(luò)的前面的層唁情,而前面的層并沒有很多的信息。雖然存在上面的問題甫匹,但是SSD在大物體上的表現(xiàn)很好甸鸟,二千對于不同橫縱比的物體的性能魯棒惦费。

模型分析

下面這張圖展示了ssd中的哪些技術(shù)使得性能得到了提升。


13.png

性能提升的貢獻(xiàn):

  1. 擴(kuò)充數(shù)據(jù)抢韭,這點(diǎn)yolov1也受益其中.

  2. 使用更多的box的形狀,[1/2篮绰,2]和[1/3, 3]box可以在一定程度上提升算法的性能

  3. 使用了atrous方法:其實(shí)就是conv6采用擴(kuò)展卷積或帶孔卷積(Dilation Conv),其在不增加參數(shù)與模型復(fù)雜度的條件下指數(shù)級(jí)擴(kuò)大卷積的視野臀突,其使用擴(kuò)張率(dilation rate)參數(shù)贾漏,來表示擴(kuò)張的大小,如下圖6所示梳码,(a)是普通的 3\times3 卷積,其視野就是 3\times3 伍掀,(b)是擴(kuò)張率為2掰茶,此時(shí)視野變成 7\times7 ,(c)擴(kuò)張率為4時(shí)蜜笤,視野擴(kuò)大為 15\times15 濒蒋,但是視野的特征更稀疏了。Conv6采用 3\times3 大小但dilation rate=6的擴(kuò)展卷積把兔。


    14.png

    atrous算法可以輕微提升算法性能沪伙,但是其主要的作用是用來提速,論文中表明它可以提速20%县好。主要的原因可能是雖然該算法可以獲得更大的feature map和接收場围橡,但是由于SSD本身利用了多個(gè)feature map來獲取BB,BB的多樣性已經(jīng)足夠缕贡,由于feature map擴(kuò)大而多得到的BB可能是一些重復(fù)的翁授,并沒有起到提升檢測性能的作用。

  4. 使用了不同分辨率的feature maps晾咪,并且關(guān)注邊界上的框框黔漂。


    15.png

SSD是如何提升小物體的檢測準(zhǔn)確率的:通過數(shù)據(jù)擴(kuò)充


16.png

SSD為什么速度快?

SSD用的是VGG16(但去掉了fc層加速)而YOLO普通版有24個(gè)卷積層禀酱。
SSD的輸入尺寸較芯媸亍(300300),而YOLO是448448剂跟,即使網(wǎng)絡(luò)結(jié)構(gòu)類似計(jì)算量差距還是挺明顯的减途,速度快一點(diǎn)正常酣藻。
ssd全靠卷積完成,而yolo里還有全連接鳍置,用上gpu的話肯定是ssd快

與yolov1的比較

  1. yolov1和fastrcnn都是在一個(gè)固定的最終的feature map上檢測bounding boxes的辽剧。而SSD使用卷積層,在多個(gè)尺度上面檢測了bouding boxes.這樣就解釋了為什么對于同一張圖中有不同尺寸的物品都可以很好的檢測的原因税产。
  2. yolov1使用googlenet網(wǎng)絡(luò)作為基礎(chǔ)網(wǎng)絡(luò)怕轿,而ssd使用vgg作為基礎(chǔ)網(wǎng)絡(luò)。按照時(shí)間辟拷,vgg要早于googlenet出現(xiàn)。兩者的區(qū)別是
  3. boudning box诀紊,在ssd中,bounding box的數(shù)量是4或者6.而yolov1只有2.
  4. 正負(fù)樣本的選擇碌宴。在yolo v1中贰镣,中心點(diǎn)落在哪個(gè)網(wǎng)格中鸠项,則該網(wǎng)格負(fù)責(zé)該物品檢測祟绊。在訓(xùn)練的時(shí)候牧抽,在一個(gè)網(wǎng)格中會(huì)有多個(gè)bounding box,那么每個(gè)預(yù)測的bounding box的IOU和真實(shí)框框較大的為正樣本扬舒。在調(diào)節(jié)正負(fù)樣本比率對損失函數(shù)的影響的時(shí)候讲坎,yolov1通過將負(fù)樣本設(shè)置一個(gè)比較小的平方損失系數(shù)實(shí)現(xiàn)。


    17.png

在ssd中衫画,首先每個(gè)真實(shí)物品都先選擇一個(gè)負(fù)責(zé)它的bounding box削罩,在沒有訓(xùn)練指之前费奸,因?yàn)閜rior bounding box的位置都是確定的,所以選擇IOU最大的為正樣本秆撮。為平衡正負(fù)樣本的比率职辨,將IOU大于0.5的prior bounding box都設(shè)置為正樣本戈二。這樣模型就更加穩(wěn)定了。

  1. ssd全部使用卷積層腾供,因此對于輸入的圖片大小沒有限制伴鳖。yolo因?yàn)楹竺嬗腥B接層徙硅,因此輸入的圖片大小有限制嗓蘑。
  2. 損失函數(shù)的不同,yolov1全部使用均方損失函數(shù)豌汇,而ssd對位置損失使用的是smoothL1損失拒贱,對于置信度損失佛嬉,使用的是softmax損失岩调。
    7 在yolov1中号枕,預(yù)測x,y,w,h這幾個(gè)位置參數(shù)得時(shí)候葱淳,x,y是相對于網(wǎng)格(一共有7x7個(gè)網(wǎng)格)的左上角的偏移量抛姑,w,h是相對于這個(gè)圖像的大小占比定硝。這兩個(gè)參數(shù)的范圍都是0-1之間。 在ssd中诲侮,x,y是實(shí)際中心和boudning box的差值/bounding box的寬度(或者高度)沟绪;w,h是log(真實(shí)寬度/bounding box的寬度)空猜。這兩個(gè)參數(shù)是不同的辈毯。

參考資料

SSD算法思想和結(jié)構(gòu)詳解https://www.baidu.com/link?url=dG930Wgj8gRWERgRMXzzoM8EKfvzNpMH9s51FFnU7YBlKAdKVZz1H44RGeIBSO8hJqdai12XF6E5J1_qxJuzgq&wd=&eqid=8d70dd720001f291000000045dc1379d

SSD詳解 https://blog.csdn.net/WZZ18191171661/article/details/79444217

https://zhuanlan.zhihu.com/p/57440670

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末谆沃,一起剝皮案震驚了整個(gè)濱河市管毙,隨后出現(xiàn)的幾起案子桌硫,更是在濱河造成了極大的恐慌,老刑警劉巖卓舵,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件掏湾,死亡現(xiàn)場離奇詭異,居然都是意外死亡筑公,警方通過查閱死者的電腦和手機(jī)尊浪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門捣作,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鹅士,“玉大人,你說我怎么就攤上這事也拜√掠荆” “怎么了扼脐?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵瓦侮,是天一觀的道長。 經(jīng)常有香客問我方妖,道長党觅,這世上最難降的妖魔是什么斋泄? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任炫掐,我火速辦了婚禮,結(jié)果婚禮上畦浓,老公的妹妹穿的比我還像新娘检疫。我一直安慰自己,他們只是感情好秽梅,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布企垦。 她就那樣靜靜地躺著钞诡,像睡著了一般湃崩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上朵诫,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天剪返,我揣著相機(jī)與錄音脱盲,去河邊找鬼日缨。 笑死,一個(gè)胖子當(dāng)著我的面吹牛面哥,可吹牛的內(nèi)容都是我干的毅待。 我是一名探鬼主播恩静,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼驶乾,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了疙咸?” 一聲冷哼從身側(cè)響起风科,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤贼穆,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后顶瞳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體慨菱,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡符喝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年协饲,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了缴川。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,690評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡战惊,死狀恐怖吞获,靈堂內(nèi)的尸體忽然破棺而出各拷,到底是詐尸還是另有隱情闷营,我是刑警寧澤知市,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布嫂丙,位于F島的核電站跟啤,受9級(jí)特大地震影響唉锌,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜腥放,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一捉片、第九天 我趴在偏房一處隱蔽的房頂上張望汞舱。 院中可真熱鬧,春花似錦莹规、人聲如沸良漱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蒋失,卻和暖如春桐玻,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背铣卡。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留敞峭,地道東北人州邢。 一個(gè)月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓量淌,卻偏偏與公主長得像呀枢,于是被迫代替她去往敵國和親笼痛。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評論 2 353