hugging face 利用现有模型进行预测

本篇主要记录下如何使用hugging face来快速找到我们需要的模型,并通过已有模型来快速实现demo或是功能模块。贴上hugging face 官网链接:

hugging face model界面(需要魔法)
需要模板代码请跳转流程总结

目录

1.选择模型

2.创建模型+处理器对象

3.使用本地数据预测

4.模型简单糅合

5.流程总结


1.选择模型

        进入网页后再左侧可以看到现阶段主流的模型分类选择你需要的实际场景进入搜索页面,这里我选择image Classfication(图片分类)进行演示。(当然你也可以直接搜索模型,选择分类则是可以进一步筛选模型)

        这里选择google/vit-base-patch16-224来进行操作演示(ps:操作上所有一类的模型都是遵循同一套规则的,个人上传与大厂开源没有太大区别当然大厂开源会有更加详细的模型参数、效果说明等等)

        初入门的兄弟们可以从大厂开源开始玩起来,一般大厂的都会有演示代码(会提供一个最基础的使用模版),很容易上手,下面这段代码就是Google 的演示代码,安装好依赖后我们就能跑起来了:(ps:我觉得演示图很像梨花猫)

from transformers import ViTImageProcessor, ViTForImageClassification
from PIL import Image
import requests

url = 'http://images.cocodataset.org/val2017/000000039769.jpg'
image = Image.open(requests.get(url, stream=True).raw)

processor = ViTImageProcessor.from_pretrained('google/vit-base-patch16-224')
model = ViTForImageClassification.from_pretrained('google/vit-base-patch16-224')

inputs = processor(images=image, return_tensors="pt")
outputs = model(**inputs)
logits = outputs.logits
# model predicts one of the 1000 ImageNet classes
predicted_class_idx = logits.argmax(-1).item()
print("Predicted class:", model.config.id2label[predicted_class_idx])
image.show()

2.创建模型+处理器对象

        让我们来看一下这段简单的代码(ps:通过库下载模型不用魔法,可以直接跑)

from transformers import ViTImageProcessor, ViTForImageClassification

processor = ViTImageProcessor.from_pretrained('google/vit-base-patch16-224')
#model = ViTForImageClassification('google/vit-base-patch16-224') #不使用预训练权重
model = ViTForImageClassification.from_pretrained('google/vit-base-patch16-224')

print(model)

ps:插一嘴哈,每一个大类的processor和model声明会有区别,简单看一下对应的大厂实例就可快速get,当然你也可以翻hugging face的说明文档一劳永逸。。。

processor --------  主要用来对数据进行预处理,在vit 16-224模型中就是将输入图片转码成224*224的size
model -------------  声明模型,使用.from_pretrained表示使用的是预训练模型,会加载预训练权重,如果仅需要使用模型使用如下代码声明即可

model = ViTForImageClassification('模型名称')

         通过print(model)可以打印出模型结构


        可以看到vit模型主要vit(embeding,encoder,layernorm),classifier 2个组成部分。我们可以通过: model.  的方式来调用它们,当然也可打印出来查看结构

model.vit
model.classifier

3.使用本地数据预测

        我们只需要在google实例代码简单修改一部分就可以了:

image = Image.open(requests.get(url, stream=True).raw)

 替换为:(ps:windows 系统的童鞋记得加上'r'--> r'本地图片地址')

image = Image.open('本地图片地址')

4.模型简单糅合

        好了到此为止我们就能跑通模型也就能简单的玩一玩了,下面介绍一下最基础的进阶玩法。还记得之前的模型结构么,我们可以单独拿出vit或者classifier来跑,所以我们完全可以用某个预训练模型来提取特征,然后将特征转换成另一个模型的输入然后进行预测。

from transformers import ViTImageProcessor, ViTForImageClassification
from PIL import Image

processor = ViTImageProcessor.from_pretrained('google/vit-base-patch16-224')
model = ViTForImageClassification.from_pretrained('google/vit-base-patch16-224')

image = Image.open('data/train/good/1.jpg')
inputs = processor(images=image, return_tensors="pt")

outputs = model.vit(**inputs)

        我们使用model.vit(**inputs)来只调用vit模块而不进行分类,这里只是简单的提一句,后面会更新详细的微调博客。

5.流程总结

from transformers import ViTImageProcessor, ViTForImageClassification
from PIL import Image

processor = ViTImageProcessor.from_pretrained('模型名称')
model = ViTForImageClassification.from_pretrained('模型名称')

image = Image.open('输入地址')
#数据预处理
inputs = processor(images=image, return_tensors="pt")
#输出数据
outputs = model(**inputs)
#输出展示
logits = outputs.logits
predicted_class_idx = logits.argmax(-1).item()
print("Predicted class:", model.config.id2label[predicted_class_idx])

        再强调下哈不同大类的processor和model的声明函数不同,outputs结构也可能有所差异,打个端点看下就能很快的输出想要的结果了(当然找大厂开源示例模板是最快的方式了)。

  • 27
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Hugging Face 是一家知名的自然语言处理(NLP)技术公司,以其开源的深度学习库 `transformers` 而闻名。`transformers` 提供了预训练的模型和工具,使得开发人员能够轻松地使用最先进的 NLP 模型,如 BERT、GPT-2、BERT等,来进行文本分类、问答、生成、翻译等各种任务。 1. **模型库**:Hugging Face Model Hub 是一个仓库,其中包含了大量经过训练的模型,覆盖多种语言和应用场景,用户可以直接加载这些模型进行微调或推理。 2. **PreTrained Models**:`transformers` 中的核心是预训练模型,它们是在大规模文本数据上预先训练好的,可以作为基础模型进行迁移学习,然后根据特定任务进行调整。 3. **Tokenizer**:除了模型Hugging Face 还提供了用于将文本编码成模型可以理解的格式(如 token 或 sequence)的工具,如 BERTTokenizer 和 WhitespaceTokenizer。 4. **Training & Fine-tuning**:库中提供了工具来帮助开发者训练自己的模型,或者在现有模型基础上进行微调以适应特定任务。 5. **🤗 CLI & Library**:Hugging Face 还有一个命令行工具 `huggingface-cli` 和 Python 库,简化了模型的使用流程,包括下载、运行和部署模型。 相关问题: 1. Hugging Face 的主要用途是什么? 2. `transformers` 库中有哪些常见的预训练模型? 3. 如何使用 Hugging Face 的工具进行模型微调? 4. Hugging Face Model Hub 对模型的版本控制是如何进行的? 5. Hugging Face 的库支持哪些主流的深度学习框架?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

渊兮旷兮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值