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

log image fix #3286

Merged
merged 31 commits into from
Jun 17, 2024
Merged
Show file tree
Hide file tree
Changes from 27 commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
f700f90
log image fix
jessechancy May 14, 2024
deed464
fixed log image tests
jessechancy May 22, 2024
eea4a4a
linter
jessechancy Jun 4, 2024
afa880b
Merge branch 'dev' into log-image-fix
dakinggg Jun 7, 2024
bc44224
Merge branch 'dev' into log-image-fix
milocress Jun 12, 2024
2e5fc23
add simd requirement
milocress Jun 12, 2024
f455291
post0?
milocress Jun 12, 2024
329df18
versioning yada yada yada
milocress Jun 12, 2024
c4da63a
guh
milocress Jun 12, 2024
6454652
import fix?
milocress Jun 13, 2024
2e02dfa
update deps
milocress Jun 13, 2024
0b15060
fix
milocress Jun 13, 2024
2c1254f
fix II
milocress Jun 13, 2024
bc51498
remove other dependency
milocress Jun 13, 2024
7ec4c99
debug statement, remove
milocress Jun 13, 2024
ccc03c5
post1?!
milocress Jun 13, 2024
e3d82f2
build from source
milocress Jun 13, 2024
fed4fdb
whitespace?
milocress Jun 13, 2024
428f4c0
use pillow
milocress Jun 13, 2024
03e7f04
delete a unit test and ignore some types
milocress Jun 13, 2024
7574319
s/type/pyright
milocress Jun 13, 2024
e2e5721
formatting
milocress Jun 13, 2024
45befcd
formatting
milocress Jun 13, 2024
0d17b6b
ignore more stuff
milocress Jun 13, 2024
3a65bf8
Merge branch 'dev' into log-image-fix
milocress Jun 13, 2024
c4bc8f4
Apply suggestions from code review
milocress Jun 13, 2024
733ab2c
remove rest
milocress Jun 13, 2024
dd0d9aa
Update setup.py
milocress Jun 14, 2024
beaafed
try no ignore
milocress Jun 17, 2024
415f81c
merged
milocress Jun 17, 2024
7bc0865
remove intenum
milocress Jun 17, 2024
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
52 changes: 47 additions & 5 deletions composer/algorithms/utils/augmentation_primitives.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,33 @@
implementations of enhancing color, contrast, brightness, and sharpness.
* ``augmentation_sets["all"]`` contains all augmentations.
"""
from enum import IntEnum
from typing import Callable

import numpy as np
from PIL import Image, ImageEnhance, ImageOps

try:
from PIL.Image import Resampling, Transform # pyright: ignore
milocress marked this conversation as resolved.
Show resolved Hide resolved
except ImportError: # fix version conflict issues
milocress marked this conversation as resolved.
Show resolved Hide resolved
# transforms (also defined in Imaging.h)
class Transform(IntEnum):
AFFINE = 0
EXTENT = 1
PERSPECTIVE = 2
QUAD = 3
MESH = 4

# resampling filters (also defined in Imaging.h)
class Resampling(IntEnum):
NEAREST = 0
BOX = 4
BILINEAR = 2
HAMMING = 5
BICUBIC = 3
LANCZOS = 1


AugmentationFn = Callable[[Image.Image, float], Image.Image]

__all__ = [
Expand Down Expand Up @@ -155,7 +177,7 @@ def rotate(pil_img: Image.Image, level: float):
degrees = _int_parameter(_sample_level(level), 30)
if np.random.uniform() > 0.5:
degrees = -degrees
return pil_img.rotate(degrees, resample=Image.BILINEAR)
return pil_img.rotate(degrees, resample=Resampling.BILINEAR) # pyright: ignore
milocress marked this conversation as resolved.
Show resolved Hide resolved


def solarize(pil_img: Image.Image, level: float):
Expand Down Expand Up @@ -183,7 +205,12 @@ def shear_x(pil_img: Image.Image, level: float):
level = _float_parameter(_sample_level(level), 0.3)
if np.random.uniform() > 0.5:
level = -level
return pil_img.transform(pil_img.size, Image.AFFINE, (1, level, 0, 0, 1, 0), resample=Image.BILINEAR)
return pil_img.transform(
pil_img.size,
Transform.AFFINE, # pyright: ignore
(1, level, 0, 0, 1, 0),
resample=Resampling.BILINEAR, # pyright: ignore
) # pyright: ignore
milocress marked this conversation as resolved.
Show resolved Hide resolved


def shear_y(pil_img: Image.Image, level: float):
Expand All @@ -197,7 +224,12 @@ def shear_y(pil_img: Image.Image, level: float):
level = _float_parameter(_sample_level(level), 0.3)
if np.random.uniform() > 0.5:
level = -level
return pil_img.transform(pil_img.size, Image.AFFINE, (1, 0, 0, level, 1, 0), resample=Image.BILINEAR)
return pil_img.transform(
pil_img.size,
Transform.AFFINE, # pyright: ignore
(1, 0, 0, level, 1, 0),
resample=Resampling.BILINEAR, # pyright: ignore
) # pyright: ignore
milocress marked this conversation as resolved.
Show resolved Hide resolved


def translate_x(pil_img: Image.Image, level: float):
Expand All @@ -211,7 +243,12 @@ def translate_x(pil_img: Image.Image, level: float):
level = _int_parameter(_sample_level(level), pil_img.size[0] / 3)
if np.random.random() > 0.5:
level = -level
return pil_img.transform(pil_img.size, Image.AFFINE, (1, 0, level, 0, 1, 0), resample=Image.BILINEAR)
return pil_img.transform(
pil_img.size,
Transform.AFFINE, # pyright: ignore
(1, 0, level, 0, 1, 0),
resample=Resampling.BILINEAR, # pyright: ignore
) # pyright: ignore
milocress marked this conversation as resolved.
Show resolved Hide resolved


def translate_y(pil_img: Image.Image, level: float):
Expand All @@ -225,7 +262,12 @@ def translate_y(pil_img: Image.Image, level: float):
level = _int_parameter(_sample_level(level), pil_img.size[1] / 3)
if np.random.random() > 0.5:
level = -level
return pil_img.transform(pil_img.size, Image.AFFINE, (1, 0, 0, 0, 1, level), resample=Image.BILINEAR)
return pil_img.transform(
pil_img.size,
Transform.AFFINE, # pyright: ignore
(1, 0, 0, 0, 1, level),
resample=Resampling.BILINEAR, # pyright: ignore
) # pyright: ignore
milocress marked this conversation as resolved.
Show resolved Hide resolved


# The following augmentations overlap with corruptions in the ImageNet-C/CIFAR10-C test
Expand Down
3 changes: 2 additions & 1 deletion composer/loggers/mlflow_logger.py
Original file line number Diff line number Diff line change
Expand Up @@ -500,8 +500,9 @@ def log_images(
assert isinstance(self._run_id, str)
self._mlflow_client.log_image(
image=image,
artifact_file=f'{name}_{step}_{im_ind}.png',
key=f'{name}_{step}_{im_ind}',
run_id=self._run_id,
step=step,
)

def post_close(self):
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ def package_files(prefix: str, directory: str, extension: str):
'cryptography==42.0.8',
'pytest-httpserver>=1.0.4,<1.1',
'setuptools<=59.5.0',
'pillow==9.3.0', # Matches the Pillow version listed in the Dockerfile
'pillow>=10.3.0',
milocress marked this conversation as resolved.
Show resolved Hide resolved
]

extra_deps['system_metrics_monitor'] = {
Expand Down
5 changes: 3 additions & 2 deletions tests/loggers/test_mlflow_logger.py
Original file line number Diff line number Diff line change
Expand Up @@ -650,8 +650,9 @@ def before_forward(self, state: State, logger: Logger):
experiment_id = run.info.experiment_id

run_file_path = mlflow_uri / Path(experiment_id) / Path(run_id)
im_dir = run_file_path / Path('artifacts')
assert len(os.listdir(im_dir)) == expected_num_ims
im_dir = run_file_path / Path('artifacts') / Path('images')
# 2 (compressed & uncompressed) per image, and two log images calls in ImageLogger
assert len(os.listdir(im_dir)) == expected_num_ims * 2 * 2


@device('cpu')
Expand Down
18 changes: 0 additions & 18 deletions tests/test_docker.py

This file was deleted.

Loading