国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

用 GroundingDINO 與 SAM 做分割

開發 機器視覺
本文將介紹一種新穎的方法,利用兩個基于變換器模型的零樣本圖像分割技術:GroundingDINO負責目標檢測,而單任務注意力模型(SAM)負責語義分割。

在計算機視覺領域,圖像分割是一項核心任務,廣泛應用于目標識別、追蹤和分析等多個場景。本文將介紹一種新穎的方法,利用兩個基于變換器模型的零樣本圖像分割技術:GroundingDINO負責目標檢測,而單任務注意力模型(SAM)負責語義分割。我們將詳細解讀代碼,并解釋涉及的關鍵概念。現在,讓我們先來了解一些重要的術語!

Grounding DINO與SAM的結合

1. 變換器模型

這類神經網絡架構在自然語言處理領域取得了革命性的進展,如翻譯、摘要和文本生成等任務。它們通過多層處理輸入序列(例如單詞或字符),并通過注意力機制關注輸入的不同部分。設想一個翻譯者使用變換器模型將英文句子翻譯成其他語言。在翻譯“the quick brown fox”時,模型可能會先關注“the”,然后是“quick”,逐步將信息整合進翻譯中。

變換器模型的設計使其能夠有效處理長距離依賴問題,并實現并行計算,這使得它們在處理序列數據時表現出色。在本文中,我們將應用GroundingDINO和SAM這兩個變換器模型。

2. 目標檢測與語義分割

這是計算機視覺中的兩個基礎任務。目標檢測通過邊界框定位圖像中的目標對象,而語義分割則為圖像中的每個像素分配類別標簽。目標檢測提供了對象的位置信息,語義分割則提供了對象與背景的詳細分割。

3. 零樣本學習

這是一種機器學習技術,允許模型在未針對特定任務進行訓練的情況下執行任務。模型通過利用其他相關任務的知識來執行新任務。在本文中,我們將利用零樣本學習技術,根據用戶提供的文本標簽描述來分割圖像中的對象,即使模型未曾針對這些標簽進行過訓練。

可以通過https://colab.research.google.com/訪問Google Colab編寫代碼:


#app.py

!pip install spaces
from transformers import AutoProcessor, AutoModelForZeroShotObjectDetection
import torch
from transformers import SamModel, SamProcessor
import spaces
import numpy as np
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')

sam_model = SamModel.from_pretrained("facebook/sam-vit-base").to("cuda")
sam_processor = SamProcessor.from_pretrained("facebook/sam-vit-base")

model_id = "IDEA-Research/grounding-dino-base"

dino_processor = AutoProcessor.from_pretrained(model_id)
dino_model = AutoModelForZeroShotObjectDetection.from_pretrained(model_id).to(device)

def infer_dino(img, text_queries, score_threshold):
  queries=""
  for query in text_queries:
    queries += f"{query}. "

  width, height = img.shape[:2]

  target_sizes=[(width, height)]
  inputs = dino_processor(text=queries, images=img, return_tensors="pt").to(device)

  with torch.no_grad():
    outputs = dino_model(**inputs)
    outputs.logits = outputs.logits.cpu()
    outputs.pred_boxes = outputs.pred_boxes.cpu()
    results = dino_processor.post_process_grounded_object_detection(outputs=outputs, input_ids=inputs.input_ids,
                                                                  box_threshold=score_threshold,
                                                                  target_sizes=target_sizes)
  return results


@spaces.GPU
def query_image(img, text_queries, dino_threshold):
  text_queries = text_queries
  text_queries = text_queries.split(",")
  dino_output = infer_dino(img, text_queries, dino_threshold)
  result_labels=[]
  for pred in dino_output:
    boxes = pred["boxes"].cpu()
    scores = pred["scores"].cpu()
    labels = pred["labels"]
    box = [torch.round(pred["boxes"][0], decimals=2), torch.round(pred["boxes"][1], decimals=2),
        torch.round(pred["boxes"][2], decimals=2), torch.round(pred["boxes"][3], decimals=2)]
    for box, score, label in zip(boxes, scores, labels):
      if label != "":
        inputs = sam_processor(
                img,
                input_boxes=[[[box]]],
                return_tensors="pt"
            ).to("cuda")

        with torch.no_grad():
            outputs = sam_model(**inputs)

        mask = sam_processor.image_processor.post_process_masks(
            outputs.pred_masks.cpu(),
            inputs["original_sizes"].cpu(),
            inputs["reshaped_input_sizes"].cpu()
        )[0][0][0].numpy()
        mask = mask[np.newaxis, ...]
        result_labels.append((mask, label))
  return img, result_labels

import gradio as gr

description = "This Space combines [GroundingDINO](https://huggingface.co/IDEA-Research/grounding-dino-base), a bleeding-edge zero-shot object detection model with [SAM](https://huggingface.co/facebook/sam-vit-base), the state-of-the-art mask generation model. SAM normally doesn't accept text input. Combining SAM with OWLv2 makes SAM text promptable. Try the example or input an image and comma separated candidate labels to segment."
demo = gr.Interface(
    query_image,
    inputs=[gr.Image(label="Image Input"), gr.Textbox(label = "Candidate Labels"), gr.Slider(0, 1, value=0.05, label="Confidence Threshold for GroundingDINO")],
    outputs="annotatedimage",
    title="GroundingDINO ?? SAM for Zero-shot Segmentation",
    description=description,
    examples=[
        ["./cats.png", "cat, fishnet", 0.16],["./bee.jpg", "bee, flower", 0.16]
    ],
)
demo.launch(debug=True)

代碼解析:

(1) 代碼首先通過pip安裝必要的包,并導入所需的庫,包括PyTorch、GroundingDINO、SAM和Gradio。

(2) GroundingDINO是一個基于變換器的目標檢測模型。它可以根據圖像和文本描述輸出與描述相對應的對象的邊界框。在本代碼中,我們利用GroundingDINO根據用戶指定的文本標簽來定位圖像中的對象。

(3) 單任務注意力模型(SAM)是另一個基于變換器的模型,用于圖像到圖像的翻譯任務,如語義分割。SAM模型可以根據圖像和文本描述生成與描述中對象相對應的分割掩碼。在本文中,我們將使用SAM根據GroundingDINO提供的邊界框進行對象的語義分割。

(4) 代碼根據可用性設置運行代碼的設備(GPU或CPU)。

(5) 加載SAM模型和GroundingDINO模型,并將它們的處理器轉移到GPU以加快計算速度。

(6) infer_dino()函數接受圖像、文本查詢(候選標簽)和置信度閾值作為輸入,并使用GroundingDINO模型處理輸入,識別具有邊界框的對象檢測。

(7) query_image()函數用@spaces.GPU裝飾器裝飾,表示它將在GPU上運行。這個函數接受圖像、文本查詢和置信度閾值作為輸入。

(8) query_image()首先將文本查詢分割成單獨的標簽,并將其傳遞給infer_dino()函數以獲取對象檢測和邊界框。

(9) 對于每個對象檢測,它使用SAM模型生成掩碼,即將對象的邊界框傳遞給SAM模型,并為每個對象生成一個掩碼。

(10) 最后,函數返回帶有生成的掩碼和相應標簽的圖像。

(11) 代碼定義了一個Gradio演示,接受圖像、候選標簽和置信度閾值作為輸入,并返回帶有生成的掩碼和標簽的注釋圖像,同時提供示例輸入以供演示。

(12) 啟動Gradio演示,并顯示用戶界面。

運行代碼后,我們將獲得Gradio空間鏈接:

結果展示(紅色涂抹)

完整代碼:https://github.com/jyotidabass/GroundingSAM-Gradio-App/blob/main/GroundingSAM.ipynb

責任編輯:趙寧寧 來源: 小白玩轉Python
相關推薦

2023-07-10 15:00:34

圖像模型

2024-08-15 08:31:35

SAM 2LLM大型語言模

2024-10-10 14:56:39

2024-07-15 09:13:48

2023-05-19 13:15:15

視頻分割

2022-11-18 12:14:27

模型研究

2025-08-20 09:18:13

2023-04-25 11:36:17

CV模型

2023-12-07 07:16:57

Meta訓練

2025-12-18 09:17:06

2011-03-16 16:59:46

iptables 映射

2025-02-28 09:25:03

2024-06-18 11:20:59

2024-06-18 12:36:08

2021-09-06 08:26:08

JavaScript數獨 LeetCode

2022-02-22 09:25:11

PandasETL數據分析

2020-05-15 15:09:51

R語言數據分析

2024-01-24 09:24:19

自動駕駛算法

2025-02-18 12:00:00

ROIPython計算機視覺
點贊
收藏

51CTO技術棧公眾號

亚洲美女尤物影院| 亚洲欧美电影在线观看| 97视频在线观看网站| 国产日韩影视精品| 免费观看中文字幕| 久久激情一区| 粉嫩av一区二区三区免费观看 | 日本一本a高清免费不卡| 成人18视频在线观看| 欧美一级欧美一级在线播放| a天堂在线资源| 欧美亚洲综合一区| 国产中文字幕在线| 精品国产91久久久| 天堂a中文在线| 午夜伦欧美伦电影理论片| 三上悠亚一区| 一本大道久久a久久精二百| 手机亚洲第一页| 色婷婷av一区二区三区gif| 九色蝌蚪在线| 日韩一级免费观看| av丝袜在线| 亚洲欧洲高清在线| 国产成人77亚洲精品www| 中文字幕日韩av| 成人资源在线| 国产精品小说在线| 尤物网精品视频| 欧美精品中文字幕一区二区| 日本不卡中文字幕| 男女激情免费视频| 中文无字幕一区二区三区| 毛片.com| 欧美日韩久久久久久| 羞羞的视频在线观看| 日韩激情在线视频| 婷婷视频一区二区三区| 国产精品久久久久久久一区探花 | 怡红院精品视频| 欧美v亚洲v综合v国产v仙踪林| 久久九九免费视频| 精品国模一区二区三区欧美| 91国产视频在线播放| 亚洲欧美在线专区| 日韩亚洲视频在线| 久久久亚洲精品一区二区三区| 九色丨porny丨自拍入口| 91传媒视频在线播放| 日韩电影免费看| 久久久噜久噜久久综合| 欧美成人69| 中文字幕av日韩精品| 99久久精品国产麻豆演员表| 男男做性免费视频网| 欧美日韩国产免费一区二区| 日本欧美不卡| 国产精品久久久久久网站 | 神马午夜在线视频| 欧美最顶级的aⅴ艳星| 国产精品外国| chinese少妇国语对白| 色综合久久久久久久| 成人天堂yy6080亚洲高清| 国产成人拍精品视频午夜网站| 日韩黄色小视频| 日韩不卡一二三| 精品久久国产老人久久综合| 欧美挤奶吃奶水xxxxx| 日韩欧美亚洲v片| 亚洲精品中文在线观看| mm视频在线视频| 亚洲va欧美va国产综合久久| 不卡的av电影| 国产写真视频在线观看| 97色在线视频观看| 麻豆免费看一区二区三区| 91精品国产一区二区三密臀| 在线视频欧美日韩精品| 亚洲有吗中文字幕| 五月婷婷狠狠操| 日韩精品在线私人| 国一区二区在线观看| www黄色在线| 日韩精品在线免费观看| 欧美+亚洲+精品+三区| 乱子伦视频在线看| 亚洲精品狠狠操| 日韩亚洲精品在线| 中文字幕高清在线观看| 欧美激情va永久在线播放| 麻豆精品视频在线观看视频| 女人天堂在线| 日韩免费视频在线观看| 床上的激情91.| 日韩伦理电影网站| 999国产在线| 一区二区三区在线免费| 成人精品视频在线观看| 免费看av软件| 日韩一区二区在线观看视频播放| 日本一区二区三区视频| 天堂中文字幕一二区| 久久精品影视伊人网| 美女任你摸久久| jizz性欧美| 国产精品免费观看高清| 狠狠色狠狠色综合日日五| 国产成人1区| www欧美激情| 欧美成人精品xxx| av成人动漫在线观看| 日韩av中字| 91社在线播放| 亚洲国产99精品国自产| 美女国产精品| 超碰公开在线| 国产精品制服诱惑| 欧洲av一区二区嗯嗯嗯啊| 精品国产一区二区三区久久久蜜臀 | av一区观看| 岛国av在线不卡| 日韩在线观看| 手机亚洲第一页| 91免费在线视频| 精品欧美一区二区三区| 99视频精品全部免费在线视频| 成人高清免费| 国产aⅴ夜夜欢一区二区三区| 国产精品久久久久影视| 精品人人人人| 成人综合av| 国产精品狼人色视频一区| 亚洲黄色性网站| 欧美一区二区三| 最美情侣韩剧在线播放| 成人免费看黄网站| 在线精品视频免费播放| 亚洲黄页一区| 午夜成年人在线免费视频| 视频一区三区| 亚洲美女www午夜| heyzo一本久久综合| 国语精品视频| 91av入口| 91视频免费进入| 欧美疯狂做受xxxx富婆| 免费视频最近日韩| 免费污视频在线一区| 黄色av免费在线播放| 国产成人自拍视频在线观看| 欧美日韩在线影院| 老司机午夜精品视频在线观看| 华人av在线| 日韩a在线播放| 国产精品久久久久久久久久ktv| 91黄色在线观看| 美女一区二区视频| 国产精品xxx| 美女视频免费观看网站在线| 国产91视觉| 亚洲欧美另类在线观看| 久久精品亚洲乱码伦伦中文| 校园春色另类视频| 国产黄在线观看免费观看不卡| 欧美国产一区二区在线| 国产一区二区三区在线视频| 中文字幕亚洲欧美在线不卡| 欧美特黄一区| 激情久久一区二区| 超碰在线免费| 在线国产伦理一区| 7777精品久久久久久| 欧美视频自拍偷拍| 北条麻妃国产九九精品视频| 日韩中文首页| 美女高潮在线观看| 久久久国产欧美| 国产综合欧美在线看| 中文字幕国产亚洲| 午夜精品久久久久久久蜜桃app| 美腿丝袜在线亚洲一区| 欧美美女在线直播| 51xtv成人影院| 妞干网2018| 在线成人性视频| 国产精品第2页| 国产亚洲成精品久久| 高潮白浆女日韩av免费看| 国产伦精品一区二区三区免费迷| 国产一区二区区别| 欧美一区 二区 三区| 一级二级三级在线观看| 免费看欧美黑人毛片| 91在线精品播放| 久热在线中文字幕色999舞| 欧美老肥妇做.爰bbww| 日韩美女视频一区二区| 久草精品在线观看| 牛牛国产精品|