賽題背景
文本到圖像模型的流行已經摒棄了一個(ge) 全新的提示工程領域。一部分是藝術,一部分是懸而未決(jue) 的科學,機器學習(xi) 從(cong) 業(ye) 者和研究人員正在迅速努力理解提示與(yu) 其生成的圖像之間的關(guan) 係。
將“4k”添加到提示中是使其更具攝影性的最佳方式嗎?提示中的小擾動會(hui) 導致高度不同的圖像嗎?提示關(guan) 鍵字的順序如何影響生成的場景?本次比賽的任務是創建一個(ge) 模型,該模型可以可靠地反轉生成給定圖像的擴散過程。
賽題任務
本次比賽的目標是扭轉生成文本到圖像模型的典型方向,不是從(cong) 文本提示生成圖像,而是可以創建一個(ge) 模型來預測給定生成圖像的文本提示。
評價指標
使用預測和實際提示嵌入向量之間的平均餘(yu) 弦相似度得分來評估提交。
優勝方案
第2名
https://www.kaggle.com/competitions/stable-diffusion-image-to-prompts/discussion/410606
我的解決(jue) 方案和public notebook中基於(yu) ViT的方法基本一致。我通過運行 Stable Diffusion 創建了自己的數據集,並訓練了一個(ge) 模型以監督的方式預測句子嵌入。
進行了以下修改以將 fp16 的生成速度提高 4 倍:將調度程序從(cong) DDIM 更改為(wei) DPMSolver++ (diffusers.DPMSolverMultistepScheduler),並將步數從(cong) 50 更改為(wei) 16。
從(cong) Microsoft COCO Captions的字幕用於(yu) 生成圖像。在訓練和驗證中,從(cong) 大約 60 萬(wan) 個(ge) 字幕生成了 50 萬(wan) 張圖像。
為(wei) 了創建更加多樣化的提示集,我利用了Open Images Dataset V3 (OID) 和 Image-To-Text 預訓練模型中的自然圖像。來自 OID 的圖像被輸入到 Image-To-Text 模型,生成的標題作為(wei) 提示被輸入到 StableDiffusion。OID 包含 9M 自然圖像,其中前 5M 用於(yu) 生成。
最終提交中使用了以下四種模型。
- ConvNeXt xxlarge ( CLIP-convnext_xxlarge-laion2B-s34B-b82K-augreg-rewind )
- BLIP-2 VisionModel (EVA01-g?, Salesforce/blip2-opt-2.7b )
- EVA02-L ( timm/eva02_large_patch14_clip_336.merged2b_s6b_b61k )
- EVA02-e ( timm/eva02_enormous_patch14_plus_clip_224.laion2b_s9b_b144k )
提高分辨率也有顯著效果。CLIP 模型通常以 224 的分辨率進行訓練,但我認為(wei) 224 不利於(yu) 識別包含多個(ge) 對象的複雜上下文。
第3名
https://www.kaggle.com/competitions/stable-diffusion-image-to-prompts/discussion/410686
我的方法基於(yu) CLIP 模型,我使用了大約 400K 數據。Diffusion DB 的validation score 與(yu) LB score 相關(guan) 性很好,但仍有0.025 ~ 0.03 的差距。
外部數據集包括:
- Vizwiz image caption ~70k
- Diffusion DB, 300k
- COCO, 25k
- Lexica.art, 10k
微調 CLIP 模型需要格外小心,我們(men) 必須盡可能保持原始 CLIP 權重以獲得最佳性能。我發現以下兩(liang) 種方法總共將分數提高了 ~ +0.02,並且花了很多時間來尋找最佳超參數。
- LP-FT(線性探頭然後微調)
- EMA 和逐層學習率衰減的結合
數據集增強:
- Crop/RandomErase/RandAug(無色調分離、曝光和均衡)
- 相同的提示和不同的種子
- 隱形水印增強
第4名
https://www.kaggle.com/competitions/stable-diffusion-image-to-prompts/discussion/410798
文本檢索使用預訓練的CLIP-bigG從(cong) 56M 預計算文本嵌入中進行 top-k 詳盡搜索,然後使用預訓練的CLIP-H14進行餘(yu) 弦相似度過濾。
CLIP從(cong) 160 萬(wan) 個(ge) “提示組件”的集合中預計算的 CLIP-bigG 文本嵌入。使用預先計算的文本嵌入並將提示組件合並到提示中的 Top-k 檢索。
Prompt數據集來源:
- Caption Set (Text Retrieval + Image Generation)
- WIT (Text Retrieval + Image Generation)
- Generated Prompts (Text Retrieval + Image Generation)
- YFCC 100M open subset (Text Retrieval only)
- Laion CoCo (Text Retrieval only)
- Datacomp Small (Text Retrieval only)
- Prompt Components (Interrogator only)
第5名
我們(men) 的方法涉及訓練多個(ge) 圖像模型以直接從(cong) 圖像預測提示嵌入(由句子轉換器生成),然後集成這些模型的預測。最終提交的是四個(ge) 模型的集合:
- eva02_large
- convnext_xxlarge
- convnext_large
- vit_large
dataset name | # of prompts | images per prompt | Total images |
---|---|---|---|
cc3m | 249,593 | 3 | 748,781 |
lexica | 67,101 | 3 | 201,303 |
diffusiondb | 326,035 | 3 | 978,105 |
cc3m part2 | 1,166,852 | 1 | 1,166,852 |
diffusiondb part2 | 1,371,480 | 1 | 1,371,480 |
mscoco | 197,527 | 3 | 592,583 |
Total: | 3,378,588 | 1or3 | 5,059,104 |
第6名
https://www.kaggle.com/competitions/stable-diffusion-image-to-prompts/discussion/410768
從(cong) 圖像/視頻字幕數據集的字幕創建 8.87M SD2 生成的圖像,並在對數據集進行去重/預處理之後,使用 timm 最新的主幹(即 eva、convnext、swin)訓練生成的圖像。
對於(yu) 訓練數據集,豐(feng) 富的詞匯和適度的文本字幕長度對我來說很重要,所以我根據這兩(liang) 個(ge) 因素選擇了數據集。
第7名
https://www.kaggle.com/competitions/stable-diffusion-image-to-prompts/discussion/410618
我們(men) 假設訓練數據將在本次比賽中發揮重要作用,因此我們(men) 開始盡快使用 Stable Diffusion 生成自定義(yi) 圖像。我們(men) 試圖收集一組不同的提示,通常使用競爭(zheng) 指標將它們(men) 的餘(yu) 弦相似度限製為(wei) 小於(yu) 0.7。我們(men) 從(cong) 以下來源過濾了我們(men) 認為(wei) 質量最高、相關(guan) 性低的提示:
- Diffusion DB
- Conceptual Captions
- COCO image captions
- Flickr Image Captions
- The ChatGPT prompts
我敢肯定,我們(men) 大多數人一開始都在努力尋找一個(ge) 好的驗證集。我們(men) 發現確保我們(men) 的驗證提示來自各種來源並且與(yu) 我們(men) 的訓練數據具有低相關(guan) 性非常重要。
由於(yu) 我們(men) 使用的是 CLIP 模型,可以初始化模型的投影頭,將 CLIP 主幹輸出映射到競賽使用的 384 嵌入。我們(men) 使用自定義(yi) 提示生成器生成一百萬(wan) 個(ge) 隨機提示,並使用 CLIP 模型的文本塔創建它們(men) 的文本嵌入,並使用比賽模型all-MiniLM-L6-v2進行嵌入。
評論已經被關(guan) 閉。