Механическая собака 
Замок Sea Sunset Miyazaki анимация 
Сколько цветов падает 
Половина курицы и половина человека, сильный 
Курица, ты такой красивый 
Пожалуйста, посетите Skypaint, Skypaint 
Вы также можете сканировать QR -код на WeChat и испытать его на мини -программе: 
Модель изображения генерации текста SkyPaint в основном состоит из двух частей, а именно модели быстрого текста Word Text и модели диффузии. Следовательно, наша оптимизация также разделена на два шага: во-первых, на основе Openai-CRIP, модель быстрого текста Word Text Optimized, чтобы позволить SkyPaint иметь возможности для распознавания китайского и английского языка, а затем оптимизирована диффузионная модель, так что Skypaint обладает современным искусством для создания высококачественных снимков.
Скачать модель адрес 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-это модель клипа, полученную нами, используя эффективный метод обучения китайскому и английскому двуязычному клипсу. Этот метод только изменяет текстовый энкодер Openai-Clip и может использоваться для реализации изображения и функции поиска текста с использованием openai-clip.
Text_encoder of Openai-Clip используется в качестве модели учителя, а параметры заморожены. , L2, COS расстояния используются для постепенного приготовления китайского и английского языка Hidden_state модели студента постепенно приближаться к hidden_state модели учителя. Поскольку китайские и английские из параллельного корпуса обладают естественными свойствами неравенства, чтобы сделать параллельный китайский и английский язык как можно ближе, мы также добавили китайского декодера во время обучения, используя китайский и английский Hidden_state модели студента в качестве ввода в качестве ввода декодера и оказания помощи в достижении выровнений китайского и английского языка.
В настоящее время мы в основном оценили показатели Skyclip в Flickr30K-CN и в основном сравнили несколько соответствующих моделей с открытым исходным кодом с возможностями китайского языка.
Flickr30K-CN поиск :
| Задача | Текст к изображению | Изображение в текст | МИСТЕР | ||||
|---|---|---|---|---|---|---|---|
| Настраивать | Нулевой выстрел | Нулевой выстрел | |||||
| Показатель | R@1 | R@5 | R@10 | R@1 | R@5 | R@10 | |
| Тайи-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 |
| Skyclip | 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 ))Наши данные используют отфильтрованный набор данных LAION в качестве учебных данных, а тексту предшествует «SAI-V1 Art» в качестве тега, чтобы модель мог бы быстрее изучать стиль и качество. Предварительно обученная модель использует стабильную диффузию V1-5 в качестве предварительного обучения, а 16 A100 использовались в течение 50 часов. В настоящее время модель все еще постоянно оптимизируется, и в будущем будет более стабильные обновления модели.

