大家对于AIGC方向感兴趣的话可以点点关注,我之后将持续更新这一系列的文章,带你慢慢了解使用各种大模型😘
前言
AI的迅速发展,从"人工智障"到现在的人工智能,给互联网行业带来巨大机遇和挑战。各种大型AI模型的出现为开发人员提供了强大的工具,通过利用这些模型,我们能够加速开发流程、提高效率。这些模型不仅在自然语言处理和图像识别领域表现优异,而且在广泛的任务中都有应用潜力,比如推荐系统、预测分析等。
有人可能会担心,AI这么强,会不会以后找不到工作了?传统行业的从业者必然会被取代,AI模型加持下带来的工作效率提升是一般传统工作者不能比拟的,传统客服行业将会有一大部分人面临失业;但是AI也并没有发展到完全取代人类的夸张地步,现在的AI也还只是一个更加有用工具,还需要会使用这个工具的使用者让它发挥作用。这个使用者在互联网行业中就是AIGC工程师。
AIGC前端需求激增
在一些生活场景中我们经常能看到一些智能设备具有能够识别物体的功能
接下来将带大家来体验一下谷歌的owlvit-base-patch32
图片识别模型,简单地实现从图片中识别目标物体的内容和位置信息。
colaboratory
Colaboratory 简称"Colab",是 Google Research 团队开发的一款产品。在 Colab 中,任何人都可以通过浏览器编写和执行任意 Python 代码。它尤其适合机器学习、数据分析和教育目的
1.我们首先在google中搜索colaboratory,点击第二个
2.进入colaboratory之后,点击新建笔记本,进去后要登录谷歌账号
代码
输入代码咱们入门体验模型使用建议先一步一步输入代码
1.
python
!pip install transformers
点击新建代码,输入完成后点击输入框左边的运行键运行代码
这是一个Python命令,用于在Colab环境中安装 Hugging Face 的 Transformers 库。执行 !pip install transformers
会使用 pip 工具安装最新版本的 Transformers 库,让你能够在你的代码中使用 Transformers 提供的预训练模型、模型架构、标记器以及其他 NLP 相关工具和函数。
2.
python
from transformers.pipelines import SUPPORTED_TASKS SUPPORTED_TASKS
这段代码使用了Hugging Face的Transformers库,它导入了SUPPORTED_TASKS这个变量,然后打印出其值。SUPPORTED_TASKS包含了Transformers库支持的各种NLP任务,比如文本生成、命名实体识别、情感分析等等。通过打印SUPPORTED_TASKS,你可以查看当前环境下支持的所有任务列表。
3.
python
for k, v in SUPPORTED_TASKS.items():
print(k)
这段代码的作用是打印出SUPPORTED_TASKS
字典中所有的键值(key)
4.
python
from transformers import pipeline
checkpoint = "google/owlvit-base-patch32" #图片识别模型
detector = pipeline('zero-shot-object-detection',model=checkpoint)
这段代码使用了Hugging Face的transformers库,首先从中导入了名为pipeline
的函数。然后定义了一个名为checkpoint
的变量,其值为"google/owlvit-base-patch32",这是一个用于图片识别的模型。
接下来,利用导入的pipeline
函数创建了一个名为detector
的对象,该对象使用了"zero-shot-object-detection"模型,并指定了使用之前定义的checkpoint
作为模型参数。
这段代码的作用是使用Hugging Face的transformers库创建了一个零样本目标检测(zero-shot-object-detection)的模型对象,以便进行后续的目标检测任务。
5.
python
for k, v in SUPPORTED_TASKS.items():
print(k)
6.
python
import requests #python的http 请求库
from PIL import Image # PIL pthon 图片的专业库
url = "https://unsplash.com/photos/oj0zeY2Ltk4/download?ixid=MnwxMjA3fDB8MXxzZWFyY2h8MTR8fHBpY25pY3xlbnwwfHx8fDE2Nzc0OTE1NDk&force=true&w=640"
# 人生苦短, 我用python
# request.get 获取用户需求 同步语言
img = Image.open(requests.get(url,stream=True).raw)
img
- 首先,通过
import requests
和from PIL import Image
分别导入了requests
库和PIL库中的Image模块。 - 接着,定义了一个变量
url
,其值是一个图片的URL链接。 - 然后,使用
requests.get(url, stream=True).raw
向指定的URL发送了一个GET请求,并将获取到的响应内容作为二进制流对象传递给了Image.open()
方法。 - 最后,利用
Image.open(requests.get(url, stream=True).raw)
打开了获取到的图片,并将其赋值给了变量img
。
测试使用的图片
7.
python
from PIL import ImageDraw # 写模块
draw = ImageDraw.Draw(img)
for prediction in predictions:
box = prediction["box"]
label = prediction["label"]
score = prediction["score"]
xmin,ymin,xmax,ymax = box.values() # 解构
draw.rectangle((xmin,ymin,xmax,ymax),outline="red",width=1)
draw.text((xmin,ymin),f"{label}:{round(score,2)}",fill="red")
img
这段代码使用了PIL库中的ImageDraw模块,针对图像进行了一系列的操作,具体解释如下:
- 首先,通过
from PIL import ImageDraw
导入了ImageDraw模块。 - 然后,使用
ImageDraw.Draw(img)
创建了一个用于在图像上绘制的对象draw
,其中img
是一个图像对象。 - 接下来的循环
for prediction in predictions:
遍历了一个叫做predictions
的列表。在每次迭代中,从prediction
中获取了box
(边界框坐标)、label
(标签)和score
(置信度)等信息。 - 通过
box.values()
将边界框坐标解构为xmin
、ymin
、xmax
和ymax
,然后利用draw.rectangle((xmin,ymin,xmax,ymax), outline="red", width=1)
在图像上绘制了一个红色矩形框,代表检测到的物体;同时,利用draw.text((xmin,ymin), f"{label}: {round(score, 2)}", fill="red")
在矩形框的左上角位置写入了标签和置信度。