下图可以简单说明机器视觉中四种常用识别的特性:
有经验的人都很清楚这四种算法之间的差异与所需的对应算力之间的关系。事实上,在医疗、工程、航天、自动驾驶等很多使用价值高的应用场景中,对于分割技术的需求是非常明显的。
例如人体器官从来都不是矩形,并且在人体中是相互叠加的,于是至少需要实例分割的技术才堪使用。同样的,在航拍应用、无人驾驶、工程实施等应用,简单的物体识别就显得过于粗糙,实用价值非常有限。
见面文章中提到Google研究院所提出的ViT(Vision Transofmers)技术,将机器视觉与大语言模型结合成多模态的应用,为机器视觉领域开创新的纪元,于是在这个基础之上又发展出许多新的技术,其中Meta所开源的SAM(Segment Anthing Model)模型,算得上是破局影响力的技术,目前已经发展到SAM2版本。
SAM 2可以识别视频中的特定对象,并实时实现该对象的追踪与提取,在视频编辑与特效制作中,可以高效辅助工作。该模型也可以根据用户具体诉求,选择分割某个物体或某个区域,使控制更加精准。
与其他模型不同的是,SAM2拥有对不熟悉物体和图像的零样本泛化能力,无需额外训练,只需单击一帧视频中的任何物体,即可实现对目标对象的实时追踪,快速处理未来每一帧。除此以外,该模型还可以集成到更大的系统中,它善于从其他智能系统中获取提示,使系统之间完成协作。例如,SAM2能够在AR/VR穿戴式设备中选择用户注视对象,也可以读取分割对象的边界框提示,完成文本提示到视频图像分割的转化。
现在我们就要在NVIDIA Jetson Orin上创建执行SAM2的应用环境。由于SAM2主要的依赖项为:
因此我们在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的主要內容如下:
現在就可以開始好好跟隨每個ipynb裏面所提供的指示,開始輕鬆學習SAM2有趣並且強大的功能。
由於SAM2的應用場景十分豐富,可以在官網https://ai.meta.com/SAM2/與開源倉https://github.com/facebookresearch/segment-anything-2 找到更多應用項目以及配套資源。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。