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에 기록함으로써, 학습 데이터의 정확도를 높이고, 데이터셋 품질을 개선하는 목적
'팀프로젝트 - TailsRoute' 카테고리의 다른 글
TEAM Project - SAMURAI 사용 흐름 및 오류 해결, 한계 (0) | 2024.12.04 |
---|---|
TEAM Project (12.02) - 데이터 전처리 (SAMURAI 적용, 데이터 양 조절) (0) | 2024.12.03 |
TEAM Project (11.30) (0) | 2024.12.01 |
TEAM Project (11.29) - SAMURAI 적용 (0) | 2024.11.30 |
TEAM Project (11.28) (0) | 2024.11.28 |