Bỏ để qua phần nội dung

Mô hình bất cứ điều gì phân đoạn nhanh (FastSAM)

Mô hình phân khúc nhanh bất cứ thứ gì (FastSAM) là một giải pháp dựa trên CNN mới, thời gian thực cho nhiệm vụ Phân đoạn bất cứ điều gì. Tác vụ này được thiết kế để phân đoạn bất kỳ đối tượng nào trong một hình ảnh dựa trên các lời nhắc tương tác người dùng khác nhau có thể. FastSAM Giảm đáng kể nhu cầu tính toán trong khi vẫn duy trì hiệu suất cạnh tranh, làm cho nó trở thành một lựa chọn thiết thực cho nhiều nhiệm vụ tầm nhìn.



Xem: Object Tracking using FastSAM with Ultralytics

Kiến trúc mô hình

Mô hình bất cứ điều gì phân đoạn nhanh (FastSAM) Tổng quan về kiến trúc

Tổng quan

FastSAM được thiết kế để giải quyết những hạn chế của Mô hình phân khúc bất cứ thứ gì (SAM), một mô hình Biến áp nặng với các yêu cầu tài nguyên tính toán đáng kể. Các FastSAM Tách nhiệm vụ phân đoạn bất cứ điều gì thành hai giai đoạn tuần tự: phân đoạn tất cả các phiên bản và lựa chọn có hướng dẫn nhanh chóng. Giai đoạn đầu tiên sử dụng YOLOv8-seg để tạo ra các mặt nạ phân đoạn của tất cả các trường hợp trong hình ảnh. Trong giai đoạn thứ hai, nó xuất ra khu vực quan tâm tương ứng với lời nhắc.

Các tính năng chính

  1. Giải pháp thời gian thực: Bằng cách tận dụng hiệu quả tính toán của CNN, FastSAM Cung cấp một giải pháp thời gian thực cho phân khúc bất cứ nhiệm vụ nào, làm cho nó có giá trị cho các ứng dụng công nghiệp đòi hỏi kết quả nhanh chóng.

  2. Hiệu quả và hiệu suất: FastSAM giúp giảm đáng kể nhu cầu tính toán và tài nguyên mà không ảnh hưởng đến chất lượng hiệu suất. Nó đạt được hiệu suất tương đương với SAM nhưng với tài nguyên tính toán giảm đáng kể, cho phép ứng dụng thời gian thực.

  3. Phân đoạn có hướng dẫn nhanh chóng: FastSAM Có thể phân đoạn bất kỳ đối tượng nào trong một hình ảnh được hướng dẫn bởi các lời nhắc tương tác người dùng khác nhau có thể, cung cấp sự linh hoạt và khả năng thích ứng trong các tình huống khác nhau.

  4. Dựa trên YOLOv8-Seg: FastSAM dựa trên YOLOv8-seg, một máy dò đối tượng được trang bị một nhánh phân đoạn phiên bản. Điều này cho phép nó tạo ra hiệu quả các mặt nạ phân đoạn của tất cả các trường hợp trong một hình ảnh.

  5. Kết quả cạnh tranh về điểm chuẩn: Về nhiệm vụ đề xuất đối tượng trên MS COCO, FastSAM Đạt được điểm số cao với tốc độ nhanh hơn đáng kể so với SAM trên một NVIDIA RTX 3090 duy nhất, thể hiện hiệu quả và khả năng của nó.

  6. Ứng dụng thực tế: Cách tiếp cận được đề xuất cung cấp một giải pháp mới, thiết thực cho một số lượng lớn các nhiệm vụ tầm nhìn với tốc độ thực sự cao, nhanh hơn hàng chục hoặc hàng trăm lần so với các phương pháp hiện tại.

  7. Tính khả thi nén mô hình: FastSAM Chứng minh tính khả thi của một con đường có thể làm giảm đáng kể nỗ lực tính toán bằng cách giới thiệu một nhân tạo trước cấu trúc, do đó mở ra những khả năng mới cho kiến trúc mô hình lớn cho các nhiệm vụ tầm nhìn chung.

Các kiểu máy có sẵn, tác vụ được hỗ trợ và chế độ hoạt động

Bảng này trình bày các mô hình có sẵn với trọng số cụ thể được đào tạo trước, các tác vụ mà chúng hỗ trợ và khả năng tương thích của chúng với các chế độ hoạt động khác nhau như Suy luận, Xác thực, Đào tạoXuất, được biểu thị bằng ✅ biểu tượng cảm xúc cho các chế độ được hỗ trợ và ❌ biểu tượng cảm xúc cho các chế độ không được hỗ trợ.

Loại mô hình Trọng lượng được đào tạo trước Các tác vụ được hỗ trợ Suy luận Xác nhận Đào tạo Xuất khẩu
FastSAM-s FastSAM-s.pt Phân đoạn phiên bản
FastSAM-x FastSAM-x.pt Phân đoạn phiên bản

Ví dụ sử dụng

Các FastSAM Các mô hình dễ dàng tích hợp vào Python Ứng dụng. Ultralytics Cung cấp thân thiện với người dùng Python API và CLI các lệnh để hợp lý hóa sự phát triển.

Dự đoán mức sử dụng

Để thực hiện phát hiện đối tượng trên hình ảnh, hãy sử dụng predict Phương pháp như hình dưới đây:

Ví dụ

from ultralytics import FastSAM
from ultralytics.models.fastsam import FastSAMPrompt

# Define an inference source
source = "path/to/bus.jpg"

# Create a FastSAM model
model = FastSAM("FastSAM-s.pt")  # or FastSAM-x.pt

# Run inference on an image
everything_results = model(source, device="cpu", retina_masks=True, imgsz=1024, conf=0.4, iou=0.9)

# Prepare a Prompt Process object
prompt_process = FastSAMPrompt(source, everything_results, device="cpu")

# Everything prompt
ann = prompt_process.everything_prompt()

# Bbox default shape [0,0,0,0] -> [x1,y1,x2,y2]
ann = prompt_process.box_prompt(bbox=[200, 200, 300, 300])

# Text prompt
ann = prompt_process.text_prompt(text="a photo of a dog")

# Point prompt
# points default [[0,0]] [[x1,y1],[x2,y2]]
# point_label default [0] [1,0] 0:background, 1:foreground
ann = prompt_process.point_prompt(points=[[200, 200]], pointlabel=[1])
prompt_process.plot(annotations=ann, output="./")
# Load a FastSAM model and segment everything with it
yolo segment predict model=FastSAM-s.pt source=path/to/bus.jpg imgsz=640

Đoạn mã này thể hiện sự đơn giản của việc tải một mô hình được đào tạo trước và chạy dự đoán trên hình ảnh.

Sử dụng Val

Xác nhận mô hình trên tập dữ liệu có thể được thực hiện như sau:

Ví dụ

from ultralytics import FastSAM

# Create a FastSAM model
model = FastSAM("FastSAM-s.pt")  # or FastSAM-x.pt

# Validate the model
results = model.val(data="coco8-seg.yaml")
# Load a FastSAM model and validate it on the COCO8 example dataset at image size 640
yolo segment val model=FastSAM-s.pt data=coco8.yaml imgsz=640

Xin lưu ý rằng FastSAM Chỉ hỗ trợ phát hiện và phân đoạn một lớp đối tượng duy nhất. Điều này có nghĩa là nó sẽ nhận ra và phân đoạn tất cả các đối tượng dưới dạng cùng một lớp. Do đó, khi chuẩn bị tập dữ liệu, bạn cần chuyển đổi tất cả các ID danh mục đối tượng thành 0.

Theo dõi việc sử dụng

Để thực hiện theo dõi đối tượng trên hình ảnh, hãy sử dụng track Phương pháp như hình dưới đây:

Ví dụ

from ultralytics import FastSAM

# Create a FastSAM model
model = FastSAM("FastSAM-s.pt")  # or FastSAM-x.pt

# Track with a FastSAM model on a video
results = model.track(source="path/to/video.mp4", imgsz=640)
yolo segment track model=FastSAM-s.pt source="path/to/video/file.mp4" imgsz=640

FastSAM Sử dụng chính thức

FastSAM cũng có sẵn trực tiếp từ https://github.com/CASIA-IVA-Lab/FastSAM Kho. Dưới đây là tổng quan ngắn gọn về các bước điển hình bạn có thể thực hiện để sử dụng FastSAM:

Cài đặt

  1. Sao chép FastSAM Kho:

    git clone https://github.com/CASIA-IVA-Lab/FastSAM.git
    
  2. Tạo và kích hoạt môi trường Conda với Python 3.9:

    conda create -n FastSAM python=3.9
    conda activate FastSAM
    
  3. Điều hướng đến kho lưu trữ nhân bản và cài đặt các gói cần thiết:

    cd FastSAM
    pip install -r requirements.txt
    
  4. Cài đặt mô hình CLIP:

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

Ví dụ sử dụng

  1. Tải xuống điểm kiểm tra mẫu.

  2. Dùng FastSAM để suy luận. Các lệnh ví dụ:

    • Phân đoạn mọi thứ trong một hình ảnh:

      python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg
      
    • Phân đoạn các đối tượng cụ thể bằng lời nhắc văn bản:

      python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg --text_prompt "the yellow dog"
      
    • Phân đoạn các đối tượng trong một hộp giới hạn (cung cấp tọa độ hộp ở định dạng xywh):

      python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg --box_prompt "[570,200,230,400]"
      
    • Phân đoạn đối tượng gần các điểm cụ thể:

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

Ngoài ra, bạn có thể thử FastSAM thông qua bản demo Colab hoặc trên HuggingFace Bản demo trên web cho trải nghiệm hình ảnh.

Trích dẫn và xác nhận

Chúng tôi xin ghi nhận FastSAM Các tác giả cho những đóng góp đáng kể của họ trong lĩnh vực phân đoạn phiên bản thời gian thực:

@misc{zhao2023fast,
      title={Fast Segment Anything},
      author={Xu Zhao and Wenchao Ding and Yongqi An and Yinglong Du and Tao Yu and Min Li and Ming Tang and Jinqiao Wang},
      year={2023},
      eprint={2306.12156},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}

Bản gốc FastSAM giấy có thể được tìm thấy trên arXiv. Các tác giả đã công bố công khai tác phẩm của họ và cơ sở mã có thể được truy cập trên GitHub. Chúng tôi đánh giá cao những nỗ lực của họ trong việc thúc đẩy lĩnh vực này và làm cho công việc của họ có thể tiếp cận được với cộng đồng rộng lớn hơn.



Created 2023-11-12, Updated 2024-06-10
Authors: glenn-jocher (11), RizwanMunawar (2), Laughing-q (1), berry-ding (1)

Ý kiến