1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          Stable DiffusionStable Diffusion 原理

          來源:互聯網轉載 時間:2024-01-29 08:00:49

          Stable Diffusion原理

          此文為譯文,原文見:

          https://stable-diffusion-art.com/how-stable-diffusion-work/

          Stable Diffusion是一個深度學習模型,我們會深入解析SD的工作原理。

          1. Stable Diffusion能做什么

          直白地說,SD是一個text-to-image模型,通過給定text prompt(文本提示詞),它可以返回一個匹配文本的圖片。

          2. Diffusion 模型

          Stable Diffusion屬于深度學習模型里的一個類別,稱為diffusion models(擴散模型)。這類模型時生成式模型,也就是說它們用于生成新的數據,這類新數據類似于它們訓練時的數據。對于SD來說,這類新數據便是圖片。

          為什么叫diffusion model?因為它的數學公式看起來非常像物理上的擴散現象。下面我們具體介紹它的原理。

          假設我們訓練了一個diffusion model,訓練時只給了2類圖片:貓與狗。如下圖所示,左邊便是送入訓練的貓與狗的圖片。

          2.1. 前向擴散

          前向擴散將圖片轉為噪點(圖片基于此文圖片進行修改 this article)

          前向擴散的過程是給訓練圖片添加噪點的過程,并逐漸將圖片轉為一個反常的噪點圖。也就是會將任何貓或狗的圖片轉為一張噪點圖,并最終無法辨認噪點圖對應的初始圖片是貓還是狗(這點非常重要)。

          這個過程就像是滴入了一滴墨水到一杯水里,墨水在水里diffuses(擴散)。在幾分鐘后,墨水會隨機分散并融入水中。且無法判斷它最初是從水杯的中心滴入,還是從邊緣滴入。

          下面是一張圖經歷前向擴散的過程。貓的圖片轉為了一張隨機噪點圖。

          ?

          2.2. 反向擴散

          然后再看反向擴散部分。我們預期的表現是:輸入一張噪點圖(毫無意義的圖),反向擴散(reverse diffusion)可以將這張噪點圖恢復為一張貓或狗的圖片。這就是反向擴散的主要思想。

          從技術角度來說,每個擴散過程分為2部:

          1. 漂移或定向運動(例如,針對這個案例來說,噪點圖要么偏向狗的方向,要么定向于貓的方向)
          2. 隨機移動

          反向擴散會朝著貓或狗的圖片方向進行漂移,但絕對不會停留在中間狀態。這也是為什么結果智能是貓或狗的圖片。

          3. 訓練過程

          從反向擴散的角度來說,我們需要知道有多少“噪點”加入到了某張圖片里?;卮鸫藛栴}的方式便是:訓練一個神經網絡來預測添加的噪點。這個在SD里稱為噪點預測器(noise predicator)。其本質是一個U-Net模型。

          訓練流程為:

          1. 選擇一張訓練圖(例如一張貓的圖片)
          2. 生成隨機的噪點圖
          3. 給這張圖繼續增加多輪噪點
          4. 訓練noise predictor,預測加入了多少噪點。通過神經網絡訓練權重,并展示其正確答案

          更詳細的原理可以參考:

          https://www.bilibili.com/video/BV1bm4y1A7v7/

          按順序每步都增加噪點,noise predictor預測每步增加的噪點

          在訓練后,便可得到一個noise predictor,可以預測一張噪點圖中,加入到圖片的噪點信息。

          3.1. 反向擴散

          現在我們有了noise predictor(噪點預測器),應該如何使用?

          我們首先生成一張完全隨機的圖片,并讓noise predictor告訴我們噪點是什么。然后從原圖中移除噪點。并重復此過程多次,最終遍得到一張貓或狗的圖片。

          可以看到在這個生成貓或狗的圖片的過程中,我們沒有加入任何人為控制。這個“人為控制”是我們后續會討論到的條件“conditioning”。當前來說,圖片的生成是unconditioned。

          更多有關反向擴散采樣于采樣器的信息,可以參考文章:

          https://stable-diffusion-art.com/samplers/

          4. Stable Diffusion模型

          現在我們需要強調的是:上面討論的過程并非是SD工作的原理。

          原因是:由于上述擴散過程是在圖片空間里完成的,所以它的計算過程是非常非常慢的。上述過程基本無法在單個GPU上運行。

          圖片空間太廣闊了。試想:一張512 x 512的圖片(包含3個顏色通道:紅、綠、藍),它的空間是786,432維。也即是說我們要為一張圖片指定這么多的值。

          Diffusion模型如谷歌的Imagen以及Open AI的DALL-E都是在像素空間的,他們使用了一些技巧讓模型運行更快,但是仍不夠快。

          4.1. Latent diffusion模型

          Stable Diffusion便是用于解決速度問題的,它是一個latent diffusion model(潛擴散模型)。其方式是將圖片壓縮到一個“潛空間”(latent space)中,而不是在高維的圖片空間里工作。

          潛空間比圖片空間小了48倍,所以它可以節省大量計算,繼而運行速度更快。

          4.2. Variational Autoencoder

          如何將圖片壓縮到潛空間?使用的技術是variational autoencoder(變分自動編碼器),也即為VAE文件。

          VAE神經網絡包含2部分:Encoder與Decoder。

          Encoder將一張圖片壓縮到“潛空間”里的一個低維空間表示。Decoder從“潛空間”里的表示恢復為一張圖片。

          SD模型的潛空間為4 x 64 x 64 維,比圖片的像素點空間要小48倍。前面提到的前向與反向擴散都是在潛空間里完成。

          所以在訓練時,不再是生成一張噪點圖,而是在潛空間里生成一個隨機張量(tensor)。并且在給圖片每一步增加噪點時,也不再是給圖片增加噪點,而是給圖片在潛空間里的張量增加潛噪點。這么做的原因當然是由于潛空間更小,執行速度更快。

          4.3. 圖像分辨率

          圖像分辨率會反映在潛空間里對應圖片張量的大小。對于512 x 512的圖片來說,其在潛空間里的大小為4 x 64 x 64。而對于768 x 512的人像圖來說,對應潛空間張量的維度即為4 x 96 x 64。這也是為什么需要更長的時間與資源生成分辨率更高的圖片。

          由于Stable Diffusion v1是在512 x 512的圖片上進行的fine tune,所以若是生成超過512 x 512 大小的圖片時,會導致有重復的對象。例如生成的人物有“雙頭”問題。如果一定要用v1版本,則至少先保持512像素,然后在使用AI upscaler工具生成更高的分辨率。

          4.4. 為什么潛空間是合理的

          為什么VAE可以壓縮一張圖片到非常小的一個潛空間而不損失信息呢?這是因為:自然圖片并非是隨機的,它們有很高的規律性。例如,一張臉上,鼻子、臉頰和嘴巴之間有特定的空間關系。一只狗有4只腿并且有特定的形狀。

          換句話說,高維的圖片是人為的。自然圖像可以輕松地壓縮到較小的潛空間中,而不會丟失任何信息。這在機器學習中被稱為流形假設。

          4.5. 潛空間里的反向擴散

          下面是SD模型里反向擴散在潛空間里的工作流程:

          1. 生成隨機的潛空間矩陣
          2. Noise predictor預測潛矩陣的噪點
          3. 將預測的噪點從潛矩陣中去除
          4. 重復步驟2與3,直到特定的采樣步數
          5. VAE的decoder將潛矩陣轉為最終圖片

          4.6. VAE文件是什么?

          在Stable Diffusion v1里,VAE files用于提升眼睛與臉的準確度。它們實際上是我們前面提到的autoencoder中的decoder。通過進一步的fine-tune decoder,模型可以生成出更多的細節。

          5. Conditioning(條件)

          到目前為止,我們還沒介紹文本是如何影響圖片生成的。如果沒有文本prompt的影響,SD模型也不會是一個text-to-image模型。我們可以得到一張貓或狗的圖片,但是沒有方式來控制它。

          這部分就是“條件”(conditioning)要做的事情?!皸l件”的目的便是引導noise predictor,讓其知道:在抽取預測的噪點后,我們需要的是什么。

          5.1. 文本條件(text-to-image)

          下面展示的是:文本提示(text prompt)如何處理并輸入到noise predictor:

          首先,Tokenizer(分詞器)將每個輸入的單詞轉為一個數,稱為token。每個token然后轉為一個768維的向量,稱為詞嵌入(embedding)。詞嵌入然后由Text Transformer處理,并可以被Noise predictor進行消費。

          可以使用這個notebook來檢查prompt的token與embedding。

          5.2. Tokenizer

          ?

          文本提示詞首先由一個CLIP tokenizer做分詞。CLIP是一個深度學習模型,由Open AI開發,用于為任何圖片生成文本描述。Stable Diffusion v1使用了CLIP模型的tokenizer。

          Tokenization是計算機理解單詞的方式。人類可以讀懂單詞,但是計算機智能讀懂數字。所以這也是為什么文本提示詞首先要轉為單詞。

          Tokenizer只能將其在訓練過程中見到過的單詞進行分詞。例如,假設CLIP模型里有“dream”與“beach”單詞,但是沒有“dreambeach”單詞。Tokenizer會將“dreambeach”分成2個單詞“dream”與“beach”。所以,1個單詞并非代表1個token,而是有可能進一步進行拆分。

          另一個細節是:空格也是token的一部分。例如,短語 "dream beach" 產生了兩個token "dream" 和 "[space]beach"。這些標記與 "dreambeach" 產生的標記不同,后者是 "dream" 和 "beach"(beach 前沒有空格)。

          Stable Diffusion模型限制提示詞在75個單詞。

          5.3. 詞嵌入(Embedding)

          Stable diffusion v1使用Open AI的ViT-L/14模型,詞嵌入為768維的向量。每個單詞有其特定的詞嵌入向量。詞嵌入由CLIP模型決定,是在訓練過程中得來。

          為什么我們需要詞嵌入?因為有些單詞相互之間是非常相似的,我們希望利用到這些信息。例如,man、gentleman、guy的詞嵌入是非常相近的,因此它們可以相互替換。Monet、Manet以及Degas都以印象派的風格繪畫,但是方式各不相同。這些名字看起來是非常相似,但是在詞嵌入里是很不一樣的。

          在另一片文章里,我們討論的使用關鍵詞來觸發不同的風格,兩者的embedding含義是一樣的。Embedding在里面起了至關重要的作用。已經證明的是,使用合適的詞嵌入可以觸發任意對象與風格,一個fine-tune的技巧稱為textual inversion。

          5.4. 將詞嵌入輸入noise predictor

          ?

          詞嵌入需要進一步由文本轉換器(text transformer)進行處理,然后輸入到noise predictor中。這個轉換器就像是一個通用的條件(conditioning)適配器。在這個例子中,它的輸入是文本嵌入向量,但是它也可以是其他的東西,例如類別標簽,圖片,以及depth maps。轉換器不僅是進一步處理數據的組件,也提供了一種機制來加入不同的條件形式。

          5.5. Cross-attention

          文本轉換器的輸出,會被noise predictor在U-Net中使用到多次。U-Net以一個叫做cross-attention機制的方式來使用它。這即是prompt適配圖片的地方。

          這里我們使用提示詞“A man with blue eyes”作為例子。SD將單詞blue與eyes組合到一起(self-attention within the prompt),這樣便可以生成一個藍眼睛的男人,而不是穿藍襯衫的男人。然后它會使用這個信息引導反向擴散,使得最終生成的圖片包含藍色眼睛(cross-attention between 提示詞與圖片)

          一個備注:Hypernetwork是一種fine-tune Stable Diffusion模型的技術,它會操縱cross-attention網絡來注入風格。LoRA模型修改cross-attention模塊的權重來修改風格??梢钥吹?單獨修改這個模塊即可fine-tune一個SD模型的風格,說明了這個模塊有多重要。

          5.6. 其他條件

          文本提示詞并非SD模型可以參考的條件。Text prompt與depth image都可以用于depth-to-image模型的條件。

          ControlNet利用監測到的輪廓、人體姿勢等對noise predictor進行調節,可以實現對圖像生成的出色控制。

          6. Stable Diffusion step-by-step

          現在我們了解了Stable Diffusion的機制,下面我們再通過幾個例子看看底層是如何運行的。

          6.1. 文本生成圖

          在文本生成圖的場景下,我們給SD模型輸入一組文本提示詞,它可以返回一張圖片。

          Step 1. Stable Diffusion在潛空間里生成一個隨機張量。我們通過設置隨機種子seed來控制這個張量的生成。如果我們設置這個隨機種子為一個特定的值,則會得到相同的隨機張量。這就是我們在潛空間里的圖片。但是當前還全是噪點。

          ?

          Step 2. Noise predictor U-Net將潛噪點圖已經文本提示詞作為輸入,并預測噪點,此噪點同樣也在潛空間內(一個4 x 64 x 64的張量)

          ?

          Step 3. 從潛圖片中抽取潛噪點,并生成了新的潛圖片

          ?

          Step 2 與 Step 3 重復特定采樣次數,例如20次。

          Step 4. 最后,VAE的decoder將潛圖片轉回像素空間,這便是我們通過SD模型最終得到的圖片。

          下圖是圖片在每個采樣步生成的結果:

          6.1.2. noise schedule

          可以看到,整個過程是圖片是由噪點轉為干凈的的過程。大家可能會考慮到,是不是最開始幾步noise predictor的性能不夠好,所以前幾步生成的圖片仍包含噪點。這個實際上是因為我們希望在每個采樣步中得到一個預期的噪點,而不是一次性完全抹除噪點。這個稱為noise schedule。下面是一個例子:

          ?

          Noise schedule是我們定義的一個選項。我們可以選擇在每一個step中剔除等量的噪點?;蛘呤窃谧铋_始提出更多的噪點(如上圖所示)。采樣器每次剔除足夠的噪點,以達到下一步中預期的噪點。這便是我們在step-by-step圖片中見到的樣子。

          6.2. 圖生圖

          圖生圖的方法首先是在SDEdit方法中提出的。SDEdit可以應用到任何擴散模型中。所以我們也有Stable Diffusion的圖生圖模式。

          圖生圖的輸入是一張輸入圖片以及一組文本提示詞。生成的圖片會由輸入圖片以及文本提示詞兩者共同調節。例如,使用下面的簡筆畫,以及提示詞“帶莖、水滴和戲劇性照明的完美綠色蘋果照片”作為輸入,圖生圖可以將其轉換成專業繪畫。

          下面是圖生圖的具體流程。

          Step 1. 輸入圖片編碼到潛空間

          ?

          Step 2. 加入噪點到潛圖片。Denoising strength控制加入多少噪點。如果為0,則不會加入噪點。如果為1,則會加入最多的噪點,這樣潛圖片則轉為一張完全隨機的張量。

          ?

          Step 3. Noise predictor U-Net使用潛噪點圖以及文本提示詞作為輸入,并預測潛空間內的噪點(一個4 x 64 x 64 的張量)

          ?

          Step 4. 從潛圖片中剔除潛噪點,并生成新的潛圖片。?

          Step 3 與 4 重復多次,直到特定采樣步數,例如20次。

          Step 5. 最后,VAE的解碼器將潛圖片轉回像素空間,便得到了最終生成的圖片。

          ?

          現在我們知道了圖生圖的原理,它所要做的便是設置一個初始的、帶噪點的潛圖片,作為輸入圖片。如果denoising strength設置為1,則等同于文本生成圖了,因為初始的潛圖片是完全隨機的噪點。

          6.2.1. 圖像修復

          圖像修復是圖生圖里的一個特殊例子。只需將噪點加入到需要被修復的圖片。加入多少噪點同樣也由denoising strength決定。

          6.3. Depth-to-Image

          Depth-to-image是圖生圖的一個增強。它生成的圖片時,會使用depth map作為額外的條件。

          Step 1. 輸入圖片編碼到潛空間

          ?

          Step 2. MiDaS(一個是AI深度模型)基于輸入圖片預測depth map

          Step 3. 為潛圖片添加噪點。同樣,denoising strength控制加入多少噪點。

          ?

          Step 4. Noise predictor預測潛空間的噪點,由文本提示詞與depth map共同調控

          ?

          Step 5. 從潛圖片中剔除噪點,生成新的潛圖片

          ?

          Step 4 與 5 重復特定次數采樣步數。

          Step 6. VAE decoder解碼潛圖片,得到最終生成的depth-to-image圖片

          ?

          ?

          7. 什么是CFG值

          在解釋Classifier-Free Guidance(CFG)前,這篇文章仍是不夠完整的。CFG是AI藝術家們每天都在調整的一個重要參數。為了明白這個參數是做什么,我們首先了解它的前身:classifier guidance(分類器指導)。

          7.1. Classifier Guidance

          分類器指導是將圖片標簽融入擴散模型的一種方法。我們可以使用標簽來指導擴散的過程。例如,標簽“貓”可以引導反向擴散過程,從而生成貓的照片。

          Classifier guidance系數是一個參數,用于控制擴散過程應如何遵循標簽。下面是一個從這篇論文paper中摘取的一個例子。假設有3組帶標簽的圖片分別為:“貓”、“狗”、“人”。如果擴散過程沒有被指導,則模型會從每個組的所有樣本中繪制樣本,但有時它可能會畫出一張可以適用于兩個標簽的圖片。例如一個男孩撫摸一只狗的圖片。

          使用更高的classifier guidance系數,由DF模型生成的圖片將偏向于極端或是明顯的例子。如果我們讓模型生成一只貓,則它會返回明顯是一只貓的圖片而不是其他東西。

          Classifier guidance 系數控制了遵循指導的程度。在上圖中,右側的采樣比中間的采用有更高的Classifier guidance系數。在實踐中,這個比值只是向帶有該標簽的數據漂移項的乘數。

          7.2. Classifier-free guidance

          盡管classifier guidance取得了創紀錄的性能,但它仍需要一個額外的模型來提供這種指導。也就在訓練過程中帶來了些困難。

          在作者的術語中,Classifier-free guidance是一種實現“沒有分類器的分類器指導”的方法。不需要使用類別標簽以及額外的模型來做指導,而是提出了使用圖片說明并訓練一個帶條件的擴散模型來取代。這個方式與我們前面提到的“文本生成圖”的原理相同。

          它們將分類器部分作為noise predictor U-Net的條件,從而在圖像生成中實現了稱為“classifier-free”(即沒有單獨的圖片分類器)的指導。

          文本提示詞在“文本生成圖”中提供了這個指導。

          7.3. CFG值

          現在我們知道了通過“條件”實現classifier-free的擴散過程,那該如何控制這個“指導”被follow的程度呢?

          Classifier-free guidance(CFG)系數便是控制“文本提示詞”條件對擴展過程控制的程度值。在其值設置為0時,圖片生成是不附加條件的(即prompt是忽略的)。更高的值會引導擴散過程朝著提示詞方向前進。

          8. Stable Diffusion v1與v2

          下面對比v1與v2的區別。

          8.1. 模型區別

          SD v2使用OpenClip做文本詞嵌入。SD v1使用Open AI的CLIP ViT-L/14做文本詞嵌入。

          做出此變更的原因:

          1. OpenClip規模提升了5倍,更大的文本嵌入模型可以提升圖片質量
          2. 盡管Open AI的CLIP模型是開源的,但模型是使用專有數據進行訓練的。切換到OpenClip模型可以使研究人員在研究與優化模型時獲得更多的透明度,這對于長期發展是更好的

          8.2. 訓練數據區別

          Stable Diffusion v1.4 使用的訓練trained數據是:

          l? 237k steps,分辨率為256 x 256,數據集為laion2B-en

          l? 194k steps,分辨率為512 x 512,數據集為laion-high-resolution

          l? 225k steps,分辨率為512 x 512,數據集為laion-aesthetics v2 5+,使用10%的文本條件剔除

          Stable Diffusion v2使用的訓練數據為trained with:

          l? 550k steps,分辨率為256 x 256,數據集為?LAION-5B的子集。過濾了明顯色情的材料,使用LAION-NSFW classifier(punsafe=0.1參數)以及aesthetic score >= 4.5

          l? 850k steps,分辨率為512 x 512,在同樣的數據集上(分辨率>=512 x 512)

          l? 150k steps,在同樣的數據集上使用?v-objective

          l? 在 768 x 768 的圖片上繼續訓練140k steps

          Stable Diffusion v2.1是基于v2.0進行fine-tune的來:

          l? 額外55k steps訓練,同樣數據集(使用punsafe=0.1)

          l? 另外155k steps,使用punsafe=0.98

          基本上,他們在最后的訓練步驟中關閉了NSFW過濾器。

          8.3. 結果表現的區別

          用戶發現使用Stable Diffusion v2控制風格以及生成名人通常會更難。雖然Stability AI并沒有顯式過濾藝術家以及名人的姓名,但它們在v2中的效果要弱得多。這可能是由于訓練數據的不同導致的。Open AI的專有數據可能擁有更多的藝術作品和名人照片。他們的數據可能經過了高度過濾,使得每件事和每個人都看起來非常美好。

          9. 進一步閱讀

          • Stable Diffusion v1.4 press release
          • Stable Diffusion v2 press release
          • Stable Diffusion v2.1 press release
          • High-Resolution Image Synthesis with Latent Diffusion Models – research paper introducing Stable Diffusion
          • The Illustrated Stable Diffusion – Some good details in model architecture
          • Stable Diffusion 2 – Official model page
          • Diffusion Models Beat GANs on Image Synthesis – Research paper introducing classifier guidance
          • Classifier-Free Diffusion Guidance – Research paper introducing classifier-free guidance
          • Deep Unsupervised Learning using Nonequilibrium Thermodynamics – Reverse diffusion process
          標簽:STABLE DIFFUSION-
          上一篇:Pycharm激活碼
          下一篇:logstash 收集日志

          網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...

          在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...

          在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...

          騰訊圖書網加入書簽后怎么看書簽加在哪?打開騰訊圖書網的收藏列表,您可以直觀地看到您最近收藏的章節名稱。每次你點擊哪個章節的“書簽”,它都會顯示你的章節名稱,但它只會記錄你上一次收集的章節名稱,其他時間不會。先安裝QQ工具欄!然后登錄QQ,就可以看到書簽了!單擊以查找上一個書簽添加書簽里刪除的怎么恢復?1. 登錄QQ賬號,同步書簽檢索原來,QQ瀏覽器保存了很多書簽,但清理完瀏覽器緩存后,就不見了。不...

          手機QQ主題不能正常使用?系統提示稍后再試,肯定是重啟后手機和WIFI,再一次參與可以下載是否需要能夠使用。找不到隨機的主題文件,要新的直接下載。這個問題在下載主題時會每天都出現,要關機重啟手機如果沒有過會再試試吧就可以不上網下載了,估計是主題包暫時不全部丟失的緣故。手機qq主題怎么更換?1、解鎖碼手機剛剛進入系統后,再點【圖標按鈕】。oppo怎么換美化包?一這個可以直接進入主題商店,搜索全局,就...

          北京電視臺選擇欄目主持人?王為念,1959年5月1日出生,導演、主持人。王芳,電視主持人。主持北京電視臺《快樂生活一點通》 《健康生活》、《數字生活》 《身邊》、《在選擇》等節目。雷明,男,著名心理咨詢專家、管理培訓專家,現任國家人力資源開發研究會常務理事,科學院研究生院兼職教授,浙江大學MBA導師,北京陳暉心理咨詢有限公司董事長,長期專注于管理咨詢、親子教育、家庭婚姻等領域。北京衛視健康節目女主...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>