【AIGC】全新领域!图像识别如何实现?小白也能轻松学会!

前言

上篇文章我们简单体验了一下OpenAI的使用和调试,今天我们继续带大家来进行练习和更加深入的了解。话不多说,让我们开始吧!

正文

机器学习任务

这次文章让我们来调试 一台能够完成我们需求的"机器 ",通过不断地调试让它进行学习,最终能够完成我们交给它的任务------识别图片上我们想要它识别出来的东西

首先让我们进入Colab ,新建一台笔记本供我们这次学习使用。(怎样开始我们的学习可以参考博主上一篇文章(【AIGC】全新领域!小白Openai初体验 带你轻松了解和运用! - 掘金 (juejin.cn))

随后,让我们安装一个transformers------也就是huggingface的核心库并点击运行:

python 复制代码
!pip install transformers

安装完之后先别急着弄完我们的"机器",先让我们看看支持派发那些任务。

python 复制代码
# pipeline --- 分发任务 --- pipeline(task, model)
# transformers pipeline 哪些任务?
from transformers.pipelines import SUPPORTED_TASKS
SUPPORTED_TASKS

运行完之后我们可以通过下拉下划线看见非常非常多能够支持的任务。继续执行下列代码并运行:

python 复制代码
print(SUPPORTED_TASKS.items()) # dick 字典 0(1)

接下来再让我们看看transformers 默认支持的nlp任务

python 复制代码
# es6 解构
for k, v in SUPPORTED_TASKS.items(): # 相当于块级作用域
  print(k) # 查看默认支持的nlp任务

我们可以看到很多常见需要用到的功能,像是question-answering问答功能,AI就是靠这个来进行训练的;还有我们接下来打算用到的image-classification图像分类功能啦;zero-shot-object-detection定位和识别目标功能啦等等。然后再执行下面的代码让我们能快速完成上面的任务:

python 复制代码
from transformers import pipeline # 让我们能快速完成上面的任务

通过运行代码下载图片识别模型:

python 复制代码
checkpoint = "google/owlvit-base-patch32" # 图片识别模型
detector = pipeline('zero-shot-object-detection',model=checkpoint) # (选择任务,传入模型)
# 然后就会开始下载图片识别模型

执行任务

我们的"机器"调试到这就快完成啦!要想它能够识别东西,我们得先让它能够拿到图片:

python 复制代码
import requests # 引入python的http请求库
from PIL import Image # PIL是python的图片的专业库

url = 'https://unsplash.com/photos/oj0zeY2Ltk4/download?ixid=MnwxMjA3fDB8MXxzZWFyY2h8MTR8fHBpY25pY3xlbnwwfHx8fDE2Nzc0OTE1NDk&force=true&w=640'
# requests.get---发送远程请求,这个过程会花费时间
# python是一门同步语言,会同步请求
# 等待图片下载完成;然后再Image.open;最后打印img
img = Image.open(requests.get(url, stream=True).raw)
# requsets --- 用于网络请求,http请求的方法,get表示明文请求
img

这样我们就拿到了一张"沙滩"的图片。接下来让我们向我们的"机器"传达 我们想要让它完成的任务,也就是识别哪些东西:

python 复制代码
predictions = detector(
    img,
    # 候选的对象
    candidate_labels=["hat","sunglasses","book"] 
    # 查找想要识别的对象
)
predictions

根据运行结果我们可以看到返回了JSON数组 ,这里代表的意思分别是:'score':相似度;'label':标签和'box':起始坐标。

查看结果

但这样似乎只是"机器"能够理解,在我们看来是不够直观的,那让我们再来一点点"小魔法":

python 复制代码
from PIL import ImageDraw # 引入"写模块"
draw = ImageDraw.Draw(img)

for prediction in predictions: # predictions里放着刚刚的JSON数组
  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) 
  # 在识别出来标签物品的始末坐标标出红色方框,宽度为1
  draw.text((xmin, ymin), f"{label}:{round(score, 2)}", fill="red") 
  # 在左上角写上标签名和相似值(保留两位小数),字体为红色

img

怎么样?现在是不是就足够直观了,我们可以直接通过肉眼看见"机器"展示给我们标记 出来的结果,甚至打上了红框 并打上了标签!得到这样的结果就说明我们的任务宣布成功啦~

结语

今天带大家体验的功能相信大家在生活中也能感受到各种各样的运用:像是相机的面部捕捉啦;手机的人脸识别啦;车库门口的车牌识别啦等等等等。AI已经越来越融入我们的生活了,如果喜欢的话还希望点点关注,之后继续给大家带来更多有趣的文章♡!

相关推荐
Baihai_IDP39 分钟前
「混合专家模型」可视化指南:A Visual Guide to MoE
人工智能·llm·aigc
春末的南方城市2 小时前
开源音乐分离器Audio Decomposition:可实现盲源音频分离,无需外部乐器分离库,从头开始制作。将音乐转换为五线谱的程序
人工智能·计算机视觉·aigc·音视频
KuaFuAI2 小时前
微软推出的AI无代码编程微应用平台GitHub Spark和国产AI原生无代码工具CodeFlying比到底咋样?
人工智能·github·aigc·ai编程·codeflying·github spark·自然语言开发软件
扫地的小何尚9 小时前
NVIDIA RTX 系统上使用 llama.cpp 加速 LLM
人工智能·aigc·llama·gpu·nvidia·cuda·英伟达
程序员X小鹿17 小时前
免费,手机可用!一款AI数字人生成工具,200+数字人形象任选,3分钟定制专属数字人!(附教程)
aigc
JarodYv19 小时前
GPT-5 要来了:抢先了解其创新突破
gpt·openai·生成式ai·gpt-4·gpt-5
狼爷1 天前
Reddit 舞台上的 AI:解码用户生活密码,隐私警钟敲响
安全·aigc
AI极客菌1 天前
[ComfyUI]Flux:繁荣生态魔盒已开启,6款LORA已来,更有MJ6&写实&动漫&风景&艺术&迪士尼全套
ai作画·stable diffusion·aigc·midjourney·人工智能作画·comfyui·风景
袁庭新1 天前
安装luasocket模块时提示“sudo: luarocks:找不到命令“问题,该如何解决?
java·人工智能·ai·aigc·lua·luarocks·袁庭新
阿牛牛阿1 天前
多模态大模型(1)--CLIP
算法·机器学习·ai·aigc