[AIGC]AIGC航班再次起航 这一次我们前往Google“图片识别”大模型站点
序言
准备工作
我们最重要的是能够登录OPENAI
和Colab
网站,对此不熟悉得可以去看我之前得这篇文章,文章内有详细的步骤讲解
图片识别功能
序言
大家都知道,最近在智能领域很火的“无人驾驶”
这个概念已经逐渐成熟起来了,这里面其实就使用了图片识别
模型类似的概念,我们首先要有一个大模型
,通过对其的不断训练
让它实现我们最终的目标,比如无人驾驶
的汽车行驶在公路上需要对摄像头拍到的一切物体进行识别
,比如前方有行人,障碍物,动物类似的物体需要先识别并进行对应的操作,那么我们今天要讲的就是如何对一个图片进行物体识别
呢。
实战开始
首先,和上次一样的模型,我们使用的还是transformers
大模型,先导入后执行,运行结果和我一样则说明你已经成功了
![[AIGC]AIGC航班再次起航 这一次我们前往Google“图片识别”大模型站点](https://static.blogweb.cn/article/b19bb24967e34ce48f264f2d15d54350.webp)
接着我们来查看一下 这个大模型
能派发哪些任务,是否其中我们需要的
from transformers.pipelines import SUPPORTED_TASKS
SUPPORTED_TASKS
![[AIGC]AIGC航班再次起航 这一次我们前往Google“图片识别”大模型站点](https://static.blogweb.cn/article/b2ca4da81e2a4e3fbf9e5496d0d04246.webp)
是不是感觉这样看有点太多太杂了不好查找,我们可以直接打印出dict
中的items
,运行成功的结果就像是下面这样啦
print(SUPPORTED_TASKS.items())
但是这样还是不够简洁,于是我们将打印出的数组
解构
,这是ES6
新增的一个特性。点击运行后如果成功结果就跟下面的是一样的啦
for k, v in SUPPORTED_TASKS.items():
print(k)
![[AIGC]AIGC航班再次起航 这一次我们前往Google“图片识别”大模型站点](https://static.blogweb.cn/article/1aa26a6a7c084e458ba80bc9883b27d8.webp)
然后我们找到了我们需要的这个模型派发
的任务,于是我们开始下载这个派发
任务,并且需要我们Google
提供的一个图片识别
模型"google/owlvit-base-patch32"
,和我结果一样就说明下载成功!
from transformers import pipeline
checkpoint = "google/owlvit-base-patch32" #图片识别模型
detector = pipeline('zero-shot-object-detection',model=checkpoint)
![[AIGC]AIGC航班再次起航 这一次我们前往Google“图片识别”大模型站点](https://static.blogweb.cn/article/47e530be986e4bcea4922aaf16e05499.webp)
然后我们需要做的就是导入
我们需要进行识别的图片
,这里我们需要发送http
请求,从python
的PIL
中导入图片专业库
,用来识别我们的图片里面的物体,如果运行结果和我的一样,那么大家里最后的成功更进一步啦!
import requests # python的http 请求库
from PIL import Image # PIL python 图片的专业库
url = "https://unsplash.com/photos/oj0zeY2Ltk4/download?ixid=MnwxMjA3fDB8MXxzZWFyY2h8MTR8fHBpY25pY3xlbnwwfHx8fDE2Nzc0OTE1NDk&force=true&w=640"
img = Image.open(requests.get(url, stream=True).raw)
img
![[AIGC]AIGC航班再次起航 这一次我们前往Google“图片识别”大模型站点](https://static.blogweb.cn/article/c981afc8f56d4d2a9a3de7ca3b16586e.webp)
于是我们需要对需要查找的对象
进行添加
,这个PIL
图片库里的数据是非常大的,大家不用担心图片查找容错率
太低的问题,比如我们想要查找图片中是否存在帽子
、太阳镜
和书
。
predictions = detector(
img,
candidate_labels= ["hat", "sunglasses", "book"]
)
predictions
到了这里我们就已经查找到
图片中有我们需要的物体
,并且给了各个物体的左上和右下坐标
,于是我们想更加遥遥领先
一下,将这个图片的盒子
模型勾画
出来,我们将img
中的目标物体的各种信息解构
出来,并且画上边框,让我们完成这最后一步,如果运行结果和我一样,那么恭喜你,今天又实现了图片识别
大模型的掌握!
from PIL import ImageDraw # 写模块
draw = ImageDraw.Draw(img)
for prediction in predictions:
box = prediction["box"]
laber = 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
![[AIGC]AIGC航班再次起航 这一次我们前往Google“图片识别”大模型站点](https://static.blogweb.cn/article/4b6640715ee24792a374cefff54c6d1d.webp)
结语
大家对于AIGC方向感兴趣的话可以点点关注,我之后会在专栏中持续更新这一系列的文章,带你从慢慢了解使用各种大模型😘
到这里我们今天的内容就分享结束啦
感谢各位读者观看,如果有收获的话,收藏+关注 Coding不迷路。
转载自:https://juejin.cn/post/7299393132691816457