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: Theo dõi đối tượng bằng cách sử dụng FastSAM với 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 đoạn Bất kỳ ( SAM ) , một mô hình Biến áp nặng với yêu cầu về tài nguyên tính toán đáng kể. FastSAM tách tác vụ phân đoạn bất kỳ thành hai giai đoạn tuần tự: phân đoạn tất cả các trường hợp và lựa chọn theo hướng dẫn của lời nhắc. Giai đoạn đầu tiên sử dụng YOLOv8 -seg để tạo mặt nạ phân đoạn của tất cả các trường hợp trong hình ảnh. Ở giai đoạn thứ hai, nó đưa ra vùng 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 đĩa đơn NVIDIA RTX 3090, thể hiện tính 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ìnhTrọng lượng được đào tạo trướcCác tác vụ được hỗ trợSuy luậnXác nhậnĐào tạoXuất khẩu
FastSAM-sFastSAM-s.ptPhân đoạn phiên bản
FastSAM-xFastSAM-x.ptPhâ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 một hình ảnh, sử dụng predict Phương pháp như hình dưới đây:

Ví dụ

from ultralytics import FastSAM

# 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)

# Run inference with bboxes prompt
results = model(source, bboxes=[439, 437, 524, 709])

# Run inference with points prompt
results = model(source, points=[[200, 200]], labels=[1])

# Run inference with texts prompt
results = model(source, texts="a photo of a dog")

# Run inference with bboxes and points and texts prompt at the same time
results = model(source, bboxes=[439, 437, 524, 709], points=[[200, 200]], labels=[1], texts="a photo of a dog")
# 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.

Ví dụ về FastSAMPredictor

Bằng cách này, bạn có thể chạy suy luận trên hình ảnh và nhận được tất cả các phân đoạn results Một lần và chạy nhắc suy luận nhiều lần mà không chạy suy luận nhiều lần.

from ultralytics.models.fastsam import FastSAMPredictor

# Create FastSAMPredictor
overrides = dict(conf=0.25, task="segment", mode="predict", model="FastSAM-s.pt", save=False, imgsz=1024)
predictor = FastSAMPredictor(overrides=overrides)

# Segment everything
everything_results = predictor("ultralytics/assets/bus.jpg")

# Prompt inference
bbox_results = predictor.prompt(everything_results, bboxes=[[200, 200, 300, 300]])
point_results = predictor.prompt(everything_results, points=[200, 200])
text_results = predictor.prompt(everything_results, texts="a photo of a dog")

Ghi

Tất cả những gì được trả lại results Trong các ví dụ trên là Kết quả đối tượng cho phép truy cập mặt nạ dự đoán và hình ảnh nguồn một cách dễ dàng.

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 hộp giới hạn (cung cấp tọa độ hộp theo đị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.

FAQ

Là gì FastSAM và nó khác với như thế nào SAM?

FastSAM , viết tắt của Fast Segment Anything Model, là giải pháp dựa trên mạng nơ-ron tích chập thời gian thực (CNN) được thiết kế để giảm nhu cầu tính toán trong khi vẫn duy trì hiệu suất cao trong các tác vụ phân đoạn đối tượng. Không giống như Segment Anything Model ( SAM ), sử dụng kiến trúc dựa trên Transformer nặng hơn, FastSAM tận dụng Ultralytics YOLOv8 -seg để phân đoạn phiên bản hiệu quả trong hai giai đoạn: phân đoạn toàn bộ phiên bản theo sau là lựa chọn được hướng dẫn bằng lời nhắc.

Làm thế nào FastSAM Đạt được hiệu suất phân khúc theo thời gian thực?

FastSAM Đạt được phân đoạn theo thời gian thực bằng cách tách tác vụ phân đoạn thành phân đoạn tất cả các phiên bản với YOLOv8-SEG và các giai đoạn lựa chọn có hướng dẫn nhanh chóng. Bằng cách sử dụng hiệu quả tính toán của CNN, FastSAM cung cấp giảm đáng kể nhu cầu tính toán và tài nguyên trong khi vẫn duy trì hiệu suất cạnh tranh. Cách tiếp cận hai giai đoạn này cho phép FastSAM để cung cấp phân khúc nhanh chóng và hiệu quả phù hợp với các ứng dụng yêu cầu kết quả nhanh chóng.

Các ứng dụng thực tế của là gì FastSAM?

FastSAM có tính thực tế đối với nhiều tác vụ thị giác máy tính đòi hỏi hiệu suất phân đoạn thời gian thực. Các ứng dụng bao gồm:

  • Tự động hóa công nghiệp để kiểm soát và đảm bảo chất lượng
  • Phân tích video thời gian thực để bảo mật và giám sát
  • Xe tự hành để phát hiện và phân đoạn đối tượng
  • Hình ảnh y tế cho các nhiệm vụ phân đoạn chính xác và nhanh chóng

Khả năng xử lý các lời nhắc tương tác người dùng khác nhau của nó làm cho FastSAM thích ứng và linh hoạt cho các kịch bản đa dạng.

Làm cách nào để sử dụng FastSAM Mô hình suy luận trong Python?

Sử dụng FastSAM để suy luận trong Python, bạn có thể làm theo ví dụ dưới đây:

from ultralytics import FastSAM

# 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)

# Run inference with bboxes prompt
results = model(source, bboxes=[439, 437, 524, 709])

# Run inference with points prompt
results = model(source, points=[[200, 200]], labels=[1])

# Run inference with texts prompt
results = model(source, texts="a photo of a dog")

# Run inference with bboxes and points and texts prompt at the same time
results = model(source, bboxes=[439, 437, 524, 709], points=[[200, 200]], labels=[1], texts="a photo of a dog")

Để biết thêm chi tiết về các phương pháp suy luận, hãy kiểm tra phần Dự đoán mức sử dụng của tài liệu.

Những loại lời nhắc nào FastSAM Hỗ trợ cho các nhiệm vụ phân khúc?

FastSAM Hỗ trợ nhiều loại lời nhắc để hướng dẫn các tác vụ phân đoạn:

  • Everything Prompt: Tạo phân đoạn cho tất cả các đối tượng hiển thị.
  • Bounding Box (BBox) Prompt: Phân đoạn các đối tượng trong một hộp giới hạn được chỉ định.
  • Lời nhắc Văn bản: Sử dụng văn bản mô tả để phân đoạn các đối tượng khớp với mô tả.
  • Point Prompt: Phân đoạn các đối tượng gần các điểm cụ thể do người dùng xác định.

Sự linh hoạt này cho phép FastSAM để thích ứng với một loạt các kịch bản tương tác người dùng, nâng cao tiện ích của nó trên các ứng dụng khác nhau. Để biết thêm thông tin về cách sử dụng các lời nhắc này, hãy tham khảo phần Tính năng chính .

📅 Được tạo ra cách đây 1 năm ✏️ Đã cập nhật cách đây 1 tháng

Ý kiến