動(dòng)手學(xué)深度學(xué)習(xí)-03打卡

批量歸一化和殘差網(wǎng)絡(luò)

批量歸一化(BatchNormalization)

對(duì)輸入的標(biāo)準(zhǔn)化

處理后的任意一個(gè)特征在數(shù)據(jù)集中所有樣本上的均值為0、標(biāo)準(zhǔn)差為1。
標(biāo)準(zhǔn)化處理輸入數(shù)據(jù)使各個(gè)特征的分布相近

批量歸一化(深度模型)

利用小批量上的均值和標(biāo)準(zhǔn)差,不斷調(diào)整神經(jīng)網(wǎng)絡(luò)中間輸出,從而使整個(gè)神經(jīng)網(wǎng)絡(luò)在各層的中間輸出的數(shù)值更穩(wěn)定愕够。

對(duì)全連接層做批量歸一化

位置:全連接層中的仿射變換和激活函數(shù)之間

全連接:
全連接層
批量歸一化:
批量歸一化

這?? > 0是個(gè)很小的常數(shù),保證分母大于0


批量歸一化

引入可學(xué)習(xí)參數(shù):拉伸參數(shù)γ和偏移參數(shù)β佛猛。若


求Y

批量歸一化無(wú)效

對(duì)卷積層做批量歸一化

位置:卷積計(jì)算之后惑芭、應(yīng)?激活函數(shù)之前。
如果卷積計(jì)算輸出多個(gè)通道继找,我們需要對(duì)這些通道的輸出分別做批量歸一化遂跟,且每個(gè)通道都擁有獨(dú)立的拉伸和偏移參數(shù)。 計(jì)算:對(duì)單通道,batchsize=m,卷積計(jì)算輸出=pxq 對(duì)該通道中m×p×q個(gè)元素同時(shí)做批量歸一化,使用相同的均值和方差幻锁。

預(yù)測(cè)時(shí)的批量歸一化

訓(xùn)練:以batch為單位凯亮,對(duì)每個(gè)batch計(jì)算均值和方差。
預(yù)測(cè):用移動(dòng)平均估算整個(gè)訓(xùn)練數(shù)據(jù)集的樣本均值和方差哄尔。

殘差網(wǎng)絡(luò)(ResNet)

深度學(xué)習(xí)的問(wèn)題:深度CNN網(wǎng)絡(luò)達(dá)到一定深度后再一味地增加層數(shù)并不能帶來(lái)進(jìn)一步地分類性能提高假消,反而會(huì)招致網(wǎng)絡(luò)收斂變得更慢,準(zhǔn)確率也變得更差

殘差塊(Residual Block)

恒等映射:
左邊:f(x)=x
右邊:f(x)-x=0 (易于捕捉恒等映射的細(xì)微波動(dòng))


殘差網(wǎng)絡(luò)

在殘差塊中岭接,輸入可通過(guò)跨層的數(shù)據(jù)線路更快地向前傳播富拗。

ResNet模型

卷積(64,7x7,3)
批量一體化
最大池化(3x3,2)
殘差塊x4 (通過(guò)步幅為2的殘差塊在每個(gè)模塊之間減小高和寬)
全局平均池化
全連接

稠密連接網(wǎng)絡(luò)(DenseNet)

ResNet和DenseNet

兩者在跨層連接上的主要區(qū)別就是使用相加和使用連結(jié)

主要構(gòu)建模塊:

稠密塊(dense block):定義了輸入和輸出是如何連結(jié)的
過(guò)渡層(transition layer):用來(lái)控制通道數(shù),使之不過(guò)大(使用1*1卷積來(lái)減少通道數(shù)亿傅,使用步幅為2的平均池化層來(lái)減半高和寬 )

優(yōu)化和深度學(xué)習(xí)

優(yōu)化與估計(jì)

盡管優(yōu)化方法可以最小化深度學(xué)習(xí)中的損失函數(shù)值媒峡,但本質(zhì)上優(yōu)化方法達(dá)到的目標(biāo)與深度學(xué)習(xí)的目標(biāo)并不相同。
優(yōu)化方法目標(biāo):訓(xùn)練集損失函數(shù)值
深度學(xué)習(xí)目標(biāo):測(cè)試集損失函數(shù)值(泛化性)

優(yōu)化在深度學(xué)習(xí)中的挑戰(zhàn)

1.局部最小值
2.鞍點(diǎn)
3.梯度消失

局部最小值

??(??)=??cos????
??(??)=??cos????

在這個(gè)函數(shù)中葵擎,局部最小值如上圖local minimum谅阿。

鞍點(diǎn)
鞍點(diǎn)

如上圖函數(shù)為f(x)=x**3,中間部分平滑的曲線即鞍點(diǎn)酬滤。


鞍點(diǎn)

三維視圖中鞍點(diǎn)如圖所示签餐。

凸性(Convexity)

Jensen不等式

Jensen不等式

性質(zhì)

1.無(wú)局部極小值
2.與凸集的關(guān)系
3.二階條件

無(wú)局部最小值

證明:假設(shè)存在 ??∈?? 是局部最小值,則存在全局最小值 ??′∈?? , 使得 ??(??)>??(??′) , 則對(duì) ??∈(0,1] :
??(??)>????(??)+(1???)??(??′)≥??(????+(1???)??′)

與凸集的關(guān)系

對(duì)于凸函數(shù) ??(??) 盯串,定義集合 ????:={??|??∈?? and ??(??)≤??} 氯檐,則集合 ???? 為凸集
證明:對(duì)于點(diǎn) ??,??′∈???? , 有 ??(????+(1???)??′)≤????(??)+(1???)??(??′)≤?? , 故 ????+(1???)??′∈????
??(??,??)=0.5??2+cos(2????)

凸函數(shù)與二階導(dǎo)數(shù)

??″(??)≥0???(??) 是凸函數(shù)

必要性 ( ? ):

對(duì)于凸函數(shù):


必要性
充分性 ( ? ):

令 ??<??<?? 為 ??(??) 上的三個(gè)點(diǎn),由拉格朗日中值定理:
??(??)???(??)=(?????)??′(??) for some ??∈[??,??] and
??(??)???(??)=(?????)??′(??) for some ??∈[??,??]
根據(jù)單調(diào)性体捏,有??′(??)≥??′(??) , 故:
??(??)???(??)=??(??)???(??)+??(??)???(??)
=(?????)??′(??)+(?????)??′(??)
≥(?????)??′(??)


充分性

限制條件

限制條件

拉格朗日乘子法

拉格朗日乘子法

懲罰項(xiàng)

欲使 ????(??)≤0 , 將項(xiàng) ????????(??) 加入目標(biāo)函數(shù)冠摄。例如 ??/2 * ||??||**2

投影

投影

梯度下降

一維梯度下降

證明:沿梯度反方向移動(dòng)自變量可以減小函數(shù)值
泰勒展開(kāi):

泰勒展開(kāi)式

帶入沿著梯度方向的移動(dòng)量
移動(dòng)量

設(shè)一個(gè)函數(shù)為y=x**2,學(xué)習(xí)率為0.2几缭,迭代十步河泳,如下圖:
迭代

當(dāng)學(xué)習(xí)率為0.05時(shí),迭代十次年栓,如下圖:
迭代

當(dāng)學(xué)習(xí)率為1.1時(shí)拆挥,迭代十次,如下圖:
迭代

令函數(shù)為??(??)=??cos????某抓,學(xué)習(xí)率為2纸兔,迭代次數(shù)為10次,如下圖:
迭代

該x迭代到局部最小值否副。

多維梯度下降

多維梯度下降

假設(shè)目標(biāo)函數(shù)為:


目標(biāo)函數(shù)

通過(guò)學(xué)習(xí)率為0.1的函數(shù)迭代20次汉矿,結(jié)果為:


迭代結(jié)果

自適應(yīng)方法

牛頓法

在 ??+?? 處泰勒展開(kāi):


泰勒展開(kāi)

最小值點(diǎn)處滿足:???(??)=0,即我們希望???(??+??)=0 ,對(duì)上式關(guān)于??求導(dǎo)副编,忽略高階無(wú)窮小负甸,有:
公式

收斂性分析

只考慮在函數(shù)為凸函數(shù), 且最小值點(diǎn)上 ??″(???)>0 時(shí)的收斂速度:
令 ???? 為第 ?? 次迭代后 ?? 的值流强, ????:=???????? 表示 ???? 到最小值點(diǎn) ??? 的距離,由 ??′(???)=0 :
0=??′(?????????)=??′(????)???????′′(????)+12??2????′′′(????)for some ????∈[?????????,????]
兩邊除以 ??″(????) , 有:
???????′(????)/??′′(????)=12??2????′′′(????)/??′′(????)
代入更新方程 ????+1=???????′(????)/??′′(????) , 得到:
???????????′(????)/??′′(????)=12??2????′′′(????)/??′′(????)
????+1????=????+1=12??2????′′′(????)/??′′(????)
當(dāng) 12??′′′(????)/??′′(????)≤?? 時(shí)呻待,有:
????+1≤????2??

預(yù)處理(Heissan陣輔助梯度下降)
梯度下降

隨機(jī)梯度下降

參數(shù)更新

對(duì)于有n個(gè)樣本對(duì)訓(xùn)練數(shù)據(jù)集打月,設(shè) ????(??) 是第 ?? 個(gè)樣本的損失函數(shù), 則目標(biāo)函數(shù)為:


目標(biāo)函數(shù)

其梯度為:


目標(biāo)梯度

使用該梯度的一次更新的時(shí)間復(fù)雜度為O(n)
隨機(jī)梯度下降更新公式O(1):

<center>??←??????????(??)<center>

且有
更新公式

現(xiàn)在設(shè)公式為

學(xué)習(xí)率為0.1,迭代次數(shù)為50次蚕捉,如下圖
迭代過(guò)程
動(dòng)態(tài)學(xué)習(xí)率

當(dāng)學(xué)習(xí)率變成動(dòng)態(tài)時(shí)奏篙,如下:
動(dòng)態(tài)學(xué)習(xí)率

下圖為兩個(gè)動(dòng)態(tài)學(xué)習(xí)率:


??0????????
??0?(????+1)???

目標(biāo)檢測(cè)

目標(biāo)檢測(cè)和邊界框

錨框

以每個(gè)像素為中心生成多個(gè)大小和寬高比不同的邊界框,這些邊界框被稱為錨框(anchor box)迫淹。

生成多個(gè)錨框

假設(shè)輸入圖像高為 ? 秘通,寬為 ?? 。我們分別以圖像的每個(gè)像素為中心生成不同形狀的錨框敛熬。設(shè)大小為 ??∈(0,1] 且寬高比為 ??>0 肺稀,那么錨框的寬和高將分別為 ??????√ 和 ???/??√ 。當(dāng)中心位置給定時(shí)应民,已知寬和高的錨框是確定的
下面我們分別設(shè)定好一組大小 ??1,…,???? 和一組寬高比 ??1,…,???? 话原。如果以每個(gè)像素為中心時(shí)使用所有的大小與寬高比的組合,輸入圖像將一共得到 ??????? 個(gè)錨框诲锹。雖然這些錨框可能覆蓋了所有的真實(shí)邊界框繁仁,但計(jì)算復(fù)雜度容易過(guò)高。因此归园,我們通常只對(duì)包含 ??1 或 ??1 的大小與寬高比的組合感興趣黄虱,即
<center>(??1,??1),(??1,??2),…,(??1,????),(??2,??1),(??3,??1),…,(????,??1).<center>
也就是說(shuō),以相同像素為中心的錨框的數(shù)量為 ??+???1 庸诱。對(duì)于整個(gè)輸入圖像捻浦,我們將一共生成 ???(??+???1) 個(gè)錨框。

交并比

量化錨框與真實(shí)邊界框之間的相似度桥爽,采用Jaccard系數(shù)衡量默勾。給定集合A和B,它們的Jaccard系數(shù)即兩者交集大小除以二者并集大芯鬯:


Jaccard系數(shù)

實(shí)際上,我們可以把邊界框內(nèi)的像素區(qū)域看成是像素的集合滞诺。如此一來(lái)形导,我們可以用兩個(gè)邊界框的像素集合的Jaccard系數(shù)衡量這兩個(gè)邊界框的相似度。當(dāng)衡量?jī)蓚€(gè)邊界框的相似度時(shí)习霹,我們通常將Jaccard系數(shù)稱為交并比(Intersection over Union朵耕,IoU),即兩個(gè)邊界框相交面積與相并面積之比淋叶,如下圖所示阎曹。交并比的取值范圍在0和1之間:0表示兩個(gè)邊界框無(wú)重合像素,1表示兩個(gè)邊界框相等。


IoU

標(biāo)注訓(xùn)練集的錨框

在訓(xùn)練集中处嫌,我們將每個(gè)錨框視為一個(gè)訓(xùn)練樣本栅贴。為了訓(xùn)練目標(biāo)檢測(cè)模型,我們需要為每個(gè)錨框標(biāo)注兩類標(biāo)簽:一是錨框所含目標(biāo)的類別熏迹,簡(jiǎn)稱類別檐薯;二是真實(shí)邊界框相對(duì)錨框的偏移量,簡(jiǎn)稱偏移量(offset)注暗。在目標(biāo)檢測(cè)時(shí)坛缕,我們首先生成多個(gè)錨框,然后為每個(gè)錨框預(yù)測(cè)類別以及偏移量捆昏,接著根據(jù)預(yù)測(cè)的偏移量調(diào)整錨框位置從而得到預(yù)測(cè)邊界框赚楚,最后篩選需要輸出的預(yù)測(cè)邊界框。
我們知道骗卜,在目標(biāo)檢測(cè)的訓(xùn)練集中宠页,每個(gè)圖像已標(biāo)注了真實(shí)邊界框的位置以及所含目標(biāo)的類別。在生成錨框之后膨俐,我們主要依據(jù)與錨框相似的真實(shí)邊界框的位置和類別信息為錨框標(biāo)注勇皇。那么,該如何為錨框分配與其相似的真實(shí)邊界框呢焚刺?
假設(shè)圖像中錨框分別為 ??1,??2,…,?????? 敛摘,真實(shí)邊界框分別為 ??1,??2,…,?????? ,且 ????≥???? 乳愉。定義矩陣 ??∈?????×???? 兄淫,其中第 ?? 行第 ?? 列的元素 ?????? 為錨框 ???? 與真實(shí)邊界框 ???? 的交并比。 首先蔓姚,我們找出矩陣 ?? 中最大元素捕虽,并將該元素的行索引與列索引分別記為 ??1,??1 。我們?yōu)殄^框 ????1 分配真實(shí)邊界框 ????1 坡脐。顯然泄私,錨框 ????1 和真實(shí)邊界框 ????1 在所有的“錨框—真實(shí)邊界框”的配對(duì)中相似度最高。接下來(lái)备闲,將矩陣 ?? 中第 ??1 行和第 ??1 列上的所有元素丟棄晌端。找出矩陣 ?? 中剩余的最大元素,并將該元素的行索引與列索引分別記為 ??2,??2 恬砂。我們?yōu)殄^框 ????2 分配真實(shí)邊界框 ????2 咧纠,再將矩陣 ?? 中第 ??2 行和第 ??2 列上的所有元素丟棄。此時(shí)矩陣 ?? 中已有兩行兩列的元素被丟棄泻骤。 依此類推漆羔,直到矩陣 ?? 中所有 ???? 列元素全部被丟棄梧奢。這個(gè)時(shí)候,我們已為 ???? 個(gè)錨框各分配了一個(gè)真實(shí)邊界框演痒。 接下來(lái)亲轨,我們只遍歷剩余的 ????????? 個(gè)錨框:給定其中的錨框 ???? ,根據(jù)矩陣 ?? 的第 ?? 行找到與 ???? 交并比最大的真實(shí)邊界框 ???? 嫡霞,且只有當(dāng)該交并比大于預(yù)先設(shè)定的閾值時(shí)瓶埋,才為錨框 ???? 分配真實(shí)邊界框 ???? 。
如下圖左邊所示诊沪,假設(shè)矩陣 ?? 中最大值為 ??23 养筒,我們將為錨框 ??2 分配真實(shí)邊界框 ??3 。然后端姚,丟棄矩陣中第2行和第3列的所有元素晕粪,找出剩余陰影部分的最大元素 ??71 ,為錨框 ??7 分配真實(shí)邊界框 ??1 渐裸。接著下圖(中)所示巫湘,丟棄矩陣中第7行和第1列的所有元素,找出剩余陰影部分的最大元素 ??54 昏鹃,為錨框 ??5 分配真實(shí)邊界框 ??4 尚氛。最后下圖(右)所示,丟棄矩陣中第5行和第4列的所有元素洞渤,找出剩余陰影部分的最大元素 ??92 阅嘶,為錨框 ??9 分配真實(shí)邊界框 ??2 。之后载迄,我們只需遍歷除去 ??2,??5,??7,??9 的剩余錨框讯柔,并根據(jù)閾值判斷是否為剩余錨框分配真實(shí)邊界框。


真實(shí)邊界框索引

現(xiàn)在我們可以標(biāo)注錨框的類別和偏移量了护昧。如果一個(gè)錨框 ?? 被分配了真實(shí)邊界框 ?? 魂迄,將錨框 ?? 的類別設(shè)為 ?? 的類別,并根據(jù) ?? 和 ?? 的中心坐標(biāo)的相對(duì)位置以及兩個(gè)框的相對(duì)大小為錨框 ?? 標(biāo)注偏移量惋耙。由于數(shù)據(jù)集中各個(gè)框的位置和大小各異捣炬,因此這些相對(duì)位置和相對(duì)大小通常需要一些特殊變換,才能使偏移量的分布更均勻從而更容易擬合绽榛。設(shè)錨框 ?? 及其被分配的真實(shí)邊界框 ?? 的中心坐標(biāo)分別為 (????,????) 和 (????,????) 遥金, ?? 和 ?? 的寬分別為 ???? 和 ???? ,高分別為 ??? 和 ??? 蒜田,一個(gè)常用的技巧是將 ?? 的偏移量標(biāo)注為
偏移量標(biāo)注

其中常數(shù)的默認(rèn)值為 ????=????=????=???=0,????=????=0.1,????=???=0.2 。如果一個(gè)錨框沒(méi)有被分配真實(shí)邊界框选泻,我們只需將該錨框的類別設(shè)為背景冲粤。類別為背景的錨框通常被稱為負(fù)類錨框美莫,其余則被稱為正類錨框。

輸出預(yù)測(cè)邊界框

在模型預(yù)測(cè)階段梯捕,我們先為圖像生成多個(gè)錨框厢呵,并為這些錨框一一預(yù)測(cè)類別和偏移量。隨后傀顾,我們根據(jù)錨框及其預(yù)測(cè)偏移量得到預(yù)測(cè)邊界框襟铭。當(dāng)錨框數(shù)量較多時(shí),同一個(gè)目標(biāo)上可能會(huì)輸出較多相似的預(yù)測(cè)邊界框短曾。為了使結(jié)果更加簡(jiǎn)潔寒砖,我們可以移除相似的預(yù)測(cè)邊界框。常用的方法叫作非極大值抑制(non-maximum suppression嫉拐,NMS)哩都。
我們來(lái)描述一下非極大值抑制的工作原理。對(duì)于一個(gè)預(yù)測(cè)邊界框 ?? 婉徘,模型會(huì)計(jì)算各個(gè)類別的預(yù)測(cè)概率漠嵌。設(shè)其中最大的預(yù)測(cè)概率為 ?? ,該概率所對(duì)應(yīng)的類別即 ?? 的預(yù)測(cè)類別盖呼。我們也將 ?? 稱為預(yù)測(cè)邊界框 ?? 的置信度儒鹿。在同一圖像上,我們將預(yù)測(cè)類別非背景的預(yù)測(cè)邊界框按置信度從高到低排序几晤,得到列表 ?? 约炎。從 ?? 中選取置信度最高的預(yù)測(cè)邊界框 ??1 作為基準(zhǔn)势决,將所有與 ??1 的交并比大于某閾值的非基準(zhǔn)預(yù)測(cè)邊界框從 ?? 中移除蛤高。這里的閾值是預(yù)先設(shè)定的超參數(shù)。此時(shí)艺演, ?? 保留了置信度最高的預(yù)測(cè)邊界框并移除了與其相似的其他預(yù)測(cè)邊界框热芹。 接下來(lái)贱傀,從 ?? 中選取置信度第二高的預(yù)測(cè)邊界框 ??2 作為基準(zhǔn),將所有與 ??2 的交并比大于某閾值的非基準(zhǔn)預(yù)測(cè)邊界框從 ?? 中移除伊脓。重復(fù)這一過(guò)程府寒,直到 ?? 中所有的預(yù)測(cè)邊界框都曾作為基準(zhǔn)。此時(shí) ?? 中任意一對(duì)預(yù)測(cè)邊界框的交并比都小于閾值报腔。最終株搔,輸出列表 ?? 中的所有預(yù)測(cè)邊界框。
實(shí)踐中纯蛾,我們可以在執(zhí)行非極大值抑制前將置信度較低的預(yù)測(cè)邊界框移除纤房,從而減小非極大值抑制的計(jì)算量。我們還可以篩選非極大值抑制的輸出翻诉,例如炮姨,只保留其中置信度較高的結(jié)果作為最終輸出捌刮。

小結(jié)

以每個(gè)像素為中心,生成多個(gè)大小和寬高比不同的錨框舒岸。
交并比是兩個(gè)邊界框相交面積與相并面積之比绅作。
在訓(xùn)練集中,為每個(gè)錨框標(biāo)注兩類標(biāo)簽:一是錨框所含目標(biāo)的類別蛾派;二是真實(shí)邊界框相對(duì)錨框的偏移量俄认。
預(yù)測(cè)時(shí),可以使用非極大值抑制來(lái)移除相似的預(yù)測(cè)邊界框洪乍,從而令結(jié)果簡(jiǎn)潔眯杏。

圖像風(fēng)格遷移

樣式遷移

通過(guò)卷積神經(jīng)網(wǎng)絡(luò)自動(dòng)將某圖像中的樣式應(yīng)用在另一圖像之上。這里我們需要輸入兩張圖像典尾,一張是內(nèi)容圖像役拴,一張是樣式圖像。我們使用神經(jīng)網(wǎng)絡(luò)修改內(nèi)容圖像使其在樣式上接近樣式圖像钾埂。如下圖:


樣式遷移

首先河闰,我們初始化合成圖像,例如將其初始化成內(nèi)容圖像褥紫。該合成圖像是樣式遷移過(guò)程中唯一需要更新的變量姜性,即樣式遷移所需迭代的模型參數(shù)。然后髓考,我們選擇一個(gè)預(yù)訓(xùn)練的卷積神經(jīng)網(wǎng)絡(luò)來(lái)抽取圖像的特征部念,其中的模型參數(shù)在訓(xùn)練中無(wú)須更新。深度卷積神經(jīng)網(wǎng)絡(luò)憑借多個(gè)層逐級(jí)抽取圖像的特征氨菇。我們可以選擇其中某些層的輸出作為內(nèi)容特征或樣式特征儡炼。以下圖為例,這里選取的預(yù)訓(xùn)練的神經(jīng)網(wǎng)絡(luò)含有3個(gè)卷積層查蓉,其中第二層輸出圖像的內(nèi)容特征乌询,而第一層和第三層的輸出被作為圖像的樣式特征。接下來(lái)豌研,我們通過(guò)正向傳播(實(shí)線箭頭方向)計(jì)算樣式遷移的損失函數(shù)妹田,并通過(guò)反向傳播(虛線箭頭方向)迭代模型參數(shù),即不斷更新合成圖像鹃共。樣式遷移常用的損失函數(shù)由3部分組成:內(nèi)容損失(content loss)使合成圖像與內(nèi)容圖像在內(nèi)容特征上接近鬼佣,樣式損失(style loss)令合成圖像與樣式圖像在樣式特征上接近,而總變差損失(total variation loss)則有助于減少合成圖像中的噪點(diǎn)霜浴。最后晶衷,當(dāng)模型訓(xùn)練結(jié)束時(shí),我們輸出樣式遷移的模型參數(shù),即得到最終的合成圖像晌纫。


樣式遷移

讀取內(nèi)容圖像和樣式圖像

其中兩張圖像的尺寸要相同驻龟。

預(yù)處理和后處理圖像

預(yù)處理時(shí)在輸入圖像RGB三個(gè)通道分別做標(biāo)準(zhǔn)化,并將結(jié)果變換成卷積神經(jīng)網(wǎng)絡(luò)接受的輸入公式缸匪。后處理將輸出圖像中的像素值還原回標(biāo)準(zhǔn)化之前的值。

抽取特征

為了抽取圖像的內(nèi)容特征和樣式特征类溢,我們可以選擇VGG網(wǎng)絡(luò)中某些層的輸出凌蔬。一般來(lái)說(shuō),越靠近輸入層的輸出越容易抽取圖像的細(xì)節(jié)信息闯冷,反之則越容易抽取圖像的全局信息砂心。為了避免合成圖像過(guò)多保留內(nèi)容圖像的細(xì)節(jié),我們選擇VGG較靠近輸出的層蛇耀,也稱內(nèi)容層辩诞,來(lái)輸出圖像的內(nèi)容特征。我們還從VGG網(wǎng)絡(luò)中選擇不同層的輸出來(lái)匹配局部和全局的樣式纺涤,這些層也叫樣式層译暂。我們使用第四卷積塊的最后一個(gè)卷積層當(dāng)作內(nèi)容層,以及每個(gè)卷積塊的第一個(gè)卷積層作為樣式層撩炊。在抽取特征時(shí)外永,我們只需要用到VGG從輸入層到最靠近輸出層的內(nèi)容層或樣式層之間的所有層。
給定輸入x拧咳,如果只前向計(jì)算伯顶,則只能獲得最后一層的輸出。由于我們還需要中間層的輸出骆膝,因此這里我們逐層計(jì)算祭衩,并保留內(nèi)容層和樣式層的輸出。
下面一個(gè)對(duì)內(nèi)容圖像抽取內(nèi)容特征阅签,一個(gè)對(duì)樣式圖像抽取樣式特征掐暮。因?yàn)樵谟?xùn)練時(shí)無(wú)需改變預(yù)訓(xùn)練的VGG的模型參數(shù),所以我們可以在訓(xùn)練開(kāi)始之前就提取出內(nèi)容圖像的內(nèi)容特征愉择,以及樣式圖像的樣式特征劫乱。由于合成圖像是樣式遷移所需迭代的模型參數(shù),我們只能在訓(xùn)練過(guò)程中抽取合成圖像的內(nèi)容特征和樣式特征锥涕。

定義損失函數(shù)

內(nèi)容損失

通過(guò)平方誤差函數(shù)衡量合成圖像與內(nèi)容圖像在內(nèi)容特征上的差異

樣式損失

也是通過(guò)平房誤差函數(shù)衡量合成圖像與樣式圖像在樣式上的差異衷戈。首先計(jì)算樣式層的輸出。假設(shè)該輸出的樣本數(shù)為1层坠,通道數(shù)為 ?? 殖妇,高和寬分別為 ? 和 ?? ,我們可以把輸出變換成 ?? 行 ??? 列的矩陣 ?? 破花。矩陣 ?? 可以看作是由 ?? 個(gè)長(zhǎng)度為 ??? 的向量 ??1,…,???? 組成的谦趣。其中向量 ???? 代表了通道 ?? 上的樣式特征疲吸。這些向量的格拉姆矩陣(Gram matrix) ?????∈???×?? 中 ?? 行 ?? 列的元素 ?????? 即向量 ???? 與 ???? 的內(nèi)積,它表達(dá)了通道 ?? 和通道 ?? 上樣式特征的相關(guān)性前鹅。我們用這樣的格拉姆矩陣表達(dá)樣式層輸出的樣式摘悴。需要注意的是,當(dāng) ??? 的值較大時(shí)舰绘,格拉姆矩陣中的元素容易出現(xiàn)較大的值蹂喻。此外,格拉姆矩陣的高和寬皆為通道數(shù) ?? 捂寿。為了讓樣式損失不受這些值的大小影響口四。
所以樣式損失的平方誤差函數(shù)的兩個(gè)格拉姆矩陣輸入分別基于合成圖像與樣式圖像的樣式層輸出。

總變差損失

當(dāng)合成圖像里有大量高頻噪點(diǎn)秦陋,即有特別亮或者特別暗的顆粒像素蔓彩。一種常用的降噪方法是總變差降噪(total variation denoising)。假設(shè)xi驳概,j表示坐標(biāo)為(i赤嚼,j)的像素值,降低總變差損失
<center>∑??,??∣∣????,???????+1,??∣∣+∣∣????,???????,??+1∣∣<center>
能夠盡可能使相臨近的像素值相似抡句。

小結(jié)

  • 樣式遷移常用的損失函數(shù)由3部分組成:內(nèi)容損失使合成圖像與內(nèi)容圖像在內(nèi)容特征上接近探膊,樣式損失令合成圖像與樣式圖像在樣式特征上接近,而總變差損失則有助于減少合成圖像中的噪點(diǎn)待榔。
  • 可以通過(guò)預(yù)訓(xùn)練的卷積神經(jīng)網(wǎng)絡(luò)來(lái)抽取圖像的特征逞壁,并通過(guò)最小化損失函數(shù)來(lái)不斷更新合成圖像。
  • 用格拉姆矩陣表達(dá)樣式層輸出的樣式锐锣。

圖像分類案例1

數(shù)據(jù)集

使用的是CIFAR-10圖像分類問(wèn)題腌闯,每張圖像都是32*32像素,涵蓋10個(gè)類別雕憔。

訓(xùn)練模型

訓(xùn)練模型使用的是ResNet-18網(wǎng)絡(luò)結(jié)構(gòu)姿骏,結(jié)構(gòu)如下:


ResNet網(wǎng)絡(luò)結(jié)構(gòu)

圖像分類案例2

數(shù)據(jù)集

使用ImageNet數(shù)據(jù)集的子集,確定120種不同的狗斤彼。

訓(xùn)練模型

使用的是預(yù)訓(xùn)練的ResNet-34模型分瘦,直接復(fù)用預(yù)訓(xùn)練模型在輸出層的輸入,及抽取的特征琉苇,然后我們重新定義輸出層嘲玫。

優(yōu)化算法進(jìn)階

動(dòng)量(momentum)

目標(biāo)函數(shù)有關(guān)自變量的梯度代表了目標(biāo)函數(shù)在自變量當(dāng)前位置下降最快的方向。在每次迭代中并扇,梯度下降根據(jù)自變量當(dāng)前的位置去团,沿著當(dāng)前位置的梯度更新自變量。但是自變量的迭代方向僅僅取決于自變量當(dāng)前位置,這可能帶來(lái)一些問(wèn)題土陪。我們需要謹(jǐn)慎的選擇學(xué)習(xí)率和batch size來(lái)控制梯度方差和收斂的結(jié)果昼汗。


An ill-conditioned Problem


假設(shè)一個(gè)輸入和輸出分別為二維向量x=[x1,x2]T和標(biāo)量的目標(biāo)函數(shù):


ill-conditioned

Maximum Learning Rate

對(duì)于f(x)來(lái)說(shuō),其中的?? <1/L,其中L是f(x)的最大二階導(dǎo)數(shù)鬼雀。
一般情況下顷窒,只需要?? <2/L就可以。

Supp:Preconditioning

在二階優(yōu)化中源哩,我們使用Hessian matrix的逆矩陣(或者pseudo inverse)來(lái)左乘梯度向量 ??.??.Δ??=???1?? 蹋肮,這樣的做法稱為precondition,相當(dāng)于將 ?? 映射為一個(gè)單位矩陣璧疗,擁有分布均勻的Spectrum,也即我們?nèi)?yōu)化的等價(jià)標(biāo)函數(shù)的Hessian matrix為良好的identity matrix馁龟。


eta=0.4

可以看到崩侠,同一位置上,目標(biāo)函數(shù)在豎直方向( ??2 軸方向)比在水平方向( ??1 軸方向)的斜率的絕對(duì)值更大坷檩。因此却音,給定學(xué)習(xí)率,梯度下降迭代自變量時(shí)會(huì)使自變量在豎直方向比在水平方向移動(dòng)幅度更大矢炼。那么系瓢,我們需要一個(gè)較小的學(xué)習(xí)率從而避免自變量在豎直方向上越過(guò)目標(biāo)函數(shù)最優(yōu)解。然而句灌,這會(huì)造成自變量在水平方向上朝最優(yōu)解移動(dòng)變慢夷陋。
下面我們?cè)囍鴮W(xué)習(xí)率調(diào)得稍大一點(diǎn),此時(shí)自變量在豎直方向不斷越過(guò)最優(yōu)解并逐漸發(fā)散胰锌。


eta=0.6

Momentum Algorithm

動(dòng)量法的提出是為了解決梯度下降的上述問(wèn)題骗绕。設(shè)時(shí)間步 ?? 的自變量為 ???? ,學(xué)習(xí)率為 ???? 资昧。 在時(shí)間步 ??=0 酬土,動(dòng)量法創(chuàng)建速度變量 ??0 ,并將其元素初始化成 0格带。在時(shí)間步 ??>0 撤缴,動(dòng)量法對(duì)每次迭代的步驟做如下修改:


Momentum Algorithm

其中,動(dòng)量超參數(shù) ?? 滿足 0≤??<1 叽唱。當(dāng) ??=0 時(shí)屈呕,動(dòng)量法等價(jià)于小批量隨機(jī)梯度下降。
在使用動(dòng)量法之后尔觉,迭代軌跡如下圖:


eta=0.4

可以看到使用較小的學(xué)習(xí)率 ??=0.4 和動(dòng)量超參數(shù) ??=0.5 時(shí)凉袱,動(dòng)量法在豎直方向上的移動(dòng)更加平滑,且在水平方向上更快逼近最優(yōu)解。下面使用較大的學(xué)習(xí)率 ??=0.6 专甩,此時(shí)自變量也不再發(fā)散钟鸵。
eta=0.6

即使是使用較大的學(xué)習(xí)率,也不會(huì)出現(xiàn)震蕩的情況涤躲。

Exponential Moving Average

為了從數(shù)學(xué)上理解動(dòng)量法棺耍,讓我們先解釋一下指數(shù)加權(quán)移動(dòng)平均(exponential moving average)。給定超參數(shù) 0≤??<1 种樱,當(dāng)前時(shí)間步 ?? 的變量 ???? 是上一時(shí)間步 ???1 的變量 ?????1 和當(dāng)前時(shí)間步另一變量 ???? 的線性組合:


指數(shù)加權(quán)移動(dòng)平均

我們可以將y展開(kāi):


展開(kāi)y

因此蒙袍,在實(shí)際中,我們常常將 ???? 看作是對(duì)最近 1/(1???) 個(gè)時(shí)間步的 ???? 值的加權(quán)平均嫩挤。例如害幅,當(dāng) ??=0.95 時(shí), ???? 可以被看作對(duì)最近20個(gè)時(shí)間步的 ???? 值的加權(quán)平均岂昭;當(dāng) ??=0.9 時(shí)以现, ???? 可以看作是對(duì)最近10個(gè)時(shí)間步的 ???? 值的加權(quán)平均。而且约啊,離當(dāng)前時(shí)間步 ?? 越近的 ???? 值獲得的權(quán)重越大(越接近1)邑遏。

由指數(shù)加權(quán)移動(dòng)平均理解動(dòng)量法

現(xiàn)在,我們對(duì)動(dòng)量法對(duì)移動(dòng)速度變量做變形:


動(dòng)量法變形

由指數(shù)加權(quán)移動(dòng)平均的形式可得恰矩,速度變量 ???? 實(shí)際上對(duì)序列 {??????????????/(1???):??=0,…,1/(1???)?1} 做了指數(shù)加權(quán)移動(dòng)平均记盒。換句話說(shuō),相比于小批量隨機(jī)梯度下降外傅,動(dòng)量法在每個(gè)時(shí)間步的自變量更新量近似于將前者對(duì)應(yīng)的最近 1/(1???) 個(gè)時(shí)間步的更新量做了指數(shù)加權(quán)移動(dòng)平均后再除以 1??? 纪吮。所以,在動(dòng)量法中萎胰,自變量在各個(gè)方向上的移動(dòng)幅度不僅取決當(dāng)前梯度彬碱,還取決于過(guò)去的各個(gè)梯度在各個(gè)方向上是否一致。在本節(jié)之前示例的優(yōu)化問(wèn)題中奥洼,所有梯度在水平方向上為正(向右)巷疼,而在豎直方向上時(shí)正(向上)時(shí)負(fù)(向下)。這樣灵奖,我們就可以使用較大的學(xué)習(xí)率嚼沿,從而使自變量向最優(yōu)解更快移動(dòng)。

Implement

相對(duì)于小批量隨機(jī)梯度下降瓷患,動(dòng)量法需要對(duì)每一個(gè)自變量維護(hù)一個(gè)同它一樣形狀的速度變量骡尽,且超參數(shù)里多了動(dòng)量超參數(shù)。
我們首先將動(dòng)量超參數(shù)設(shè)置為0.5


implement

然后將動(dòng)量超參數(shù)增大到0.9


Implement

可見(jiàn)目標(biāo)函數(shù)值在后期迭代過(guò)程中的變化不夠平滑擅编。直覺(jué)上攀细,10倍小批量梯度比2倍小批量梯度大了5倍箫踩,我們可以試著將學(xué)習(xí)率減小到原來(lái)的1/5。此時(shí)目標(biāo)函數(shù)值在下降了一段時(shí)間后變化更加平滑谭贪。
Implement

AdaGrad

動(dòng)量法可以在兩個(gè)梯度值有較大變化時(shí)境钟,選擇足夠小的學(xué)習(xí)率使得自變量在梯度值較大的維度上不發(fā)散。但這樣會(huì)導(dǎo)致自變量在梯度值較小的緯度上迭代過(guò)慢俭识。動(dòng)量法依賴指數(shù)加權(quán)移動(dòng)平均使得自變量的更新方向更加一致慨削,從而降低發(fā)散的可能。而AdaGrad算法根據(jù)自變量在每個(gè)維度的梯度值的大小來(lái)調(diào)整各個(gè)維度上的學(xué)習(xí)率套媚,從而避免統(tǒng)一的學(xué)習(xí)率難以適應(yīng)所有維度的問(wèn)題缚态。

Algorithm

AdaGrad算法會(huì)使用一個(gè)小批量隨機(jī)梯度 ???? 按元素平方的累加變量 ???? 。在時(shí)間步0堤瘤,AdaGrad將 ??0 中每個(gè)元素初始化為0玫芦。在時(shí)間步 ?? ,首先將小批量隨機(jī)梯度 ???? 按元素平方后累加到變量 ???? :????←?????1+????⊙????,其中 ⊙ 是按元素相乘本辐。接著姨俩,我們將目標(biāo)函數(shù)自變量中每個(gè)元素的學(xué)習(xí)率通過(guò)按元素運(yùn)算重新調(diào)整一下:


調(diào)整x

其中 ?? 是學(xué)習(xí)率, ?? 是為了維持?jǐn)?shù)值穩(wěn)定性而添加的常數(shù)师郑,如 10?6 。這里開(kāi)方调窍、除法和乘法的運(yùn)算都是按元素運(yùn)算的宝冕。這些按元素運(yùn)算使得目標(biāo)函數(shù)自變量中每個(gè)元素都分別擁有自己的學(xué)習(xí)率。

Feature

需要強(qiáng)調(diào)的是邓萨,小批量隨機(jī)梯度按元素平方的累加變量 ???? 出現(xiàn)在學(xué)習(xí)率的分母項(xiàng)中地梨。因此,如果目標(biāo)函數(shù)有關(guān)自變量中某個(gè)元素的偏導(dǎo)數(shù)一直都較大缔恳,那么該元素的學(xué)習(xí)率將下降較快宝剖;反之,如果目標(biāo)函數(shù)有關(guān)自變量中某個(gè)元素的偏導(dǎo)數(shù)一直都較小歉甚,那么該元素的學(xué)習(xí)率將下降較慢万细。然而,由于 ???? 一直在累加按元素平方的梯度纸泄,自變量中每個(gè)元素的學(xué)習(xí)率在迭代過(guò)程中一直在降低(或不變)赖钞。所以,當(dāng)學(xué)習(xí)率在迭代早期降得較快且當(dāng)前解依然不佳時(shí)聘裁,AdaGrad算法在迭代后期由于學(xué)習(xí)率過(guò)小雪营,可能較難找到一個(gè)有用的解。

下面我們?nèi)匀灰阅繕?biāo)函數(shù) ??(??)=0.1??21+2??22 為例觀察AdaGrad算法對(duì)自變量的迭代軌跡衡便。我們實(shí)現(xiàn)AdaGrad算法并使用和上一節(jié)實(shí)驗(yàn)中相同的學(xué)習(xí)率0.4献起⊙蠓茫可以看到,自變量的迭代軌跡較平滑谴餐。但由于 ???? 的累加效果使學(xué)習(xí)率不斷衰減姻政,自變量在迭代后期的移動(dòng)幅度較小。
eta=0.4

下面將學(xué)習(xí)率增加到2总寒,可以看到自變量更為迅速的逼近了最優(yōu)解扶歪。
eta=2

RMSProp

在AdaGrad中,因?yàn)檎{(diào)整學(xué)習(xí)率時(shí)分母上的變量St一直在累加按元素平方的小批量隨機(jī)梯度摄闸,所以目標(biāo)函數(shù)自變量每個(gè)元素的學(xué)習(xí)率在迭代過(guò)程中一直在降低或不變善镰。因此,當(dāng)學(xué)習(xí)率在迭代早期講的較快且當(dāng)前解依然不佳時(shí)年枕,AdaGrad算法在迭代后期由于學(xué)習(xí)率較小炫欺,可能較難找到一個(gè)有用的解。為了解決這一問(wèn)題熏兄,RMSProp算法對(duì)AdaGrad算法做了修改品洛。

Algorithm

在RMSProp中狀態(tài)變量 ???? 是截至?xí)r間步 ?? 所有小批量隨機(jī)梯度 ???? 按元素平方和,RMSProp算法將這些梯度按元素平方做指數(shù)加權(quán)移動(dòng)平均摩桶。具體來(lái)說(shuō)桥状,給定超參數(shù) 0≤??0 計(jì)算
????←???????1+(1???)????⊙????.
和AdaGrad算法一樣,RMSProp算法將目標(biāo)函數(shù)自變量中每個(gè)元素的學(xué)習(xí)率通過(guò)按元素運(yùn)算重新調(diào)整硝清,然后更新自變量:


更新自變量

其中 ?? 是學(xué)習(xí)率辅斟, ?? 是為了維持?jǐn)?shù)值穩(wěn)定性而添加的常數(shù),如 10?6 芦拿。因?yàn)镽MSProp算法的狀態(tài)變量 ???? 是對(duì)平方項(xiàng) ????⊙???? 的指數(shù)加權(quán)移動(dòng)平均士飒,所以可以看作是最近 1/(1???) 個(gè)時(shí)間步的小批量隨機(jī)梯度平方項(xiàng)的加權(quán)平均。如此一來(lái)蔗崎,自變量每個(gè)元素的學(xué)習(xí)率在迭代過(guò)程中就不再一直降低(或不變)酵幕。


eta=0.4

Adam

Adam算法在RMSProp算法上對(duì)小批量隨機(jī)梯度也做了指數(shù)加權(quán)移動(dòng)平均。

Algorithm

Adam算法使用了動(dòng)量變量 ???? 和RMSProp算法中小批量隨機(jī)梯度按元素平方的指數(shù)加權(quán)移動(dòng)平均變量 ???? 缓苛,并在時(shí)間步0將它們中每個(gè)元素初始化為0芳撒。給定超參數(shù) 0≤??1<1 (算法作者建議設(shè)為0.9),時(shí)間步 ?? 的動(dòng)量變量 ???? 即小批量隨機(jī)梯度 ???? 的指數(shù)加權(quán)移動(dòng)平均:


Adam

和RMSProp算法中一樣未桥,給定超參數(shù) 0≤??2<1 (算法作者建議設(shè)為0.999)番官, 將小批量隨機(jī)梯度按元素平方后的項(xiàng) ????⊙???? 做指數(shù)加權(quán)移動(dòng)平均得到 ???? :


Adam

由于我們將 ??0 和 ??0 中的元素都初始化為0, 在時(shí)間步 ?? 我們得到 ????=(1???1)∑????=1???????1???? 钢属。將過(guò)去各時(shí)間步小批量隨機(jī)梯度的權(quán)值相加徘熔,得到 (1???1)∑????=1???????1=1?????1 。需要注意的是淆党,當(dāng) ?? 較小時(shí)酷师,過(guò)去各時(shí)間步小批量隨機(jī)梯度權(quán)值之和會(huì)較小讶凉。例如,當(dāng) ??1=0.9 時(shí)山孔, ??1=0.1??1 懂讯。為了消除這樣的影響,對(duì)于任意時(shí)間步 ?? 台颠,我們可以將 ???? 再除以 1?????1 褐望,從而使過(guò)去各時(shí)間步小批量隨機(jī)梯度權(quán)值之和為1。這也叫作偏差修正串前。在Adam算法中瘫里,我們對(duì)變量 ???? 和 ???? 均作偏差修正:
偏差修正

接下來(lái),Adam算法使用以上偏差修正后的變量 ??? ?? 和 ??? ?? 荡碾,將模型參數(shù)中每個(gè)元素的學(xué)習(xí)率通過(guò)按元素運(yùn)算重新調(diào)整:


偏差修正

其中 ?? 是學(xué)習(xí)率谨读, ?? 是為了維持?jǐn)?shù)值穩(wěn)定性而添加的常數(shù),如 10?8 坛吁。和AdaGrad算法劳殖、RMSProp算法以及AdaDelta算法一樣,目標(biāo)函數(shù)自變量中每個(gè)元素都分別擁有自己的學(xué)習(xí)率拨脉。最后哆姻,使用 ??′?? 迭代自變量:
迭代后變量

數(shù)據(jù)增強(qiáng)

圖像增廣

圖像增廣(image augmentation)技術(shù)通過(guò)對(duì)訓(xùn)練圖像做一系列隨機(jī)改變,來(lái)產(chǎn)生相似但又不同的訓(xùn)練樣本玫膀,從而擴(kuò)大訓(xùn)練數(shù)據(jù)集的規(guī)模矛缨。圖像增廣的另一種解釋是,隨機(jī)改變訓(xùn)練樣本可以降低模型對(duì)某些屬性的依賴匆骗,從而提高模型的泛化能力。例如誉简,我們可以對(duì)圖像進(jìn)行不同方式的裁剪碉就,使感興趣的物體出現(xiàn)在不同位置,從而減輕模型對(duì)物體出現(xiàn)位置的依賴性闷串。我們也可以調(diào)整亮度瓮钥、色彩等因素來(lái)降低模型對(duì)色彩的敏感度∨氤常可以說(shuō)碉熄,在當(dāng)年AlexNet的成功中,圖像增廣技術(shù)功不可沒(méi)肋拔。本節(jié)我們將討論這個(gè)在計(jì)算機(jī)視覺(jué)里被廣泛使用的技術(shù)锈津。

常用圖像增廣方法

1.翻轉(zhuǎn)和裁剪
2.變化顏色
3.疊加多個(gè)圖像增廣方法

模型微調(diào)

微調(diào)步驟

1.在源數(shù)據(jù)集上預(yù)訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò)模型
2.創(chuàng)建一個(gè)新的神經(jīng)網(wǎng)絡(luò)模型
為目標(biāo)模型添加一個(gè)輸出大小為目標(biāo)數(shù)據(jù)集類別個(gè)數(shù)的輸出層
4.在目標(biāo)數(shù)據(jù)集上訓(xùn)練目標(biāo)模型


模型微調(diào)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市凉蜂,隨后出現(xiàn)的幾起案子琼梆,更是在濱河造成了極大的恐慌性誉,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件茎杂,死亡現(xiàn)場(chǎng)離奇詭異错览,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)煌往,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門倾哺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人刽脖,你說(shuō)我怎么就攤上這事羞海。” “怎么了曾棕?”我有些...
    開(kāi)封第一講書人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵扣猫,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我翘地,道長(zhǎng)申尤,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任衙耕,我火速辦了婚禮昧穿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘橙喘。我一直安慰自己时鸵,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布厅瞎。 她就那樣靜靜地躺著饰潜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪和簸。 梳的紋絲不亂的頭發(fā)上彭雾,一...
    開(kāi)封第一講書人閱讀 51,165評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音锁保,去河邊找鬼薯酝。 笑死,一個(gè)胖子當(dāng)著我的面吹牛爽柒,可吹牛的內(nèi)容都是我干的吴菠。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼浩村,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼做葵!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起心墅,我...
    開(kāi)封第一講書人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蜂挪,失蹤者是張志新(化名)和其女友劉穎重挑,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體棠涮,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谬哀,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了严肪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片史煎。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖驳糯,靈堂內(nèi)的尸體忽然破棺而出篇梭,到底是詐尸還是另有隱情,我是刑警寧澤酝枢,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布恬偷,位于F島的核電站,受9級(jí)特大地震影響帘睦,放射性物質(zhì)發(fā)生泄漏袍患。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一竣付、第九天 我趴在偏房一處隱蔽的房頂上張望诡延。 院中可真熱鬧,春花似錦古胆、人聲如沸肆良。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)惹恃。三九已至,卻和暖如春棺牧,著一層夾襖步出監(jiān)牢的瞬間巫糙,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工陨帆, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留曲秉,地道東北人采蚀。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓疲牵,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親榆鼠。 傳聞我的和親對(duì)象是個(gè)殘疾皇子纲爸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

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