
컴퓨터 비전을 위한 Facebook의 CHATGPT AI 모델. 샘
이 프로젝트는 이미지 분할을 위한 첫 번째 기본 모델을 만들기 위해 새로운 작업, 데이터 세트 및 모델을 도입합니다. 이미지 분할은 개체에 해당하는 이미지의 픽셀을 식별하는 것으로 과학적 이미지 분석에서 사진 편집에 이르기까지 다양한 응용 프로그램에 사용됩니다. 그러나 특정 작업에 대한 정확한 세분화 모델을 만들려면 기술 전문가의 고급 작업, AI 학습 인프라 및 대량의 정확한 도메인 데이터에 대한 액세스가 필요합니다. Segment Anything 프로젝트의 목표는 SAM(Segment Anything Model)과 Segment Anything 10억 마스킹 데이터 세트(SA-1B)를 출시하여 세분화를 민주화하는 것입니다. SA-1B는 가장 큰 분할 데이터 세트이고 SAM은 다양한 데이터에 대해 훈련된 힌트 모델입니다. 즉, 자연어 처리 모델과 같이 힌트를 사용하여 특정 작업에 적응할 수 있는 모델입니다. SAM은 객체의 일반적인 개념을 학습했으며 훈련 중에 만나지 못한 객체 또는 이미지 유형에 대한 마스크를 만들 수 있습니다. SAM은 다양한 사용 사례를 다룰 수 있으며 추가 교육 없이 새로운 이미지 도메인에 적용할 수 있습니다(제로샷 전송). 또한 일부 하위 문제는 빠른 엔지니어링으로 해결할 수 있습니다.
1. 샘이란?
ViT-H SAM 모델은 H 버전을 사용하는 ViT(Vision Transformer) 모델로 SAM(Segment Anything Model) 모델 중 하나이다. SAM은 입력 신호에서 고품질 개체 마스크를 생성하고 이미지의 모든 개체에 대한 마스크를 만들 수 있습니다. SAM은 1,100만 개의 고유한 고해상도 이미지와 11억 개의 마스크로 구성된 SA-1B 데이터 세트에서 학습되었으며 다양한 세분화 작업에서 강력한 제로 샷 성능을 보여줍니다. ViT-H SAM 모델은 즉석 엔지니어링을 통해 다양한 입력에 맞게 조정할 수 있습니다. 힌트 엔지니어링은 모델에 입력되는 정보를 설계하고 원하는 출력을 얻기 위해 조정하는 기술입니다. ViT-H SAM 모델은 점, 상자, 마스크 등의 형태로 힌트를 받고 힌트에 해당하는 마스크를 생성할 수 있습니다. ViT-H SAM 모델은 ViT 모델의 사전 교육에 사용되는 Google에서 생성한 3억 개의 이미지가 포함된 거대한 JFT-300M 데이터 세트에서 사전 교육되었습니다. SAM은 다양한 세분화 작업에서 강력한 제로샷 성능을 보여 다양한 응용 분야에서 활용될 가능성이 있습니다. ViT-H SAM 모델은 입력 신호를 기반으로 고품질 개체 마스크를 생성하도록 설계된 인공 지능 모델입니다. SAM은 110억 개의 마스크와 1,100만 개의 고유한 고해상도 이미지가 포함된 SA-1B 데이터 세트를 사용하여 훈련되었습니다. ViT-H SAM 모델은 변압기의 인코더 부분을 활용하여 최소한의 수정으로 이미지 분류 작업을 수행하는 모델입니다. ViT는 이미지를 청크로 나누고 각 청크를 단어로 취급합니다. ViT는 다양한 이미지 관련 작업을 위한 다양한 시각적 개념을 제공하는 거대한 JFT-300M 데이터 세트에 대해 사전 교육을 받았습니다.
SA-1B 데이터 세트
SA-1B 데이터셋은 Segment Anything 프로젝트에서 사용되는 이미지 분할 데이터셋입니다. SA-1B 데이터 세트에는 데이터 엔진에서 얻은 1100만 개의 서로 다른 고품질 이미지와 110만 개의 고품질 마스크가 포함되어 있습니다. 이 데이터 세트는 컴퓨터 비전 연구 목적으로만 사용할 수 있으며 이미지는 주요 이미지 회사로부터 라이선스를 받았습니다. SA-1B 데이터 세트는 가장 큰 분할 데이터 세트입니다. 기존 세분화 데이터 세트에는 100만 개 미만의 마스크가 포함되어 있지만 SA-1B 데이터 세트에는 10억 개가 넘는 마스크가 포함되어 있습니다. SA-1B 데이터 세트에는 다양한 이미지 유형과 개체가 포함되어 있습니다. 이미지는 사진 회사의 라이선스를 받았으며 주제나 위치가 다릅니다. 마스크는 건물과 같은 큰 개체에서 문 손잡이와 같은 세부적인 개체에 이르기까지 광범위한 개체를 포함합니다. SA-1B 데이터 세트는 개인 정보와 저작권을 보호합니다. 이미지에 나타나는 얼굴이나 번호판은 익명화되지 않았으며 이미지는 연구 목적으로만 사용이 허가되었습니다.
2. 다른 세분화 모델과의 차이점
분할 모델은 시맨틱 분할과 인스턴스 분할로 나눌 수 있습니다. 시맨틱 분할은 이미지의 픽셀을 사람, 자동차, 비행기와 같은 물리적 단위로 분류하는 방법입니다. 인스턴스 분할은 동일한 물리적 단위를 개별 개체로 나누는 방법입니다. 예를 들어 이미지에 여러 사람이 있는 경우 시맨틱 분할은 모두 사람으로 레이블을 지정하지만 인스턴스 분할은 각 사람에게 다른 레이블을 지정합니다. SAM은 시맨틱 분할의 기본 모델입니다. 기본 모델은 힌트를 사용하여 특정 작업에 적용할 수 있는 다양한 데이터에 대해 훈련된 힌트 가능 모델입니다. 힌트는 모델에 대한 입력으로 제공되는 정보로, 예를 들어 점, 상자 또는 마스크의 형태일 수 있습니다. SAM은 힌트를 사용하여 이미지에서 원하는 개체를 분할할 수 있습니다.
- SAM은 다양한 도메인에서 이미지를 제로샷으로 전송할 수 있습니다. 이는 추가 교육 없이 새로운 이미지 유형에 적용할 수 있음을 의미합니다. 예를 들어 SAM은 수중 사진 또는 세포의 현미경 이미지와 같은 영역에서도 잘 작동합니다.
- SAM은 즉각적인 엔지니어링을 통해 여러 하위 문제를 해결할 수 있습니다. 즉, 프롬프트의 유형이나 순서를 변경하거나 결합하여 다양한 요구 사항에 따라 분할 결과를 얻을 수 있습니다. 예를 들어 점만 사용하여 개체를 분할하거나 상자와 마스크를 함께 사용하여 정확도를 높일 수 있습니다.
- SAM은 확장된 컨볼루션과 공간 피라미드 풀링을 사용하여 고해상도 이미지를 처리할 수 있습니다. Atrous convolution은 필터 내부에 빈 공간을 남겨 시야를 넓히는 방법입니다. 공간 피라미드 풀링(Spatial pyramid pooling)은 conv 레이어를 통과한 특징 맵을 소정의 영역으로 분할하여 최대 풀링을 수행하는 방법이다. 이러한 기술은 세분화의 정확성과 효율성을 향상시킵니다.
3. 장점과 단점을 기술하십시오.
이점: SAM은 서로 다른 도메인의 이미지를 제로샷으로 전송할 수 있는 강력한 모델입니다. 이는 추가 교육 없이 새로운 이미지 유형에 적용할 수 있음을 의미합니다. 또한 수중 사진 및 세포의 현미경 이미지와 같은 분야에서도 탁월합니다. SAM은 신속한 엔지니어링을 통해 여러 하위 문제를 해결할 수 있습니다. 프롬프트의 유형이나 순서를 변경하거나 조합하여 다양한 요구 사항에 적합한 분할 결과를 얻을 수 있습니다. 예를 들어 개체 분할은 포인트만 사용하거나 정확도를 높이기 위해 상자와 마스크의 조합을 사용하여 수행할 수 있습니다. SAM은 또한 atrous 컨볼루션 및 공간 피라미드 풀링과 같은 고급 기술을 사용하여 고해상도 이미지를 처리할 수 있습니다. Atrous convolution은 필터 내부에 빈 공간을 남겨 시야를 확장시키는 반면, 공간 피라미드 풀링은 conv 레이어를 통과한 특징 맵을 미리 정해진 영역으로 나누어 최대 풀링을 수행합니다. 이러한 기술은 세분화의 정확성과 효율성을 개선하는 데 도움이 됩니다. 전반적으로 SAM의 유연성, 다용성 및 고급 기능은 과학 연구, 사진 및 이미지 편집과 같은 분야에서 잠재적인 응용 프로그램과 함께 이미지 분할을 위한 강력한 도구입니다.
피해: SAM은 힌트를 통해 이미지에서 원하는 개체를 분할할 수 있지만 힌트의 선택은 분할 결과에 영향을 미칩니다. 즉, 힌트의 품질이 좋으면 분할의 품질도 좋다. 따라서 JIT(Just-In-Time) 엔지니어링은 중요하면서도 어려운 작업입니다. SAM은 제로샷 전송이 가능하지만 미세 조정 또는 재훈련을 통해 새로운 데이터에 적응하는 것보다 성능이 낮을 수 있습니다. 즉, SAM은 일반적인 세분화 모델이지만 도메인 또는 작업에 최적화된 모델은 아닙니다. SAM은 1B 마스크와 11M 이미지로 구성된 SA-1B 데이터 세트에 대해 교육을 받았습니다. 이 데이터 세트에는 다양한 이미지 유형과 개체가 포함되어 있지만 완전히 대표하거나 완전하지는 않습니다. 따라서 SAM은 SA-1B 데이터 세트에 포함되지 않은 이미지 유형이나 개체에 대해 제대로 작동하지 않을 수 있습니다.
4. 다른 버전은 무엇입니까?
SAM은 다양한 버전의 ViT로 구성할 수 있습니다. ViT-H SAM 모델은 ViT의 H 버전을 사용하며 가장 크고 강력한 모델로 간주됩니다. 한편, ViT-L SAM 모델은 ViT의 L 버전을 사용하는 중형 모델이다. 마지막으로 ViT-B SAM 모델은 세 모델 중 가장 작은 ViT의 B 버전을 사용합니다. 적절한 모델 변형을 선택하는 것은 사용 가능한 컴퓨팅 리소스 및 필요한 정확도 또는 속도와 같은 애플리케이션의 특정 요구 사항에 따라 다릅니다.
5. 사용 방법은?
- 모델 체크포인트를 다운로드합니다.
- segment_anything 패키지를 설치합니다.
- build_sam 함수와 SamPredictor 클래스 또는 SamAutomaticMaskGenerator 클래스를 가져옵니다.
- SamPredictor 객체 또는 SamAutomaticMaskGenerator 객체를 만들고 set_image 메서드를 사용하여 이미지를 설정합니다.
- 예측 또는 생성 방법을 사용하여 마스크를 만듭니다.
- 생성된 마스크 보기, 저장 또는 사용.
이러한 단계를 통해 SAM 모델은 입력 이미지에서 개체 마스크를 생성할 수 있습니다. 지침을 주의 깊게 따르고 자세한 내용은 설명서를 참조하십시오.
6. ViT-L SAM 모델과 ViT-B SAM 모델의 성능
ViT-L SAM 모델과 ViT-B SAM 모델은 SAM(Segment Anything Model)의 다른 버전이며 ViT(Vision Transformer) L 및 B 버전을 사용하는 모델입니다. SAM은 입력 신호를 기반으로 고품질 개체 마스크를 생성하고 이미지의 모든 개체에 대한 마스크를 만들 수도 있습니다. SAM은 1,100만 개의 서로 다른 고해상도 이미지와 1.1B 마스크로 구성된 SA-1B 데이터 세트로 학습되었으며 다양한 세분화 작업에서 강력한 제로샷 성능을 보여줍니다.
- ViT-L SAM 모델은 ViT의 L 버전을 사용합니다. ViT의 L 버전은 패치 크기가 16×16이고 숨겨진 차원이 1024이며 인코더 레이어가 24개인 모델입니다. ViT-L SAM 모델은 SA-1B 데이터 세트의 0.5 IoU를 기준으로 0.73 mAP를 달성합니다.
- ViT-B SAM 모델은 ViT 버전 B를 사용합니다. ViT의 버전 B는 16×16의 패치 크기, 768의 숨겨진 차원 및 12개의 인코더 레이어³가 있는 모델입니다. ViT-B SAM 모델은 SA-1B 데이터 세트의 0.5 IoU를 기준으로 0.69 mAP를 달성합니다.
7. ViT-L SAM 모델 및 ViT-B SAM 모델 사용
ViT-L SAM 모델과 ViT-B SAM 모델은 SAM(Segment Anything Model)의 다른 버전이며 ViT(Vision Transformer) L 및 B 버전을 사용하는 모델입니다. SAM은 입력 신호를 기반으로 고품질 개체 마스크를 생성하고 이미지의 모든 개체에 대한 마스크를 만들 수도 있습니다. SAM은 1,100만 개의 서로 다른 고해상도 이미지와 1.1B 마스크로 구성된 SA-1B 데이터 세트로 학습되었으며 다양한 세분화 작업에서 강력한 제로샷 성능을 보여줍니다.
ViT-L SAM 모델과 ViT-B SAM 모델의 사용법은 다음과 같습니다.
- 먼저 모델 체크포인트를 다운로드합니다. 체크포인트는 아래 링크¹에서 다운로드할 수 있습니다. ViT-L SAM 모델은 vit_l로, ViT-B SAM 모델은 vit_b로 다운로드할 수 있습니다.
- segment_anything 패키지를 설치합니다. pip 명령을 사용하여 패키지를 설치할 수 있습니다.
- segment_anything 패키지에서 build_sam 함수와 SamPredictor 또는 SamAutomaticMaskGenerator 클래스를 가져옵니다. build_sam 함수는 모델 체크포인트를 인수로 받아 모델을 생성합니다. SamPredictor 클래스는 주어진 큐에서 마스크를 생성하는 예측자를 생성합니다. SamAutomaticMaskGenerator 클래스는 전체 이미지에 대한 마스크를 자동으로 생성하는 생성기를 생성합니다.
- SamPredictor 객체 또는 SamAutomaticMaskGenerator 객체를 만들고 set_image 메서드를 사용하여 이미지를 설정합니다. 이미지는 PIL.Image 객체 또는 numpy 배열로 입력할 수 있습니다.
- 예측 방법 또는 생성 방법을 사용하여 마스크를 생성하십시오. 예측 방법은 힌트를 인수로 사용하고 해당 힌트에 대한 마스크를 만듭니다. 프롬프트는 점, 상자 또는 마스크 형식일 수 있습니다. 생성 방법은 매개 변수 없이 전체 이미지에 대한 마스크를 생성합니다.
- 생성된 마스크를 확인, 저장, 사용할 수 있습니다. 마스크는 numpy 배열로 반환됩니다.
GitHub – facebookresearch/segment-anything: 이 리포지토리는 SegmentAnything 모델(S
이 리포지토리는 SAM(SegmentAnything Model)을 사용하여 추론을 실행하기 위한 코드, 훈련된 모델 체크포인트를 다운로드할 수 있는 링크 및 모델 사용 방법을 보여주는 예제 노트북을 제공합니다. -…
github.com