海淀做网站,建材城电商网站建设,绍兴seo管理,河南工程招标网站省流建议 本文针对以下需求#xff1a;
想自动化标注一些目标不再想使用yolo想在目标检测/语意分割有所建树计算机视觉项目想玩一玩大模型了解自动化工具了解最前沿模型自定义目标P图替换…
确定好需求#xff0c;那么我们发车#xff01;
实现功能与结果
该模型将首先…省流建议 本文针对以下需求
想自动化标注一些目标不再想使用yolo想在目标检测/语意分割有所建树计算机视觉项目想玩一玩大模型了解自动化工具了解最前沿模型自定义目标P图替换…
确定好需求那么我们发车
实现功能与结果
该模型将首先使用对语言的理解来识别文本提示中提到的对象。例如在描述“两只用棍子的狗”中该模型将“狗”和“棍子”一词识别为对象 然后该模型将为自然语言描述中确定的每个对象生成一组对象建议。对象建议是使用各种功能例如对象的颜色形状和纹理生成的接下来模型返回每个对象建议的分数。分数是对象建议包含实际对象的可能性然后该模型将选择顶级对象建议作为最终检测。最终检测是图像中最自信的对象 我知道你对文字不感兴趣你想直接拿代码来就用 那么它来了。
代码部署
在下一节中我们将演示一个开放集对象目标检测。在这里我们将使用一个预先训练的模型来检测’玻璃与盖子’(作为文本提示)通过摄像头饲料。
首先导入相关的库和 模块。代码的最后两行导入所需的推理模块。
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_size1333),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(modelmodel, imageimage_transformed, captionTEXT_PROMPT, box_thresholdBOX_TRESHOLD, text_thresholdTEXT_TRESHOLD,devicecpu)# annotate the imageannotated_frame annotate(image_sourceframe, boxesboxes, logitslogits, phrasesphrases)# display the outputout_frame cv2.cvtColor(annotated_frame, cv2.COLOR_BGR2RGB)cv2.imshow(frame, out_frame)敲黑板 重点
自动化标注举例说明
你想获取图中熊这个目标
不是图片中所有的类别你都想要你只想获取部分目标那么你在定义时要如下操作 需要将Text Prompt做替换 如你只想对图片中的熊感兴趣 则Text Promptbear. 对应生成的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 Promptbearsea 注意 逗号间隔
自动化P图
如下我们可以选择将图中的目标狂替换为我们想要的目标
可以说做到了完美贴合P图 再也不用PS工具费时费力修图啦
代码获取
code get:见博客底部推广