深度學習之文本生成圖片

Text2Image

Goal

  • 從描述圖像的文字生成:
    • 照片般真實的圖片
    • 抽象的卡通圖片

Evaluation

  • Inception score

    • 評估生成圖像的質量和多樣性(在ImageNet上訓練)
    • 不能反映生成圖片和文本的匹配程度
  • Human evaluation

    • 對多個模型的結果進行排序

VAE

Generating images from captions with attention (36 x 36)

Mansimov, Elman, Parisotto, Emilio, Ba, Lei Jimmy, and Salakhutdinov, Ruslan. Generating images from captions with attention. In Proceedings of the ICLR. 2016.

Paper鏈接 cited 125

Code鏈接 star492

會議:ICLR. 2016.

align-DRAW
  • 本文使用自動循環(huán)編碼加上注意力機制,迭代的根據文章中的單詞繪制相應的部分圖像
  • 可以從在訓練集中沒有見過的句子生成合理的圖像碳褒,例如“停車標志在藍天飛行”
  • 利用GAN在最后一步來優(yōu)化圖片
  • 生成的圖像不夠真實瞧哟,物體區(qū)域是一塊一塊模糊的圖像
  • 生成的圖像是低分辨率36x36

缺點:

  • VAE的缺點也很明顯赴魁,他是直接計算生成圖片和原始圖片的均方誤差恩伺,而不是像GAN那樣去對抗來學習蜒谤,這就使得生成的圖片會有點模糊
  • 在圖像領域中赋兵,由于VAE生成的圖片偏模糊,因此大家通常更關心VAE作為圖像特征提取器的作用桦他。
結果
image

GAN

Generative adversarial text to image synthesis (64 x 64)

Reed, Scott, Akata, Zeynep, Yan, Xinchen, Logeswaran, Lajanugen, Schiele, Bernt, and Lee, Honglak. Generative adversarial text to image synthesis. In Proceedings of ICML 2016

Paper鏈接 cited 634

Code鏈接 star 283

會議:ICML 2016

DC-GAN with encoded text features
  • 首次證明了cGAN可以用來比較好的從文本描述中生成肉眼可接受的圖像
  • 缺乏逼真的細節(jié)和圖像中對象的一些部位蔫巩,例如鳥的眼睛和鳥喙(hui)
  • 生成了肉眼可以接受的64x64分辨率的圖像
    • 模型上只有簡單的一個GAN結構,如果盲目的上采樣增加分辨率快压,會導致GAN訓練不穩(wěn)定圆仔,并且產生無意義的輸出
    • 也就是模型限制了分辨率的大小
    • image
結果
image

Learning what and where to draw (128 x 128)

Reed, Scott E, Akata, Zeynep, Mohan, Santosh, Tenka, Samuel, Schiele, Bernt, and Lee, Honglak. Learning what and where to draw. In Advances in NIPS 2016.

Paper鏈接 cited129

Code鏈接

會議:NIPS 2016

GAWWN (Generative Adversarial What-Where Network)
  • 圖片中目標對象的(額外信息)位置和尺寸可以幫助提升生成圖像的質量和對文本的解釋質量
  • 產生了128x128的高分辨率圖像

Plug & play generative networks: Conditional iterative generation of images in latent space(227x227)

Nguyen, Anh, Clune, Jeff, Bengio, Yoshua, Dosovitskiy, Alexey, and Yosinski, Jason. Plug & play generative networks: Conditional iterative generation of images in latent space. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 2017.

Paper鏈接 cited181

Code鏈接 star 484

會議:CVPR 2017

PPGAN
  • 訓練好GAN,用預訓練的分類器當作編碼器對圖片x提取特征h蔫劣,這個h當作初始輸入坪郭,然后通過不斷迭代去修改h的值,去獲得效果更好的圖片
  • 需要多次低效的迭代來優(yōu)化
  • 生成了227x227的高分辨率圖像
結果
image

StackGAN (256 x 256)

Zhang, Han, Xu, Tao, Li, Hongsheng, Zhang, Shaoting, Wang, Xiaogang, Huang, Xiaolei, and Metaxas, Dim- itris N. Stackgan: Text to photo-realistic image synthesis with stacked generative adversarial networks. In The IEEE International Conference on Computer Vision, 2017.

Paper鏈接 cited 318

Code鏈接 star 1264

Code鏈接 star 486

會議:ICCV 2017

挑戰(zhàn)
  • 當前的方法可以理解文字描述中的意思脉幢,但是不能包含必要的細節(jié)和逼真的圖像中對象的一些子部位
  • 當前的方法難以從文本描述中產生高分辨率并且很逼真的圖像
本文的創(chuàng)新點
  • 把生成高質量圖片這個復雜問題分解成了一些更好控制的子問題
  • 第一次從文本描述中生成256x256分辨率的擁有逼真的細節(jié)的圖像
    • 使用兩個堆疊的GAN來解決
      • Stage-I GAN:
        • 畫出了基于給定的文本描述的草圖歪沃,生成了初步的低分辨率的圖像
        • 包括圖像中的對象的最初的形狀和基本的顏色
        • 并且從隨機噪聲向量中繪制了背景的布局
      • Stage-II GAN:
        • 糾正了第一階段產生的低分辨率圖像的錯誤
        • 再次閱讀給出的句子,完成了圖像中對象的細節(jié)部分的繪制
        • 生成了高分辨率并且逼真的圖像
  • 提出了一個條件增強技術(Conditioning Augmentation technique)來處理cGAN在訓練時的穩(wěn)定性嫌松,也增加了訓練樣本的多樣性
    • 利用cGAN之前常用的方法是把文本編碼的結果直接當作條件輸入
      • 這會導致特征空間的不連續(xù)沪曙,不利于生成器的訓練
        • 一方面因為文本embedding后的特征空間通常是高維度的(大于100維度)
        • 只有有限的訓練數據
    • 提出的條件增強技術是從一個以text embedding的均值和協方差函數為變量的高斯分布中抽取隱含變量
      • 一方面可以增加訓練的樣本數量,因為每次輸入都是不同的
      • 另一方面使得訓練過程中GAN對于輸入條件多樣性的擾動更加robust
缺點
  • 沒有用端到端的訓練方法萎羔,需要先訓練第一階段液走,然后再訓練第二階段
  • 它的條件輸入是全局的句子向量,丟失了細粒度的單詞級別的信息,在圖像中同樣會丟失相應的細節(jié)
架構圖
image
  • CA-1
    • 將text embedding ?t 送到一個全連接層中以此來生成 μ0 和 σ0育灸,得到高斯分布 N
    • 從高斯分布中采樣得到文本條件變量c0
    • 將 c? 0 和噪聲向量 z 連接起來作為Stage-1 Generator的輸入
  • Stage-1 Generator
    • 經過一些列“升維塊”(upsampling block)之后腻窒,會生成大小為 W0×H0 的圖片
  • Stage-1 Discriminator
    • 首先利用全連接層將 ?t 壓縮到 Nd 維
    • 將其在空間上進行復制,形成一個 Md×Md×Nd 的張量
    • 將圖片送到一系列“降維塊”(downsampling block)中磅崭,使其具有 Md×Md×Nf 的空間結構
    • 然后將圖片的tensor和文本的tensor沿著channel的維度連接的一起
    • 將結果送到 1×1 的卷積層當中儿子,聯合學習圖片和文本之間的關系特征
    • 最后,將特征傳送到輸出為一個節(jié)點的全連接層砸喻,得到當前圖片與文本屬于真實數據的概率柔逼。

一方面從Stage-1 GAN中得到的低分辨率圖像通常會缺少一些局部細節(jié),有時候還會造成主要目標物不同程度的形變割岛。另一方面愉适,有些存在于文本中的重要信息,也可能被忽視癣漆。 因此维咸,Stage-2 GAN在Stage-1的基礎上進行構建。

作為Stage-1條件之一的隨機變量 z惠爽,可以確保Stage-1的生成結果具有多樣性癌蓖。在這樣的假設下,本文在Stage-2階段并不使用 z 作為條件婚肆,而是采用Stage-1的生成結果 s0 作為條件

  • CA-2
    • 與CA-1共享同一個text embedding—— ?t租副,?t 由同一個預訓練的編碼器生成
    • Stage-1和Stage-2的CA會通過不同的全連接層,得到關于 ?t 的均值和方差不同
    • 通過這種方式较性,Stage-2可以學習到被Stage-1所忽略的一些有用的信息用僧。
  • Stage-2 Generator
    • 將Stage-1返回的低分辨率圖片和圖片描述的CA-2采樣結果作為GAN的條件
    • 利用殘差模塊(residual blocks)將Stage-2的生成器設計成一個“編碼-解碼網絡”(encoder-decoder network)
    • 對c進行復制,使之形成形狀為 Mg×Mg×Ng 的張量
    • 同時赞咙,將Stage-1的結果 s0 送到若干個“降維模塊”(downsampling block)中责循,直至其size變?yōu)?Mg×Mg 為止
    • 然后將文本特征和圖片特征沿著channels連接到一起,并將其送到若干個“殘差模塊”中去攀操,目的是為了學習到圖片和文本交織在一起的多模態(tài)表征院仿。
    • 最終,通過一系列的“升維模塊”(upsampling block)崔赌,也就是解碼器(decoder)意蛀,生成size為 W×H 的高分辨率圖片耸别。
  • Stage-2 Discriminator
    • 與Stage-1中的結構相似健芭,只不過由于接受的圖片size變大了,所以需要更多的“降維模塊”(downsampling block)
結果

inception的對比

inception score可以表現出類似于人的對“高質量圖片”的感知能力(但是它不能準確反應出生成的圖片和圖片描述信息之間的相關聯系)

image

上圖可以看到對于多個數據集秀姐,stackGAN都取得了state-of-art的成績

  • GAN-INT-CLS是上面提到過的Generative adversarial text to image synthesis (分辨率64x64)
  • GAWWN是上面提到過的Learning what and where to draw(分辨率128x128)
image
  • 上圖中第一排是第一個階段產生的結果慈迈,可以看到生成了大致的顏色、背景、形狀的圖像
  • 第二排是第二個階段產生的結果痒留,分辨率提高了谴麦,并且細節(jié)部分比如說頭、鳥喙等被完善了

AttnGAN (256 x 256)

Xu, Tao, Zhang, Pengchuan, Huang, Qiuyuan, Zhang, Han, Gan, Zhe, Huang, Xiaolei, and He, Xiaodong. Attngan: Fine-grained text to image generation with attentional generative adversarial networks. CoRR, abs/1711.10485, 2017.

Paper鏈接 cited 37

Code鏈接 star513

會議:CVPR, 2018.

挑戰(zhàn)
  • 大多數上述的工作都是把文字描述encode成一個全局的句子向量作為條件輸入GAN中來產生圖片
  • 這樣會缺少很多單詞級別的信息伸头,例如說“藍色的小鳥匾效,它有著白色的大肚子、黃色的圓頭恤磷,他在和一個小朋友嬉戲”面哼,從全局的句子中想要獲取每個細節(jié)的信息難免有些困難
  • 同時也一定程度的影響了高分辨率高質量的圖像的生成
模型的創(chuàng)新點
  • AttnGAN是端到端的、注意力驅動的扫步、多階段精細化的魔策、用于細粒度文字到圖像生成的架構
    • 相比stackGAN,它提供了端到端的訓練河胎、并且注意到了句子級別的細粒度的信息
  • 在生成網絡中加入了注意力機制
    • 在繪制圖像的不同區(qū)域時闯袒,會關注到和該子區(qū)域最相關的文本區(qū)域
  • 使用了Deep Attentional Multimodal Similarity Model(DAMSM)
    • 計算了生成的圖像和句子之間的相似度
    • 可以作為loss直接訓練
    • 讓GAN可以從圖像和文本匹配的角度和生成的圖片是否真實的角度來訓練生成器和判別器
網絡結構
image

Attentional Generative Network

  • m個生成器
    • 相比stackGAN,attnGAN的生成器更多了游岳,每層逐漸產生分辨率越來越大政敢、細節(jié)越來越豐富的圖片
    • 輸入是上一次產生圖片的隱藏狀態(tài)(包含圖片的特征),第一個狀態(tài)由句子特征的條件增強和噪聲生成
    • 輸出是生成的圖片
  • 注意力機制
    • 根據圖片的特征對單詞做加權吭历,得到對于生成圖片的每個子區(qū)域時(h的每一列)對單詞的注意情況
  • 目標函數
    • 生成器的loss:非條件loss希望生成更加真實的圖片堕仔,條件loss希望生成和文字符合的圖片
    • 判別器的loss:非條件loss希望判別出生成的圖片和真實的圖片,條件loss希望判別出真實圖片和文字的符合以及生成圖片和文字的符合程度

DAMSM:檢查說明文本中的每個單詞是否在實際圖像中被適當地表示

  • 兩個神經網絡將圖像和單詞映射到相同的語義空間中晌区,然后比較圖像和文字的相似度

    • text encoder:雙向LSTM摩骨,結果的每一列代表一個單詞的語義向量
    • image encoder:CNN,結果的每一列代表一個圖像子區(qū)域的語義向量朗若。使用標準的卷積神經網絡恼五,圖像被轉換成一組特征映射。 每個特征映射基本上是表示圖像的一些概念/子區(qū)域哭懈。
    • 特征映射的維數與詞嵌入的維數相等灾馒,因此它們可以被視為等價的實體。
  • attention

    • 根據說明文本中的每個單詞(token)遣总,將注意力應用于圖像子區(qū)域的特征映射上睬罗,用來計算它們的加權平均值。 這個注意力ci矢量實際是代表了圖像對單詞(token)的抽象旭斥。
    • DAMSM被訓練以最小化上述注意力向量(詞的視覺描繪)和詞嵌套(詞的文本含義)之間的差異容达。
    • 實際是試圖把文字的“綠色”部分盡可能地變成圖像中的“綠色”。
  • DAMSM被稱為“多模態(tài)”(multimodal)的原因是因為它定義了一個結合兩種理解模式(視覺和文本)的目標垂券。

結果

inception分數

image

可以看到在coco數據集上花盐,attnGAN的分數是之前的分數的三倍左右

  • GAN-INT-CLS是上面提到過的Generative adversarial text to image synthesis (分辨率64x64)
  • GAWWN是上面提到過的Learning what and where to draw(分辨率128x128)
  • StackGAN是上文提到的Stackgan: Text to photo-realistic image synthesis with stacked generative adversarial networks(256x256)
  • stackGAN-v2是StackGAN++: Realistic Image Synthesis with Stacked Generative Adversarial Networks
  • PPGN是上文提到的Plug & play generative networks: Conditional iterative generation of images in latent space(227x227)
image

上圖可以看到Attn生成的兩個階段:

  • h(1)最關注的單詞:鳥,這,有算芯,腹部柒昏,白色
  • h(2)最關注的單詞:黑色,綠色熙揍,白色职祷,這個,鳥
    • 這些單詞包含更多的描述信息
    • 也注意到了更細節(jié)的部位
  • 由h(2)的單詞届囚。 你可以從字面上看到x(2)是x(1)的更豐富多彩的版本堪旧。
缺點
  • 上述基于GAN的像素級別的生成目前多focus在單個對象的生成
  • 如果要根據文本,在圖像中生成有多個交互對象的復雜的場景奖亚,從像素級別來理解這種高層次的語義信息則會十分困難淳梦。

Seq2Seq

Text2Scene: Generating Abstract Scenes from Textual Descriptions (Abstract Scene)

Paper鏈接 cited1

Code鏈接 無

會議:Arxiv preprint, 2018

目標
  • 根據語言文本描述的場景生成抽象的圖像表示(這篇文章中可以理解成卡通圖片)
  • 這個圖像表示中包括了多個對象的空間布局以及每個對象的屬性,包括姿勢昔字、表情等
挑戰(zhàn)
  • 輸入的描述語言中可能間接的暗示了對象的某些屬性(局部屬性)
    • 例如“Mike is surprised”應該改變mike的臉部表情
  • 輸入文本可能會包含復雜的空間屬性的信息(空間屬性)
    • 例如“Jenny is running towards Mike and the duck” 表示jenny跑的方向依賴于mike和duck的位置
  • 輸入的文本可能會間接的暗示圖像中有一個對象或者一組對象(數量)
    • 例如“some people” 暗示著圖像中應該有多個人
架構

TEXT2SCENE是一個數據驅動的基于Seq2Seq的端到端的模型爆袍,包括如下三個部分:

  • text encoder
    • image
    • 把輸入的句子映射到嵌入向量的表示
    • 結構:雙向GRU
  • 場景表示:
    • image
    • 場景表示的網絡使用卷積GRU(ConvGRU)
    • 根據當前場景卷積操作后的特征、和上一次生成場景的隱含狀態(tài)作郭,生成當前場景的隱含狀態(tài)
  • object decoder
    • 根據當前生成的圖像和輸入的信息預測下一個要生成的對象
    • image
    • 第一個式子表示:根據對當前畫布做加權陨囊,池化后,得到對當前場景的注意力向量
    • 第二個式子表示:根據畫布的注意力結果和上一步預測的結果夹攒,來對輸入的文本做加權得到文本的注意力結果蜘醋。
    • 第三個式子表示:根據畫布的注意力結果、文本的注意力結果得到這次預測的結果
      • 其中因為畫布的表示只表示出了畫布中整體的信息咏尝,但是對于一些局部的压语、小的對象,畫布表示h不能很好的表示出來
      • 所以增加了一項上一次預測的結果编检,來幫助這一次的預測
  • attribute decoder
    • 決定上一步預測的對象的屬性胎食,包括位置和其他細節(jié)屬性(比如說臉的朝向)
    • image
    • 第一個式子表示:根據上一次預測的對象,放大對應文本的上下文
    • 第二個式子表示:根據放大后的上下文允懂,關注到畫布上對應的區(qū)域
    • 第三個式子表示:根據放大的上下文以及相關的畫布厕怜,得到上一次預測的對象的相關屬性,包括位置和其他屬性(例如臉部朝向蕾总、大小等)
pipeline && 例子
image
  • pipeline

    • 給定一個二維的畫布
    • 關注當前的文字粥航,決定接下來要繪制的對象是什么
    • 關注剛才決定繪制對象對應文字的上下文
    • 關注上下文中提到的屬性,并一同加到繪制的對象身上
  • 例子

    • 從第二張圖開始生百,關注度最高的對象是sandbox递雀,關注的屬性也是sandbox,所以就畫了一個sandbox
    • 第三張圖:關注的對象是mike置侍,關注的屬性是holding映之,所以產生了一個有拿著的姿勢的mike
    • 第四張圖:關注的對象式jenny,關注的屬性式sitting蜡坊,所以產生了一個坐著的jenny
評估方法
  • 自動評估
    • 單個物品的precision/recall
    • 邊界框有重合的兩個物品的precision/recall
    • 姿勢和表情的分類精度
    • 單個物品和多個物品的邊界框的寬高比和坐標的歐式距離
  • 人工評估
    • 描述下列文本的特征圖像是否捕捉到了杠输,包括三個答案:true false uncertain
      • 文本中出現的一個對象
      • 文本中出現的有語義關系的兩個對象
      • 對象的位置
      • 對象的臉部表情
結果
image

在上述評價指標中,基本上都取得了state-of-art的結果

數據集
  • 戶外玩的剪貼畫形象和物品

    • 包括1000個場景
    • 58個剪貼畫
    • 每個剪貼畫有3種尺寸秕衙、7中姿勢蠢甲、5個表情、兩個臉部朝向
  • 句子

    • 每個場景包括三個描述的句子
    • 詞匯量是2538個英文單詞

總結

使用cGAN的方法
  • 在像素級別產生圖像
  • 優(yōu)點:更加靈活据忘,更加適合真實的場景鹦牛,可以生成更真實的紋理
  • 缺點:很難建模復雜的場景,尤其是包括多個對象并且對象之間有交互的場景
Seq2Seq的方法(用在剪貼畫上)
  • 使用語義元素來逐個生成勇吊,避免了像素級別的生成紋理信息等操作
  • 把生成布局作為單獨的任務曼追,可以借鑒到生成真實場景圖像中
  • 需要利用其他圖像出現的共同的pattern來生成當前的圖像
使用對話的方法
  • 優(yōu)點:使得生成的任務更加沒有歧義,對話可以提供更具體汉规、更細節(jié)的描述
  • 缺點:目前的工作只能用于及其的描述和繪畫礼殊,暫時不適用于人類的描述或者繪畫
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市针史,隨后出現的幾起案子晶伦,更是在濱河造成了極大的恐慌,老刑警劉巖啄枕,帶你破解...
    沈念sama閱讀 222,865評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件婚陪,死亡現場離奇詭異,居然都是意外死亡频祝,警方通過查閱死者的電腦和手機泌参,發(fā)現死者居然都...
    沈念sama閱讀 95,296評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來常空,“玉大人及舍,你說我怎么就攤上這事】弑粒” “怎么了锯玛?”我有些...
    開封第一講書人閱讀 169,631評論 0 364
  • 文/不壞的土叔 我叫張陵,是天一觀的道長兼蜈。 經常有香客問我攘残,道長,這世上最難降的妖魔是什么为狸? 我笑而不...
    開封第一講書人閱讀 60,199評論 1 300
  • 正文 為了忘掉前任歼郭,我火速辦了婚禮,結果婚禮上辐棒,老公的妹妹穿的比我還像新娘病曾。我一直安慰自己牍蜂,他們只是感情好,可當我...
    茶點故事閱讀 69,196評論 6 398
  • 文/花漫 我一把揭開白布泰涂。 她就那樣靜靜地躺著鲫竞,像睡著了一般。 火紅的嫁衣襯著肌膚如雪逼蒙。 梳的紋絲不亂的頭發(fā)上从绘,一...
    開封第一講書人閱讀 52,793評論 1 314
  • 那天,我揣著相機與錄音是牢,去河邊找鬼僵井。 笑死,一個胖子當著我的面吹牛驳棱,可吹牛的內容都是我干的批什。 我是一名探鬼主播,決...
    沈念sama閱讀 41,221評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼社搅,長吁一口氣:“原來是場噩夢啊……” “哼渊季!你這毒婦竟也來了?” 一聲冷哼從身側響起罚渐,我...
    開封第一講書人閱讀 40,174評論 0 277
  • 序言:老撾萬榮一對情侶失蹤却汉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后荷并,有當地人在樹林里發(fā)現了一具尸體合砂,經...
    沈念sama閱讀 46,699評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,770評論 3 343
  • 正文 我和宋清朗相戀三年源织,在試婚紗的時候發(fā)現自己被綠了翩伪。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,918評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡谈息,死狀恐怖缘屹,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情侠仇,我是刑警寧澤轻姿,帶...
    沈念sama閱讀 36,573評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站逻炊,受9級特大地震影響互亮,放射性物質發(fā)生泄漏。R本人自食惡果不足惜余素,卻給世界環(huán)境...
    茶點故事閱讀 42,255評論 3 336
  • 文/蒙蒙 一豹休、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧桨吊,春花似錦威根、人聲如沸凤巨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,749評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽敢茁。三九已至,卻和暖如春姥卢,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背渣聚。 一陣腳步聲響...
    開封第一講書人閱讀 33,862評論 1 274
  • 我被黑心中介騙來泰國打工独榴, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人奕枝。 一個月前我還...
    沈念sama閱讀 49,364評論 3 379
  • 正文 我出身青樓棺榔,卻偏偏與公主長得像,于是被迫代替她去往敵國和親隘道。 傳聞我的和親對象是個殘疾皇子症歇,可洞房花燭夜當晚...
    茶點故事閱讀 45,926評論 2 361