当前位置:首页 > 编程笔记 > 正文
已解决

python自动化标注工具+自定义目标P图替换+深度学习大模型(代码+教程+告别手动标注)

来自网友在路上 11298129提问 提问时间:2023-11-22 15:11:46阅读次数: 129

最佳答案 问答题库1298位专家为你答疑解惑

省流建议
本文针对以下需求:

  • 想自动化标注一些目标
  • 不再想使用yolo
  • 想在目标检测/语意分割有所建树
  • 计算机视觉项目
  • 想玩一玩大模型
  • 了解自动化工具
  • 了解最前沿模型
  • 自定义目标P图替换

  • 在这里插入图片描述

确定好需求,那么我们发车!

实现功能与结果

  1. 该模型将首先使用对语言的理解来识别文本提示中提到的对象。例如,在描述“两只用棍子的狗”中,该模型将“狗”和“棍子”一词识别为对象

在这里插入图片描述

  1. 然后,该模型将为自然语言描述中确定的每个对象生成一组对象建议。对象建议是使用各种功能(例如对象的颜色,形状和纹理)生成的
  2. 接下来,模型返回每个对象建议的分数。分数是对象建议包含实际对象的可能性
  3. 然后,该模型将选择顶级对象建议作为最终检测。最终检测是图像中最自信的对象

在这里插入图片描述

我知道你对文字不感兴趣,你想直接拿代码来就用!
那么,它来了。

代码部署

在下一节中,我们将演示一个开放集对象目标检测。在这里,我们将使用一个预先训练的模型来检测’玻璃与盖子’(作为文本提示)通过摄像头饲料。

首先导入相关的库和 模块。代码的最后两行导入所需的推理模块。

import os
import cv2
import numpy as np
from PIL import Image

设置模型配置和权重文件路径

接下来,定义 模型配置文件和权重文件路径。除此之外,我们还定义了两个超参数框和图像阈值来控制对象框和图像的选择。默认情况下,模型输出900个对象框,这些对象框根据它们与输入文本的相似性得分进行排序。通过调整 max _ box 超参数,可以更改接地 DIN模型输出的对象框的数量。

HOME = os.getcwd()
# set model configuration file path
CONFIG_PATH = os.path.join(HOME, "groundingdino/config/GroundingDINO_SwinT_OGC.py")# set model weight file ath
WEIGHTS_NAME = "groundingdino_swint_ogc.pth"
WEIGHTS_PATH = os.path.join(HOME, "weights", WEIGHTS_NAME)# set text prompt
TEXT_PROMPT = "glass with lid"# set box and text threshold values
BOX_TRESHOLD = 0.35
TEXT_TRESHOLD = 0.25

检测

最后,我们使用 opencv 模块启动我们的摄像机 feed,并连续读取帧。在将摄像机提要传递给模型之前,我们需要对图像帧执行一些变换。首先,通过执行三个图像转换创建一个转换对象。

随机尺寸([800] ,max _ size = 1333)-此转换将图像的宽度调整为800,最大高度为1333像素。这有助于防止模型过度适应特定的尺寸。

ToTensor ()-这个转换将图像转换为一个 Python 张量。

正常化([0.485,0.456,0.406] ,[0.229,0.224,0.225])-这个转换通过减去平均值并除以 ImageNet 数据集的标准差来正常化图像。这有助于使模型对闪电和其他因素的变化更加稳健。

接下来,帧(相机帧的一个数字数组)被转换成 RGB 颜色空间中的 PIL 图像对象,最后通过执行上述三个转换转换成一个转换对象。

cap = cv2.VideoCapture(0)
while True:ret, frame = cap.read()# create a transform function by applying 3 image transaformationstransform = T.Compose([T.RandomResize([800], max_size=1333),T.ToTensor(),T.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])])# convert frame to a PIL object in RGB spaceimage_source = Image.fromarray(frame).convert("RGB")# convert the PIL image object to a transform objectimage_transformed, _ = transform(image_source, None)# predict boxes, logits, phrasesboxes, logits, phrases = predict(model=model, image=image_transformed, caption=TEXT_PROMPT, box_threshold=BOX_TRESHOLD, text_threshold=TEXT_TRESHOLD,device='cpu')# annotate the imageannotated_frame = annotate(image_source=frame, boxes=boxes, logits=logits, phrases=phrases)# display the outputout_frame = cv2.cvtColor(annotated_frame, cv2.COLOR_BGR2RGB)cv2.imshow('frame', out_frame)

敲黑板 重点

自动化标注举例说明

你想获取图中熊这个目标
在这里插入图片描述

不是图片中所有的类别你都想要你只想获取部分目标,那么你在定义时要如下操作:
需要将Text Prompt做替换 ,如你只想对图片中的熊感兴趣:
Text Prompt=bear.
在这里插入图片描述
对应生成的label/json文件

"shapes": [{"label": "dog","points": [[20.913907284768214,26.47019867549669],[87.96688741721854,97.66225165562913]],"group_id": null,"shape_type": "rectangle","flags": {}},{"label": "cat","points": [[91.11258278145695,43.35761589403974],[131.50993377483442,84.91390728476821]],

如果对大海和熊感兴趣,则:
Text Prompt=bear,sea
注意 逗号间隔!

自动化P图

如下我们可以选择将图中的目标狂替换为我们想要的目标!
在这里插入图片描述

可以说做到了完美贴合P图 ,再也不用PS工具费时费力修图啦

代码获取

code get:见博客底部推广
查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"python自动化标注工具+自定义目标P图替换+深度学习大模型(代码+教程+告别手动标注)":http://eshow365.cn/6-41860-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!