通过文本提示进行目标检测和任意目标分割的功能在现代图像处理与机器视觉领域中具有极其重要的地位。这一功能的重要性主要体现在以下几个方面:
今天小编要介绍一个项目,来自于Huy Mai的《Realtime Language-Segment-Anything on Jetson Orin》,作者在Jetson Orin平台上,实现了通过文本提示进行目标检测和任意目标分割的功能。这一技术经过优化,特别适用于边缘部署,能够在保证性能的同时,满足实时交互的需求。通过高效的模型集成和算法改进,作者为用户提供了一个快速响应且准确的目标检测和分割解决方案,使得在边缘设备上处理复杂图像任务成为可能,极大地提升了实时应用的性能和用户体验。
让我们一起来看看吧!
原文地址: www.hackster.io/lurst811/realtime-language-segment-anything-on-jetson-orin-ccf6e1
项目概要
语言分割任意目标模型是一个两阶段模型,它结合了目标检测模型和分割模型的功能,允许用户通过文本提示来检测和分割任意目标。传统的语言分割任意目标模型通常结合GroundingDINO和SAM(Segment Anything Model,即任意分割模型)。然而,GroundingDINO和SAM的运行速度都太慢,无法在边缘设备(如Jetson Orin)上实现有意义的实时交互。
在本项目中,我通过将GroundingDINO替换为Yolo-world,将SAM替换为EfficientVitSAM,成功实现了语言分割任意目标模型6倍的速度提升。改进后的模型名为“Realtime-Language-Segment-Anything”,还包括视频和实时网络摄像头处理等新功能。
“语言分割任意目标”的原始架构涉及将一张图像和一段文本提示输入到Grounding DINO模型中。然后,该模型会根据用户提示生成一张带有边界框的图像。接下来,将图像和边界框坐标一起输入到SAM模型中,以生成最终的图像,其中包括边界框以及检测到的对象的蒙版。这种方法通过使用SAM的生成式人工智能技术,可以根据任意文本输入,利用点、框或文本等提示,“裁剪”出图像中的任意对象,从而精确检测和分割图像中的任何区域。
改进架构
时序分析
为了观察新旧架构之间的性能差异,我进行了一系列测试,并记录了处理任务完成所需的时间。我所测试的基线模型可以在此存储库中找到。
两个模型都在Invidia Jetson AGX Orin 64GB上运行。无论是在单张图像预测还是批量预测(视频)方面,实时语言分割模型(Realtime-Language-Segment-Anything)的性能都明显优于原始模型。
在单张图像预测方面,实时语言分割模型的速度是原始模型的两倍。
对于通过视频片段进行的批处理,实时语言分割模型(Realtime-Language-Segment-Anything)的速度是语言分割模型(Language-Segment-Anything)的6倍。这是因为原始模型必须对每一帧进行提示编码,而实时语言分割模型只需在开始时进行一次提示编码。此外,实时语言分割模型使用YOLO模型作为目标检测的骨干网络,使用EfficientViT作为分割的骨干网络,这两个骨干网络都进行了速度优化,且没有损失太多性能。
总体而言,实时语言分割模型(Realtime-Language-Segment-Anything)能够实现每张图像处理时间为30毫秒,大致相当于每秒30帧的速度。凭借这一结果,实时语言分割模型可以轻松地在Jetson AGX Orin上使用网络摄像头的输入进行实时处理。
硬件安装
本项目的硬件设置包括鼠标、键盘和显示器,以便与Jetson Orin进行交互。网线为Jetson Orin提供互联网接入。最后,用USB摄像头使硬件能够实时捕捉图像。
安装步骤
sudo apt install python3-opencv
git clone https://github.com/TruonghuyMai/Realtime_Language_Segment_Anything.git
pip3 install -r requirements.txt
pip3 install gradio
python3 app.py
浏览器应该会打开,并允许您通过提示使用自己选择的图像、视频或网络摄像头来使用模型。