Anjing mekanik 
Castle Sea Sunset Miyazaki Animation 
Berapa banyak bunga yang jatuh 
Setengah ayam dan setengah pria, kuat 
Ayam, kamu sangat cantik 
Silakan kunjungi Skypaint, Skypaint 
Anda juga dapat memindai kode QR di WeChat dan mengalaminya pada program Mini: 
Model gambar pembuatan teks SkyPaint terutama terdiri dari dua bagian, yaitu model enkoder teks kata cepat dan model difusi. Oleh karena itu, optimasi kami juga dibagi menjadi dua langkah: pertama, berdasarkan klip openai, model enkoder teks kata cepat dioptimalkan untuk memungkinkan SkyPaint memiliki kemampuan pengakuan Cina dan Inggris, dan kemudian, model difusi dioptimalkan, sehingga SkyPaint memiliki kemampuan seni modern untuk menghasilkan gambar berkualitas tinggi.
Model Unduh Alamat Skypaint-V1.0
from diffusers import StableDiffusionPipeline
device = 'cuda'
pipe = StableDiffusionPipeline . from_pretrained ( "path_to_our_model" ). to ( device )
prompts = [
'机械狗' ,
'城堡 大海 夕阳 宫崎骏动画' ,
'花落知多少' ,
'鸡你太美' ,
]
for prompt in prompts :
prompt = 'sai-v1 art, ' + prompt
image = pipe ( prompt ). images [ 0 ]
image . save ( "%s.jpg" % prompt )———————————————————————————————————————————————————————————————————————————-
Skyclip adalah model klip yang diperoleh oleh kami menggunakan metode yang efisien untuk melatih model klip bilingual Cina dan Inggris. Metode ini hanya mengubah encoder teks klip openai, dan dapat digunakan untuk mewujudkan fungsi pengambilan gambar dan teks menggunakan klip openai.
Text_encoder dari klip openai digunakan sebagai model guru dan parameternya dibekukan. 1, L2, COS Jarak digunakan untuk secara bertahap membuat Model Siswa Hidden_State Cina dan Inggris secara bertahap mendekati model guru Hidden_State. Karena bahasa Cina dan Inggris dari corpus paralel memiliki sifat ketidaksetaraan alami, untuk membuat bahasa Cina paralel dan bahasa Inggris sedekat mungkin, kami juga menambahkan dekoder Cina selama proses pelatihan, menggunakan Cina dan Inggris Hidden_State dari model siswa sebagai input Hidden_State dari decoder, dan membantu dalam penyelarasan terjemahan bahasa Cina dan Inggris melalui decoder.
Saat ini, kami terutama mengevaluasi kinerja skyclip zero-shot di Flickr30k-CN, dan terutama membandingkan beberapa model sumber terbuka yang relevan dengan kemampuan Cina.
Pengambilan flickr30k-cn :
| Tugas | Teks-ke-gambar | Gambar-ke-teks | TN | ||||
|---|---|---|---|---|---|---|---|
| Pengaturan | Zero-shot | Zero-shot | |||||
| Metrik | R@1 | R@5 | R@10 | R@1 | R@5 | R@10 | |
| Taiyi-326m | 53.8 | 79.9 | 86.6 | 64.0 | 90.4 | 96.1 | 78.47 |
| Altclip | 50.7 | 75.4 | 83.1 | 73.4 | 92.8 | 96.9 | 78.72 |
| Wukong | 51.9 | 78.6 | 85.9 | 75 | 94.4 | 97.7 | 80.57 |
| R2D2 | 42.6 | 69.5 | 78.6 | 63.0 | 90.1 | 96.4 | 73.37 |
| CN-CLIP | 68.1 | 89.7 | 94.5 | 80.2 | 96.6 | 98.2 | 87.87 |
| Sky clip | 58.8 | 82.6 | 89.6 | 78.8 | 96.1 | 98.3 | 84.04 |
from PIL import Image
import requests
import clip
import torch
from transformers import BertTokenizer
from transformers import CLIPProcessor , CLIPModel , CLIPTextModel
import numpy as np
query_texts = [ '一个人' , '一辆汽车' , '两个男人' , '两个女人' ] # 这里是输入提示词,可以随意替换。
# 加载SkyCLIP 中英文双语 text_encoder
text_tokenizer = BertTokenizer . from_pretrained ( "./tokenizer" )
text_encoder = CLIPTextModel . from_pretrained ( "./text_encoder" ). eval ()
text = text_tokenizer ( query_texts , return_tensors = 'pt' , padding = True )[ 'input_ids' ]
url = "http://images.cocodataset.org/val2017/000000040083.jpg" #这里可以换成任意图片的url
# 加载CLIP的image encoder
clip_model = CLIPModel . from_pretrained ( "openai/clip-vit-large-patch14" )
clip_text_proj = clip_model . text_projection
processor = CLIPProcessor . from_pretrained ( "openai/clip-vit-large-patch14" )
image = processor ( images = Image . open ( requests . get ( url , stream = True ). raw ), return_tensors = "pt" )
with torch . no_grad ():
image_features = clip_model . get_image_features ( ** image )
text_features = text_encoder ( text )[ 0 ]
# sep_token对应于openai-clip的eot_token
sep_index = torch . nonzero ( text == student_tokenizer . sep_token_id )
text_features = text_features [ torch . arange ( text . shape [ 0 ]), sep_index [:, 1 ]]
# 乘text投影矩阵
text_features = clip_text_proj ( text_features )
image_features = image_features / image_features . norm ( dim = 1 , keepdim = True )
text_features = text_features / text_features . norm ( dim = 1 , keepdim = True )
# 计算余弦相似度 logit_scale是尺度系数
logit_scale = clip_model . logit_scale . exp ()
logits_per_image = logit_scale * image_features @ text_features . t ()
logits_per_text = logits_per_image . t ()
probs = logits_per_image . softmax ( dim = - 1 ). cpu (). numpy ()
print ( np . around ( probs , 3 ))Data kami menggunakan dataset Laion yang difilter sebagai data pelatihan, dan teks didahului oleh 'Sai-V1 Art' sebagai tag untuk memungkinkan model mempelajari gaya dan kualitas yang kami inginkan lebih cepat. Model pra-terlatih menggunakan stabil-difusi-V1-5 sebagai pra-pelatihan, dan 16 A100 digunakan selama 50 jam. Saat ini, model masih dioptimalkan terus menerus, dan akan ada pembaruan model yang lebih stabil di masa depan.

