본문 바로가기

팀프로젝트 - TailsRoute

TEAM Project (12.01) - SAMURAI, SAM 2 설치

RandomOverSampler와 SMOTE는 모두 데이터 불균형 문제를 해결하기 위해 데이터 오버샘플링을 수행하는 방법 이지만 방식은 다르다.

현재 RandomOverSampler 사용

RandomOverSampler

  • 기존 데이터의 샘플을 단순히 복제하여 부족한 클래스의 샘플을 늘린다.
  • 빠르고 간단
  • 원본 데이터의 샘플을 그대로 복사하기에 데이터에 아무런 변형이 가해지지 않음
  • 과적합의 위험이 높음 (🫨)
  • 데이터 크기가 작고, 빠르게 균형을 맞추고 싶을 때, 데이터를 변형할 필요가 없는 경우 사용

 

SMOTE (Synthetic Minority Oversampling Technique)

  • 부족한 클래스의 샘플과 가까운 샘플들 사이에서 새로운 샘플을 생성
  • 새로운 데이터를 생성하기 때문에 원본 데이터보다 다양성이 높아짐
  • 과적합 위험이 낮아짐
  • 데이터가 고차원일 경우, 부정확한 샘플이 생성될 가능성(노이즈 문제) -> 이게 걱정되는데 ;;
  • 데이터 크기가 적당히 크고, 불균형 클래스의 다양성을 높이고 싶을 때 간단한 복제가 아닌 새로운 데이터를 생성하고 싶을 때

=> SMOTE로 변경 후 결과를 봐보자

 


 

SAMURAI 설치

앞에서는 정리를 못한 것 같아서

SAMURAI는 SAM 2 기반으로 설계되었으므로 SAM 2와 SAMURAI 설치가 필요

SAM 2 설치

git clone https://github.com/facebookresearch/sam2.git
cd sam2
pip install -e .
pip install -e ".[notebooks]"

SAMURAI 설치

SAM 2가 설치된 상태에서, SAMURAI 코드를 다운로드하고 실행

git clone https://github.com/yangchris11/samurai.git
cd samurai

 

SAMURAI는 SAM 2 위에서 동작하기 때문에 SAM 2를 설치한 디렉터리 경로가 PYTHONPATH에 포함되어야함

SAMURAI를 사용하기 위해서는 segment-anything 라이브러리를 설치해야한다.

pip install matplotlib==3.7 tikzplotlib jpeg4py opencv-python lmdb pandas scipy loguru

 

이 패키지들은 데이터 시각화, 이미지 처리, 데이터 저장 및 로딩, 로그 기록 등 다양한 기능 제공, 각각은 SAMURAI에서 특정 역할을 하며, 특히 데이터 처리와 분석 과정에서 필수적

 

체크포인트 다운로드

SAMURAI는 SAM 2.1의 체크포인트를 사용

cd checkpoints
./download_ckpts.sh

 

이론

SAMURAI 적용을 모델 훈련 부분에서가 아닌 데이터 csv 변형할 때 적용, 강아지 객체를 감지한 후, 해당 영역만 크롭하여 사용하면 모델이 학습해야할 데이터의 잡음을 줄임, 강아지 영역 외의 불필요한 배경 데이터를 제거할 수 있음 /
SAMURAI로 감지된 강아지 영역만 CSV에 기록함으로써, 학습 데이터의 정확도를 높이고, 데이터셋 품질을 개선하는 목적