Skip to main content

cv-research

detection, segmentation, classification 실험용 컴퓨터 비전 환경입니다.

문서 기준

  • 기준일: 2026-02-23
  • Python: 3.12
  • 운영체제: macOS, Ubuntu, Windows
  • 동기화 명령: uv sync

호환성 메모

환경PyTorch 백엔드YOLO 학습설명
Ubuntu x86_64 (CUDA)cu130GPU 가속전체 학습/추론 지원
macOS Apple SiliconmpsMPS 가속대부분의 모델 학습 가능
macOS Intel / WindowscpuCPU 전용추론/프로토타이핑 용도
ultralytics는 내부적으로 PyTorch 백엔드를 자동 감지합니다. GPU 사용 시 별도 device 설정 없이 자동으로 CUDA/MPS를 활용합니다.

CV 연구에서 패키지 역할

패키지역할비고
torch / torchvisionCV 기본 프레임워크모델, 데이터셋, 변환(transforms)
ultralyticsYOLO 시리즈 (v5~v11)Detection, Segmentation, Pose, OBB
timm사전학습 이미지 모델 허브ResNet, EfficientNet, ViT 등 700+ 모델
albumentations이미지 증강 파이프라인고속 augmentation, 바운딩 박스 동기화
segmentation-models-pytorchSemantic Segmentation 모델UNet, FPN, DeepLabV3+ 등
supervision비전 결과 시각화 및 후처리Annotation, Tracking, Zone counting
opencv-python이미지/영상 I/O 및 처리읽기, 쓰기, 색상 변환, 필터링

pyproject.toml

[project]
name = "cv-research"
version = "0.1.0"
description = "Computer vision research environment"
requires-python = "==3.12.*"
dependencies = [
  "torch==2.10.0",
  "torchvision==0.25.0",
  "torchaudio==2.10.0",
  "ultralytics==8.4.14",
  "timm==1.0.24",
  "albumentations==2.0.8",
  "segmentation-models-pytorch==0.5.0",
  "supervision==0.27.0.post1",
  "opencv-python==4.13.0.92",
  "ipykernel==7.2.0",
  "pytest==9.0.2",
  "ruff==0.15.2",
]

[tool.uv]
package = false

설치

1

프로젝트 생성

uv init cv-research
cd cv-research
2

의존성 락 및 동기화

uv lock
uv sync
3

Jupyter 커널 등록

uv run python -m ipykernel install --user --name cv-research --display-name "UV cv-research"

설치 확인

uv run python -c "import torch, ultralytics, timm, albumentations, cv2; print('torch', torch.__version__); print('ultralytics', ultralytics.__version__); print('opencv', cv2.__version__)"

기본 사용 예시

이미지 분류 (timm)

import timm
import torch
from torchvision import transforms
from PIL import Image

model = timm.create_model("efficientnet_b0", pretrained=True, num_classes=10)
model.eval()

transform = transforms.Compose([
    transforms.Resize((224, 224)),
    transforms.ToTensor(),
    transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
])

img = transform(Image.open("sample.jpg")).unsqueeze(0)
with torch.no_grad():
    output = model(img)
    pred = output.argmax(dim=1).item()
    print(f"Predicted class: {pred}")

객체 탐지 (YOLO)

from ultralytics import YOLO

# 사전학습 모델로 추론
model = YOLO("yolo11n.pt")
results = model("image.jpg")
results[0].show()

# 커스텀 데이터셋으로 학습
model = YOLO("yolo11n.pt")
model.train(data="dataset.yaml", epochs=50, imgsz=640, batch=16)

Augmentation 파이프라인

import albumentations as A
from albumentations.pytorch import ToTensorV2

transform = A.Compose([
    A.RandomResizedCrop(height=224, width=224, scale=(0.8, 1.0)),
    A.HorizontalFlip(p=0.5),
    A.ColorJitter(brightness=0.2, contrast=0.2, saturation=0.2, hue=0.1),
    A.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
    ToTensorV2(),
], bbox_params=A.BboxParams(format="pascal_voc", label_fields=["labels"]))  # Detection용

트러블슈팅

증상원인해결
cv2 import 실패opencv-python 의존성 꼬임uv lock --refreshuv sync
학습 속도 저하GPU 미인식 또는 DataLoader num_workers 부족torch.cuda.is_available() 확인, num_workers 증가
YOLO 학습 중 OOM이미지 크기 또는 배치 크기 초과imgsz 줄이기 (640 → 480), batch 줄이기
timm 모델 다운로드 실패네트워크 문제 또는 HuggingFace 접근 제한HF_TOKEN 설정 또는 수동 다운로드
albumentations 바운딩 박스 오류bbox_params 포맷 불일치pascal_voc, coco, yolo 중 데이터에 맞는 포맷 지정
uv sync 의존성 충돌기존 락 파일과 버전 불일치uv lock --refreshuv sync