【计算机视觉】Fast Segment Anything 安装步骤和示例代码解读(含源代码)

简介: 快速分段任意模型 (FastSAM) 是一种 CNN 分段任意模型,仅由 SAM 作者发布的 SA-1B 数据集的 2% 进行训练。 FastSAM 的性能与 SAM 方法相当,运行速度提高了 50 倍。

一、导读

image.png
论文地址:

https://arxiv.org/abs/2306.12156

image.png
快速分段任意模型 (FastSAM) 是一种 CNN 分段任意模型,仅由 SAM 作者发布的 SA-1B 数据集的 2% 进行训练。 FastSAM 的性能与 SAM 方法相当,运行速度提高了 50 倍。

image.png

二、安装步骤

2.1 将存储库克隆到本地

git clone https://github.com/CASIA-IVA-Lab/FastSAM.git

image.png

2.2 创建 conda 环境

该代码需要 python>=3.7,以及 pytorch>=1.7 和 torchvision>=0.8。

请按照此处的说明安装 PyTorch 和 TorchVision 依赖项。 强烈建议安装支持 CUDA 的 PyTorch 和 TorchVision。

conda create -n FastSAM python=3.9
conda activate FastSAM

2.3 安装软件包

cd FastSAM
pip install -r requirements.txt

image.png

image.png
我们看到,下载速度太慢,我们需要引入镜像源!

以下是一些常用的Python镜像源地址,可用于加速Python软件包的安装和更新:

清华大学:https://pypi.tuna.tsinghua.edu.cn/simple

安装命令:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple [package_name]

image.png
image.png
下载完成!

2.4 安装 CLIP

pip install git+https://github.com/openai/CLIP.git

2.5 下载权重文件

https://drive.google.com/file/d/1m1sjY4ihXBU1fZXdQ-Xdj-mDltW-2Rqv/view

image.png

2.6 开始使用

然后,您可以运行脚本来尝试一切模式和三种提示模式。

建立一个weights的文件夹,把刚刚下载的权重文件导进去:
image.png

具体结果为:

image.png

2.6.1 Everything mode

python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg

2.6.2 Text prompt

python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg  --text_prompt "the yellow dog"

2.6.3 Box prompt (xywh)

python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg --box_prompt "[570,200,230,400]"

2.6.4 Points prompt

python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg  --point_prompt "[[520,360],[620,300]]" --point_label "[1,0]"

三、示例代码

!git clone https://github.com/CASIA-IVA-Lab/FastSAM.git

下载权重文件:

!wget https://huggingface.co/spaces/An-619/FastSAM/resolve/main/checkpoints/FastSAM.pt

image.png
安装需要的包:

!pip install -r FastSAM/requirements.txt
!pip install git+https://github.com/openai/CLIP.git

image.png
下载名为"dog.jpg"的文件并将其保存到名为"images"的目录中:

!wget -P images https://raw.githubusercontent.com/facebookresearch/segment-anything/main/notebooks/images/dog.jpg

image.png

import matplotlib.pyplot as plt
import cv2

cv2是一个流行的Python库,全称为OpenCV(Open Source Computer Vision Library)。它提供了丰富的计算机视觉和图像处理功能,可以用于处理图像、视频和摄像头输入。以下是cv2包的一些主要功能和用途:

图像读取和显示:cv2可以加载、读取和显示图像文件,支持多种常见图像格式(如JPEG、PNG等)。
图像处理和增强:cv2提供了各种图像处理和增强功能,例如调整大小、裁剪、旋转、翻转、缩放、滤波、边缘检测等。
颜色空间转换:cv2可以实现不同颜色空间之间的转换,如RGB、灰度、HSV等。
特征检测和描述:cv2提供了一些常见的特征检测和描述算法,如SIFT、SURF、ORB等,用于在图像中寻找关键点和描述符。
目标检测和识别:cv2可以用于目标检测和识别任务,包括人脸检测、物体识别等。
图像分割和轮廓检测:cv2提供了图像分割和轮廓检测算法,用于将图像分割成不同的区域并提取其边界。
视频处理和分析:cv2支持视频读取、处理和分析,可以从视频文件或实时摄像头获取视频流,并进行各种操作和分析。
图像绘制和标注:cv2可以在图像上绘制各种几何形状、文字和标注,用于可视化和分析结果展示。

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

使用cv2的imread函数加载’dog.jpg’图像文件,并将其存储在变量image中。函数imread接受图像文件的路径作为参数,并返回一个表示图像的多维数组(通常是一个NumPy数组)。注意,默认情况下,imread将图像以BGR颜色顺序加载。

使用cv2的cvtColor函数将图像从BGR颜色空间转换为RGB颜色空间。函数cvtColor接受两个参数,第一个参数是要转换的图像,第二个参数是转换的颜色空间代码。在这里,我们将BGR2RGB传递给第二个参数,表示将图像从BGR转换为RGB。

通过这两行代码,您可以加载图像文件并将其从BGR颜色空间转换为RGB颜色空间。这在处理和显示图像时很常见,因为大多数情况下,我们使用RGB颜色空间来表示图像。

original_h = image.shape[0]
original_w = image.shape[1]
print(original_w, original_h)
plt.figure(figsize=(10, 10))
plt.axis("off")
plt.imshow(image)

使用image的shape属性来获取图像的尺寸信息。shape属性返回一个包含图像高度、宽度和通道数的元组。元组的第一个元素是图像的高度,第二个元素是图像的宽度,第三个元素是图像的通道数。通过将shape的第一个元素赋值给original_h,将shape的第二个元素赋值给original_w,我们得到了图像的原始高度和宽度。

打印了图像的原始宽度和高度。

使用matplotlib库创建一个新的图像窗口,并在窗口中显示图像。plt.figure(figsize=(10, 10))指定了图像窗口的大小为10x10英寸。plt.axis(“off”)设置图像窗口的坐标轴为关闭状态,以便不显示坐标轴。plt.imshow(image)显示image变量中的图像数据。

通过这段代码,您可以获取图像的原始尺寸,并在一个新的图像窗口中显示图像。

输出的结果为:
image.png
–imgsz 1024"表示输入图像大小为1024。我们的模型是在1024的大小上训练的。您可以将其更改为您想要输入的任何大小。使用其他大小会产生不同的分割结果。

!python FastSAM/Inference.py  --model_path FastSAM.pt --img_path ./images/dog.jpg --imgsz 1024

image.png

image = cv2.imread('output/dog.jpg')
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
original_h = image.shape[0]
original_w = image.shape[1]
print(original_w, original_h)
plt.figure(figsize=(10, 10))
plt.axis("off")
plt.imshow(image)

输出结果为:
image.png

相关文章
|
数据可视化 PyTorch 算法框架/工具
|
机器学习/深度学习 存储 并行计算
【计算机视觉】如何利用 CLIP 做简单的人脸任务?(含源代码)
CELEBA 数据集(CelebFaces Attributes Dataset)是一个大规模的人脸图像数据集,旨在用于训练和评估人脸相关的计算机视觉模型。该数据集由众多名人的脸部图像组成,提供了丰富的人脸属性标注信息。
|
计算机视觉
【计算机视觉】DINOv2的四种模型代码示范,以 28 * 28 的图像示例(含源代码)
DINOv2利用最大模型ViT-g的知识蒸馏,而不是从头开始训练,从而提高了性能。这个过程包括将知识从更大、更复杂的模型(教师)转移到更小的模型(学生)。学生模型被训练来模仿教师的输出,从而继承其优越的能力。这个过程提高了小型模型的性能,使它们更有效率。
|
数据可视化 计算机视觉
【计算机视觉】DINOv2的四种模型代码示范(含源代码)
DINOv2利用最大模型ViT-g的知识蒸馏,而不是从头开始训练,从而提高了性能。这个过程包括将知识从更大、更复杂的模型(教师)转移到更小的模型(学生)。学生模型被训练来模仿教师的输出,从而继承其优越的能力。这个过程提高了小型模型的性能,使它们更有效率。
2173 0
|
机器学习/深度学习 数据挖掘 C++
计算机视觉、机器学习相关领域论文和源代码大集合
计算机视觉、机器学习相关领域论文和源代码大集合--持续更新…… zouxy09@qq.com http://blog.csdn.net/zouxy09 注:下面有project网站的大部分都有paper和相应的code。
1541 0
|
机器学习/深度学习 数据挖掘 计算机视觉
计算机视觉、机器学习相关领域论文和源代码大集合
注:下面有project网站的大部分都有paper和相应的code。Code一般是C/C++或者Matlab代码。 最近一次更新:2013-3-17 一、特征提取Feature Extraction: ·         SIFT [1] [Demo program][SIFT Lib...
1482 0
|
7月前
|
机器学习/深度学习 计算机视觉
AIGC核心技术——计算机视觉(CV)预训练大模型
【1月更文挑战第13天】AIGC核心技术——计算机视觉(CV)预训练大模型
643 3
AIGC核心技术——计算机视觉(CV)预训练大模型
|
机器学习/深度学习 PyTorch 算法框架/工具
Azure 机器学习 - 使用 ONNX 对来自 AutoML 的计算机视觉模型进行预测
Azure 机器学习 - 使用 ONNX 对来自 AutoML 的计算机视觉模型进行预测
129 0
|
3月前
|
人工智能 测试技术 API
AI计算机视觉笔记二十 九:yolov10竹签模型,自动数竹签
本文介绍了如何在AutoDL平台上搭建YOLOv10环境并进行竹签检测与计数。首先从官网下载YOLOv10源码并创建虚拟环境,安装依赖库。接着通过官方模型测试环境是否正常工作。然后下载自定义数据集并配置`mycoco128.yaml`文件,使用`yolo detect train`命令或Python代码进行训练。最后,通过命令行或API调用测试训练结果,并展示竹签计数功能。如需转载,请注明原文出处。
|
3月前
|
人工智能 测试技术 PyTorch
AI计算机视觉笔记二十四:YOLOP 训练+测试+模型评估
本文介绍了通过正点原子的ATK-3568了解并实现YOLOP(You Only Look Once for Panoptic Driving Perception)的过程,包括训练、测试、转换为ONNX格式及在ONNX Runtime上的部署。YOLOP由华中科技大学团队于2021年发布,可在Jetson TX2上达到23FPS,实现了目标检测、可行驶区域分割和车道线检测的多任务学习。文章详细记录了环境搭建、训练数据准备、模型转换和测试等步骤,并解决了ONNX转换过程中的问题。

热门文章

最新文章