CV不存在了?体验用Segment Anything Meta分割清明上河图

news2024/12/22 20:04:13

目录

  • 1 Facebook抠图神器
  • 2 本地版SAM配置
  • 3 Web版SAM体验
  • 4 总结

1 Facebook抠图神器

在图像处理与计算机视觉领域,图像分割(image segmentation)是在像素级别将一个完整图像划分为若干具有特定语义区域(region)对象(object)的过程。每个分割区域是一系列拥有相似特征——例如颜色、强度、纹理等的像素集合,因此图像分割也可视为以图像属性为特征空间,为全体像素赋予标签的分类问题

图像分割是高级图像处理的基础技术,它将原始冗余而繁杂的图像,转化为一种更具意义且简单紧凑的组织形式。在智能安防、卫星遥感、医学影像处理、生物特征识别等领域,图像分割通过提供精简且可靠的图像特征信息,有效地提高后续从而利于后续图像分析、理解等技术的计算效率,具有重要意义。

在这里插入图片描述

但是,针对特定任务创建准确的分割模型通常需要技术专家进行高度专业化的标注工作,而近期FaceBook推出的Segment Anything Model(SAM)项目旨在实现图像分割的大众化。

如果说ChatGPT是自然语言处理领域的大模型,那SAM就算是计算机视觉领域的大模型。这次,FaceBook发布了通用Segment Anything模型和我们的Segment Anything10亿掩模数据集SA-1B——这是有史以来最大的分割数据集,以便实现广泛的应用和促进计算机视觉基础模型的进一步研究

降低图像分割所需的任务特定建模专业知识、训练计算和自定义数据注释是Segment Anything项目的核心。SAM已经学习到了物体的通用概念,并且可以为任何图像或任何视频中的任何物体生成掩模,甚至包括它在训练中没有遇到过的物体和图像类型。SAM足够通用,可以覆盖广泛的用例,并且可以在新的图像“领域”上直接使用——无论是水下照片还是细胞显微镜——而不需要额外的训练——通常被称为零样本迁移能力

将来,SAM可以用于帮助驱动许多领域需要在任何图像中查找和分割任何物体的应用程序

2 本地版SAM配置

本项目的环境并不复杂,按以下步骤配置即可

  • 克隆库到本地

    git clone git@github.com:facebookresearch/segment-anything.git
    cd segment-anything; pip install -e .
    
  • 安装依赖(可选)

    这些依赖项用于对掩模进行后处理、将掩模保存为COCO格式以及将模型导出为ONNX格式

    pip install opencv-python pycocotools matplotlib onnxruntime onnx
    
  • 下载模型文件ViT-H SAM model.

  • 测试代码

import torch
import numpy as np
import cv2
import matplotlib.pyplot as plt
from segment_anything import sam_model_registry, SamPredictor
from segment_anything.utils.onnx import SamOnnxModel

import onnxruntime
from onnxruntime.quantization import QuantType
from onnxruntime.quantization.quantize import quantize_dynamic

def show_mask(mask, ax):
    color = np.array([30/255, 144/255, 255/255, 0.6])
    h, w = mask.shape[-2:]
    mask_image = mask.reshape(h, w, 1) * color.reshape(1, 1, -1)
    ax.imshow(mask_image)

checkpoint = "D:\AIProject\segment-anything\sam_vit_h_4b8939.pth"
model_type = "vit_h"
sam = sam_model_registry[model_type](checkpoint=checkpoint)

image = cv2.imread('images/truck.jpg')
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

predictor = SamPredictor(sam)
predictor.set_image(image)
image_embedding = predictor.get_image_embedding().cpu().numpy()

ort_inputs = {
    "image_embeddings": image_embedding,
    "point_coords": onnx_coord,
    "point_labels": onnx_label,
    "mask_input": onnx_mask_input,
    "has_mask_input": onnx_has_mask_input,
    "orig_im_size": np.array(image.shape[:2], dtype=np.float32)
}

masks, _, low_res_logits = ort_session.run(None, ort_inputs)

plt.figure(figsize=(10,10))
plt.imshow(image)
show_mask(masks, plt.gca())
show_points(input_point, input_label, plt.gca())
plt.axis('off')
plt.show() 

原图:

在这里插入图片描述
分割图

在这里插入图片描述

3 Web版SAM体验

可以到SAM官网体验分割效果,这里以清明上河图为例

我们通过Upload选项上传清明上河图原图

我们先试试自动分割Everything,其实效果一般,很多精细的地方没分出来

在这里插入图片描述

但这不代表不能进行精细的分割,我们可以点击Hover & Click选项,接着把鼠标移到图中,就能看到分割的效果。

在这里插入图片描述
这个图中主要有三个元素:车夫、推车人和车,现在这三个元素使混合在一起的。可以通过左侧的Remove Area选项进行更细粒度地分割,比如分割出车夫

在这里插入图片描述

4 总结

SAM的更多应用大家可以进一步发掘。展望未来,像素级别的图像理解与视觉内容的更高级别的语义理解之间更紧密的耦合,将实现更强大的人工智能系统。


🔥 更多精彩专栏

  • 《ROS从入门到精通》
  • 《Pytorch深度学习实战》
  • 《机器学习强基计划》
  • 《运动规划实战精讲》

👇源码获取 · 技术交流 · 抱团学习 · 咨询分享 请联系👇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/455435.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IJKPLAYER源码分析-常用API

前言 本文简要介绍IJKPLAYER的几个常用API,以API使用的角度,来审视其内部运作原理。这里以iOS端直播API调用切入。 调用流程 init 创建播放器实例后,会先调用init方法进行初始化: - (IJKFFMediaPlayer *)init {self [super ini…

《深入浅出Embedding》随笔

ChatGPT的核心运行机制或许是Transformer, ChatGPT的核心数据机制或许就是嵌入(Embedding)了。什么是Embedding呢?了解Embedding可以为我们的软件研发工作带来哪些帮助呢?鉴于此,老码农阅读了《深入浅出Emb…

前端切图仔入门Docker,三分钟上线自己的博客平台

依稀记得2022年趁某平台优惠买了台云服务器,周未准备安装MySQL数据库,两天时间卡在MySQL环境配置上,实在是折磨一气之下把服务器给退了。 要是我早一点学会Docker,我的博客估计已上线一年啦!前端切图仔学会Docker&…

AI魔法秀:D-ID助你打造视频虚拟数字人

随着ChatGPT的各种玩法,写文章、做PPT、编程、修bug等,大家都玩的不亦说乎,可以说真的给家人们提升的效率很高,最近个人尝试着制作一个虚拟数字人,也是一个玩法,可以帮助很多中小企业做企业文化宣讲或者是产…

闲谈【Stable-Diffusion WEBUI】的插件:美不美?交给AI打分

文章目录 (零)前言(一)咖啡店艺术评价(Cafe Aesthetic) (零)前言 本篇主要提到了WEBUI的Cafe Aesthetic插件,这是一个相对独立的插件,单独标签页,…

周杰伦代言的蕉下,3年半广告宣传费超10亿,全靠营销?

五一假期将至,各地即将迎来旅游小热潮,不少游客也开始为自己的出行准备攻略。随着露营、徒步等城市户外运动的兴起,防晒理念“再度升温”,靠卖小黑伞起家的蕉下瞄准年轻世代消费者,又在疯狂收割“防晒焦虑”。 去年4月…

【JavaWeb】JavaScript

1、JavaScript 介绍 Javascript 语言诞生主要是完成页面的数据验证。因此它运行在客户端,需要运行浏览器来解析执行 JavaScript 代码。 JS 是 Netscape 网景公司的产品,最早取名为 LiveScript;为了吸引更多 java 程序员。更名为 JavaScript。 JS 是弱…

排序 - 冒泡排序(Bubble Sort)

文章目录 冒泡排序介绍冒泡排序实现复杂度和稳定性冒泡排序时间复杂度冒泡排序稳定性 代码实现核心&注意结尾 每日一道算法提高脑力,今天是第一天,来个最简单的算法–冒泡排序。 冒泡排序介绍 它是一种较简单的排序算法。它会遍历若干次要排序的数列…

对话庄表伟老师-文字实录

我内心有一套价值观,有一套世界观,它是一个完整的整体,无论我做任何的事情,工作也好、生活也好、学习也好、去做社区也好、或者是结识朋友也好、去聊天也好,背后的价值观在内心都是一整套的,互相之间是不会…

Python学习之简易图片浏览器

俗话说实践是学习最有效的方法。最近在学习python,于是就参考着各类文章,也倒腾了一个简易图片浏览器,效果图如下: 整个浏览器分为左右两侧,左侧是地址栏图片文件列表;右侧则是图片显示区域。 左侧地址栏有…

数据结构,二叉搜索树的详解

🧑‍💻作者:程序猿爱打拳,Java领域新星创作者,阿里云社区博客专家。 🗃️文章收录于:数据结构与算法 🗂️JavaSE的学习:JavaSE 🗂️MySQL数据库的学习: MySQL…

Python基础之类

一:什么是类 类即类别/种类,是面向对象分析和设计的基石,如果多个对象有相似的数据与功能,那么该多个对象就属于同一种类。有了类的好处是:我们可以把同一类对象相同的数据与功能存放到类里,而无需每个对象…

【AI绘画】Midjourney的使用及程序示例

Midjourney 1.背景2.Midjourney的原理3.Midjourney的使用方法4.Midjourney的示例代码 1.背景 Midjourney 是一款基于深度学习的图像转换工具,其可以将一张图像转换成具有不同风格的图像,例如将一张照片转换成卡通风格的图像。Midjourney 基于 TensorFlow…

Jetson Nano一步到位打开USB摄像头(Rosmaster小车)

背景:我用的rosmaster r2小车配的摄像头是Astra pro,也就是下图这款: 1. 支持的摄像头 Jetson开发包有多个用于连接相机的接口,包括USB、以太网和MIPI CSI-2。流行的相机是现成的支持,而Jetson生态系统合作伙伴支持广…

基于树莓派的OpenEuler基础实验二

文章目录 基于树莓派的OpenEuler基础实验二一、ROS中间件介绍1. ROS话题通信与服务通信2. 常见的ROS终端命令 二、中间件基础实验1. ROS的移植2. ROS的安装和环境配置3. 第一个ROS实践之开启小海龟4. ROS话题实践1)ROS工作区与软件包的创建2)ROS的话题通…

可能是最强的Python可视化神器,建议一试

数据分析离不开数据可视化,我们最常用的就是Pandas,Matplotlib,Pyecharts当然还有Tableau,看到一篇文章介绍Plotly制图后我也跃跃欲试,查看了相关资料开始尝试用它制图。 Plotly Plotly是一款用来做数据分析和可视化的…

《商用密码应用与安全性评估》第二章政策法规2.4商用密码应用安全性评估工作

商用密码应用安全性评估体系发展历程 第一阶段:制度奠基期(2007年11月至2016年8月) 第二阶段:再次集结期(2016年9月至2017年4月) 第三阶段:体系建设期(2017年5月至2017年9月&…

【Vue3】vue3中的watchEffect使用及其他的API

目录 一,watchEffect 二,生命周期 三,什么是hooks? 四,toRef 五,其他组合式API 5.1shallowReactive&shallowRef 5.2readonly&shallowReadonly 5.3.toRaw&markRaw 5.4自定义Ref-customRef ​5.5pr…

SSM框架整合之单表操作

1、Spring和Spring MVC父子容器 概念介绍 1.在Spring与SpringMVC进行整合的时候,一般情况下我们会使用不同的配置文件来配置Spring和SpringMVC,因此我们的应用中会存在至少2个ApplicationContext的实例,由于是在Web应用中,因此最…

基于Html+Css的图片展示26

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…