《Object Detection in 20 Years: A Survey》論文閱讀筆記

這篇文章發(fā)表于 2019 年 5 月 16 日诵盼,它回顧了 1990 年 ~ 2019 年間的 400 多篇目標(biāo)檢測(cè)論文惠豺,涵蓋了和這一領(lǐng)域相關(guān)的眾多課題,如目標(biāo)檢測(cè)發(fā)展過(guò)程中的里程碑风宁、目標(biāo)檢測(cè)數(shù)據(jù)集洁墙、評(píng)價(jià)指標(biāo)、目標(biāo)檢測(cè)系統(tǒng)的基本模塊杀糯、加速技術(shù)以及當(dāng)前的 SOTA 方法扫俺。此外,這篇文章也涉及到一些重要的應(yīng)用場(chǎng)景固翰,如行人檢測(cè)狼纬、人臉檢測(cè)以及文本檢測(cè)等。

文章的整體脈絡(luò)如下:

  • 第二部分:目標(biāo)檢測(cè)二十多年來(lái)的發(fā)展史
  • 第三部分:加速技術(shù)
  • 第四部分:近三年的 SOTA 方法
  • 第五部分:應(yīng)用場(chǎng)景
  • 第六部分:總結(jié)與展望

第二部分:目標(biāo)檢測(cè)二十多年來(lái)的發(fā)展史

本部分概覽:

  • 不同時(shí)期的里程碑節(jié)點(diǎn)
  • 目標(biāo)檢測(cè)數(shù)據(jù)集
  • 評(píng)價(jià)指標(biāo)
  • 目標(biāo)檢測(cè)中核心技術(shù)的發(fā)展與演變

2.1 不同時(shí)期的里程碑節(jié)點(diǎn)

目標(biāo)檢測(cè)技術(shù)以 2014 年為節(jié)點(diǎn)骂际,分為傳統(tǒng)目標(biāo)檢測(cè)(2014 年以前)和基于深度學(xué)習(xí)的目標(biāo)檢測(cè)(2014 年以后)疗琉。

2.1.1 傳統(tǒng)目標(biāo)檢測(cè)

傳統(tǒng)目標(biāo)檢測(cè)的發(fā)展受限于兩個(gè)因素:一是沒(méi)有有效的圖像表示(image representation)的方式,二是計(jì)算資源有限歉铝。因此傳統(tǒng)目標(biāo)檢測(cè)算法大多都是基于手工設(shè)計(jì)的特征(handcrafted features)盈简,而且需要設(shè)計(jì)各種各樣的加速技巧來(lái)減少對(duì)計(jì)算資源的依賴。

傳統(tǒng)目標(biāo)檢測(cè)方法發(fā)展過(guò)程中的里程碑:

  • VJ Detector (Viola Jones Detector)太示,2001:首次在沒(méi)有任何限制條件的情況下達(dá)到人臉實(shí)時(shí)檢測(cè)柠贤。
  • HOG Detector (Histogram of Oriented Gradients Detector),2006:HOG 特征描述算子最早在2005年被提出类缤,它對(duì) SIFT(scale-invariant feature transform)算法做出了重大改進(jìn)臼勉。在很長(zhǎng)一段時(shí)間內(nèi),HOG Detector 都是很多目標(biāo)檢測(cè)算法的重要基礎(chǔ)餐弱,而且為眾多計(jì)算機(jī)視覺的應(yīng)用提供了技術(shù)支持宴霸。
  • DPM (Deformable Part-based Model),2008:DPM 是 VOC-07, -08 以及 -09 檢測(cè)大賽的冠軍膏蚓。它是對(duì) HOG Detector 的拓展瓢谢,也是傳統(tǒng)目標(biāo)檢測(cè)算法的巔峰。

2.1.2 基于深度學(xué)習(xí)的目標(biāo)檢測(cè)

傳統(tǒng)的目標(biāo)檢測(cè)方法自 2010 年以后發(fā)展緩慢驮瞧,宣告著手工設(shè)計(jì)特征的性能達(dá)到飽和氓扛。2012 年,CNN(Convolutional Neural Network)重獲新生论笔。深度學(xué)習(xí)方法的優(yōu)勢(shì)是可以利用CNN自動(dòng)學(xué)得魯棒的高層特征表示(robust and high-level feature representations)幢尚,因而相較于傳統(tǒng)的手工特征設(shè)計(jì)的方法具有巨大的優(yōu)勢(shì)破停。因此,從 2014 年以后尉剩,基于深度學(xué)習(xí)的目標(biāo)檢測(cè)方法得到了空前的發(fā)展真慢。

基于深度學(xué)習(xí)的目標(biāo)檢測(cè)方法又可以進(jìn)一步分成以下兩類:

  • Two-stage Detection:強(qiáng)調(diào)檢測(cè)是一個(gè)“coarse-to-fine”的過(guò)程;
  • One-stage Detection:強(qiáng)調(diào)檢測(cè)應(yīng)該“complete in one step”理茎。
2.1.2.1 Two-stage 方法
  • RCNN(Regions with CNN features)黑界,2014:這是目標(biāo)檢測(cè)在深度學(xué)習(xí)領(lǐng)域邁出的第一步,它將 VOC-07上的 mAP (mean Average Precision) 值由 DPM-v5 的 33.7% 提升至 58.5%皂林。它的不足之處是速度非常慢(檢測(cè)一張圖片需要 14s)朗鸠,稍后在同一年被提出的 SPPNet 在這個(gè)方面做了改進(jìn)。
  • SPPNet (Spatial Pyramid Pooling Networks)础倍,2014:最大的貢獻(xiàn)是提出了一個(gè) SPP 層(Spatial Pyramid Pooling layer)烛占,從而使得 CNN 能夠從任意尺度的區(qū)域中提取出固定長(zhǎng)度的特征表示(fixed-length representation)。在不損失任何精度的前提下(SPPNet:VOC-07 mAP=59.2%)沟启,SPPNet 比 RCNN 至少快 20 倍忆家。
  • Fast RCNN,2015:Fast RCNN 是 RCNN 和 SPPNet 的改進(jìn)版德迹,它使得我們能夠同時(shí)訓(xùn)練一個(gè) detector 和一個(gè) bounding box regressor芽卿,從而將 VOC-07 的檢測(cè)精度提升至 70.0%,而且它的速度比 RCNN 快 200 多倍胳搞。但是卸例,一個(gè)稱為 “proposal detection” 的問(wèn)題限制了 Fast RCNN 速度的進(jìn)一步提升,稍后的 Faster RCNN 將會(huì)嘗試解決這個(gè)問(wèn)題肌毅。
  • Faster RCNN筷转,2015:Faster RCNN 是第一個(gè) end-to-end,并且 near-realtime 的深度學(xué)習(xí)檢測(cè)算法悬而。它最大的貢獻(xiàn)是提出了 RPN (Region Proposal Network)旦装,使得 region proposal 幾乎不需要任何成本。從 RCNN 到 Faster RCNN摊滔,目標(biāo)檢測(cè)系統(tǒng)眾多獨(dú)立的模塊逐漸被集成到一個(gè)統(tǒng)一的、端到端的框架中去店乐。
  • FPN (Feature Pyramid Networks)艰躺,2017:最大的貢獻(xiàn)是提出了帶有側(cè)向連接(lateral connections)的 top-down 網(wǎng)絡(luò)架構(gòu)。FPN現(xiàn)在已經(jīng)成為后來(lái)許多目標(biāo)檢測(cè)系統(tǒng)的基本模塊眨八。
2.1.2.2 One-stage 方法
  • YOLO (You Only Look Once)腺兴,2015:這是深度學(xué)習(xí)領(lǐng)域的第一個(gè) one-stage detector。Two-stage 方法需要有兩個(gè)環(huán)節(jié):proposal detection + verification廉侧,而 YOLO 則是把圖片分成多個(gè) region页响,然后同時(shí)預(yù)測(cè)每個(gè)區(qū)域的 bounding box 和 probabilities篓足。所以 YOLO 最大的特點(diǎn)是非常快闰蚕,但隨之而來(lái)的缺點(diǎn)是精度相較于 Two-stage 方法會(huì)下降栈拖,尤其是對(duì)小的物體,這個(gè)問(wèn)題更加明顯没陡。
  • SSD (Single Shot MultiBox Detector)涩哟,2015:這是深度學(xué)習(xí)領(lǐng)域的第二個(gè) one-stage detector。它最大的貢獻(xiàn)是提出了 multi-reference 和 multi-resolution 檢測(cè)技術(shù)盼玄,從而極大地提高了 one-stage detector 的精度贴彼,尤其是對(duì)小的物體。一個(gè)特殊之處是 SSD 是在網(wǎng)絡(luò)的不同層上檢測(cè)不同尺度的物體埃儿,而其他的目標(biāo)檢測(cè)方法都是只在網(wǎng)絡(luò)的 top layers 上進(jìn)行檢測(cè)器仗。
  • RetinaNet,2017:這篇論文闡明了 one-stage 方法的準(zhǔn)確率落后于 two-stage 方法的原因童番,并提出了一個(gè)新的損失函數(shù)——focal loss精钮。借助于 focal loss,one-stage 方法可以在保持速度優(yōu)勢(shì)的前提下取得和 two-stage 相當(dāng)?shù)臏?zhǔn)確率妓盲。

2.2 數(shù)據(jù)集

  • Pascal VOC (PASCAL Visual Object Classes) Challenges杂拨,2005 ~ 2012:常用的是兩個(gè)版本:VOC-07(包含 5k 張圖片)和 VOC-12(包含 11k 張圖片),這兩個(gè)版本都包含 20 個(gè)類悯衬。近年來(lái)弹沽,隨著其他一些大型數(shù)據(jù)集的出現(xiàn)(如 ILSVRC 和 MS-COCO),VOC 數(shù)據(jù)集逐漸淡出了潮流筋粗,現(xiàn)在已經(jīng)成了一個(gè)用來(lái)測(cè)試新型檢測(cè)器的 test-bed策橘。
  • ILSVRC (ImageNet Large Scale Visual Recognition Challenge),2010 ~ 2017:ILSVRC 中包含一個(gè)用來(lái)做目標(biāo)檢測(cè)的子數(shù)據(jù)集娜亿,共有 200 個(gè)類丽已,大約 500k 張圖片。
  • MS-COCO买决,2015 年至今:從 2015 年開始沛婴,每年都會(huì)在 MS-COCO 數(shù)據(jù)集上舉辦一次競(jìng)賽。MS-COCO 數(shù)據(jù)集是當(dāng)前最具有挑戰(zhàn)性的數(shù)據(jù)集督赤,和 VOC 及 ILSVRC 相比嘁灯,MS-COCO 中的物體都通過(guò) per-instance segmentation 進(jìn)行了進(jìn)一步的標(biāo)注,進(jìn)而為 precise localization 提供了便利躲舌。此外丑婿,MS-COCO 中包含了更小的物體(面積不足整張圖片的 1%),而且物體的分布更加稠密,這些特性使得 MS-COCO 數(shù)據(jù)集更加接近真實(shí)場(chǎng)景「睿現(xiàn)在秒旋,MS-COCO 數(shù)據(jù)集實(shí)際上已經(jīng)成為了目標(biāo)檢測(cè)領(lǐng)域的標(biāo)準(zhǔn)數(shù)據(jù)集。
  • OID (Open Images Detection) challenge诀拭,2018:OID 比賽于 2018 年被提出迁筛,OID 數(shù)據(jù)集繼承了 MS-COCO 數(shù)據(jù)集的特性但規(guī)模更加龐大(包含 600 個(gè)類,共 1910k 張圖片)炫加。

2.3 評(píng)價(jià)指標(biāo)

  • 常規(guī)的目標(biāo)檢測(cè):

    • AP (Average Precision):在 VOC2007 中首次被提出瑰煎。AP 被定義為 the average detection precision under different recalls,并且經(jīng)常會(huì)以一種 category specific 的方式來(lái)評(píng)估俗孝。

    • mAP (mean AP averaged over all object categories):所有類別的平均 AP 值酒甸,通常作為目標(biāo)檢測(cè)算法的最終評(píng)價(jià)指標(biāo)。

      關(guān)于 mAP 的詳細(xì)講解赋铝,參考: https://zhuanlan.zhihu.com/p/60319755

    • IoU (Intersection over Union):表征目標(biāo)定位的準(zhǔn)確率插勤。它的判斷方法是檢測(cè)預(yù)測(cè)出來(lái)的框和真實(shí)的框之間的 IoU 值是否大于一個(gè)預(yù)先設(shè)定的閾值(如 0.5),如果是革骨,目標(biāo)將會(huì)被標(biāo)記為“成功檢測(cè)”农尖;否則將會(huì)被標(biāo)記為 “missed”良哲。在很長(zhǎng)一段時(shí)間內(nèi)盛卡,基于 0.5-IoU 的 mAP 值實(shí)際上成為了目標(biāo)檢測(cè)問(wèn)題的標(biāo)準(zhǔn)評(píng)價(jià)指標(biāo)。

      關(guān)于 IoU 的詳細(xì)講解筑凫,參考: https://zhuanlan.zhihu.com/p/70768666

      自 2014 年 MS-COCO 數(shù)據(jù)集被提出以來(lái)滑沧,人們更加關(guān)注 bbox 位置的準(zhǔn)確性:

      Instead of using a fixed IoU threshold, MS-COCO AP is averaged over multiple IoU thresholds between 0.5 (coarse localization) and 0.95 (perfect localization).

      這一評(píng)價(jià)指標(biāo)的改變使得目標(biāo)檢測(cè)算法必須要能夠?qū)ξ矬w進(jìn)行更準(zhǔn)確的定位。

  • 行人檢測(cè):FPPI (false positives per-image)

2.4 目標(biāo)檢測(cè)中核心技術(shù)的發(fā)展與演變

2.4.1 早期的機(jī)器學(xué)習(xí)方法

  • statistical models of appearance (before 1998)
  • wavelet feature representations (1998 ~ 2005)
  • gradient-based representations (2005 ~ 2012):這是早期的 CNN 方法巍实。在這一時(shí)期滓技,由于計(jì)算資源有限,CNN 模型都很淺棚潦。但是即使只是使用了比較小的模型令漂,基于 CNN 方法的計(jì)算效率依舊是這一時(shí)期要面臨的一大難題。

2.4.2 Multi-Scale Detection

在過(guò)去的20年間丸边,multi-scale detection 的發(fā)展經(jīng)歷了以下幾個(gè)階段:

  • feature pyramids + sliding windows (before 2014):

    • 自 VJ detector 之后叠必,隨著算力的增加,一種新的檢測(cè)模式開始出現(xiàn):feature pyramid + sliding windows妹窖。2004 ~ 2014 年間的許多 detector 都是依據(jù)這一模式發(fā)明的纬朝,如 HOG detector、DPM嘱吗、Overfeat detector (ILSVRC-13 localization task 冠軍)。
    • 為什么會(huì)出現(xiàn) “object proposals” 這一概念?這個(gè)問(wèn)題要追溯到早期的 VJ detector 和 HOG detector谒麦,這兩個(gè) detector 都是用 “fixed aspect ratio” 來(lái)檢測(cè)目標(biāo)的俄讹,這樣它們就解決不了 “various aspect ratio” 的問(wèn)題。為了應(yīng)對(duì)這一問(wèn)題绕德,當(dāng)時(shí)出現(xiàn)了兩種解決方案:mixture model 以及 exemplar-based detection患膛。但是隨著一些更復(fù)雜的數(shù)據(jù)集的出現(xiàn)(如 MS-COCO),前面提到的這兩種解決方案會(huì)產(chǎn)生各種五花八門的檢測(cè)模型耻蛇,導(dǎo)致檢測(cè)領(lǐng)域變得十分混亂踪蹬。為了找到一種統(tǒng)一的能夠解決 different aspect ratios 問(wèn)題的 multi-scale 方法,“object proposals”便應(yīng)運(yùn)而生臣咖。
  • detection with object proposals (2010 ~ 2015):

    • object proposals 的定義如下:

      Object proposals refer to a group of class-agnostic candidate boxes that likely to contain any objects.

    • Object proposals 于 2010 年首次被應(yīng)用到目標(biāo)檢測(cè)中跃捣,這種方法克服了滑動(dòng)窗方法需要在一張圖片上不停滑動(dòng)的弊端夺蛇,從而迅速占據(jù)了整個(gè)目標(biāo)檢測(cè)市場(chǎng)疚漆。

    • 然而,在 2014 ~ 2015 年間刁赦,人們開始問(wèn)這樣一個(gè)問(wèn)題:在目標(biāo)檢測(cè)系統(tǒng)中娶聘,object proposals 到底在扮演著什么樣的角色呢?它是為了提升準(zhǔn)確率嗎甚脉?或者僅僅是為了提升檢測(cè)速度丸升?有研究者嘗試去解決這個(gè)問(wèn)題,但是最終并沒(méi)有找到令人滿意的答案牺氨。后來(lái)狡耻,隨著 one-stage 方法以及 “deep regression” 方法的興起,proposal detection 逐漸淡出了人們的視野波闹。

  • deep regression (2013 ~ 2016):

    • 近些年酝豪,隨著 GPU 算力的增加,multi-scale detection 問(wèn)題的解決變得更加簡(jiǎn)單粗暴精堕,deep regression 就是其中的典型代表孵淘。這一方法依據(jù)深度學(xué)習(xí)模型學(xué)習(xí)到的特征,直接去預(yù)測(cè) bbox 的坐標(biāo)值歹篓。它的優(yōu)點(diǎn)是簡(jiǎn)單而且容易實(shí)現(xiàn)瘫证,缺點(diǎn)是定位不夠準(zhǔn)確(尤其是對(duì)小的物體),后來(lái)出現(xiàn)的 “multi-reference detection” 解決了這一問(wèn)題庄撮。
  • multi-reference detection (after 2015) and multi-resolution detection (after 2016):

    • 什么是 multi-reference detection背捌?

      Its main idea is to pre-define a set of reference boxes (a.k.a. anchor boxes) with different sizes and aspect-ratios at different locations of an image, and then predict the detection box based on these references.

      Multi-reference detection 是最流行的 multi-scale object detection 檢測(cè)框架。

    • 什么是 multi-resolution detection洞斯?

      Multi-resolution detection is to detect objects of different scales at different layers of the network. Since a CNN naturally forms a feature pyramid during its forward propagation, it is easier to detect larger objects in deeper layers and smaller ones in shallower layers.

    • 在當(dāng)前的 SOTA 目標(biāo)檢測(cè)系統(tǒng)中毡庆,multi-reference detection 以及 multi-resolution detection 已經(jīng)成為兩個(gè)基本的 building block坑赡。

  • 上述各種 multi-scale detection 技術(shù)的簡(jiǎn)單圖示:

2.4.3 Bounding Box Regression

什么是 Bounding Box (BB) regression?

Bounding Box regression aims to refine the location of a predicted bounding box based on the initial proposal or the anchor box.

在過(guò)去的 20 年間么抗, BB regression 經(jīng)歷了三個(gè)發(fā)展階段:

  • Without BB regression (before 2008):

    • 早期的 VJ detector 和 HOG detector 就沒(méi)有使用 BB regression毅否,它們是直接把滑動(dòng)窗作為最終的檢測(cè)結(jié)果。這樣為了獲得比較高的精度蝇刀,就不得不將滑動(dòng)窗的間隔設(shè)置的非常小螟加。
  • From BB to BB (2008 ~ 2013):

    • DPM 首次將 BB regression 引入到了目標(biāo)檢測(cè)系統(tǒng)中。但是在這一時(shí)期吞琐,BB regression 通常是充當(dāng)一種后處理手段捆探,因而它并不是必須的。
    • 后來(lái)在 PASCAL VOC 競(jìng)賽中站粟,R. Girshick 等人將預(yù)測(cè) bbox 的問(wèn)題描述為一個(gè)線性最小二乘回歸問(wèn)題(linear least-squares regression problem)黍图,這就是 “from BB to BB” 的含義。
  • From features to BB (after 2013):

    • 自從 2015 年 Faster RCNN 提出以后卒蘸,BB regression 就不再作為一個(gè)獨(dú)立的后處理模塊雌隅,而且被集成到了整個(gè) detector 中并以一種 end-to-end 的方式訓(xùn)練。與此同時(shí)缸沃,BB regression 已經(jīng)發(fā)展到了直接基于 CNN features 去預(yù)測(cè) bbox恰起。為了得到對(duì) outliers 更加魯棒的預(yù)測(cè)結(jié)果,regression loss 已經(jīng)由 DPM 中的 least square loss 發(fā)展到了 smooth-L1 loss 以及 root-square loss:

      smooth-L1 loss:
      L(t) = \begin{equation} \left \{ \begin{array} & 5 t^2 \, & |t| \le 0.1 \\ |t| - 0.05 \, & \text{else} \end{array} \right. \end{equation}
      root-square loss:
      L(x, x^*) = \left( \sqrt{x} - \sqrt{x^*} \right)^2

2.4.4 Context Priming

圖片中的物體通常是被嵌入到一個(gè)和周圍環(huán)境相關(guān)聯(lián)的 context 中的趾牧,因此物體和周圍環(huán)境之間可能會(huì)存在關(guān)聯(lián)检盼。Context priming 經(jīng)歷了以下三個(gè)發(fā)展階段:

  • detection with local context:

    • Local context refers to the visual information in the area that surrounds the object to detect.

      Local context 的使用有助于提升檢測(cè)準(zhǔn)確率。

  • detection with global context:

    • 現(xiàn)代的深度學(xué)習(xí)檢測(cè)器有兩種方法可以利用 global context 中包含的信息:第一種是使用較大的感受野(有的甚至比輸入的圖片還大)或進(jìn)行全局池化(global pooling)翘单;第二種是將 global context 視為一種信息序列(sequential information)吨枉,然后用 RNN 來(lái)學(xué)習(xí)這種信息序列。
  • context interactive:

    • 最近關(guān)于這個(gè)方面的研究主要朝兩個(gè)方向發(fā)展:一是 explore the relationship between individual objects哄芜,二是 explore modeling the dependencies between objects and scenes貌亭。

2.4.5 Non-Maximum Suppression (NMS)

為什么要用 NMS ?

As the neighboring windows usually have similar detection scores, the non-maximum suppression is herein used as a post-processing step to remove the replicated bounding boxes and obtain the final detection result.

在過(guò)去 20 年的發(fā)展過(guò)程中认臊,NMS 逐漸演化成三個(gè)流派:

  • greedy selection:

    • 什么是 greedy selection ?

      For a set of overlapped detections, the bounding box with the maximum detection score is selected while its neiboring boxes are removed according to a predefined overlap threshold (say, 0.5). The above processing is iteratively performed in a greedy manner.

    • 現(xiàn)在的 NMS 實(shí)際上用的就是 greedy selection圃庭,只不過(guò)在這個(gè)基礎(chǔ)上可能會(huì)有一些其他的改動(dòng)。

  • bounding box aggregation:

    • BB aggregation 是將多個(gè)重合的 bbox 通過(guò)聚類或其他組合方式得到一個(gè)最終的 bbox 失晴。這種方法的優(yōu)點(diǎn)是它可以充分考慮各個(gè)目標(biāo)之間的聯(lián)系以及它們的空間布局剧腻,VJ detector 和 Overfeat 用的就是這種方法。
  • learning to NMS:

    • 這是最近興起的一種方法涂屁,它的觀點(diǎn)是:

      think of NMS as a filter to re-score all ray detections and to train the NMS as part of a network in an end-to-end fashion.

      這種方法在處理 occlusion and dense object detection 的問(wèn)題時(shí)表現(xiàn)得比較出色书在。

2.4.6 Hard Negative Mining (HNM)

為什么要有 HNM ?

因?yàn)橛?xùn)練目標(biāo)檢測(cè)器實(shí)際上是一個(gè) imbalanced data learning 的問(wèn)題。在一張圖片中拆又,背景和目標(biāo)所占的比例是極其不對(duì)等的儒旬,有時(shí)候可能目標(biāo)只占整張圖片的一小部分栏账,而背景則占據(jù)了絕大部分面積。在這種情形下栈源,如果我們使用整個(gè)的背景數(shù)據(jù)发笔,那么顯然對(duì)于訓(xùn)練檢測(cè)器來(lái)說(shuō)是非常不友好的。HNM 就是為了解決這種數(shù)據(jù)不均衡問(wèn)題而提出的凉翻。

HNM 經(jīng)歷了以下幾個(gè)發(fā)展階段:

  • Bootstrap:

    • 這是早期的 HNM 所用的方法。它的做法是:

      starts with a small part of background samples and then iteratively add new misclassified backgrounds during the training process.

    • Bootstrap 最早是為了減少訓(xùn)練時(shí)對(duì)數(shù)目龐大的 background samples 的計(jì)算量而提出的捻激。在后來(lái)的 DPM 以及 HOG 中制轰,bootstrap 已經(jīng)成了解決數(shù)據(jù)不均衡問(wèn)題的標(biāo)準(zhǔn)技術(shù)手段。

  • Deep learning based HNM methods:

    • 隨著深度學(xué)習(xí)的興起胞谭,算力已經(jīng)不再是一個(gè)需要考慮的問(wèn)題垃杖。在 2014 ~ 2016 年間,bootstrap 方法立刻就被舍棄了丈屹。這一時(shí)期解決數(shù)據(jù)不均衡問(wèn)題的方法是 balance the weights between the positive and negative windows(在 Faster RCNN 和 YOLO 中采用的就是這種方法)调俘。
    • 然而,后來(lái)人們發(fā)現(xiàn)這種 weight-balancing 的做法不能完全解決數(shù)據(jù)不均衡問(wèn)題旺垒。因此彩库,自 2016 年以后,bootstrap 方法又被重新引入了深度學(xué)習(xí)檢測(cè)器中先蒋。在 SSD 和 OHEM 中骇钦,只有一小部分損失值最大的樣本的梯度才會(huì)被反向傳播;RefineDet 則設(shè)計(jì)了一個(gè) “anchor refinement module” 來(lái)過(guò)濾 easy negatives竞漾。還有一種方法是設(shè)計(jì)新的損失函數(shù)眯搭,可以將標(biāo)準(zhǔn)的交叉熵?fù)p失函數(shù)進(jìn)行修改,以使得系統(tǒng)能夠更加關(guān)注那些 hard业岁、misclassified examples鳞仙。

第三部分:加速技術(shù)

這篇論文將過(guò)去 20 年的目標(biāo)檢測(cè)加速技術(shù)總結(jié)為三個(gè)級(jí)別:

  • speed up of detection pipeline
  • speed up of detection engine
  • speed up of numerical computation

如下圖所示:

3.1 宏觀級(jí)別:speed up of detection pipeline

宏觀級(jí)別包含以下三個(gè)方面:

  • Feature map shared computation
  • Speed up of classifiers
  • Cascaded detection
3.1.1 Feature Map Shared Computation

目標(biāo)檢測(cè)系統(tǒng)運(yùn)算量最大的地方出現(xiàn)在 feature extraction 處。對(duì)于一個(gè)基于滑動(dòng)窗的檢測(cè)器而言笔时,計(jì)算的冗余是由以下兩方面的原因?qū)е碌模浩湟还骱茫上噜徎瑒?dòng)窗之間的重疊造成的計(jì)算冗余,這是由 position 導(dǎo)致的冗余糊闽;其二梳玫,由相鄰 scale 之間的 feature correlation 造成的計(jì)算冗余,這是由 scale 導(dǎo)致的冗余右犹。

  • Spatial Computational Redundancy 及其加速技術(shù):
    • 減少 spatial computational redundancy 最常用的方法就是 feature map shared computation提澎,即在滑動(dòng)窗作用于圖片之前,只計(jì)算整張圖片的 feature map 一次∧盍矗現(xiàn)在大多數(shù)深度學(xué)習(xí)檢測(cè)器(如 SPPNet盼忌,F(xiàn)ast-RCNN积糯,F(xiàn)aster-RCNN)都采用了類似的做法,它們都獲得了數(shù)十倍谦纱,甚至數(shù)百倍的加速看成。
  • Scale Computational Redundancy 及其加速技術(shù):
    • VJ detector 的做法是直接 scale features 而不是圖片。
3.1.2 Speed up of Classifiers

(這個(gè)地方主要講述的是對(duì) kernel SVM 的一些加速方法跨嘉。)

3.1.3 Cascaded Detection

在目標(biāo)檢測(cè)系統(tǒng)中川慌,cascaded detection 是一種常用的加速技巧。它是一個(gè) coarse to fine 的過(guò)程:先通過(guò)簡(jiǎn)單的計(jì)算祠乃,將大多數(shù)簡(jiǎn)單的背景窗口篩選出來(lái)梦重;然后再用復(fù)雜的計(jì)算去處理那些比較難的滑動(dòng)窗口。VJ detector 就是 cascaded detection 的典型代表亮瓷。在 VJ detector 之后琴拧,許多經(jīng)典的目標(biāo)檢測(cè)器(如 HOG detector 和 DPM)也都通過(guò)這一技術(shù)獲得了加速。

現(xiàn)代的深度學(xué)習(xí)目標(biāo)檢測(cè)器也同樣使用了 cascaded detection 的方法嘱支,尤其是當(dāng)要檢測(cè) small objects in large scenes 時(shí)(如人臉檢測(cè)蚓胸、行人檢測(cè)),這種方法更是發(fā)揮了至關(guān)重要的作用除师。

3.2 中間級(jí)別:speed up of detection engine

中間級(jí)別包含以下兩個(gè)方面:

  • Network pruning and quantification
  • Lightweight network design
3.2.1 Network Pruning and Quantification

剪枝和量化是通用的模型加速方法沛膳。

剪枝:

remove only a small group of unimportant weights after each stage of training, and repeat those poerations (i.e. take an iterative training and pruning process).

量化:

當(dāng)前的模型量化主要集中在網(wǎng)絡(luò)二值化(network binarization)方面:

Network binarization aims to accelerate a network by quantifying its activations or weights to binary variables (say, 0 and 1) so that the floating-point operation is converted to AND, OR, NOT logical operations.

模型量化可以顯著加速運(yùn)算過(guò)程并且減少模型對(duì)存儲(chǔ)的需求,這就使得模型能夠更容易地部署在移動(dòng)設(shè)備上汛聚。

3.2.2 網(wǎng)絡(luò)蒸餾(Network Distillation)

Network distillation is a general framework to compress the knowledge of a large network ("teacher net") into a small one ("student net").

最近這種方法已經(jīng)被用于加速目標(biāo)檢測(cè)于置,如用一個(gè) teacher net 來(lái)指導(dǎo)一個(gè) light-weight student net 的訓(xùn)練,從而用這個(gè) student net 來(lái)加速檢測(cè)過(guò)程贞岭。

3.2.3 Light-weight Network Design

這一部分論文中提到了五種方法:

  • factorizing convolutions
  • group convolution
  • depth-wise separable convolution
  • bottle-neck design
  • neural architecture search (NAS)

3.3 微觀級(jí)別:speed up of numerical computation

微觀級(jí)別包含以下四個(gè)方面:

  • Speed up with integral image
  • Speed up in frequency domain
  • Vector quantization
  • Reduced rank approximation

第四部分:近三年的 SOTA 方法

4.1 Detection with Better Backbone

目標(biāo)檢測(cè)系統(tǒng)的準(zhǔn)確率極度依賴于 feature extraction 網(wǎng)絡(luò)八毯。對(duì)于相同的檢測(cè)器,使用不同的 backbone 得到的準(zhǔn)確率是不一樣的瞄桨。

  • 一些最近的目標(biāo)檢測(cè)系統(tǒng)话速,如 STDN,DSOD芯侥,TinyDSOD 以及 Pelee 都選擇將 DenseNet 作為 backbone泊交;
  • Mask RCNN (instance segmentation 的 SOTA),將 ResNeXt (第二代 ResNet) 作為 backbone柱查;
  • 此外廓俭,為了能夠加快檢測(cè)速度,一些檢測(cè)系統(tǒng)如 MobileNet 和 LightHead RCNN 中用到了 depth-wise separable convolution operation (這一方法在 Xception 中首次被提出唉工,Xception 是 Inception 的改進(jìn)版)研乒。

4.2 Detection with Better Features

Feature representation 的質(zhì)量對(duì)目標(biāo)檢測(cè)而言是至關(guān)重要的。近些年淋硝,有兩種主流的提升 feature representation 質(zhì)量的方法:

  • feature fusion
  • learning high-resolution features with large receptive fields
4.2.1 Feature Fusion

目標(biāo)檢測(cè)問(wèn)題實(shí)際上是由兩個(gè)子問(wèn)題組成的:目標(biāo)識(shí)別(實(shí)際上是分類問(wèn)題)和目標(biāo)定位雹熬。

一個(gè)完整的 CNN 模型是由一系列的卷積層和池化層組成的宽菜。較淺的層(即前面的層)提取到的特征缺乏完整的語(yǔ)義信息,不適合對(duì)目標(biāo)進(jìn)行識(shí)別竿报,但它們包含更多的邊界和輪廓信息铅乡,因而它們能夠幫助對(duì)目標(biāo)進(jìn)行定位。而較深的層(即后面的層)提取到的特征中包含豐富的語(yǔ)義信息烈菌,因而能夠幫助對(duì)目標(biāo)進(jìn)行識(shí)別阵幸,但它不適合對(duì)目標(biāo)進(jìn)行定位。因此一個(gè)很自然的想法就是進(jìn)行 feature fusion:將淺層特征和深層特征結(jié)合起來(lái)芽世,這樣便能夠同時(shí)提升識(shí)別和定位的準(zhǔn)確性侨嘀。

那么如何進(jìn)行 feature fusion 呢?這篇文章將近些年的一些方法大致分成兩類:

  • Processing flow:

    • 這一類 feature fusion 包含兩種 fusion 方法:bottom-up fusion 以及 top-down fusion捂襟。

      Bottom-up fusion 通過(guò) skip connections 將淺層的特征送到較深的層中。

      Top-down fusion 則正好相反欢峰,它是將深層的特征反饋回較淺的層葬荷。

    • 但是這里需要注意的是,不同層的 feature map 的尺寸是不一樣的纽帖,不管是在空間大小還是在通道數(shù)方面宠漩,淺層和深層的 feature map 都存在著差異,因此直接進(jìn)行 fusion 顯然是不合適的懊直。因此我們需要對(duì) feature map 進(jìn)行 resize扒吁,例如調(diào)整通道數(shù)的多少,up-sampling low-resolution maps 或者 down-sampling high-resolution maps to a proper size室囊。最簡(jiǎn)單的方法就是進(jìn)行 nearest-interpolation 或 bilinear-interpolation雕崩。此外,fractional strided convolution (也叫轉(zhuǎn)置卷積融撞,transpose convolution) 是另外一種比計(jì)較流行的調(diào)整 feature map 大小以及通道數(shù)多少的方式盼铁。這種方式的優(yōu)點(diǎn)是網(wǎng)絡(luò)可以自己學(xué)習(xí)一種比較恰當(dāng)?shù)姆绞絹?lái)進(jìn)行上采樣。

  • Element-wise operation:

    • 如果從一個(gè)局部的視角出發(fā)尝偎,不同 feature map 之間的 feature fusion 可以看做是 element-wise operation饶火。它包含三種具體的操作:element-wise sum,element-wise product致扯,concatenation肤寝。
    • Element-wise sum 是最簡(jiǎn)單的進(jìn)行 feature fusion 的方法,它已經(jīng)被廣泛地用在檢測(cè)系統(tǒng)中抖僵。
    • Element-wise product 和 element-wise sum 的區(qū)別僅僅是將加法換成了乘法鲤看。但這樣做的好處是乘法操作可以用來(lái) suppress 或 highlight 某個(gè)特定區(qū)域內(nèi)的 feature,這樣將更有利于小目標(biāo)的檢測(cè)耍群。
    • Feature concatenation 是另外一種 feature fusion 方法刨摩。它的優(yōu)點(diǎn)是它可以將不同 region 里的 context information 給 integrate 起來(lái)寺晌,缺點(diǎn)是會(huì)增加額外的存儲(chǔ)消耗。
4.2.2 learning high-resolution features with large receptive fields

什么是感受野澡刹?

The receptive field refers to the spatial range of input pixels that contribute to the calculation of a single pixel of the output.

A network with a larger receptive field is able to capture a larger scale of context information, while that with a smaller one may concentrate more on the local details.

什么是 feature resolution 呻征?

The feature resolution corresponds to the down-sampling rate between the input and the feature map.

The lower the feature resolution is, the harder will be to detect small objects.

為了能夠增加 feature resolution,最直接的方法是移除 pooling 層或減小 down-sampling rate罢浇。然而這樣做會(huì)導(dǎo)致一個(gè)新的問(wèn)題陆赋,那就是感受野也會(huì)跟著減小,就相當(dāng)于縮小了檢測(cè)器的“視野”嚷闭,這樣它就有可能會(huì)漏掉一些比較大的目標(biāo)攒岛。

一種能夠同時(shí)增大感受野以及提高 feature resolution 的方法就是使用空洞卷積(dilated convolution)“蹋空洞卷積最早是在語(yǔ)義分割任務(wù)中提出來(lái)的灾锯,它的核心想法就是 expand the convolution filter and use sparse parameters。(例如嗅榕,一個(gè) 3x3 的卷積核顺饮,如果把 dilation rate 設(shè)為 2 ,那么它的感受野就會(huì)和 5x5 的卷積核相當(dāng)凌那,但它仍然只有 9 個(gè)參數(shù)兼雄。)

空洞卷積已經(jīng)被廣泛地用在目標(biāo)檢測(cè)系統(tǒng)中,它既能夠提高準(zhǔn)確率帽蝶,又不會(huì)引入額外的參數(shù)赦肋,而且不會(huì)帶來(lái)額外的計(jì)算負(fù)擔(dān)。

4.3 Beyond Sliding Window

盡管當(dāng)前目標(biāo)檢測(cè)已經(jīng)由手工設(shè)計(jì)的特征轉(zhuǎn)向了深度神經(jīng)網(wǎng)路励稳,但檢測(cè)的模式依然沿襲以往的 “sliding window on feature maps” 的方式佃乘。因此,近期有一些研究者嘗試探索能否擺脫使用 sliding window 這一固有的模式驹尼。

目前主要有兩種新思路:

  • Detection as sub-region search
  • Detection as key points localization

4.4 Improvements of Localization

為了提升定位的準(zhǔn)確率恕稠,目前主要有兩類方法:

  • bounding box refinement
  • designing new loss functions for accurate localization
4.4.1 Bounding Box Refinement

提升定位準(zhǔn)確率最直接的方法就是進(jìn)行 bbox refinement。盡管目前 bbox regression 已經(jīng)集成到大多數(shù)檢測(cè)器中扶欣,但仍然有一些物體鹅巍,它們的尺寸或者太大或者太小,難以被預(yù)先設(shè)定的 anchors 捕捉到料祠。因此骆捧,最近一種被稱為 “iterative bounding box refinement” 的方法被提出,它是通過(guò) iteratively feeding the detection results into a BB regressor until the prediction converges to a correct location and size 來(lái)實(shí)現(xiàn)的髓绽。

4.4.2 Improving Loss Functions for Accurate Localization

在現(xiàn)代的目標(biāo)檢測(cè)系統(tǒng)中敛苇,目標(biāo)定位被視為一個(gè)坐標(biāo)回歸問(wèn)題(coordinate regression problem)。為了提升定位準(zhǔn)確率,可以涉及新的損失函數(shù)枫攀。比如最直接的方式就是將 IoU 作為定位的損失函數(shù)括饶。或者也可以用一個(gè) IoU-guided NMS 來(lái)提升訓(xùn)練和測(cè)試階段的定位準(zhǔn)確率来涨。

4.5 Learning with Segmentation

為什么 semantic segmentation 能夠幫助 object detection 图焰?

  • Segmentation helps category recognition.
  • Segmentation helps accurate localization.
  • Segmentation can be embedded as context.

如何利用 segmentation 來(lái)幫助 detection 呢?有兩種方法:

  • Method 1: Learning with enriched features.

    • 這是最簡(jiǎn)單的方式蹦掐,就是只將分割網(wǎng)絡(luò)當(dāng)成一個(gè)特征提取器技羔,然后將它提取到的特征合并到檢測(cè)系統(tǒng)中。這種方法的優(yōu)點(diǎn)是很容易實(shí)現(xiàn)卧抗,但缺點(diǎn)是會(huì)帶來(lái)額外的計(jì)算負(fù)擔(dān)藤滥。
  • Method 2: Learning with multi-task loss functions.

    • 另外一種方法是在原有的檢測(cè)網(wǎng)絡(luò)的基礎(chǔ)上,再開辟一個(gè) segmentation 分支(不添加額外的模塊社裆,相當(dāng)于原網(wǎng)絡(luò)現(xiàn)在既做檢測(cè)又做分割)拙绊。然后,訓(xùn)練的時(shí)候用 multi-task loss functions (segmentation loss + detection loss) 來(lái)訓(xùn)泳秀。在進(jìn)行推理的時(shí)候标沪,segmentation 分支將會(huì)被移除。

      這種做法的優(yōu)點(diǎn)是檢測(cè)的速度不會(huì)受到影響晶默,但缺點(diǎn)是需要 pixel-level image annotations (因?yàn)?segmentation 分支的引入)。

4.6 Robust Detection of Rotation and Scale Changes

Object rotation 和 scale changes 是目標(biāo)檢測(cè)面臨的兩個(gè)重要挑戰(zhàn)航攒。CNN 學(xué)到的特征對(duì)旋轉(zhuǎn)以及大的尺度變化是不具有不變性的磺陡。

4.6.1 Rotation Robust Detection

為了應(yīng)對(duì)目標(biāo)的旋轉(zhuǎn)問(wèn)題,最簡(jiǎn)單的方法就是做 data augmentation漠畜,使得任意旋轉(zhuǎn)角度的物體都包含在增強(qiáng)后的數(shù)據(jù)中(也就是在訓(xùn)練時(shí)币他,讓檢測(cè)器盡可能多“見”一些物體)。除此之外憔狞,近些年還產(chǎn)生出了一些新的方法:

  • Using rotation invariant loss functions:
    • 可以在原來(lái)的損失函數(shù)中添加一些 constraint蝴悉,從而使得目標(biāo)即使有旋轉(zhuǎn),它們的 feature 也會(huì)保持不變瘾敢。
  • Rotation calibration (旋轉(zhuǎn)校正):
    • 這種方法是對(duì)待檢測(cè)目標(biāo)做幾何變換拍冠,對(duì)于 multi-stage detector 來(lái)說(shuō),這種方法尤為有用簇抵。這種方法的典型代表是 Spatial Transformer Networks (STN)庆杜。(STN 現(xiàn)在已經(jīng)被用在 rotated text detection 以及 rotated face detection。)
  • Rotation RoI Pooling:
    • 這里涉及到坐標(biāo)變換:由 Cartesian 坐標(biāo)(笛卡爾坐標(biāo))變換到極坐標(biāo)碟摆。
4.6.2 Scale Robust Detection

這里分為訓(xùn)練和推理兩個(gè)階段:

  • Scale adaptive training:

    • 當(dāng)前大多數(shù)檢測(cè)器都是將輸入圖片 re-scale 到一個(gè)固定的 size晃财,然后將圖片中各個(gè)不同 scale 的目標(biāo)的損失進(jìn)行反傳,這樣做會(huì)出現(xiàn) ”scale imbalance“ 問(wèn)題典蜕。

    • 建立 image pyramid 可以緩解上述問(wèn)題断盛,但不能從根本上解決罗洗。

    • 最近一種改進(jìn)方法是 Scale Normalization for Image Pyramids (SNIP)训措,這種方法同時(shí)在訓(xùn)練和推理階段建立 image pyramids捏鱼,然后只反傳那些 selected scales 的 loss。如下圖所示:

  • Scale adaptive detection:

    • 當(dāng)前大多數(shù)檢測(cè)器都用固定的模型網(wǎng)絡(luò)去檢測(cè)不同尺寸的物體妒挎。這樣做的缺點(diǎn)是難以應(yīng)對(duì)比較大的尺度變化厢洞。當(dāng)前一種解決方法是 “adaptive zoom-in” 技術(shù)仇让,它可以自動(dòng)放大一些比較小的目標(biāo)。

4.7 Training from Scratch

這一部分拋出了一個(gè)問(wèn)題:檢測(cè)任務(wù)是否一定先要在大型數(shù)據(jù)集 (如 ImageNet) 上進(jìn)行預(yù)訓(xùn)練躺翻?何凱明的研究表明:

ImageNet pre-training may speed up convergence, but does not necessarily provide regularization or improve final detection accuracy.

4.8 Adversarial Training

近兩年丧叽,GAN 被用在目標(biāo)檢測(cè)中,尤其是對(duì)小目標(biāo)以及遮擋目標(biāo)的檢測(cè)公你。

GAN 是通過(guò) narrowing the representations between small and large ones 來(lái)增加對(duì)小目標(biāo)的檢測(cè)的踊淳。

GAN 對(duì)遮擋目標(biāo)的檢測(cè):一種觀點(diǎn)是可以通過(guò) adversarial training 來(lái)生成 occlusion masks。

4.9 Weakly Supervised Object Detection (WSOD)

近些年的一些解決 WSOD 問(wèn)題的方法:

  • Multi-instance learning
  • Class activation mapping

第五部分:應(yīng)用場(chǎng)景

5.1 Pedestrian Detection

  • 如何改善對(duì) small pedestrian 的檢測(cè)陕靠?

    Fast/Faster R-CNN 難以成功檢測(cè) small pedestrian迂尝,因?yàn)樗鼈兲崛〉降氖?low resolution convolutional features。最近的一些解決方案包括:feature fusion剪芥,introducing extra high-resolution handcrafted features垄开,以及 ensembling detection results on multiple resolutions。

  • 如何改善對(duì) hard negative 的檢測(cè)税肪?

    改善方法包括 boosted decision tree溉躲,semantic segmentation 以及 "cross-modal learning"。

  • 如何改善對(duì) occluded pedestrian 的檢測(cè)益兄?

    改善方法包括 design new loss function锻梳,ensemble part detectors 以及 attention mechanism。

5.2 Face Detection

5.3 Text Detection

5.4 Traffic Sign and Traffic Light Detection

5.5 Remote Sensing Target Detection

第六部分:總結(jié)與展望

目標(biāo)檢測(cè)技術(shù)未來(lái)的一些發(fā)展方向:

  • Lightweight object detection :加速目標(biāo)檢測(cè)算法使之能夠在移動(dòng)設(shè)備上流暢運(yùn)行净捅。
  • Detection meets AutoML :當(dāng)前的目標(biāo)檢測(cè)系統(tǒng)越來(lái)越復(fù)雜而且 heavily relies on experiences疑枯。未來(lái)的一個(gè)方向是借助 NAS,讓機(jī)器幫我們?cè)O(shè)計(jì)目標(biāo)檢測(cè)系統(tǒng)(如:如何選取 backbone蛔六,如何設(shè)置 anchor boxes 等)荆永。
  • Detection meets domain adaptation :任何目標(biāo)檢測(cè)器的訓(xùn)練實(shí)際上都可以看成是在獨(dú)立同分布(independently and identically distributed, i.i.d.)條件下的似然估計(jì)過(guò)程(likelihood estimation process)。如果要檢測(cè)的數(shù)據(jù)不符合 i.i.d. 條件国章,尤其是對(duì)真實(shí)世界的數(shù)據(jù)而言屁魏,目標(biāo)檢測(cè)就會(huì)面臨很大的挑戰(zhàn)。目前 GAN 在 domain adaptation 方面顯示出了比較出色的潛力捉腥。
  • Weakly supervised detection :目前的檢測(cè)系統(tǒng)大多都需要大量的標(biāo)注數(shù)據(jù)氓拼,而數(shù)據(jù)標(biāo)注的過(guò)程是 time-consuming, expensive, and inefficient 的。
  • Small object detection :大場(chǎng)景下的小目標(biāo)檢測(cè)一直以來(lái)都是一個(gè)挑戰(zhàn)。
  • Detection in videos :高清視頻(HD videos)中的目標(biāo)實(shí)時(shí)檢測(cè)/追蹤對(duì)視頻監(jiān)控(video surveillance)以及自動(dòng)駕駛(autonomous driving)而言都具有重大的意義桃漾。傳統(tǒng)的目標(biāo)檢測(cè)經(jīng)常是對(duì)單張圖片進(jìn)行檢測(cè)的坏匪,而忽視了視頻中不同幀之間存在的聯(lián)系。因此撬统,通過(guò)探索不同幀之間的 spatial and temporal correlation 來(lái)提高目標(biāo)檢測(cè)的性能也是未來(lái)的一個(gè)發(fā)展方向适滓。
  • Detection with information fusion :數(shù)據(jù)的形式可能是多種多樣的,如 RGB-D image恋追,3d point cloud凭迹,LIDAR 等。如何把不同形式數(shù)據(jù)的信息融合起來(lái)苦囱,也是未來(lái)的一個(gè)發(fā)展方向嗅绸。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市撕彤,隨后出現(xiàn)的幾起案子鱼鸠,更是在濱河造成了極大的恐慌,老刑警劉巖羹铅,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蚀狰,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡职员,警方通過(guò)查閱死者的電腦和手機(jī)麻蹋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)焊切,“玉大人扮授,你說(shuō)我怎么就攤上這事≈朊桑” “怎么了糙箍?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵渤愁,是天一觀的道長(zhǎng)牵祟。 經(jīng)常有香客問(wèn)我,道長(zhǎng)抖格,這世上最難降的妖魔是什么诺苹? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮雹拄,結(jié)果婚禮上收奔,老公的妹妹穿的比我還像新娘。我一直安慰自己滓玖,他們只是感情好坪哄,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般翩肌。 火紅的嫁衣襯著肌膚如雪模暗。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天念祭,我揣著相機(jī)與錄音兑宇,去河邊找鬼。 笑死粱坤,一個(gè)胖子當(dāng)著我的面吹牛隶糕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播站玄,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼枚驻,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了蜒什?” 一聲冷哼從身側(cè)響起测秸,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎灾常,沒(méi)想到半個(gè)月后霎冯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡钞瀑,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年沈撞,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片雕什。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡缠俺,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出贷岸,到底是詐尸還是另有隱情壹士,我是刑警寧澤,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布偿警,位于F島的核電站躏救,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏螟蒸。R本人自食惡果不足惜盒使,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望七嫌。 院中可真熱鬧少办,春花似錦、人聲如沸诵原。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至蔓纠,卻和暖如春骂维,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背贺纲。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工航闺, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人猴誊。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓潦刃,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親懈叹。 傳聞我的和親對(duì)象是個(gè)殘疾皇子乖杠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

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