Skip to content

Commit 260c6fe

Browse files
authored
Merge branch 'main' into vanilla-tensor-image
2 parents e1fea07 + e2bb6ba commit 260c6fe

32 files changed

+559
-1259
lines changed

.circleci/config.yml

Lines changed: 0 additions & 576 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.circleci/regenerate.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,9 +84,10 @@ def workflow_pair(btype, os_type, python_version, cu_version, unicode, prefix=""
8484

8585
if upload:
8686
w.append(generate_upload_workflow(base_workflow_name, os_type, btype, cu_version, filter_branch=filter_branch))
87-
if filter_branch == "nightly" and os_type in ["linux", "win"]:
88-
pydistro = "pip" if btype == "wheel" else "conda"
89-
w.append(generate_smoketest_workflow(pydistro, base_workflow_name, filter_branch, python_version, os_type))
87+
# disable smoke tests, they are broken and needs to be fixed
88+
# if filter_branch == "nightly" and os_type in ["linux", "win"]:
89+
# pydistro = "pip" if btype == "wheel" else "conda"
90+
# w.append(generate_smoketest_workflow(pydistro, base_workflow_name, filter_branch, python_version, os_type))
9091

9192
return w
9293

docs/source/models.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ to::
179179
import torch
180180
from torchvision import datasets, transforms as T
181181

182-
transform = T.Compose([T.Resize(256), T.CenterCrop(224), T.ToTensor()])
182+
transform = T.Compose([T.Resize(256), T.CenterCrop(224), T.PILToTensor(), T.ConvertImageDtype(torch.float)])
183183
dataset = datasets.ImageNet(".", split="train", transform=transform)
184184

185185
means = []

references/detection/presets.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,12 @@ def __call__(self, img, target):
4141

4242
class DetectionPresetEval:
4343
def __init__(self):
44-
self.transforms = T.ToTensor()
44+
self.transforms = T.Compose(
45+
[
46+
T.PILToTensor(),
47+
T.ConvertImageDtype(torch.float),
48+
]
49+
)
4550

4651
def __call__(self, img, target):
4752
return self.transforms(img, target)

references/detection/transforms.py

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -45,15 +45,6 @@ def forward(
4545
return image, target
4646

4747

48-
class ToTensor(nn.Module):
49-
def forward(
50-
self, image: Tensor, target: Optional[Dict[str, Tensor]] = None
51-
) -> Tuple[Tensor, Optional[Dict[str, Tensor]]]:
52-
image = F.pil_to_tensor(image)
53-
image = F.convert_image_dtype(image)
54-
return image, target
55-
56-
5748
class PILToTensor(nn.Module):
5849
def forward(
5950
self, image: Tensor, target: Optional[Dict[str, Tensor]] = None

references/similarity/test.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import unittest
22
from collections import defaultdict
33

4+
import torch
45
import torchvision.transforms as transforms
56
from sampler import PKSampler
67
from torch.utils.data import DataLoader
@@ -17,7 +18,13 @@ def test_pksampler(self):
1718
self.assertRaises(AssertionError, PKSampler, targets, p, k)
1819

1920
# Ensure p, k constraints on batch
20-
dataset = FakeData(size=1000, num_classes=100, image_size=(3, 1, 1), transform=transforms.ToTensor())
21+
trans = transforms.Compose(
22+
[
23+
transforms.PILToTensor(),
24+
transforms.ConvertImageDtype(torch.float),
25+
]
26+
)
27+
dataset = FakeData(size=1000, num_classes=100, image_size=(3, 1, 1), transform=trans)
2128
targets = [target.item() for _, target in dataset]
2229
sampler = PKSampler(targets, p, k)
2330
loader = DataLoader(dataset, batch_size=p * k, sampler=sampler)

references/similarity/train.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,12 @@ def main(args):
102102
optimizer = Adam(model.parameters(), lr=args.lr)
103103

104104
transform = transforms.Compose(
105-
[transforms.Lambda(lambda image: image.convert("RGB")), transforms.Resize((224, 224)), transforms.ToTensor()]
105+
[
106+
transforms.Lambda(lambda image: image.convert("RGB")),
107+
transforms.Resize((224, 224)),
108+
transforms.PILToTensor(),
109+
transforms.ConvertImageDtype(torch.float),
110+
]
106111
)
107112

108113
# Using FMNIST to demonstrate embedding learning using triplet loss. This dataset can

test/builtin_dataset_mocks.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -878,6 +878,34 @@ def celeba(info, root, config):
878878
return CelebAMockData.generate(root)[config.split]
879879

880880

881+
@register_mock
882+
def country211(info, root, config):
883+
split_name_mapper = {
884+
"train": "train",
885+
"val": "valid",
886+
"test": "test",
887+
}
888+
split_folder = pathlib.Path(root, "country211", split_name_mapper[config["split"]])
889+
split_folder.mkdir(parents=True, exist_ok=True)
890+
891+
num_examples = {
892+
"train": 3,
893+
"val": 4,
894+
"test": 5,
895+
}[config["split"]]
896+
897+
classes = ("AD", "BS", "GR")
898+
for cls in classes:
899+
create_image_folder(
900+
split_folder,
901+
name=cls,
902+
file_name_fn=lambda idx: f"{idx}.jpg",
903+
num_examples=num_examples,
904+
)
905+
make_tar(root, f"{split_folder.parent.name}.tgz", split_folder.parent, compression="gz")
906+
return num_examples * len(classes)
907+
908+
881909
@register_mock
882910
def dtd(info, root, config):
883911
data_folder = root / "dtd"
@@ -1299,6 +1327,24 @@ def cub200(info, root, config):
12991327
return num_samples_map[config.split]
13001328

13011329

1330+
@register_mock
1331+
def eurosat(info, root, config):
1332+
data_folder = pathlib.Path(root, "eurosat", "2750")
1333+
data_folder.mkdir(parents=True)
1334+
1335+
num_examples_per_class = 3
1336+
classes = ("AnnualCrop", "Forest")
1337+
for cls in classes:
1338+
create_image_folder(
1339+
root=data_folder,
1340+
name=cls,
1341+
file_name_fn=lambda idx: f"{cls}_{idx}.jpg",
1342+
num_examples=num_examples_per_class,
1343+
)
1344+
make_zip(root, "EuroSAT.zip", data_folder)
1345+
return len(classes) * num_examples_per_class
1346+
1347+
13021348
@register_mock
13031349
def svhn(info, root, config):
13041350
import scipy.io as sio

test/preprocess-bench.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@
3333
[
3434
transforms.RandomSizedCrop(224),
3535
transforms.RandomHorizontalFlip(),
36-
transforms.ToTensor(),
36+
transforms.PILToTensor(),
37+
transforms.ConvertImageDtype(torch.float),
3738
transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
3839
]
3940
)

test/sanity_checks.ipynb

Lines changed: 0 additions & 529 deletions
This file was deleted.

test/test_cpp_models.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ def read_image1():
3030
)
3131
image = Image.open(image_path)
3232
image = image.resize((224, 224))
33-
x = F.to_tensor(image)
33+
x = F.pil_to_tensor(image)
34+
x = F.convert_image_dtype(x)
3435
return x.view(1, 3, 224, 224)
3536

3637

@@ -40,7 +41,8 @@ def read_image2():
4041
)
4142
image = Image.open(image_path)
4243
image = image.resize((299, 299))
43-
x = F.to_tensor(image)
44+
x = F.pil_to_tensor(image)
45+
x = F.convert_image_dtype(x)
4446
x = x.view(1, 3, 299, 299)
4547
return torch.cat([x, x], 0)
4648

test/test_onnx.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -413,13 +413,13 @@ def get_image(self, rel_path: str, size: Tuple[int, int]) -> torch.Tensor:
413413
import os
414414

415415
from PIL import Image
416-
from torchvision import transforms
416+
from torchvision.transforms import functional as F
417417

418418
data_dir = os.path.join(os.path.dirname(__file__), "assets")
419419
path = os.path.join(data_dir, *rel_path.split("/"))
420420
image = Image.open(path).convert("RGB").resize(size, Image.BILINEAR)
421421

422-
return transforms.ToTensor()(image)
422+
return F.convert_image_dtype(F.pil_to_tensor(image))
423423

424424
def get_test_images(self) -> Tuple[List[torch.Tensor], List[torch.Tensor]]:
425425
return (

0 commit comments

Comments
 (0)