Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

brain-score.org submission (user:386) | (public:False) #1347

Merged
merged 1 commit into from
Oct 14, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions brainscore_vision/models/mvimgnet_ss_02/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
from brainscore_vision import model_registry
from brainscore_vision.model_helpers.brain_transformation import ModelCommitment
from .model import get_model, get_layers

model_registry["mvimgnet_ss_02"] = lambda: ModelCommitment(
identifier="mvimgnet_ss_02",
activations_model=get_model("mvimgnet_ss_02"),
layers=get_layers("mvimgnet_ss_02"),
)
64 changes: 64 additions & 0 deletions brainscore_vision/models/mvimgnet_ss_02/model.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
from brainscore_vision.model_helpers.check_submission import check_models
import functools
import os
from urllib.request import urlretrieve
import torchvision.models
from brainscore_vision.model_helpers.activations.pytorch import PytorchWrapper
from brainscore_vision.model_helpers.activations.pytorch import load_preprocess_images
from pathlib import Path
from brainscore_vision.model_helpers import download_weights
import torch
from collections import OrderedDict

# This is an example implementation for submitting resnet-50 as a pytorch model

# Attention: It is important, that the wrapper identifier is unique per model!
# The results will otherwise be the same due to brain-scores internal result caching mechanism.
# Please load your pytorch model for usage in CPU. There won't be GPUs available for scoring your model.
# If the model requires a GPU, contact the brain-score team directly.
from brainscore_vision.model_helpers.check_submission import check_models


def get_model_list():
return ["mvimgnet_ss_02"]


def get_model(name):
assert name == "mvimgnet_ss_02"
url = "https://users.flatironinstitute.org/~tyerxa/slow_steady/training_checkpoints/slow_steady/r2/LARS/lmda_0.2/latest-rank0.pt"
fh = urlretrieve(url)
state_dict = torch.load(fh[0], map_location=torch.device("cpu"))["state"]["model"]
model = load_composer_classifier(state_dict)
preprocessing = functools.partial(load_preprocess_images, image_size=224)
wrapper = PytorchWrapper(identifier=name, model=model, preprocessing=preprocessing)
wrapper.image_size = 224
return wrapper

def load_composer_classifier(sd):
model = torchvision.models.resnet.resnet50()
new_sd = OrderedDict()
for k, v in sd.items():
if 'lin_cls' in k:
new_sd['fc.' + k.split('.')[-1]] = v
if ".f." not in k:
continue
parts = k.split(".")
idx = parts.index("f")
new_k = ".".join(parts[idx + 1 :])
new_sd[new_k] = v
model.load_state_dict(new_sd, strict=True)
return model

def get_layers(name):
assert name == "mvimgnet_ss_02"

outs = ["layer1", "layer2", "layer3", "layer4"]
return outs


def get_bibtex(model_identifier):
return """xx"""


if __name__ == "__main__":
check_models.check_base_models(__name__)
25 changes: 25 additions & 0 deletions brainscore_vision/models/mvimgnet_ss_02/setup.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-

from setuptools import setup, find_packages

requirements = [ "torchvision",
"torch"
]

setup(
packages=find_packages(exclude=['tests']),
include_package_data=True,
install_requires=requirements,
license="MIT license",
zip_safe=False,
keywords='brain-score template',
classifiers=[
'Development Status :: 2 - Pre-Alpha',
'Intended Audience :: Developers',
'License :: OSI Approved :: MIT License',
'Natural Language :: English',
'Programming Language :: Python :: 3.7',
],
test_suite='tests',
)
1 change: 1 addition & 0 deletions brainscore_vision/models/mvimgnet_ss_02/test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Left empty as part of 2023 models migration
Loading