在Jetson上玩转大模型Day11:SAM2应用

科技   2024-11-08 18:08   江苏  











 在Jetson上玩转大模型:写在前面

在Jetson上玩转大模型Day2:环境搭建

在Jetson上玩转大模型Day3:TGW智能助手

在Jetson上玩转大模型Day4:SDW文生图

在Jetson上玩转大模型Day5:Ollama指令模式的智能助手

在Jetson上玩转大模型Day6:Ollama的Webui智能助手

在Jetson上玩转大模型Day7:執行RAG功能的Jetson Copilot

在Jetson上玩转大模型Day8:多模態搜圖的NanoDB

在Jetson上玩转大模型Day9:建立EffectiveViT测试环境

在Jetson上玩转大模型Day10:OWL-ViT应用


图像分割(segmentation)是一项基础的计算机视觉任务,通过将每个像素分配给一个类别或对象,将数字图像分割成多个部分。传统上,分割包括三个主要任务:

  • 语义分割:将每个像素分配给预定义的语义类别标签;

  • 实例分割:进一步区分相同类别的实例;

  • 全景分割:将语义分割和实例分割结合起来,全面理解场景。

下图可以简单说明机器视觉中四种常用识别的特性:

有经验的人都很清楚这四种算法之间的差异与所需的对应算力之间的关系。事实上,在医疗、工程、航天、自动驾驶等很多使用价值高的应用场景中,对于分割技术的需求是非常明显的。

例如人体器官从来都不是矩形,并且在人体中是相互叠加的,于是至少需要实例分割的技术才堪使用。同样的,在航拍应用、无人驾驶、工程实施等应用,简单的物体识别就显得过于粗糙,实用价值非常有限。

见面文章中提到Google研究院所提出的ViT(Vision Transofmers)技术,将机器视觉与大语言模型结合成多模态的应用,为机器视觉领域开创新的纪元,于是在这个基础之上又发展出许多新的技术,其中Meta所开源的SAM(Segment Anthing Model)模型,算得上是破局影响力的技术,目前已经发展到SAM2版本。

SAM 2可以识别视频中的特定对象,并实时实现该对象的追踪与提取,在视频编辑与特效制作中,可以高效辅助工作。该模型也可以根据用户具体诉求,选择分割某个物体或某个区域,使控制更加精准。

与其他模型不同的是,SAM2拥有对不熟悉物体和图像的零样本泛化能力,无需额外训练,只需单击一帧视频中的任何物体,即可实现对目标对象的实时追踪,快速处理未来每一帧。除此以外,该模型还可以集成到更大的系统中,它善于从其他智能系统中获取提示,使系统之间完成协作。例如,SAM2能够在AR/VR穿戴式设备中选择用户注视对象,也可以读取分割对象的边界框提示,完成文本提示到视频图像分割的转化。

现在我们就要在NVIDIA Jetson Orin上创建执行SAM2的应用环境。由于SAM2主要的依赖项为:

  • python>=3.10

  • torch>=2.3.1

  • torchvision>=0.18.1

因此我们在Jetson Orin上选择以dustynv/l4t-pytorch:r36.2.0版本的镜像文件为基础,来搭建SAM2的执行环境。由于项目还需要源代码仓来协助环境安装,因此我们还需要提前将代码仓复制到本地来,并且使用“-v”参数来进行指定。第一阶段的完整设定指令如下:

$ git  clone  https://github.com/facebookresearch/segment-anything-2.git

$ jetson-containers  run  -v  ~/segment-anything-2:/sam2  $(autotag l4t-pytorch)

如果系统中还没有dustynv/l4t-pytorch:r36.2.0镜像的话,会自动下载。执行完进入容器之后再执行以下指令:

$ cd  /sam2  $$  pip install -e .

这个项目提供一套Jupyter Notebook的入门学习教程,推荐初学者可以先从这里入手。要在容器里创建这个学习环境,只要执行以下指令即可:

$ pip install -e  “.[demo]”

为了要让执行比较顺畅,我们可以先执行以下指令,去下载所需要使用的模型:

$ cd  checkpoints  &&  ./download_ckpt.sh

如果不修改内容的话,会将SAM2所提供的4个不同规模的模型全部下载,最大的sam2_hiera_large.pt也不到900MB,全部下载完的内容如下:

现在我们就可以简单执行下面指令,启动Jupyter学习环境:

$ cd  /sam2  &&  jupyter-lab --allow-root

启动Jupyter服务器之后,最后面会出现如下图的信息:

右键点击上图黑色标注的地方,选择“Open Link”就会自动在浏览器中打开Jupyter环境,进入notebooks目录之后,会看到如下图里的三个 .ipynb 文件:

现在就可以开始选择从这里体验SAM2的操作,這三個ipynb的主要內容如下:automatic_mask_generator_example.ipynb:由于SAM 2可以有效地处理提示,因此可以通过在图像上采样大量提示来生成整个图像的掩码。這個範例展示了這項功能櫃,通过在图像上的网格中采样单点输入提示来工作,SAM可以从每个提示中预测多个掩码。然后,对掩模进行质量滤波,并使用非最大抑制进行重复数据消除。其他选项允许进一步提高掩模的质量和数量,例如对图像的多个作物进行预测,或对掩模进行后处理以去除小的断开区域和孔洞。

image_predictor_examples.ipynb:根据指示所需对象的提示预测对象掩码。该模型首先将图像转换为图像嵌入,从而允许从提示中高效地生成高质量的掩模。为模型提供了一个简单的接口用于提示模型,允许用户首先使用set_image方法设置图像,该方法计算必要的图像嵌入。然后,可以通过预测方法提供提示,以根据这些提示有效地预测掩码。该模型可以将点和框提示以及之前预测迭代的掩码作为输入。

video_predictor_examples.ipynb:本笔记本展示了如何使用SAM 2在视频中进行交互式分割,涵盖以下内容:

  • 在帧上添加点击(或框)以获取和细化掩码(时空掩码)

  • 在整个视频中传播点击(或框)以获得掩码

  • 同时分割和跟踪多个目标

現在就可以開始好好跟隨每個ipynb裏面所提供的指示,開始輕鬆學習SAM2有趣並且強大的功能。

由於SAM2的應用場景十分豐富,可以在官網https://ai.meta.com/SAM2/與開源倉https://github.com/facebookresearch/segment-anything-2 找到更多應用項目以及配套資源。


GPUS开发者
在这里,你可以及时了解NVIDIA GPU的行业资讯、最新进展、应用场景和各项功能。还有一些工具、技巧和教程,帮助你利用GPU打造未来的科技。参与GPU世界举办的精彩活动,体验人工智能的未来生活。
 最新文章