# NFNet

**카테고리:** CNN · **코드:** [`timm/models/nfnet.py`](https://github.com/huggingface/pytorch-image-models/blob/main/timm/models/nfnet.py) · **아키텍처:** 36 · **프리트레인드 가중치:** 14 (ImageNet-1k 결과 포함 14개)

batch normalization 없이 scaled weight standardization을 사용하여 학습된 Normalization-Free 네트워크: NFNet(적응형 그래디언트 클리핑 포함), NF-RegNet 및 pre-activation NF-ResNet 모델.

## 논문

* [비정규화 ResNet의 성능 격차를 줄이기 위한 신호 전파 특성 분석](https://arxiv.org/abs/2101.08692)
* [정규화 없이 고성능 대규모 이미지 인식](https://arxiv.org/abs/2102.06171)

## 사용

사전 학습된 가중치 로드, 이미지 전처리 및 파인튜닝에 대해서는 [Quickstart](../quickstart)를, 모델을 백본으로 사용하는 방법에 대해서는 [Feature Extraction](../feature_extraction)을 참고하세요.

```py
>>> import timm
>>> model = timm.create_model('nf_resnet50.ra2_in1k', pretrained=True)
>>> data_config = timm.data.resolve_model_data_config(model)
```

## 모델 API 지원

| 기능 | `NormFreeNet` |
|---|---|
| [`features_only=True` feature map](../model_api#intermediate-features) | ✓ (strides 2, 4, 8, 16, 32) |
| [`forward_intermediates()`](../model_api#intermediate-features) | ✓ |
| [`prune_intermediate_layers()`](../model_api#intermediate-features) | ✓ |
| [입력 크기 무관, 변경 불필요](../model_api#input-size) | ✓ |
| [`set_input_size()`](../model_api#input-size) | – |
| [`dynamic_img_size=True`](../model_api#input-size) | – |
| [`set_grad_checkpointing()`](../model_api#training-hooks) | ✓ |
| [레이어별 LR 감쇠(`group_matcher()`)](../model_api#training-hooks) | ✓ |
| [`reset_classifier()`](../model_api#classifier) | ✓ |

✓ 지원됨, ✓ (정사각형) 정사각형 크기만 작동, ✗ 미지원, – 필요 없음(모델이 이미 모든 입력 크기를 허용). 무작위로 초기화된 모델(`NormFreeNet`에 `nf_regnet_b0`를 192로 설정)에서 각 기능을 실행하여 확인했으며, 같은 클래스의 다른 아키텍처도 동일한 동작을 하는 것으로 예상됩니다. 자세한 내용은 [Model API](../model_api) 페이지를 참조하세요.

## 아키텍처

| 아키텍처 | 매개변수 (M) | GMAC | 입력 크기 | 사전 학습된 가중치 |
|---|---:|---:|---:|---:|
| `dm_nfnet_f0` | 71.49 | 7.21 | 192 | 1 |
| `dm_nfnet_f1` | 132.63 | 17.87 | 224 | 1 |
| `dm_nfnet_f2` | 193.78 | 33.76 | 256 | 1 |
| `dm_nfnet_f3` | 254.92 | 68.77 | 320 | 1 |
| `dm_nfnet_f4` | 316.07 | 122.14 | 384 | 1 |
| `dm_nfnet_f5` | 377.21 | 170.71 | 416 | 1 |
| `dm_nfnet_f6` | 438.36 | 229.70 | 448 | 1 |
| `eca_nfnet_l0` | 24.14 | 4.35 | 224 | 1 |
| `eca_nfnet_l1` | 41.41 | 9.62 | 256 | 1 |
| `eca_nfnet_l2` | 56.72 | 20.95 | 320 | 1 |
| `eca_nfnet_l3` | 72.04 | 32.57 | 352 | 0 |
| `nf_ecaresnet26` | 16.00 | 2.41 | 224 | 0 |
| `nf_ecaresnet50` | 25.56 | 4.21 | 224 | 0 |
| `nf_ecaresnet101` | 44.55 | 8.01 | 224 | 0 |
| `nf_regnet_b0` | 8.76 | 0.37 | 192 | 0 |
| `nf_regnet_b1` | 10.22 | 0.82 | 256 | 1 |
| `nf_regnet_b2` | 14.31 | 0.97 | 240 | 0 |
| `nf_regnet_b3` | 18.59 | 1.67 | 288 | 0 |
| `nf_regnet_b4` | 30.21 | 3.29 | 320 | 0 |
| `nf_regnet_b5` | 49.74 | 7.95 | 384 | 0 |
| `nf_resnet26` | 16.00 | 2.41 | 224 | 0 |
| `nf_resnet50` | 25.56 | 5.46 | 256 | 1 |
| `nf_resnet101` | 44.55 | 8.01 | 224 | 0 |
| `nf_seresnet26` | 17.40 | 2.41 | 224 | 0 |
| `nf_seresnet50` | 28.09 | 4.21 | 224 | 0 |
| `nf_seresnet101` | 49.33 | 8.02 | 224 | 0 |
| `nfnet_f0` | 71.49 | 7.21 | 192 | 0 |
| `nfnet_f1` | 132.63 | 17.87 | 224 | 0 |
| `nfnet_f2` | 193.78 | 33.76 | 256 | 0 |
| `nfnet_f3` | 254.92 | 68.77 | 320 | 0 |
| `nfnet_f4` | 316.07 | 122.14 | 384 | 0 |
| `nfnet_f5` | 377.21 | 170.71 | 416 | 0 |
| `nfnet_f6` | 438.36 | 229.70 | 448 | 0 |
| `nfnet_f7` | 499.50 | 300.08 | 480 | 0 |
| `nfnet_l0` | 35.07 | 4.36 | 224 | 1 |
| `test_nfnet` | 0.38 | 0.29 | 160 | 1 |

GMACs와 매개변수 수는 각 아키텍처의 기본 입력 크기 및 분류기를 기준으로 하며, [벤치마크 결과](https://github.com/huggingface/pytorch-image-models/tree/main/results)에서 가져온 값입니다.

## 사전 학습된 가중치

Top-1은 [`results-imagenet.csv`](https://github.com/huggingface/pytorch-image-models/blob/main/results/results-imagenet.csv)에 나열된 평가 크기에서 측정된 ImageNet-1k 검증 정확도이며, 해당 가중치에 ImageNet-1k 결과가 없는 경우(예: 사전 학습 또는 이미지-텍스트 가중치)에는 '-'로 표시됩니다. Classes는 사전 학습된 분류기의 크기를 나타내며, 분류기가 없는 가중치의 경우 해당 값이 없습니다.

Weights는 소스에 따라 그룹화됩니다: 사전 학습 설정에 명시된 논문 또는 출처, `timm`가 아닌 Hub 조직, 사전 학습 태그의 첫 번째 부분(`architecture.tag`) 순서입니다. 단일 weight만 있는 소스는 other에 나열됩니다.

### `dm` 태그

| 가중치 | 입력 크기 | Top-1(%) | 평가 크기 | 클래스 | 라이선스 | Hub |
|---|---:|---:|---:|---:|---|---|
| `dm_nfnet_f0.dm_in1k` | 192 (테스트 256) | 83.468 | 256 | 1000 | apache-2.0 | [timm](https://huggingface.co/timm/dm_nfnet_f0.dm_in1k) |
| `dm_nfnet_f1.dm_in1k` | 224 (테스트 320) | 84.700 | 320 | 1000 | apache-2.0 | [timm](https://huggingface.co/timm/dm_nfnet_f1.dm_in1k) |
| `dm_nfnet_f2.dm_in1k` | 256 (테스트 352) | 85.184 | 352 | 1000 | apache-2.0 | [timm](https://huggingface.co/timm/dm_nfnet_f2.dm_in1k) |
| `dm_nfnet_f3.dm_in1k` | 320 (테스트 416) | 85.676 | 416 | 1000 | apache-2.0 | [timm](https://huggingface.co/timm/dm_nfnet_f3.dm_in1k) |
| `dm_nfnet_f4.dm_in1k` | 384 (테스트 512) | 85.838 | 512 | 1000 | apache-2.0 | [timm](https://huggingface.co/timm/dm_nfnet_f4.dm_in1k) |
| `dm_nfnet_f5.dm_in1k` | 416 (테스트 544) | 86.102 | 544 | 1000 | apache-2.0 | [timm](https://huggingface.co/timm/dm_nfnet_f5.dm_in1k) |
| `dm_nfnet_f6.dm_in1k` | 448 (테스트 576) | 86.364 | 576 | 1000 | apache-2.0 | [timm](https://huggingface.co/timm/dm_nfnet_f6.dm_in1k) |

### `ra2` 태그

| 가중치 | 입력 크기 | Top-1(%) | 평가 크기 | 클래스 | 라이선스 | Hub |
|---|---:|---:|---:|---:|---|---|
| `eca_nfnet_l0.ra2_in1k` | 224 (테스트 288) | 82.590 | 288 | 1000 | apache-2.0 | [timm](https://huggingface.co/timm/eca_nfnet_l0.ra2_in1k) |
| `eca_nfnet_l1.ra2_in1k` | 256 (테스트 320) | 84.062 | 320 | 1000 | apache-2.0 | [timm](https://huggingface.co/timm/eca_nfnet_l1.ra2_in1k) |
| `nf_regnet_b1.ra2_in1k` | 256 (테스트 288) | 79.368 | 288 | 1000 | apache-2.0 | [timm](https://huggingface.co/timm/nf_regnet_b1.ra2_in1k) |
| `nf_resnet50.ra2_in1k` | 256 (테스트 288) | 80.658 | 288 | 1000 | apache-2.0 | [timm](https://huggingface.co/timm/nf_resnet50.ra2_in1k) |
| `nfnet_l0.ra2_in1k` | 224 (테스트 288) | 82.766 | 288 | 1000 | apache-2.0 | [timm](https://huggingface.co/timm/nfnet_l0.ra2_in1k) |

### 기타

| 가중치 | 입력 크기 | Top-1(%) | 평가 크기 | 클래스 | 라이선스 | Hub |
|---|---:|---:|---:|---:|---|---|
| `eca_nfnet_l2.ra3_in1k` | 320 (테스트 384) | 84.710 | 384 | 1000 | apache-2.0 | [timm](https://huggingface.co/timm/eca_nfnet_l2.ra3_in1k) |
| `test_nfnet.r160_in1k` | 160 | 47.634 | 160 | 1000 | apache-2.0 | [timm](https://huggingface.co/timm/test_nfnet.r160_in1k) |

