目標(biāo)檢測系列(一):R-CNN

目標(biāo)檢測(object detection)是計(jì)算機(jī)視覺中非常重要的一個領(lǐng)域仗考。在卷積神經(jīng)網(wǎng)絡(luò)出現(xiàn)之前蛀骇,都利用一些傳統(tǒng)方法手動提取圖像特征進(jìn)行目標(biāo)檢測及定位湃鹊,這些方法不僅耗時而且性能較低本昏。而在卷積神經(jīng)網(wǎng)絡(luò)出現(xiàn)之后,目標(biāo)檢測領(lǐng)域發(fā)生了翻天覆地的變化对人。最著名的目標(biāo)檢測系統(tǒng)有RCNN系列谣殊、YOLO和SSD拂共,本文將介紹RCNN系列的開篇作RCNN牺弄。

RCNN系列的技術(shù)演進(jìn)過程可參見基于深度學(xué)習(xí)的目標(biāo)檢測技術(shù)演進(jìn):R-CNN、Fast R-CNN宜狐、Faster R-CNN势告。


前言

目標(biāo)檢測分為兩步:第一步是對圖像進(jìn)行分類,即圖像中的內(nèi)容是什么抚恒;第二步則是對圖像進(jìn)行定位咱台,找出圖像中物體的具體位置。簡單來說就是圖像里面有什么俭驮,位置在哪回溺。

然而,由于不同圖片中物體出現(xiàn)的大小可能不同(多尺度)混萝,位置也可能不同遗遵,而且擺放角度,姿態(tài)等都可以不同逸嘀,同時一張圖片中還可以出現(xiàn)多個類別车要。這使得目標(biāo)檢測任務(wù)異常艱難。

從圖像識別說起

現(xiàn)在有一個圖像任務(wù):對于下面的最左面的圖片崭倘,既要把其中的貓識別出來翼岁,還要用方框框出其位置类垫。

上面任務(wù)用專業(yè)的說法就是:圖像識別+定位

圖像識別即識別圖片(或方框)中的物體是什么。

而定位(localization)則需要找出貓?jiān)鐖D片中的位置琅坡,給出一個精確的位置框悉患。

卷積神經(jīng)網(wǎng)絡(luò)幫我們解決了圖像識別(分類)的任務(wù)了,現(xiàn)在榆俺,我們只需要添加一些額外的功能來完成定位任務(wù)即可购撼。

目標(biāo)定位

思路一:看做回歸問題

看做回歸問題,我們需要預(yù)測出(x, y, w, h)四個參數(shù)的值谴仙,從而得出方框的位置迂求。

步驟1:先解決簡單問題,搭建一個識別圖像的神經(jīng)網(wǎng)絡(luò)晃跺,譬如AlexNet揩局、VGG等。

步驟2:在上述神經(jīng)網(wǎng)絡(luò)的尾部展開(也就是說CNN前面卷積部分不變掀虎,對后面的全連接層進(jìn)行改變)凌盯,添加兩個分支:分類分支(classification)和回歸分支(regression)。其中分類分支用來對圖像中的物體進(jìn)行分類(分類softmax loss),而回歸分支則是用來計(jì)算bounding box的位置(使用歐氏距離來計(jì)算loss)。

兩個不同的分支分別完成不同的功能携龟,分類和定位妆偏。回歸(regression)分支與分類分支(classification)共享網(wǎng)絡(luò)卷積部分的參數(shù)值徐勃。

思路二:取圖像窗口

還是剛才的分類識別+回歸定位思路。只是現(xiàn)在我們提前先取好不同位置的框,然后將這個框輸入到網(wǎng)絡(luò)中而不是像思路一將原始圖像直接輸入到網(wǎng)絡(luò)中症杏。然后計(jì)算出這個框的得分,取得分最高的框瑞信。


左上角黑框厉颤,得分0.5

右上角黑框,得分0.75

左下角黑框凡简,得分0.6

右下角黑框逼友,得分0.8

如上,對于同一個圖像中貓的識別定位秤涩。分別取了四個角四個框進(jìn)行分類和回歸帜乞。其得分分別為0.5,0.75,0.6,0.8,因此右下角得分最高溉仑,選擇右下角的黑框作為目標(biāo)位置的預(yù)測(這里即完成了定位任務(wù))挖函。

這里還有一個問題——檢測位置時的框要怎么取,取多大?在上面我們是在257x257的圖像中取了221x221的4個角怨喘。以不同大小的窗口從左上角到右下角依次掃描的話津畸,數(shù)據(jù)量會非常大。而且必怜,如果考慮多尺度問題的話肉拓,還需要在將圖像放縮到不同水平的大小來進(jìn)行計(jì)算,這樣又大大增加了計(jì)算量梳庆。如何取框這個問題可以說是目標(biāo)檢測的核心問題之一了暖途,RCNN,fast RCNN以及faster RCNN對于這個問題的解決辦法不斷地進(jìn)行優(yōu)化膏执,這個到了后面再講驻售。

總結(jié)一下思路:
對于一張圖片,用各種大小的框?qū)D片截取出來更米,輸入到CNN欺栗,然后CNN會輸出這個框的類別以及其位置得分。

對于檢測框的選取征峦,一般是采用某種方法先找出可能含有物體的框(也就是候選框迟几,比如1000個候選框),這些框是可以互相重疊互相包含的栏笆,這樣我們就可以避免暴力枚舉所有框了类腮。

選定候選框的方法很多,比如EdgeBoxes和Selective Search(RCNN使用的方法)蛉加。以下是各種選定框的方法的性能對比蚜枢。

講完了思路,我們下面具體仔細(xì)來看看RCNN系列的實(shí)現(xiàn)七婴,本篇先介紹RCNN的方法祟偷。

R-CNN:Region proposals + CNN

R-CNN相比于之前的各種目標(biāo)檢測算法察滑,不僅在準(zhǔn)確率上有了很大的提升打厘,在運(yùn)行效率上同樣提升很大。R-CNN的過程分為4個階段:

  • 1贺辰、候選區(qū)域提出階段(Proposal):采用selective-search方法户盯,從一幅圖像生成1k~2k個候選區(qū)域;
  • 2饲化、特征提让а肌:使用CNN網(wǎng)絡(luò)對每個候選框提取特征;
  • 3吃靠、類別判斷:將候選框特征送入SVM分類器硫眨,判斷是圖像類別;
  • 4巢块、位置精修:使用回歸器精修候選框位置礁阁。


Selective Search:
這個方法主要有三個優(yōu)勢: 捕捉不同尺度(Capture All Scales)巧号、多樣化(Diversification)、快速計(jì)算(Fast to Compute)總結(jié)為:選擇性搜索是用于目標(biāo)檢測的區(qū)域提議算法姥闭,它計(jì)算速度快丹鸿,具有很高的召回率,基于顏色棚品,紋理靠欢,大小和形狀兼容計(jì)算相似區(qū)域的分層分組。

  • 1铜跑、使用一種過分割手段门怪,將圖像分割成小區(qū)域(1k-2k個);
  • 2锅纺、查看現(xiàn)有小區(qū)域薪缆,按照合并規(guī)則合并可能性最高的相鄰兩個區(qū)域。重復(fù)直到整張圖像合并成一個區(qū)域位置伞广;
  • 3拣帽、輸出所有最后存在的區(qū)域,即候選區(qū)域嚼锄;

其中合并規(guī)則如下:

  • 顏色(顏色直方圖)相近的 减拭;
  • 紋理(梯度直方圖)相近的;
  • 合并后總面積小的: 保證合并操作的尺度較為均勻区丑,避免一個大區(qū)域陸續(xù)“吃掉”其他小區(qū)域 (例:設(shè)有區(qū)域a-b-c-d-e-f-g-h拧粪。較好的合并方式是:ab-cd-ef-gh -> abcd-efgh -> abcdefgh。 不好的合并方法是:ab-c-d-e-f-g-h ->abcd-e-f-g-h ->abcdef-gh -> abcdefgh)
  • 合并后沧侥,總面積在其BBOX中所占比例大的: 保證合并后形狀規(guī)則可霎。

更詳細(xì)的課參見目標(biāo)檢測(1)-Selective Search

候選框搜索

在前面我們已經(jīng)簡單介紹了selective search方法宴杀,通過這個方法我們篩選出了2k左右的候選框癣朗。然而搜索出的矩形框大小是不同的。而在AlexNet中由于最后全連接層的存在旺罢,對于圖像尺寸有固定的要求旷余,因此在將候選框輸入之前,作者對這些候選框的大小進(jìn)行了統(tǒng)一處理——放縮到了統(tǒng)一大小扁达。文章中作者使用的處理方法有兩種:

(1)各向異性縮放

這種方法很簡單正卧,就是不管圖片的長寬比例,強(qiáng)行拉伸或壓縮到固定大泄蚪狻(即AlexNet的輸入大新酢),即下圖中的(D)所示。

(2)各向同性縮放

因?yàn)閳D片扭曲可能會對后續(xù)CNN模型訓(xùn)練產(chǎn)生影響窘行,于是作者也測試了各向同性縮放的方法骏啰。有兩種方法:

  • 1、先擴(kuò)充后裁剪:即在取出bounding box之前抽高,先在原圖上把bounding box的邊界進(jìn)行擴(kuò)展延伸成正方形判耕,然后再進(jìn)行裁剪;如果已經(jīng)延伸到了原始圖片的外邊界翘骂,那就把剩余部分用bounding box中的顏色均值填充壁熄,如上圖(B)所示;
  • 2碳竟、先裁剪后擴(kuò)充:先把bounding box圖片裁剪出來草丧,然后用固定的背景色填充成正方形圖片(背景色也是采用bounding box的像素顏色均值),如上圖(c)所示莹桅。

此外昌执,作者對于bounding box還嘗試了padding處理,上面的示意圖中第1诈泼、3行就是結(jié)合了padding=0懂拾,第2、4行結(jié)果采用padding=16的結(jié)果铐达。經(jīng)過最后的試驗(yàn)岖赋,作者發(fā)現(xiàn)采用各向異性縮放、padding=16的精度最高瓮孙。

卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練

卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練分為兩步:(1)預(yù)訓(xùn)練唐断;(2)fine-tune。
先在一個大的數(shù)據(jù)集上面訓(xùn)練模型(R-CNN中的卷機(jī)模型使用的是AlexNet)杭抠,然后利用這個訓(xùn)練好的模型進(jìn)行fine-tune(或稱為遷移學(xué)習(xí))脸甘,即使用這個預(yù)訓(xùn)練好的模型參數(shù)初始化模型參數(shù),然后在目標(biāo)數(shù)據(jù)集上面進(jìn)行訓(xùn)練偏灿。

此外丹诀,在訓(xùn)練時,作者還嘗試采用不同層數(shù)的全連接層菩混,發(fā)現(xiàn)一個全連接層比兩個全連接層效果要好忿墅,這可能是因?yàn)槭褂脙蓚€全連接層后過擬合導(dǎo)致的。

另一個比較有意思的地方是:對于CNN模型沮峡,卷積層學(xué)到的特征其實(shí)就是基礎(chǔ)的共享特征提取層,類似于傳統(tǒng)的圖像特征提取算法亿柑。而最后的全連接層學(xué)到的則是針對特定任務(wù)的特征邢疙。譬如對于人臉性別識別來說,一個CNN模型前面的卷積層所學(xué)習(xí)到的特征就類似于學(xué)習(xí)人臉共性特征,然后全連接層所學(xué)習(xí)的特征就是針對性別分類的特征了疟游。

最后呼畸,利用訓(xùn)練好的模型對候選框提取特征。

關(guān)于正負(fù)樣本的問題:由于選取的bounding box不可能與人工label的完全相同颁虐,因此在CNN訓(xùn)練階段需要設(shè)置IOU閾值來為bounding box打標(biāo)簽蛮原。在文章中作者將閾值設(shè)置為0.5,即如果候選框bounding box與人工label的區(qū)域重疊面積大于0.5另绩,則將其標(biāo)注為物體類別(正樣本)儒陨,否則我們就把他當(dāng)做背景類別(負(fù)樣本)。

IoU

IoU是圖像分割中的一個重要概念笋籽,用來計(jì)算兩個區(qū)域的重疊度蹦漠,通過下圖可以簡單理解:
IoU

IoU就是上圖中矩形框A、B的重疊面積占A车海、B并集的面積比例笛园。

SVM訓(xùn)練

作者針對每一個類別都訓(xùn)練了一個二分類的SVM。這里定義正負(fù)樣本的方法與上面卷積網(wǎng)絡(luò)訓(xùn)練的定義方法又不相同侍芝。作者在文章中嘗試了多種IoU閾值(0.1~0.5)研铆。最后通過訓(xùn)練發(fā)現(xiàn),IoU閾值為0.3的時候效果最好(選擇為0精度下降了4個百分點(diǎn)州叠,選擇0.5精度下降了5個百分點(diǎn))蚜印。即當(dāng)IoU小于0.3的時候我們將其視為負(fù)樣本,否則為正樣本留量。

其實(shí)在這里還有兩個重要的問題:
第一個:為什么在微調(diào)CNN和訓(xùn)練目標(biāo)檢測SVM時定義的正負(fù)樣本不同窄赋?
首先簡要回顧下正負(fù)樣本的定義,對于微調(diào)楼熄,我們將每個目標(biāo)提案映射到它具有最大IoU重疊(如果有的話)的檢測框真值上忆绰,如果其IoU至少為0.5,并將其標(biāo)記為對應(yīng)類別的正樣本可岂。剩下的提案都標(biāo)記為“背景”(即所有類的負(fù)樣本)错敢。對于訓(xùn)練SVM,相比之下缕粹,我們只采用檢測框真值作為各自類別的正樣本稚茅。與某一類別所有的正樣本的IoU都小于0.3的目標(biāo)提案將被標(biāo)記為該類別的負(fù)樣本。其它(IoU超過0.3平斩,但不是檢測框真值)的提案被忽略亚享。
從發(fā)展歷史來講,SVM訓(xùn)練的所使用的特征最初是來自在ImageNet上面預(yù)訓(xùn)練的CNN模型绘面,此時還沒有考慮到fine-tune欺税。在這種情況下侈沪,發(fā)現(xiàn)在評估的一組設(shè)置中,當(dāng)前使用的SVM的設(shè)置是最佳的(包括現(xiàn)在使用了fine-tune后的模型系統(tǒng))晚凿。當(dāng)開始使用fine-tune時亭罪,(CNN模型)最初使用的也是與SVM相同的正負(fù)樣本定義。然而歼秽,發(fā)現(xiàn)結(jié)果比當(dāng)前定義的正負(fù)樣本獲得的結(jié)果差得多应役。
作者的假設(shè)是,如何定義正負(fù)樣本對訓(xùn)練結(jié)果影響不大燥筷,結(jié)果的差異主要是由于fine-tune的數(shù)據(jù)不足造成的箩祥。因此在當(dāng)前的方案中引入了許多“抖動”的樣本,(這些預(yù)選框與ground truth的重疊在0.5和1之間荆责,但并不是預(yù)選框ground truth)滥比,這將正樣本的數(shù)量增加了大約30倍。我們推測做院,需要使用如此大量的樣本以避免在微調(diào)網(wǎng)絡(luò)時的過擬合盲泛。然而,我們還注意到键耕,使用這些抖動的例子可能不是最佳的寺滚,因?yàn)榫W(wǎng)絡(luò)沒有被微調(diào)以進(jìn)行精確的定位。

這導(dǎo)致了第二個問題:為什么微調(diào)之后屈雄,訓(xùn)練SVM呢村视?簡單地將最后一層微調(diào)網(wǎng)絡(luò)(Softmax回歸分類器)作為對象檢測器將變得更加簡潔。我們嘗試了這一點(diǎn)酒奶,發(fā)現(xiàn)VOC 2007的表現(xiàn)從54.2%下降到了50.9%的mAP蚁孔。這種性能下降可能來自幾個因素的組合,包括微調(diào)中使用的正樣本的定義不強(qiáng)調(diào)精確定位惋嚎,并且softmax分類器是在隨機(jī)抽樣的負(fù)樣本上訓(xùn)練的杠氢,而不是用于訓(xùn)練SVM的“更嚴(yán)格的負(fù)樣本”子集。

這個結(jié)果表明另伍,微調(diào)之后可以獲得接近SVM水平的性能鼻百,而無需訓(xùn)練SVM。我們推測摆尝,通過一些額外的調(diào)整來微調(diào)以達(dá)到更接近的水平温艇。如果是這樣,這樣可以簡化和加速R-CNN訓(xùn)練堕汞,而不會在檢測性能方面有任何損失勺爱。

預(yù)選框使用回歸器精修

目標(biāo)檢測問題的衡量標(biāo)準(zhǔn)是重疊面積:許多看似準(zhǔn)確的檢測結(jié)果,往往因?yàn)楹蜻x框不夠準(zhǔn)確臼朗,重疊面積很小邻寿。故需要一個位置精修步驟蝎土。

作者使用一個簡單的檢測框回歸來提高定位性能视哑。在使用類特定檢測SVM對每個選擇性搜索提案進(jìn)行評分之后绣否,使用類別特定的邊界回歸器預(yù)測新的檢測框。
預(yù)選框回歸過程

在實(shí)現(xiàn)邊界回歸的過程中發(fā)現(xiàn)了兩個微妙的問題挡毅。第一是正則化是重要的:我們基于驗(yàn)證集蒜撮,設(shè)置λ=1000。第二個問題是跪呈,選擇使用哪些訓(xùn)練對(P,G)時必須小心段磨。直觀地說,如果P遠(yuǎn)離所有的檢測框真值耗绿,那么將P轉(zhuǎn)換為檢測框真值G的任務(wù)就沒有意義苹支。使用像P這樣的例子會導(dǎo)致一個無望的學(xué)習(xí)問題。因此误阻,只有當(dāng)提案P至少在一個檢測框真值附近時债蜜,我們才執(zhí)行學(xué)習(xí)任務(wù)【糠矗“附近”即寻定,將P分配給具有最大IoU的檢測框真值G(在重疊多于一個的情況下),并且僅當(dāng)重疊大于閾值(基于驗(yàn)證集精耐,我們使用的閾值為0.6)狼速。所有未分配的提案都被丟棄。我們?yōu)槊總€目標(biāo)類別執(zhí)行一次卦停,以便學(xué)習(xí)一組特定于類別的檢測框回歸器向胡。

在測試時,我們對每個提案進(jìn)行評分惊完,并預(yù)測其新的檢測框一次僵芹。原則上,我們可以迭代這個過程(即重新評估新預(yù)測的檢測框专执,然后從它預(yù)測一個新的檢測框淮捆,等等)。但是本股,我們發(fā)現(xiàn)迭代不會改進(jìn)結(jié)果攀痊。

測試階段

使用selective search的方法在測試圖片上提取2000個region propasals ,將每個region proposals歸一化到227x227拄显,然后再CNN中正向傳播苟径,將最后一層得到的特征提取出來。然后對于每一個類別躬审,使用為這一類訓(xùn)練的SVM分類器對提取的特征向量進(jìn)行打分棘街,得到測試圖片中對于所有region proposals的對于這一類的分?jǐn)?shù)蟆盐,再使用貪心的非極大值抑制(NMS)去除相交的多余的框。再對這些框進(jìn)行canny邊緣檢測遭殉,就可以得到bounding-box(then B-BoxRegression)石挂。

非極大值抑制(NMS):

RCNN會從一張圖片中找出n個可能是物體的矩形框,然后為每個矩形框?yàn)樽鲱悇e分類概率:

就像上面的圖片一樣险污,定位一個車輛痹愚,最后算法就找出了一堆的方框,我們需要判別哪些矩形框是沒用的蛔糯。非極大值抑制的方法是:先假設(shè)有6個矩形框拯腮,根據(jù)分類器的類別分類概率做排序,假設(shè)從小到大屬于車輛的概率 分別為A蚁飒、B动壤、C、D淮逻、E琼懊、F。

(1)從最大概率矩形框F開始弦蹂,分別判斷A~E與F的重疊度IOU是否大于某個設(shè)定的閾值;

(2)假設(shè)B肩碟、D與F的重疊度超過閾值,那么就扔掉B凸椿、D削祈;并標(biāo)記第一個矩形框F,是我們保留下來的脑漫。

(3)從剩下的矩形框A髓抑、C、E中优幸,選擇概率最大的E吨拍,然后判斷E與A、C的重疊度网杆,重疊度大于一定的閾值羹饰,那么就扔掉;并標(biāo)記E是我們保留下來的第二個矩形框碳却。

就這樣一直重復(fù)队秩,找到所有被保留下來的矩形框。

非極大值抑制(NMS)顧名思義就是抑制不是極大值的元素昼浦,搜索局部的極大值馍资。這個局部代表的是一個鄰域,鄰域有兩個參數(shù)可變关噪,一是鄰域的維數(shù)鸟蟹,二是鄰域的大小乌妙。這里不討論通用的NMS算法,而是用于在目標(biāo)檢測中用于提取分?jǐn)?shù)最高的窗口的建钥。例如在行人檢測中藤韵,滑動窗口經(jīng)提取特征,經(jīng)分類器分類識別后锦针,每個窗口都會得到一個分?jǐn)?shù)荠察。但是滑動窗口會導(dǎo)致很多窗口與其他窗口存在包含或者大部分交叉的情況置蜀。這時就需要用到NMS來選取那些鄰域里分?jǐn)?shù)最高(是行人的概率最大)奈搜,并且抑制那些分?jǐn)?shù)低的窗口。

參考:
Rich feature hierarchies for accurate object detection and semantic segmentation.
RCNN-將CNN引入目標(biāo)檢測的開山之作-曉雷的文章
基于深度學(xué)習(xí)的目標(biāo)檢測技術(shù)演進(jìn):R-CNN盯荤、Fast R-CNN馋吗、Faster R-CNN
R-CNN 論文翻譯

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市秋秤,隨后出現(xiàn)的幾起案子宏粤,更是在濱河造成了極大的恐慌,老刑警劉巖灼卢,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绍哎,死亡現(xiàn)場離奇詭異,居然都是意外死亡鞋真,警方通過查閱死者的電腦和手機(jī)崇堰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來涩咖,“玉大人海诲,你說我怎么就攤上這事¢莼ィ” “怎么了特幔?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長闸昨。 經(jīng)常有香客問我蚯斯,道長,這世上最難降的妖魔是什么饵较? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任拍嵌,我火速辦了婚禮,結(jié)果婚禮上告抄,老公的妹妹穿的比我還像新娘撰茎。我一直安慰自己,他們只是感情好打洼,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布龄糊。 她就那樣靜靜地躺著逆粹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪炫惩。 梳的紋絲不亂的頭發(fā)上僻弹,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天,我揣著相機(jī)與錄音他嚷,去河邊找鬼蹋绽。 笑死,一個胖子當(dāng)著我的面吹牛筋蓖,可吹牛的內(nèi)容都是我干的卸耘。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼粘咖,長吁一口氣:“原來是場噩夢啊……” “哼蚣抗!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起瓮下,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤翰铡,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后讽坏,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體锭魔,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年路呜,在試婚紗的時候發(fā)現(xiàn)自己被綠了迷捧。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡拣宰,死狀恐怖党涕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情巡社,我是刑警寧澤膛堤,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站晌该,受9級特大地震影響肥荔,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜朝群,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一燕耿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧姜胖,春花似錦誉帅、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽档插。三九已至,卻和暖如春亚再,著一層夾襖步出監(jiān)牢的瞬間郭膛,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工氛悬, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留则剃,地道東北人。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓如捅,卻偏偏與公主長得像棍现,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子伪朽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容