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 리소스 목록. |
| 라이선스 및 인용 | 각 모델에 대한 명확한 라이선스 정보와 라이브러리 인용 방법에 대한 지침. |
시작하기(빠른 시작 단계)
- 설치
pip install timm - 모델 로드(예: 사전 훈련된 EfficientNet-B0)
import timm model = timm.create_model('efficientnet_b0', pretrained=True) model.eval() - 추론 실행
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) - 파인튜닝 – 제공된
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
- 프로젝트
- 프로젝트
- 프로젝트