huggingface/pytorch-image-models

The largest collection of PyTorch image encoders / backbones. Including train, eval, inference, export scripts, and pretrained weights -- ResNet, ResNeXT, EfficientNet, NFNet, Vision Transformer (ViT), MobileNetV4, MobileNet-V3 & V2, RegNet, DPN, CSPNet, Swin Transformer, MaxViT, CoAtNet, ConvNeXt, and more

PyTorch Image Models (timm) 란?

timm은 PyTorch 위에 구축된 즉시 사용 가능한 컴퓨터 비전 모델 라이브러리입니다. 다음을 포함합니다:

  • 수백 가지의 최첨단 이미지 아키텍처 – 고전적인 ConvNets(ResNet, EfficientNet, MobileNet)부터 현대적인 Vision Transformers(ViT, EVA, BEiT, ConvNeXt 등)까지.
  • 사전 훈련된 가중치 – 대부분의 모델에 대해 사전 훈련된 가중치가 제공되며, 일반적으로 ImageNet-1k에서 훈련되어 즉시 추론이나 파인튜닝에 사용할 수 있습니다.
  • 유틸리티 코드 – 레이어, 옵티마이저, 학습률 스케줄러, 데이터 로더, 증강 파이프라인, 그리고 최소한의 설정으로 게시된 결과를 재현할 수 있는 참조 훈련/검증 스크립트.
  • 훈련 보조 도구 – 하이퍼파라미터 스윕을 위한 새로운 sweep.py, 재개, 멀티 GPU 실행, 멀티 라벨 분류, 사용자 정의 손실 함수 등을 지원하는 유연한 train.py.

요약하면, timm은 각 아키텍처를 처음부터 다시 구현하지 않고 다양한 이미지 모델이 필요한 연구자와 엔지니어를 위한 원스톱 상점입니다.


누구에게 유용한가?

대상 중요성
ML 연구자 대규모 SOTA 비전 모델 카탈로그 위에서 새로운 아이디어를 빠르게 프로토타입하고 결과를 비교할 수 있습니다.
실무자/엔지니어 단일 임포트로 사전 훈련된 모델을 프로덕션 파이프라인에 통합하고 사용자 정의 데이터셋에서 파인튜닝할 수 있습니다.
학생/취미 개발자 깔끔하고 문서화가 잘 된 PyTorch 코드를 읽으며 현대 비전 아키텍처를 배울 수 있습니다.
벤치마킹 팀 제공된 훈련 스크립트와 벤치마크 CSV를 사용하여 다양한 GPU에서 속도와 정확도를 측정할 수 있습니다.

핵심 기능(README에 설명된 대로)

기능 세부 사항
모델 동물원 300개 이상의 아키텍처가 있으며, 각각 변형별 사전 훈련된 가중치가 있습니다. ConvNets, Transformers, 하이브리드 모델, 그리고 저전력 기기를 위한 CPUBone과 같은 틈새 백본이 포함됩니다.
훈련 스크립트 train.py와 validate.py는 재개, 에포크 중지, 마일스톤 체크포인트, YAML 구성 검증, 멀티 라벨 작업, 사용자 정의 손실 함수, 혼합 정밀도를 지원합니다.
하이퍼파라미터 스윕 새로운 sweep.py는 모든 train.py 인수에 대해 그리드 또는 랜덤 검색을 실행하고, 로컬 GPU에 작업을 분산하며, 중단된 스윕을 재개할 수 있습니다.
옵티마이저 및 스케줄러 RMSpropTF, LaProp, LAMB, LARS, AdaBelief, NovoGrad, Muon 등의 업데이트된 구현과 warmup-stable-decay (WSD) 학습률 스케줄러가 포함됩니다.
데이터 유틸리티 유연한 이미지 데이터셋, 멀티 라벨 지원, Mixup/CutMix, AugMix, 비정사각형 또는 단일 채널 이미지 자동 처리.
모델 크기 조정 set_input_size()를 사용하면 대부분의 모델이 다양한 이미지 해상도에 즉시 적응할 수 있으며, 윈도우화된 Vision Transformers에는 특별한 처리가 적용됩니다.
내보내기 및 추론 ONNX 내보내기 호환성, 자동 입력 크기 선택이 포함된 inference.py, Torch-compile 및 CUDA graphs 지원.
문서 모델 API 페이지, 훈련 가이드, 엄선된 PyTorch 리소스 목록.
라이선스 및 인용 각 모델에 대한 명확한 라이선스 정보와 라이브러리 인용 방법에 대한 지침.

시작하기(빠른 시작 단계)

  1. 설치
    pip install timm
    
  2. 모델 로드(예: 사전 훈련된 EfficientNet-B0)
    import timm
    model = timm.create_model('efficientnet_b0', pretrained=True)
    model.eval()
    
  3. 추론 실행
    from torchvision import transforms
    from PIL import Image
    
    preprocess = transforms.Compose([
        transforms.Resize(256),
        transforms.CenterCrop(224),
        transforms.ToTensor(),
        transforms.Normalize(mean=[0.485, 0.456, 0.406],
                             std=[0.229, 0.224, 0.225]),
    ])
    
    img = Image.open('my_image.jpg')
    input_tensor = preprocess(img).unsqueeze(0)  # batch dim
    with torch.no_grad():
        logits = model(input_tensor)
    
  4. 파인튜닝 – 제공된 train.py 스크립트를 사용하고 데이터셋을 지정한 다음, 필요에 따라 스윕을 실행합니다:
    python train.py --model efficientnet_b0 --data-dir /path/to/data --epochs 30
    python sweep.py --config my_sweep.yaml
    

대안을 고려해야 할 경우

  • 비전 외 모델(LLM, 오디오, 강화 학습 에이전트)이 필요한 경우 timm은 이러한 영역을 다루지 않습니다.
  • 초대규모 훈련(수십억 개의 이미지)의 경우 timm과 통합할 수 있는 전용 분산 훈련 프레임워크(예: DeepSpeed, Lightning)가 필요할 수 있지만 추가 확장 기능을 제공합니다.
  • 온디바이스 추론(모바일/임베디드)이 필요한 경우 CPUBone 또는 MobileNet-V2와 같은 경량 백본을 살펴보세요. 그러나 모델을 ONNX/TFLite로 변환해야 할 수도 있습니다.

TL;DR – timm은 PyTorch를 위한 포괄적이고 적극적으로 유지 관리되는 이미지 모델 및 훈련 유틸리티 모음으로, 최첨단 컴퓨터 비전 아키텍처를 실험하거나 배포하려는 모든 사람에게 이상적입니다.

관련

  • Dispatch
  • Dispatch
  • 프로젝트
  • 프로젝트
  • 프로젝트