SAM(Segmet Anything Model)은 점이나 상자와 같은 입력 프롬프트에서 고품질 개체 마스크를 생성하여 이미지의 모든 개체에 대한 마스크를 생성하는데 사용할 수 있습니다. 1,100만 개의 이미지와 11억 개의 마스크로 구성된 데이터 세트에 대해 훈련되었으며 다양한 분할 작업에서 강력한 제로샷 성능을 발휘합니다. 관련 사이트에서 1B 마스크와 11M 이미지의 SAM(Segment Anything 모델) 및 해당 데이터 세트( SA-1B )를 공개하고 있습니다.
1. FastSAM 개요
고속 세그먼트 모델(FastSAM)은 무엇이든 세그먼트 작업을 위한 새로운 실시간 CNN 기반 솔루션입니다. 다양한 사용자 인터랙션 프롬프트를 기반으로 이미지 내의 모든 객체를 세그먼트화하도록 설계되었습니다. FastSAM은 경쟁력 있는 성능을 유지하면서 계산 요구사항을 크게 줄여 다양한 비전 작업에 실용적인 선택이 될 수 있습니다.
FastSAM은 상당한 컴퓨팅 리소스를 필요로 하는 무거운 트랜스포머 모델인 SAM의 한계를 해결하기 위해 설계되었습니다. FastSAM은 SAM의 작업을 모든 인스턴스 세그멘테이션과 프롬프트 안내 선택이라는 두 가지 순차적 단계로 분리합니다. 첫번째 단계에서는 YOLOv8-seg를 사용하여 이미지의 모든 인스턴스에 대한 세그먼트 마스크를 생성합니다. 두번째 단계에서는 프롬프트에 해당하는 관심 영역을 출력합니다.
2. FastSAM 공식 사용법
1. 레포지토리를 복사합니다.
git clone https://github.com/CASIA-IVA-Lab/FastSAM.git
2. 가상환경을 생성합니다.
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
5. 모델 체크포인트를 다운로드 합니다.
모델의 두 가지 모델 버전이 서로 다른 크기로 제공됩니다. 모델을 다운로드 후 FastSAM 폴더에 weight 폴더를 생성하고 ./weight 위치에 모델을 복사합니다. 저는 FastSAM-x 모델을 다운로드했습니다.
간단한 테스트 결과 FastSAM-s 보다 FastSAM-x 가 성능이 좋아보였습니다.
- 이미지의 모든 항목을 세분화하는 명령어 입니다.
# Everything mode
python Inference.py --model_path ./weights/FastSAM-x.pt --img_path ./images/dogs.jpg
- 텍스트 프롬프트를 사용하여 특정 객체를 분할하는 명령어입니다.
# Text prompt
python Inference.py --model_path ./weights/FastSAM-s.pt --img_path ./images/dogs.jpg --text_prompt "the yellow dog"
- 바운드 박스 내에서 객체를 분할하는 명령어 입니다.
# Box prompt (xywh)
python Inference.py --model_path ./weights/FastSAM-x.pt --img_path ./images/dogs.jpg --box_prompt "[[570,200,230,400]]"
- 특정 포인트 근처의 객체를 분할하는 명령어 입니다.
# Points prompt
python Inference.py --model_path ./weights/FastSAM-x.pt --img_path ./images/dogs.jpg --point_prompt "[[520,360],[620,300]]" --point_label "[1,0]"
결론적으로, 이번에는 github의 사용 예시 명령어를 실행하여 결과를 간단히 확인해보았습니다. 이미지의 모든 것을 세그멘테이션한다는 것이 흥미로웠고 오픈소스로 공개되어있어 자유롭게 사용할 수 있습니다. 다음에는 조금 더 응용하여 SAM 모델을 적용해보는 방법에 대해 연구해 볼 예정입니다.
'취미' 카테고리의 다른 글
[딥러닝] 다층 퍼셉트론(MLP) 딥러닝 기초 (0) | 2024.02.13 |
---|---|
[YOLO] Yolov8 이미지에서 표 영역 탐지하는 법 (0) | 2024.02.13 |
[Github] 깃허브로 협업하는 방법 (0) | 2024.01.30 |
[금융 데이터] 고객 대출 등급 분류 모델 개발 (0) | 2024.01.28 |
[OCR] Tesseract 설치 방법 - 리눅스 환경 (0) | 2024.01.27 |