Big re-org, working towards making pip/module as 'timm'

pull/13/head
Ross Wightman 6 years ago
parent 871f4c1b0c
commit aa4354f466

@ -11,9 +11,9 @@ import argparse
import numpy as np
import torch
from models import create_model, apply_test_time_pool
from data import Dataset, create_loader, resolve_data_config
from utils import AverageMeter
from timm.models import create_model, apply_test_time_pool
from timm.data import Dataset, create_loader, resolve_data_config
from timm.utils import AverageMeter
torch.backends.cudnn.benchmark = True
@ -55,6 +55,9 @@ parser.add_argument('--topk', default=5, type=int,
def main():
args = parser.parse_args()
# might as well try to do something useful...
args.pretrained = args.pretrained or not args.checkpoint
# create model
model = create_model(
args.model,

@ -0,0 +1,2 @@
torch~=1.0
torchvision

@ -0,0 +1,55 @@
""" Setup
"""
from setuptools import setup, find_packages
from codecs import open
from os import path
here = path.abspath(path.dirname(__file__))
# Get the long description from the README file
with open(path.join(here, 'README.md'), encoding='utf-8') as f:
long_description = f.read()
exec(open('timm/version.py').read())
setup(
name='timm',
version=__version__,
description='(Unofficial) PyTorch Image Models',
long_description=long_description,
url='https://github.com/rwightman/pytorch-image-models',
author='Ross Wightman',
author_email='hello@rwightman.com',
classifiers=[ # Optional
# How mature is this project? Common values are
# 3 - Alpha
# 4 - Beta
# 5 - Production/Stable
'Development Status :: 3 - Alpha',
'Intended Audience :: Developers',
'Topic :: Software Development :: Build Tools',
'License :: OSI Approved :: Apache License',
'Programming Language :: Python :: 3.6',
],
# Note that this is a string of words separated by whitespace, not a list.
keywords='pytorch pretrained models efficientnet mobilenetv3 mnasnet',
# You can just specify package directories manually here if your project is
# simple. Or you can use find_packages().
#
# Alternatively, if you just want to distribute a single Python file, use
# the `py_modules` argument instead as follows, which will expect a file
# called `my_module.py` to exist:
#
# py_modules=["my_module"],
#
packages=find_packages(exclude=['convert']),
# This field lists other packages that your project depends on to run.
# Any package you put here will be installed by pip when your project is
# installed, so they must be valid existing projects.
#
# For an analysis of "install_requires" vs pip's requirements files see:
# https://packaging.python.org/en/latest/requirements.html
install_requires=['torch', 'torchvision'],
)

@ -0,0 +1,2 @@
from .version import __version__
from .models import create_model

@ -1,4 +1,4 @@
from data.constants import *
from .constants import *
def resolve_data_config(model, args, default_cfg={}, verbose=True):

@ -1,7 +1,7 @@
import torch.utils.data
from data.transforms import *
from data.distributed_sampler import OrderedDistributedSampler
from data.mixup import FastCollateMixup
from .transforms import *
from .distributed_sampler import OrderedDistributedSampler
from .mixup import FastCollateMixup
def fast_collate(batch):
@ -101,7 +101,7 @@ def create_loader(
img_size = input_size
if tf_preprocessing and use_prefetcher:
from data.tf_preprocessing import TfPreprocessTransform
from timm.data.tf_preprocessing import TfPreprocessTransform
transform = TfPreprocessTransform(is_training=is_training, size=img_size)
else:
if is_training:

@ -1,5 +1,3 @@
from __future__ import absolute_import
import random
import math
import torch

@ -7,8 +7,8 @@ import math
import random
import numpy as np
from data import DEFAULT_CROP_PCT, IMAGENET_DEFAULT_MEAN, IMAGENET_DEFAULT_STD
from data.random_erasing import RandomErasing
from .constants import DEFAULT_CROP_PCT, IMAGENET_DEFAULT_MEAN, IMAGENET_DEFAULT_STD
from .random_erasing import RandomErasing
class ToNumpy:

@ -2,14 +2,11 @@
This file is a copy of https://github.com/pytorch/vision 'densenet.py' (BSD-3-Clause) with
fixed kwargs passthrough and addition of dynamic global avg/max pool.
"""
import torch
import torch.nn as nn
import torch.nn.functional as F
from collections import OrderedDict
from models.helpers import load_pretrained
from models.adaptive_avgmax_pool import *
from data import IMAGENET_DEFAULT_MEAN, IMAGENET_DEFAULT_STD
from .helpers import load_pretrained
from .adaptive_avgmax_pool import *
from timm.data import IMAGENET_DEFAULT_MEAN, IMAGENET_DEFAULT_STD
import re
_models = ['densenet121', 'densenet169', 'densenet201', 'densenet161']

@ -9,15 +9,13 @@ from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import os
import torch
import torch.nn as nn
import torch.nn.functional as F
from collections import OrderedDict
from models.helpers import load_pretrained
from models.adaptive_avgmax_pool import select_adaptive_pool2d
from data import IMAGENET_DPN_MEAN, IMAGENET_DPN_STD
from .helpers import load_pretrained
from .adaptive_avgmax_pool import select_adaptive_pool2d
from timm.data import IMAGENET_DPN_MEAN, IMAGENET_DPN_STD
_models = ['dpn68', 'dpn68b', 'dpn92', 'dpn98', 'dpn131', 'dpn107']
__all__ = ['DPN'] + _models

@ -22,10 +22,10 @@ from copy import deepcopy
import torch
import torch.nn as nn
import torch.nn.functional as F
from models.helpers import load_pretrained
from models.adaptive_avgmax_pool import SelectAdaptivePool2d
from models.conv2d_same import sconv2d
from data import IMAGENET_DEFAULT_MEAN, IMAGENET_DEFAULT_STD
from .helpers import load_pretrained
from .adaptive_avgmax_pool import SelectAdaptivePool2d
from .conv2d_same import sconv2d
from timm.data import IMAGENET_DEFAULT_MEAN, IMAGENET_DEFAULT_STD
_models = [
'mnasnet_050', 'mnasnet_075', 'mnasnet_100', 'mnasnet_b1', 'mnasnet_140', 'semnasnet_050', 'semnasnet_075',

@ -3,13 +3,12 @@ This file evolved from https://github.com/pytorch/vision 'resnet.py' with (SE)-R
and ports of Gluon variations (https://github.com/dmlc/gluon-cv/blob/master/gluoncv/model_zoo/resnet.py)
by Ross Wightman
"""
import torch
import torch.nn as nn
import torch.nn.functional as F
import math
from models.helpers import load_pretrained
from models.adaptive_avgmax_pool import SelectAdaptivePool2d
from data import IMAGENET_DEFAULT_MEAN, IMAGENET_DEFAULT_STD
from .helpers import load_pretrained
from .adaptive_avgmax_pool import SelectAdaptivePool2d
from timm.data import IMAGENET_DEFAULT_MEAN, IMAGENET_DEFAULT_STD
_models = [
'gluon_resnet18_v1b', 'gluon_resnet34_v1b', 'gluon_resnet50_v1b', 'gluon_resnet101_v1b', 'gluon_resnet152_v1b',

@ -2,12 +2,9 @@
Sourced from https://github.com/Cadene/tensorflow-model-zoo.torch (MIT License) which is
based upon Google's Tensorflow implementation and pretrained weights (Apache 2.0 License)
"""
import torch
import torch.nn as nn
import torch.nn.functional as F
from models.helpers import load_pretrained
from models.adaptive_avgmax_pool import *
from data import IMAGENET_INCEPTION_MEAN, IMAGENET_INCEPTION_STD
from .helpers import load_pretrained
from .adaptive_avgmax_pool import *
from timm.data import IMAGENET_INCEPTION_MEAN, IMAGENET_INCEPTION_STD
_models = ['inception_resnet_v2']
__all__ = ['InceptionResnetV2'] + _models

@ -1,6 +1,6 @@
from torchvision.models import Inception3
from models.helpers import load_pretrained
from data import IMAGENET_DEFAULT_STD, IMAGENET_DEFAULT_MEAN, IMAGENET_INCEPTION_MEAN, IMAGENET_INCEPTION_STD
from .helpers import load_pretrained
from timm.data import IMAGENET_DEFAULT_STD, IMAGENET_DEFAULT_MEAN, IMAGENET_INCEPTION_MEAN, IMAGENET_INCEPTION_STD
_models = ['inception_v3', 'tf_inception_v3', 'adv_inception_v3', 'gluon_inception_v3']
__all__ = _models

@ -2,12 +2,9 @@
Sourced from https://github.com/Cadene/tensorflow-model-zoo.torch (MIT License) which is
based upon Google's Tensorflow implementation and pretrained weights (Apache 2.0 License)
"""
import torch
import torch.nn as nn
import torch.nn.functional as F
from models.helpers import load_pretrained
from models.adaptive_avgmax_pool import *
from data import IMAGENET_INCEPTION_MEAN, IMAGENET_INCEPTION_STD
from .helpers import load_pretrained
from .adaptive_avgmax_pool import *
from timm.data import IMAGENET_INCEPTION_MEAN, IMAGENET_INCEPTION_STD
_models = ['inception_v4']
__all__ = ['InceptionV4'] + _models

@ -1,21 +1,21 @@
from models.inception_v4 import *
from models.inception_resnet_v2 import *
from models.densenet import *
from models.resnet import *
from models.dpn import *
from models.senet import *
from models.xception import *
from models.pnasnet import *
from models.gen_efficientnet import *
from models.inception_v3 import *
from models.gluon_resnet import *
from .inception_v4 import *
from .inception_resnet_v2 import *
from .densenet import *
from .resnet import *
from .dpn import *
from .senet import *
from .xception import *
from .pnasnet import *
from .gen_efficientnet import *
from .inception_v3 import *
from .gluon_resnet import *
from models.helpers import load_checkpoint
from .helpers import load_checkpoint
def create_model(
model_name='resnet50',
pretrained=None,
model_name,
pretrained=False,
num_classes=1000,
in_chans=3,
checkpoint_path='',

@ -12,8 +12,8 @@ import torch
import torch.nn as nn
import torch.nn.functional as F
from models.helpers import load_pretrained
from models.adaptive_avgmax_pool import SelectAdaptivePool2d
from .helpers import load_pretrained
from .adaptive_avgmax_pool import SelectAdaptivePool2d
_models = ['pnasnet5large']
__all__ = ['PNASNet5Large'] + _models

@ -4,13 +4,12 @@ additional dropout and dynamic global avg/max pool.
ResNext additions added by Ross Wightman
"""
import torch
import torch.nn as nn
import torch.nn.functional as F
import math
from models.helpers import load_pretrained
from models.adaptive_avgmax_pool import SelectAdaptivePool2d
from data import IMAGENET_DEFAULT_MEAN, IMAGENET_DEFAULT_STD
from .helpers import load_pretrained
from .adaptive_avgmax_pool import SelectAdaptivePool2d
from timm.data import IMAGENET_DEFAULT_MEAN, IMAGENET_DEFAULT_STD
_models = ['resnet18', 'resnet34', 'resnet50', 'resnet101', 'resnet152',
'resnext50_32x4d', 'resnext101_32x4d', 'resnext101_64x4d', 'resnext152_32x4d']

@ -15,9 +15,9 @@ import math
import torch.nn as nn
import torch.nn.functional as F
from models.helpers import load_pretrained
from models.adaptive_avgmax_pool import SelectAdaptivePool2d
from data import IMAGENET_DEFAULT_MEAN, IMAGENET_DEFAULT_STD
from .helpers import load_pretrained
from .adaptive_avgmax_pool import SelectAdaptivePool2d
from timm.data import IMAGENET_DEFAULT_MEAN, IMAGENET_DEFAULT_STD
_models = ['seresnet18', 'seresnet34', 'seresnet50', 'seresnet101', 'seresnet152', 'senet154',
'seresnext26_32x4d', 'seresnext50_32x4d', 'seresnext101_32x4d']

@ -1,6 +1,6 @@
from torch import nn
import torch.nn.functional as F
from models.adaptive_avgmax_pool import adaptive_avgmax_pool2d
from .adaptive_avgmax_pool import adaptive_avgmax_pool2d
class TestTimePoolHead(nn.Module):

@ -27,8 +27,8 @@ import torch
import torch.nn as nn
import torch.nn.functional as F
from models.helpers import load_pretrained
from models.adaptive_avgmax_pool import select_adaptive_pool2d
from .helpers import load_pretrained
from .adaptive_avgmax_pool import select_adaptive_pool2d
_models = ['xception']
__all__ = ['Xception'] + _models

@ -1,5 +1,5 @@
from torch import optim as optim
from optim import Nadam, RMSpropTF
from timm.optim import Nadam, RMSpropTF
def add_weight_decay(model, weight_decay=1e-5, skip_list=()):

@ -1,7 +1,6 @@
from scheduler.cosine_lr import CosineLRScheduler
from scheduler.plateau_lr import PlateauLRScheduler
from scheduler.tanh_lr import TanhLRScheduler
from scheduler.step_lr import StepLRScheduler
from .cosine_lr import CosineLRScheduler
from .tanh_lr import TanhLRScheduler
from .step_lr import StepLRScheduler
def create_scheduler(args, optimizer):

@ -0,0 +1 @@
__version__ = '0.1.1'

@ -11,16 +11,15 @@ try:
except ImportError:
has_apex = False
from data import Dataset, create_loader, resolve_data_config, FastCollateMixup, mixup_target
from models import create_model, resume_checkpoint, load_checkpoint
from utils import *
from loss import LabelSmoothingCrossEntropy, SoftTargetCrossEntropy
from optim import create_optimizer
from scheduler import create_scheduler
from timm.data import Dataset, create_loader, resolve_data_config, FastCollateMixup, mixup_target
from timm.models import create_model, resume_checkpoint
from timm.utils import *
from timm.loss import LabelSmoothingCrossEntropy, SoftTargetCrossEntropy
from timm.optim import create_optimizer
from timm.scheduler import create_scheduler
import torch
import torch.nn as nn
import torch.distributed as dist
import torchvision.utils
torch.backends.cudnn.benchmark = True

@ -12,9 +12,9 @@ import torch.nn as nn
import torch.nn.parallel
from collections import OrderedDict
from models import create_model, apply_test_time_pool, load_checkpoint
from data import Dataset, create_loader, resolve_data_config
from utils import accuracy, AverageMeter, natural_key
from timm.models import create_model, apply_test_time_pool, load_checkpoint
from timm.data import Dataset, create_loader, resolve_data_config
from timm.utils import accuracy, AverageMeter, natural_key
torch.backends.cudnn.benchmark = True

Loading…
Cancel
Save