from diffusers import DiffusionPipeline
generator = DiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4")
generator.to(“cuda”)
image = generator("An image of a squirrel in Picasso style").images[0]
这种类型的技术可以赋予新一代的创造性应用,也可以帮助来自不同背景的艺术家。查看 官方文档 以了解更多关于 Diffusers 和不同用例的信息。
基于扩散模型的文献正在快速发展,这就是为什么我们与 乔纳森·惠特克 合作开发一门课程。这门课程是免费的,你可以点击 这里 查看。
对第三方库的支持
Hugging Face 生态系统的核心是 Hugging Face Hub,它让人们在机器学习上有效合作。正如前面所提到的,我们在 Hub 上不仅支持来自 🤗 Transformers 的模型,还支持来自其他第三方包的模型。为此,我们提供了几个 实用程序,以便你可以将自己的库与 Hub 集成。这样做的主要优点之一是,与社区共享工件 (如模型和数据集) 变得非常容易,从而使你的用户可以更容易地尝试你的模型。
当你的模型托管在 Hub 上时,你还可以为它们 添加自定义推理部件。推理部件允许用户快速地检查模型。这有助于提高用户的参与度。
计算机视觉演示空间
使用 Hugging Hub Spaces 应用,人们可以轻松地演示他们的机器学习模型。空间支持与 Gradio、Streamlit 和 Docker 的直接集成,使从业者在展示他们的模型时有很大的灵活性。你可以用 Spaces 引入自己的机器学习框架来构建演示。
在 Spaces 里,Gradio 库提供几个部件来构建计算机视觉应用,比如 Video、Gallery 和 Model3D。社区一直在努力构建一些由 Spaces 提供支持的令人惊叹的计算机视觉应用:
从输入图像的预测深度图生成 3D 体素
开放词汇语义分割
通过生成字幕来讲述视频
对来自 YouTube 的视频进行分类
零样本视频分类
使用零样本图像分类为图像找到最佳说明以生成相似的图像
🤗 AutoTrain
AutoTrain 提供一个”零代码“的解决方案,为文本分类、文本摘要、命名实体识别等这样的任务训练最先进的机器学习模型。对于计算机视觉,我们当前支持 图像分类,但可以期待更多的任务覆盖。
AutoTrain 还支持 自动模型评估。此应用程序允许你用在 Hub 上的各种 数据集 评估 🤗 Transformers 模型。你的评估结果将会显示在 公共排行榜 上。你可以查看 下列博客 以获得更多细节。
在此部分,我们像向你分享在 🤗 Transformers 里添加计算机视觉背后的理念,以便社区知道针对该领域的设计选择。
尽管 Transformers 是从 NLP 开始的,但我们今天支持多种模式,比如: 视觉、音频、视觉语言和强化学习。对于所有的这些模式,Transformers 中所有相应的模型都享有一些共同的优势:
使用一行代码 from_pretrained()
即可轻松下载模型
用 push_to_hub()
轻松上传模型
支持使用 checkpoint 分片技术加载大型的 checkpoints
优化支持 (使用 Optimum 之类的工具)
从模型配置中初始化
支持 PyTorch 和 TensorFlow (非全面支持)
与分词器不同,我们有预处理器 (例如 链接中的预处理器) 负责为视觉模型准备数据。我们一直努力确保在使用视觉模型时依然有轻松和相似的用户体验:
from transformers import ViTImageProcessor, ViTForImageClassification
import torch
from datasets import load_dataset
dataset = load_dataset("huggingface/cats-image")
image = dataset["test"]["image"][0]
image_processor = ViTImageProcessor.from_pretrained("google/vit-base-patch16-224")
model = ViTForImageClassification.from_pretrained("google/vit-base-patch16-224")
inputs = image_processor(image, return_tensors="pt")
with torch.no_grad():
logits = model(**inputs).logits
# model predicts one of the 1000 ImageNet classes
predicted_label = logits.argmax(-1).item()
print(model.config.id2label[predicted_label])
# Egyptian cat
即使对于一个困难的任务如目标检测,用户体验也不会改变很多:
from transformers import AutoImageProcessor, AutoModelForObjectDetection
from PIL import Image
import requests
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(url, stream=True).raw)
image_processor = AutoImageProcessor.from_pretrained("microsoft/conditional-detr-resnet-50")
model = AutoModelForObjectDetection.from_pretrained("microsoft/conditional-detr-resnet-50")
inputs = image_processor(images=image, return_tensors="pt")
outputs = model(**inputs)
# convert outputs (bounding boxes and class logits) to COCO API
target_sizes = torch.tensor([image.size[::-1]])
results = image_processor.post_process_object_detection(
outputs, threshold=0.5, target_sizes=target_sizes
for score, label, box in zip(results["scores"], results["labels"], results["boxes"]):
box = [round(i, 2) for i in box.tolist()]
print(
f"Detected {model.config.id2label[label.item()]} with confidence "
f"{round(score.item(), 3)} at location {box}"
Detected remote with confidence 0.833 at location [38.31, 72.1, 177.63, 118.45]
Detected cat with confidence 0.831 at location [9.2, 51.38, 321.13, 469.0]
Detected cat with confidence 0.804 at location [340.3, 16.85, 642.93, 370.95]
Detected remote with confidence 0.683 at location [334.48, 73.49, 366.37, 190.01]
Detected couch with confidence 0.535 at location [0.52, 1.19, 640.35, 475.1]
视觉零样本模型
大量的模型以有趣的方式重新修订了分割和检测等核心视觉任务,并引入了更大的灵活性。我们支持 Transformers 中的一些:
CLIP 支持带提示的零样本图像分类。给定一张图片,你可以用类似”一张{}的图片“这样的自然语言询问来提示 CLIP 模型。期望是得到类别标签作为答案。
OWL-ViT 允许以语言为条件的零样本目标检测和以图像为条件的单样本目标检测。这意味着你可以在一张图片中检测物体即使底层模型在训练期间没有学过检测它们!你可以参考 下列笔记本 以了解更多。
CLIPSeg 支持以语言为条件的零样本图像分割和以图像为条件的单样本图像分割。这意味着你可以在一张图片中分割物体即使底层模型在训练期间没有学过分割它们!你可以参考说明此想法的 这篇博客文章。GroupViT 也支持零样本分割。
X-CLIP 展示对视频的零样本泛化。准确地说是支持零样本视频分类。查看 下列笔记本 以获得更多细节。
社区期待在今后的日子里看到 🤗Transformers 支持更多的计算机视觉零样本模型。
我们的 CTO 说:”真正的艺术家能将产品上市“🚀
我们通过 🤗Inference Endpoints 支持这些视觉模型的开发。Inference Endpoints 直接集成了与图像分类、目标检测、图像分割相关的兼容模型。对于其他模型,你可以使用自定义处理程序。由于我们还在 TensorFlow 中提供了许多来自 🤗Transformers 的视觉模型用于部署,我们建议使用自定义处理程序或遵循这些资源:
在 Hugging Face 上用 TF 服务开发 TensorFlow 视觉模型
在 Kubernets 上用 TF 服务开发 ViT
在 Vertex AI 上开发 ViT
用 TFX 和 Vertex AI 开发 ViT
在这篇文章中,我们向你简要介绍了 Hugging Face 生态系统目前为下一代计算机视觉应用提供的支持。我们希望你会喜欢使用这些产品来可靠地构建应用。
不过还有很多工作要做。 以下是您可以期待看到的一些内容:
🤗 Datasets 对视频的直接支持
支持更多和工业界相关的任务,比如图像相似性
图像数据集与 TensorFlow 的交互
来自 🤗Hugging Face 社区关于计算机视觉的课程
像往常一样,我们欢迎你的补丁、PR、模型 checkpoints、数据集和其他贡献!🤗
感谢 Omar Sanseviero, Nate Raw, Niels Rogge, Alara Dirik, Amy Roberts, Maria Khalusova, and Lysandre Debut for their 精心审阅和校对这篇文章,感谢 Chunte Lee 创作的博文缩略图
原文: https://hf.co/blog/cv_state
作者: Sayak Paul
译者: AIboy1993 (李旭东)
译者: zhongdongy (阿东)