Bỏ qua nội dung

Mô hình phân đoạn nhanh bất kỳ thứ gì ( FastSAM )

Mô hình phân đoạn nhanh bất kỳ thứ gì ( FastSAM ) là giải pháp mới, thời gian thực dựa trên CNN cho tác vụ Phân đoạn bất kỳ. Tác vụ này được thiết kế để phân đoạn bất kỳ đối tượng nào trong hình ảnh dựa trên nhiều lời nhắc tương tác có thể có của người dùng. 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, khiến nó trở thành lựa chọn thiết thực cho nhiều tác vụ thị giác.



Đồng hồ: 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 phân đoạn nhanh bất kỳ thứ gì ( 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 giải pháp thời gian thực cho mọi tác vụ, rất hữu ích cho các ứng dụng công nghiệp đòi hỏi kết quả nhanh chóng.

  2. Hiệu suất và hiệu suất: FastSAM cung cấp khả năng giảm đáng kể nhu cầu về 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 nguồn 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 theo hướng dẫn: FastSAM có thể phân đoạn bất kỳ đối tượng nào trong hình ảnh theo hướng dẫn của nhiều lời nhắc tương tác khác nhau của người dùng, mang lại sự linh hoạt và khả năng thích ứng trong nhiều tình huống khác nhau.

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

  5. Kết quả cạnh tranh trên các tiêu 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 chứng minh hiệu quả và khả năng của nó.

  6. Ứng dụng thực tế: Phương pháp đề xuất cung cấp một giải pháp mới, thực tế cho số lượng lớn các tác vụ thị giác 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. Khả năng nén của mô hình: FastSAM chứng minh tính khả thi của một con đường có thể giảm đáng kể nỗ lực tính toán bằng cách đưa yếu tố nhân tạo và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ụ thị giác chung.

Các mô hình có sẵn, nhiệm 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 đào tạo trước cụ thể, 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ế độ vận hành 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ợ.

Kiểu mẫu Tạ đã được tập luyện trước Nhiệm vụ được hỗ trợ Suy luận Xác thực Đào tạo Xuất khẩu
FastSAM -S FastSAM -s.pt Phân đoạn trường hợp
FastSAM -x FastSAM -x.pt Phân đoạn trường hợp

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 lệnh để hợp lý hóa quá trình phát triển.

Dự đoán 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ư được hiển thị 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 chứng minh tính đơ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 một hình ảnh.

Ví dụ FastSAMPredictor

Bằng cách này, bạn có thể chạy suy luận trên hình ảnh và lấy được tất cả các phân đoạn results một lần và chạy nhắc nhở suy luận nhiều lần mà không cần 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 chú

Tất cả đã trở về 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 dễ dàng.

Sử dụng Val

Việc xác thực 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 dạng và phân đoạn tất cả các đối tượng là 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ả ID danh mục đối tượng thành 0.

Theo dõi sử dụng

Để thực hiện theo dõi đối tượng trên một hình ảnh, hãy sử dụng track phương pháp như được hiển thị 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ừ kho lưu trữ FastSAM https://github.com/CASIA-IVA-Lab/ . Sau đây là tổng quan ngắn gọn về các bước điển hình mà bạn có thể thực hiện để sử dụng FastSAM :

Cài đặt

  1. Sao chép FastSAM kho lưu trữ:

    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ữ đã sao chép 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ô hình .

  2. Sử dụng FastSAM để suy luận. Ví dụ lệnh:

    • 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 cách sử dụ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 các đố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 bản demo web HuggingFace để có trải nghiệm trực quan.

Trích dẫn và Lời cảm ơn

Chúng tôi muốn ghi nhận FastSAM tác giả vì những đóng góp quan trọng của họ trong lĩnh vực phân đoạn trường hợp 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 bài báo có thể được tìm thấy trên arXiv . Các tác giả đã công khai công trình của họ và có thể truy cập cơ sở mã 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à giúp công trình của họ có thể tiếp cận được với cộng đồng rộng lớn hơn.

CÂU HỎI THƯỜNG GẶP

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 đoạn thời gian thực?

FastSAM đạt được phân đoạn thời gian thực bằng cách tách nhiệm vụ phân đoạn thành phân đoạn toàn thể với YOLOv8 -seg và các giai đoạn lựa chọn được hướng dẫn bằng lời nhắc. Bằng cách sử dụng hiệu quả tính toán của CNN, FastSAM cung cấp khả năng giảm đáng kể nhu cầu về tính toán và tài nguyên trong khi vẫn duy trì hiệu suất cạnh tranh. Phương pháp tiếp cận hai giai đoạn này cho phép FastSAM để cung cấp khả năng phân đoạn 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.

Những ứ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 cho an ninh và giám sát
  • Xe tự hành để phát hiện và phân đoạn đối tượng
  • Chụp ả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ý nhiều lời nhắc tương tác của người dùng làm cho FastSAM có khả năng thích ứng và linh hoạt cho nhiều tình huống khác nhau.

Làm thế nào để tôi 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 xem phần Dự đoán cách sử dụng trong tài liệu.

Những loại nhắc nhở nào FastSAM hỗ trợ cho nhiệm vụ phân đoạn?

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

  • Yêu cầu mọi thứ : Tạo phân đoạn cho tất cả các đối tượng có thể nhìn thấy.
  • Hộp giới hạn (BBox) Yêu cầu : Phân đoạn các đối tượng trong 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 phù hợp với mô tả.
  • Dấu nhắc điểm : 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 nhiều tình huống tương tác của người dùng, tăng cường tiện ích của nó trên nhiều ứ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 2 tháng

Bình luận