You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

10 KiB

comments description keywords
true FastSAM은 이미지에서 실시간 객체 분할을 위한 CNN 기반 솔루션으로, 향상된 사용자 상호작용, 계산 효율성, 다양한 비전 작업에 대응할 수 있는 특징을 갖고 있습니다. FastSAM, 머신러닝, CNN 기반 솔루션, 객체 분할, 실시간 솔루션, Ultralytics, 비전 작업, 이미지 처리, 산업 응용, 사용자 상호작용

Fast Segment Anything Model (FastSAM)

Fast Segment Anything Model (FastSAM)은 Segment Anything 작업을 위한 새로운 실시간 CNN 기반 솔루션입니다. 이 작업은 다양한 사용자 상호작용 프롬프트에 따라 이미지 내의 모든 객체를 분할하는 것을 목표로 합니다. FastSAM은 계산 요구 사항을 크게 줄이면서 경쟁력 있는 성능을 유지하기 때문에 다양한 비전 작업에 실용적인 선택지가 될 수 있습니다.

Fast Segment Anything Model (FastSAM) 아키텍처 개요

개요

FastSAM은 계산 리소스 요구 사항이 큰 Transformer 모델인 Segment Anything Model (SAM)의 한계를 해결하기 위해 설계되었습니다. FastSAM은 Segment Anything 작업을 두 단계로 분리한 방식을 채택합니다: 모든 인스턴스 분할과 프롬프트로 인한 영역 선택. 첫 번째 단계에서는 YOLOv8-seg를 사용하여 이미지의 모든 인스턴스의 분할 마스크를 생성합니다. 두 번째 단계에서는 프롬프트에 해당하는 관심 영역을 출력합니다.

주요 특징

  1. 실시간 솔루션: CNN의 계산 효율성을 활용하여 FastSAM은 Segment Anything 작업에 대한 실시간 솔루션을 제공하며, 빠른 결과가 필요한 산업 응용에 가치가 있습니다.

  2. 효율성과 성능: FastSAM은 성능 품질을 희생하지 않고 계산과 리소스 요구 사항을 크게 줄입니다. SAM과 비교해 유사한 성능을 달성하면서 계산 리소스를 크게 줄여 실시간 응용이 가능해집니다.

  3. 프롬프트 안내 분할: FastSAM은 다양한 사용자 상호작용 프롬프트에 따라 이미지 내의 모든 객체를 분할할 수 있으므로 다양한 시나리오에서 유연성과 적응성을 제공합니다.

  4. YOLOv8-seg 기반: FastSAM은 YOLOv8-seg를 기반으로 한 것으로, 인스턴스 분할 브랜치가 장착된 객체 감지기입니다. 이를 통해 이미지의 모든 인스턴스의 분할 마스크를 효과적으로 생성할 수 있습니다.

  5. 벤치마크에서 경쟁 결과: MS COCO에서의 객체 제안 작업에서 FastSAM은 SAM에 비해 단일 NVIDIA RTX 3090에서 훨씬 더 빠른 속도로 높은 점수를 달성하여 효율성과 능력을 입증했습니다.

  6. 실용적인 응용: FastSAM은 현재 방법보다 수십 배 또는 수백 배 더 빠른 속도로 여러 비전 작업의 신속한 솔루션을 제공하여 실질적인 적용 가능성을 제시합니다.

  7. 모델 압축 가능성: FastSAM은 구조에 인공 사전을 도입하여 계산 비용을 크게 줄일 수 있는 경로를 보여주어 일반 비전 작업에 대한 대형 모델 아키텍처에 대한 새로운 가능성을 열어줍니다.

사용 가능한 모델, 지원되는 작업 및 운영 모드

이 표는 사용 가능한 모델과 해당하는 사전 훈련 가중치, 지원하는 작업 및 Inference, Validation, Training, Export와 같은 다른 운영 모드에 대한 호환성을 나타내며, 지원되는 모드는 이모지로, 지원되지 않는 모드는 이모지로 표시됩니다.

모델 유형 사전 훈련 가중치 지원되는 작업 Inference Validation Training Export
FastSAM-s FastSAM-s.pt 인스턴스 분할
FastSAM-x FastSAM-x.pt 인스턴스 분할

사용 예시

FastSAM 모델을 Python 애플리케이션에 쉽게 통합할 수 있습니다. Ultralytics는 개발을 간소화하기 위해 사용자 친화적인 Python API 및 CLI 명령을 제공합니다.

예측 사용법

이미지에서 객체 검출을 수행하려면 다음과 같이 predict 메서드를 사용합니다:

!!! Example "예제"

=== "Python"
    ```python
    from ultralytics import FastSAM
    from ultralytics.models.fastsam import FastSAMPrompt

    # 추론 소스 정의
    source = 'path/to/bus.jpg'

    # FastSAM 모델 생성
    model = FastSAM('FastSAM-s.pt')  # 또는 FastSAM-x.pt

    # 이미지에 대한 추론 실행
    everything_results = model(source, device='cpu', retina_masks=True, imgsz=1024, conf=0.4, iou=0.9)

    # Prompt Process 객체 준비
    prompt_process = FastSAMPrompt(source, everything_results, device='cpu')

    # 모든 프롬프트
    ann = prompt_process.everything_prompt()

    # 바운딩 박스의 기본 모양은 [0,0,0,0]에서 [x1,y1,x2,y2]로 변경
    ann = prompt_process.box_prompt(bbox=[200, 200, 300, 300])

    # 텍스트 프롬프트
    ann = prompt_process.text_prompt(text='a photo of a dog')

    # 포인트 프롬프트
    # 기본 포인트 [[0,0]] [[x1,y1],[x2,y2]]
    # 기본 포인트 레이블 [0] [1,0] 0:배경, 1:전경
    ann = prompt_process.point_prompt(points=[[200, 200]], pointlabel=[1])
    prompt_process.plot(annotations=ann, output='./')
    ```

=== "CLI"
    ```bash
    # FastSAM 모델 로드 및 모든 것을 세분화하여 추출
    yolo segment predict model=FastSAM-s.pt source=path/to/bus.jpg imgsz=640
    ```

이 코드 조각은 사전 훈련된 모델을 로드하고 이미지에 대한 예측을 실행하는 간편함을 보여줍니다.

검증 사용법

데이터셋에서 모델을 검증하는 방법은 다음과 같습니다:

!!! Example "예제"

=== "Python"
    ```python
    from ultralytics import FastSAM

    # FastSAM 모델 생성
    model = FastSAM('FastSAM-s.pt')  # 또는 FastSAM-x.pt

    # 모델 검증
    results = model.val(data='coco8-seg.yaml')
    ```

=== "CLI"
    ```bash
    # FastSAM 모델 로드 및 이미지 크기 640에서 COCO8 예제 데이터셋에 대해 유효성 검사
    yolo segment val model=FastSAM-s.pt data=coco8.yaml imgsz=640
    ```

FastSAM은 단일 클래스 객체의 감지와 분할만 지원합니다. 이는 모든 객체를 동일한 클래스로 인식하고 분할한다는 의미입니다. 따라서 데이터셋을 준비할 때 모든 객체 카테고리 ID를 0으로 변환해야 합니다.

FastSAM 공식 사용법

FastSAM은 https://github.com/CASIA-IVA-Lab/FastSAM 저장소에서 직접 사용할 수도 있습니다. FastSAM을 사용하기 위해 수행할 일반적인 단계를 간단히 소개합니다:

설치

  1. FastSAM 저장소를 복제합니다:

    git clone https://github.com/CASIA-IVA-Lab/FastSAM.git
    
  2. Python 3.9로 Conda 환경을 생성하고 활성화합니다:

    conda create -n FastSAM python=3.9
    conda activate FastSAM
    
  3. 복제한 저장소로 이동하여 필요한 패키지를 설치합니다:

    cd FastSAM
    pip install -r requirements.txt
    
  4. CLIP 모델을 설치합니다:

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

예시 사용법

  1. 모델 체크포인트를 다운로드합니다.

  2. FastSAM을 추론하기 위해 다음과 같이 사용합니다. 예시 명령어:

    • 이미지에서 모든 것을 세분화:

      python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg
      
    • 텍스트 프롬프트를 사용하여 특정 객체를 세분화:

      python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg --text_prompt "the yellow dog"
      
    • 바운딩 박스 내의 객체를 세분화 (xywh 형식으로 상자 좌표 제공):

      python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg --box_prompt "[570,200,230,400]"
      
    • 특정 지점 근처의 객체를 세분화:

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

또한, FastSAM을 Colab 데모 또는 HuggingFace 웹 데모에서 시각적인 경험으로 시도해 볼 수 있습니다.

인용 및 감사의 말씀

FastSAM의 실시간 인스턴스 분할 분야에 대한 혁신적인 기여를 위해 FastSAM 저자들에게 감사의 말씀을 전합니다:

!!! Quote ""

=== "BibTeX"

  ```bibtex
  @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}
  }
  ```

FastSAM 원본 논문은 arXiv에서 찾을 수 있습니다. 저자들은 자신들의 작업을 공개적으로 제공하였으며, 코드베이스는 GitHub에서 이용할 수 있습니다. 저자들의 노력에 감사드리며 저작물을 더 폭넓은 커뮤니티에 알리기 위한 기여를 기대합니다.