conda create --name efficient python=3.7
conda install pytorch==1.12.0 torchvision==0.13.0 torchaudio==0.12.0 cudatoolkit=11.3 -c pytorch
pip install timm
pip install timm
pip install matplotlib
pip install pandas
conda install scikit-learn
pip install efficient_pytorchtimmtorchvision.models.efficientnetmodel을 불러오는 모듈 및 패키지는 3가지 존재한다. efficient_pytorch 패키지의 경우 v2 버전을 제공하지 않기 때문에 timm과 torchvision 을 통해 불러오는 것을 추천한다.
from torchvision.models import efficientnet_v2_s
conda install pytorch==1.12.0 torchvision==0.13.0 torchaudio==0.12.0 cudatoolkit=11.3 -c pytorch
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: cannot import name 'efficientnet_v2_s'
efficientnet_v2_s를 예시로 사용한다.# Version 1
efficientnet_b0
efficientnet_b1
efficientnet_b2
efficientnet_b3
efficientnet_b4
efficientnet_b5
efficientnet_b6
efficientnet_b7
# Version2
efficientnet_v2_s
efficientnet_v2_m
efficientnet_v2_l
# ImageNet V1으로 사전학습된 가중치 탑재
model = efficientnet_v2_s(weights='IMAGENET1K_V1')
# summary
import torchsummary
torchsummary.summary(model, (3, 512, 512), device='cpu')
fc.layer를 원하는 class 수에 맞게 변경한다. .을 통해 () 안에 있는 레이어에 접근이 가능하다.
(classifier)의 Linear() 레이어에 접근할 경우 다음과 같이 코드를 작성하면 된다. model.classifier[1]

out_features는 2로 설정한다. in_features의 경우 기존의 fc.layer와 동일하게 구성한다. in_features = model.classifier[1].in_features
model.classifier[1] = nn.Linear(in_features, out_features=2, bias=True)
# efficientnet_v2_s
(features)
Sequential(
(0) : Conv2dNormActivation()
(1) : Sequential()
(2) : Sequential()
(3) : Sequential()
(4) : Sequential()
(5) : Sequential()
(6) : Sequential()
(7) : Conv2dNormActivation()
)
(avgpool)
(classifier)
drop_ratio = 0.2
for idx in range(len(models.features)):
models.features[idx] = nn.Sequential(
models.features[idx],
nn.Dropout(drop_ratio)
)