張敏情, 李宗翰, 劉 佳, 雷 雨
(1. 武警工程大學(xué) 密碼工程學(xué)院 陜西 西安 710086; 2. 武警工程大學(xué) 網(wǎng)絡(luò)與信息安全武警部隊(duì)重點(diǎn)實(shí)驗(yàn)室 陜西 西安 710086)
隨著深度學(xué)習(xí)技術(shù)的進(jìn)步,生成對(duì)抗網(wǎng)絡(luò)(generative adversarial networks,GAN)[1]作為一種深度生成模型的典型代表得到了廣泛關(guān)注,成為當(dāng)前計(jì)算機(jī)科學(xué)研究的前沿與熱點(diǎn)。GAN是Goodfellow 等于 2014年提出的一種深度生成模型。該模型由一個(gè)生成器和一個(gè)判別器構(gòu)成,通過建立生成器和判別器的極小、極大博弈,來(lái)優(yōu)化生成樣本的能力。理論上通過GAN模型訓(xùn)練的生成器生成樣本的分布能夠逐步逼近真實(shí)數(shù)據(jù)樣本的分布,生成模型構(gòu)造自然圖像能力的顯著提升,為實(shí)現(xiàn)載體合成式圖像隱寫方法提供了技術(shù)支撐。同時(shí),以數(shù)據(jù)驅(qū)動(dòng)的生成模型為基礎(chǔ)展開隱寫技術(shù)的研究,將使隱寫方案設(shè)計(jì)模式在傳統(tǒng)人工設(shè)計(jì)的基礎(chǔ)上,能夠充分借助自動(dòng)化手段不斷完善,為圖像隱寫方法的研究注入新的動(dòng)力。
在現(xiàn)代隱寫方法中,載體合成式隱寫是指在不預(yù)先指定原始載體的情況下,按照一定規(guī)則直接生成含密載體,含密載體與真實(shí)的自然載體應(yīng)具有不可區(qū)分性。Hayes等在文獻(xiàn)[2]的基礎(chǔ)上,提出利用三方對(duì)抗網(wǎng)絡(luò),讓機(jī)器自學(xué)習(xí)的一種隱寫方法[3]。Liu等提出了基于ACGAN的無(wú)載體信息隱藏方案stego-ACGAN[4],該方案首先建立秘密信息與噪聲的映射關(guān)系——碼表,而后利用ACGAN的特點(diǎn),將噪聲和類別標(biāo)簽聯(lián)合,作為驅(qū)動(dòng)直接生成含密圖像。Liu等從早期的卡登格子的思想出發(fā),利用圖像補(bǔ)全技術(shù),提出了一個(gè)數(shù)字化的卡登格子的方案[5-6]。該方案從損毀圖像出發(fā),在損毀圖像上進(jìn)行修改,并將這個(gè)含有消息的損毀圖像作為約束條件,利用圖像補(bǔ)全技術(shù)進(jìn)行圖像合成,合成的圖像中含有秘密消息。通信雙方利用共享的卡登格子進(jìn)行消息嵌入和提取。由于傳統(tǒng)GAN采用隨機(jī)噪聲生成圖像,難以達(dá)到隱寫的目的,Hu等[7]提出的DCGAN隱寫方案通過將秘密信息分段并映射成(-1,1)上的噪聲,而后輸入到生成器中生成含密圖像,恢復(fù)消息時(shí),將含密圖像輸入到預(yù)先訓(xùn)練好的提取器中并輸出噪聲,利用映射關(guān)系將噪聲恢復(fù)成秘密信息,但此方法存在隱寫圖像質(zhì)量不高,隱寫容量較低的缺點(diǎn)。針對(duì)此問題,本文提出一種基于邊界平衡生成對(duì)抗網(wǎng)絡(luò)(BEGAN)的載體合成式隱寫方法。BEGAN采用自編碼器結(jié)構(gòu),結(jié)合與以往生成模型不同的損失函數(shù)來(lái)估計(jì)分布的誤差之間的距離,能夠生成更加逼真的圖像,且訓(xùn)練速度更快更穩(wěn)定。通過BEGAN模型進(jìn)行本文隱寫方案的實(shí)施,能夠有效解決生成圖像的質(zhì)量和隱寫容量都較低的問題。
傳統(tǒng)的隱寫評(píng)價(jià)是通過對(duì)比隱寫圖像與原始載體來(lái)實(shí)現(xiàn)的,如峰值信噪比、結(jié)構(gòu)相似性[8]、均方差、通用質(zhì)量指標(biāo)[9]等。載體合成的隱寫不需要原始載體,而是依賴生成模型直接生成含密圖片。本節(jié)分析了當(dāng)前生成圖像隱寫質(zhì)量評(píng)價(jià)的若干指標(biāo),首次把生成的含密圖像質(zhì)量評(píng)價(jià)納入到隱寫安全評(píng)價(jià)方案中,這是因?yàn)樵陔[寫方案中,圖像的真實(shí)程度直接決定了該含密載體被懷疑為含密圖像的可能性。在傳統(tǒng)的基于載體的隱寫方案中,通常通過定義原始載體和含密載體的失真度來(lái)表示這種安全性,在生成式隱寫中,由于無(wú)法獲得一個(gè)原始的載體,因此需要定義一個(gè)圖像質(zhì)量來(lái)進(jìn)行含密圖像質(zhì)量的評(píng)價(jià)。生成對(duì)抗網(wǎng)絡(luò)的模型評(píng)價(jià)有inception score(IS)[10],IS評(píng)分能夠評(píng)估圖像質(zhì)量及多樣性,但一些看似噪聲的圖像的IS評(píng)分也可能很高。
文獻(xiàn)[11]提出的mode score(MS)評(píng)分能在一個(gè)指標(biāo)中成功地測(cè)量生成模型的多樣性視覺質(zhì)量,但在沒有標(biāo)簽的數(shù)據(jù)集或標(biāo)簽不足以表征每種數(shù)據(jù)模式的情況下,指標(biāo)不能很好地工作。
文獻(xiàn)[12]提出的generative adversarial metric(GAM)評(píng)價(jià)方法需要兩個(gè)模型相互比較從而進(jìn)行評(píng)價(jià),對(duì)于較多模型一起比較的情況,該方法較復(fù)雜。
文獻(xiàn)[13]提出的frechet inception distance(FID)評(píng)價(jià)方法相對(duì)于IS方法來(lái)說,在相同條件下,F(xiàn)ID方法能力更強(qiáng),對(duì)擾動(dòng)的判別更準(zhǔn),而IS是波動(dòng)的、保持不變的,甚至是下降的。本文采用FID作為生成的含密圖像質(zhì)量的評(píng)價(jià)指標(biāo)。
BEGAN[14]是一個(gè)簡(jiǎn)單且具有魯棒性的 GAN 架構(gòu),有訓(xùn)練速度快且能穩(wěn)定收斂的優(yōu)點(diǎn)。其與以往的GAN不同之處在于:BEGAN的判別器使用的是由編碼器和解碼器組成的自編碼結(jié)構(gòu)。如圖1所示,編碼器結(jié)構(gòu)以圖像信息作為輸入,每層卷積2次,采用3×3的卷積核,在其輸出端應(yīng)用指數(shù)線性單位。每次下采樣步幅為2,每次采樣時(shí)卷積濾波器線性增加。在編碼器與解碼器交界處,處理一個(gè)通過全連接產(chǎn)生的嵌入狀態(tài)的張量。解碼器結(jié)構(gòu)與編碼器相反,其輸入為1×128的噪聲,輸出為圖像信息。
圖1 BEGAN的結(jié)構(gòu)Figure 1 Structure of BEGAN
GAN以及其變種都是希望生成器生成的數(shù)據(jù)分布盡可能地接近真實(shí)數(shù)據(jù)的分布,當(dāng)生成數(shù)據(jù)分布等同于真實(shí)數(shù)據(jù)時(shí),則認(rèn)為生成器生成的樣本難以區(qū)分。而BEGAN采用的方式是估計(jì)分布的誤差之間的距離,只要分布的誤差分布相近,則認(rèn)為這些分布相近。BEGAN模型的損失函數(shù)為
LD=L(x)-kt·L(G(zD)),LG=L(G(zD))=-LD,
其中:x表示真實(shí)圖像;G(zD)表示生成圖像;zD與zG為來(lái)自z的樣本。判別器的損失LD為真實(shí)圖像與經(jīng)過自編碼器后生成的圖像之間的損失。
為了控制G網(wǎng)絡(luò)和D網(wǎng)絡(luò)之間能力的平衡,以及G網(wǎng)絡(luò)生成樣本多樣性和質(zhì)量之間的平衡,模型還引入γ和k兩個(gè)參數(shù),用kt來(lái)控制梯度下降中對(duì)L(G(zD))的控制程度,λk是kt+1的更新步長(zhǎng)。超參數(shù)γ為生成樣本損失L(G(z))與真實(shí)樣本損失L(x)的期望之比,此超參數(shù)能夠通過均衡判別器與生成器來(lái)穩(wěn)定訓(xùn)練過程,可用來(lái)衡量生成樣本的多樣性,其值越低表示生成樣本多樣性越低,所用公式為
kt+1=kt+λk(γL(x)-L(G(zG))),γ=E[L(G(z))]/E[L(x)]。
BEGAN采用編碼-解碼結(jié)構(gòu)使得生成圖像更接近真實(shí)圖像,且在實(shí)際應(yīng)用中,BEGAN生成圖像在質(zhì)量上比DCGAN生成圖像質(zhì)量高,所以本文方案采用BEGAN模型。
如圖2所示,發(fā)送方與接收方協(xié)商好模型參數(shù),接收方預(yù)先訓(xùn)練好提取器。發(fā)送時(shí),發(fā)送方將秘密信息轉(zhuǎn)化為噪聲,并輸入到生成器中得到含密圖像,然后通過信道傳遞給接收方;接收方在接收到含密圖像后,將之輸入到預(yù)先訓(xùn)練好的提取器中,提取出噪聲后,用事先約定好的方法轉(zhuǎn)化為秘密信息以完成解密。
圖2 本文方法結(jié)構(gòu)圖Figure 2 Structure of the proposed method
BEGAN結(jié)構(gòu)中的編碼器輸入為圖像,輸出為1×128的張量,考慮采用相似結(jié)構(gòu)的情況下,修改約束條件,構(gòu)建成為提取器,用來(lái)恢復(fù)含密載體中的秘密消息。提取器結(jié)構(gòu)如圖3所示,輸入為從生成器中生成的尺寸為64*64*3的含密圖像,輸出為1×128的噪聲向量。中間各卷積層使用3*3的卷積,并在其輸出端重復(fù)應(yīng)用2次指數(shù)線性單位。相鄰卷積層之間下采樣步幅為2,且每次采樣時(shí)卷積濾波器線性增加。最后,在4個(gè)卷積層后采用一個(gè)全連接層。
圖3 提取器結(jié)構(gòu)Figure 3 Structure of the extractor
BEGAN的思想是衡量真實(shí)圖像和生成圖像分別與它們經(jīng)過自編碼器后生成的圖像之間的損失,若這兩個(gè)損失趨近于零,則認(rèn)為生成器能夠生成足夠真實(shí)的圖片。損失函數(shù)可以簡(jiǎn)化成
loss_real=Y-decoder(encoder(Y)),
(1)
loss_fake=G(x)-decoder(encoder(G(x))),
(2)
其中:Y為真實(shí)圖像樣本;x為輸入噪聲;decoder和encoder組合表示自編碼器auto-encoder,其輸入為圖像,輸出也為圖像。公式(1)表示真實(shí)圖像樣本與經(jīng)過編碼解碼器后的圖像之間的損失。公式(2)表示由噪聲生成的圖像和其經(jīng)過編碼-解碼器之后得到的圖像之間的損失。此兩個(gè)損失均為計(jì)算圖像與圖像之間的損失。
在訓(xùn)練提取器時(shí),將損失函數(shù)修改為
loss_real=x-E(G(x)),
(3)
loss_fake=E(Y)-E(decoder(encoder(Y))),
(4)
其中:G代表生成器;E代表提取器,且E的輸入為圖像,輸出為1×128的噪聲向量。公式(3)表示輸入噪聲與該噪聲依次經(jīng)過生成器和提取器之后,提取出來(lái)的噪聲之間的損失。公式(4)表示真實(shí)圖像樣本提取出的噪聲,與先經(jīng)過編碼-解碼器再提取出的噪聲之間的損失。與訓(xùn)練生成器不同的是,在訓(xùn)練提取器時(shí),式(3)和(4)計(jì)算的是噪聲與噪聲之間的損失。
2.2.1隱藏方案 如圖4所示,首先對(duì)二進(jìn)制秘密信息進(jìn)行分段,而后將各段秘密信息轉(zhuǎn)化為各自對(duì)應(yīng)的噪聲zi,將所有噪聲zi連接起來(lái)成為輸入噪聲z,并將此噪聲z輸入到BEGAN中,生成含密圖像S,實(shí)現(xiàn)信息隱寫。具體隱藏方法如下:
步驟1將二進(jìn)制秘密信息m按每128位劃分為一個(gè)秘密信息片段,若最后一段秘密信息位數(shù)不足128位,則將最后一段的剩余位數(shù)用0填充,m={m1,m2,…,mn}。
步驟2設(shè)定映射關(guān)系:二進(jìn)制秘密信息中的0隨機(jī)映射為(-1,0)上的噪聲,1隨機(jī)映射為[0,1)上的噪聲,如圖5所示,第1位秘密信息0隨機(jī)映射為-0.757,第2位秘密信息1隨機(jī)映射為0.654……以此類推。而后根據(jù)映射關(guān)系將每段秘密信息片段mi轉(zhuǎn)化為(-1,1)上的噪聲zi,最后將所有噪聲片段zi連接起來(lái)成為輸入噪聲z。
步驟3將噪聲z輸入到BEGAN中,輸出含密圖像S,S=G(z)。
圖4 隱藏方法的結(jié)構(gòu)Figure 4 Structure of the hiding method
圖5 隱寫步驟Figure 5 Steps of the steganography
2.2.2提取方案 當(dāng)BEGAN模型訓(xùn)練好之后,將已經(jīng)收斂的生成器用于訓(xùn)練提取器。當(dāng)提取器收斂后,用于提取方案的實(shí)施。本方案結(jié)構(gòu)如圖6所示。具體提取方案如下。
圖6 提取方法的結(jié)構(gòu)Figure 6 Structure of extraction method
步驟1將生成器生成的含密圖像輸入到預(yù)先訓(xùn)練好的提取器中,并輸出噪聲。
步驟2將噪聲中的每個(gè)噪聲片段按映射關(guān)系轉(zhuǎn)化為秘密信息片段。
步驟3將所有秘密信息片段連接起來(lái),得到秘密信息。
實(shí)驗(yàn)中,真實(shí)樣本數(shù)據(jù)集為celebA人臉數(shù)據(jù)集(共包含10 177個(gè)名人身份的202 599張圖像),本實(shí)驗(yàn)取其中20 000張用于訓(xùn)練模型,輸入噪聲大小為1×128,輸出圖像大小為64×64,學(xué)習(xí)率為1e-4,gamma=0.4,訓(xùn)練180輪。實(shí)驗(yàn)平臺(tái)為谷歌的深度學(xué)習(xí)平臺(tái)Tensorflow v1.13.1,計(jì)算顯卡為RTX2070 Max-Q。
BEGAN訓(xùn)練效果如圖7所示,第1輪時(shí)能夠看到模糊的人臉輪廓,第33輪開始效果比較好。本文一共訓(xùn)練180輪迭代,第73輪與最后一輪已經(jīng)用肉眼無(wú)法區(qū)別好壞,說明從73輪開始,生成器已經(jīng)接近收斂且能夠生成質(zhì)量較高的圖片。
圖7 各迭代輪數(shù)生成的圖像效果Figure 7 Image effect generated by the number of iterations
圖8 恢復(fù)準(zhǔn)確率對(duì)比Figure 8 Comparison of the recovery accuracy
將提取器訓(xùn)練400輪迭代,而后對(duì)BEGAN生成的含密圖像進(jìn)行提取,圖8為與文獻(xiàn)[7]中的DCGAN的提取器相比,恢復(fù)準(zhǔn)確率對(duì)比圖,在初始階段,BEGAN的提取器模型的恢復(fù)準(zhǔn)確率僅能夠達(dá)到46%,比DCGAN的提取器模型稍低,但隨著訓(xùn)練輪數(shù)的增加,BEGAN的提取器模型的恢復(fù)準(zhǔn)確率提高較快,且在訓(xùn)練150輪之前,BEGAN提取器的恢復(fù)準(zhǔn)確率均高于DCGAN提取器,恢復(fù)準(zhǔn)確率在75%左右,這是由于BEGAN采用自編碼器的結(jié)構(gòu),并設(shè)計(jì)了能夠快速穩(wěn)定訓(xùn)練和提高圖像視覺質(zhì)量的損失函數(shù),使模型能夠更快收斂,而改進(jìn)的BEGAN提取器很好地繼承了上述優(yōu)點(diǎn),使得在前期能夠比DCGAN提取器表現(xiàn)更好,恢復(fù)準(zhǔn)確率更高。該模型由于前期訓(xùn)練速度快,能夠更快提高恢復(fù)準(zhǔn)確率,可應(yīng)用于需要快速達(dá)到訓(xùn)練效果且需要更少計(jì)算資源的場(chǎng)景。圖中后續(xù)恢復(fù)準(zhǔn)確率被限制在75%左右,經(jīng)分析,是由于設(shè)計(jì)的提取器模型雖然前期能夠很快收斂,但后期隨著訓(xùn)練深入會(huì)在某一固定值附近震蕩,導(dǎo)致恢復(fù)準(zhǔn)確率很難繼續(xù)提高,下一步將對(duì)提取器結(jié)構(gòu)進(jìn)行改進(jìn),從而解決此收斂問題。
圖9 DCGAN、BEGAN 收斂時(shí)的圖像質(zhì)量Figure 9 Comparison of image quality when DCGAN and BEGAN are convergence
如圖9所示,盡管兩個(gè)模型使用訓(xùn)練集相同,但生成效果卻相差較大。整體上來(lái)看,DCGAN收斂后的圖像在背景的多樣性上表現(xiàn)較強(qiáng),但生成的人臉效果不夠細(xì)膩,存在較多的失真,如圖9(a)所示,第二行第七張圖和第九行第十張圖存在臉部不完整、背景失真較嚴(yán)重的情況;而BEGAN生成人臉的效果在細(xì)節(jié)上更細(xì)膩,面部看起來(lái)更加自然,這是由于BEGAN自編碼器結(jié)構(gòu)采用的是估計(jì)分布誤差之間距離的方式,能夠有效縮小生成圖像與真實(shí)圖像之間的分布誤差,使生成圖像在細(xì)節(jié)上更加細(xì)膩、自然。
如圖10所示,通過對(duì)比DCGAN模型與BEGAN模型隱寫后的圖像質(zhì)量,可以看出,BEGAN不僅在生成圖像上表現(xiàn)良好,而且隱寫后生成的圖像質(zhì)量也比較高。另一方面,本文用FID的圖像質(zhì)量評(píng)價(jià)方法,來(lái)進(jìn)行客觀評(píng)價(jià)。采用celebA原始圖像、BEGAN隱寫后圖像以及DCGAN隱寫后圖像各10 000張,用BEGAN和DCGAN隱寫后的圖像分別與celebA原始圖像計(jì)算FID值。celebA測(cè)試圖像被裁剪成64×64大小。經(jīng)計(jì)算,DCGAN隱寫后圖像的FID為11.25,BEGAN為10.37。而FID數(shù)值越小,表示生成圖像質(zhì)量越好。所以BEGAN隱寫后的圖片質(zhì)量比DCGAN隱寫后圖片質(zhì)量高。通過上述主客觀對(duì)比,從理論和實(shí)驗(yàn)上證明了使用BEGAN模型進(jìn)行隱寫可以提高圖像質(zhì)量,即更換生成模型對(duì)隱寫圖像的生成質(zhì)量存在較大影響。
圖10 DCGAN與BEGAN隱寫后圖片質(zhì)量Figure 10 The quality of stego-image via DCGAN and BEGAN
本文隱寫方案生成的含密圖像尺寸為64×64,每幅含密圖像攜帶秘密信息為128 bit,隱寫容量=單幅含密圖像攜帶秘密信息位數(shù)/圖像尺寸,計(jì)算隱寫容量為3.13×10-2bit/pixel。表1為本文方案與其他載體合成隱寫方案的容量對(duì)比。文獻(xiàn)[15]和[16]載體合成式隱寫方案生成的圖像尺寸較大,但在隱寫容量上,本文方案隱寫容量較高。文獻(xiàn)[17]采用DCGAN的隱寫方案,其生成圖像尺寸與本文一樣,均為64×64,但DCGAN方案中采取的用來(lái)生成含密圖像的噪聲為100 bit的噪聲,隱寫容量為2.44×10-2bit/pixel,而本文方案中由于BEGAN模型固定輸入噪聲為128 bit,隱寫容量相比DCGAN高0.69×10-2bit/pixel。實(shí)驗(yàn)證明,通過使用BEGAN模型在相同圖像尺寸的情況下,增大輸入噪聲長(zhǎng)度,能夠增加單幅圖像攜帶秘密信息位數(shù),從而提高隱寫容量。
表1 隱寫容量對(duì)比Table 1 Steganographic capacity comparison
使用celebA原始圖像、BEGAN隱寫后圖像以及BEGAN無(wú)隱寫圖像各10 000張,通過文獻(xiàn)[17]中的隱寫分析算法進(jìn)行檢測(cè)。檢測(cè)共分兩種情況:第一種情況是BEGAN隱寫后的圖像與BEGAN無(wú)隱寫圖片之間的對(duì)比,即含密圖像與生成圖像之間的分類準(zhǔn)確率;第二種情況為BEGAN無(wú)隱寫圖像與celebA真實(shí)圖像數(shù)據(jù)集之間的對(duì)比,即生成圖像與真實(shí)圖像之間的分類準(zhǔn)確率。通過實(shí)驗(yàn)分析計(jì)算得到:第一種情況的分類準(zhǔn)確率為0.499,說明生成的含密圖像和不含密的生成圖像之間不可區(qū)分;第二種情況的分類準(zhǔn)確率為0.98,說明即使區(qū)分出是否為生成圖像,也很難區(qū)分生成的圖像中是否含有秘密消息,該方法抗隱寫分析能力較強(qiáng)。
本文將模型的訓(xùn)練時(shí)間與隱寫時(shí)間進(jìn)行對(duì)比分析,模型的訓(xùn)練時(shí)間指模型在搭建完畢后,開始訓(xùn)練時(shí)算起,直到模型訓(xùn)練到指定輪數(shù)中間所消耗的時(shí)間;隱寫時(shí)間即實(shí)現(xiàn)隱寫方案所用時(shí)間。經(jīng)實(shí)驗(yàn)發(fā)現(xiàn),DCGAN模型及其提取器的訓(xùn)練時(shí)間為32 400秒,而BEGAN模型及其提取器的訓(xùn)練時(shí)間為28 800秒,在訓(xùn)練時(shí)間上比DCGAN快3 600秒,驗(yàn)證了BEGAN采用自編碼器能夠快速收斂的優(yōu)點(diǎn)。在隱寫方案的實(shí)施上,本文對(duì)1 000 bit秘密消息進(jìn)行隱藏,由于DCGAN方案輸入噪聲為100 bit,需要生成10張隱寫圖像;BEGAN方案輸入噪聲為128 bit,需要生成8張圖像。上述兩種方案所用時(shí)間分別為71.69秒和37.47秒,BEGAN方案的隱寫時(shí)間比DCGAN方案快34.22秒。不僅由于BEGAN本身結(jié)構(gòu)更優(yōu),其隱寫固定秘密信息長(zhǎng)度所需生成的圖像數(shù)量也比DCGAN方案少,使得在時(shí)間復(fù)雜度上,基于BEGAN模型的隱寫方案表現(xiàn)更好。
本文提出了基于BEGAN的新型生成式隱寫模型,且首次將圖像質(zhì)量作為生成式隱寫的評(píng)價(jià)方法。與文獻(xiàn)[7]中方案相比,本文采用了基于解碼的BEGAN用于含密圖像生成,同時(shí)采用高維的噪聲驅(qū)動(dòng),并利用基于編碼器的消息提取器實(shí)現(xiàn)穩(wěn)健的消息提取。實(shí)驗(yàn)結(jié)果表明本文方案在隱寫容量、抗隱寫分析能力以及生成的含密圖像質(zhì)量上均有所提高。另外,在生成式隱寫中更換更強(qiáng)大的生成模型并適當(dāng)增大噪聲長(zhǎng)度,能夠增強(qiáng)生成的含密圖像質(zhì)量以及增大隱寫容量。下一步考慮采用生成圖像質(zhì)量更好、隱寫容量更大的模型來(lái)實(shí)現(xiàn)隱寫方案。