transforms.rst 2.9 KB
Newer Older
Sasank Chilamkurthy's avatar
Sasank Chilamkurthy committed
1
2
torchvision.transforms
======================
Sasank Chilamkurthy's avatar
Sasank Chilamkurthy committed
3
4
5

.. currentmodule:: torchvision.transforms

6
7
8
9
10
Transforms are common image transformations. They can be chained together using :class:`Compose`.
Additionally, there is the :mod:`torchvision.transforms.functional` module.
Functional transforms give fine-grained control over the transformations.
This is useful if you have to build a more complex transformation pipeline
(e.g. in the case of segmentation tasks).
Sasank Chilamkurthy's avatar
Sasank Chilamkurthy committed
11
12
13

.. autoclass:: Compose

14
Transforms on PIL Image
Sasank Chilamkurthy's avatar
Sasank Chilamkurthy committed
15
16
-----------------------

17
.. autoclass:: CenterCrop
18

19
.. autoclass:: ColorJitter
Sasank Chilamkurthy's avatar
Sasank Chilamkurthy committed
20

21
.. autoclass:: FiveCrop
Sasank Chilamkurthy's avatar
Sasank Chilamkurthy committed
22

23
.. autoclass:: Grayscale
Sasank Chilamkurthy's avatar
Sasank Chilamkurthy committed
24

25
.. autoclass:: Pad
26

27
.. autoclass:: RandomAffine
28

29
.. autoclass:: RandomApply
Sasank Chilamkurthy's avatar
Sasank Chilamkurthy committed
30

31
.. autoclass:: RandomChoice
32

33
.. autoclass:: RandomCrop
34

35
.. autoclass:: RandomGrayscale
36

37
.. autoclass:: RandomHorizontalFlip
38

39
.. autoclass:: RandomOrder
Sasank Chilamkurthy's avatar
Sasank Chilamkurthy committed
40

41
42
.. autoclass:: RandomPerspective

43
.. autoclass:: RandomResizedCrop
44

45
46
.. autoclass:: RandomRotation

47
48
49
50
51
52
53
54
55
.. autoclass:: RandomSizedCrop

.. autoclass:: RandomVerticalFlip

.. autoclass:: Resize

.. autoclass:: Scale

.. autoclass:: TenCrop
56

Sasank Chilamkurthy's avatar
Sasank Chilamkurthy committed
57
58
59
Transforms on torch.\*Tensor
----------------------------

surgan12's avatar
surgan12 committed
60
61
.. autoclass:: LinearTransformation

Sasank Chilamkurthy's avatar
Sasank Chilamkurthy committed
62
63
64
65
.. autoclass:: Normalize
	:members: __call__
	:special-members:

66
67
.. autoclass:: RandomErasing

Sasank Chilamkurthy's avatar
Sasank Chilamkurthy committed
68
69
70
Conversion Transforms
---------------------

71
.. autoclass:: ToPILImage
Sasank Chilamkurthy's avatar
Sasank Chilamkurthy committed
72
73
74
	:members: __call__
	:special-members:

75
.. autoclass:: ToTensor
Sasank Chilamkurthy's avatar
Sasank Chilamkurthy committed
76
77
78
79
80
81
82
83
	:members: __call__
	:special-members:

Generic Transforms
------------------

.. autoclass:: Lambda

84
85
86
87

Functional Transforms
---------------------

88
89
90
91
Functional transforms give you fine-grained control of the transformation pipeline.
As opposed to the transformations above, functional transforms don't contain a random number
generator for their parameters.
That means you have to specify/generate all parameters, but you can reuse the functional transform.
92
93
94

Example:
you can apply a functional transform with the same parameters to multiple images like this:
95
96
97
98
99
100
101

.. code:: python

    import torchvision.transforms.functional as TF
    import random

    def my_segmentation_transforms(image, segmentation):
102
        if random.random() > 0.5:
103
104
105
106
107
108
            angle = random.randint(-30, 30)
            image = TF.rotate(image, angle)
            segmentation = TF.rotate(segmentation, angle)
        # more transforms ...
        return image, segmentation

109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130

Example:
you can use a functional transform to build transform classes with custom behavior:

.. code:: python

    import torchvision.transforms.functional as TF
    import random

    class MyRotationTransform:
        """Rotate by one of the given angles."""

        def __init__(self, angles):
            self.angles = angles

        def __call__(self, x):
            angle = random.choice(self.angles)
            return TF.rotate(x, angle)

    rotation_transform = MyRotationTransform(angles=[-30, -15, 0, 15, 30])


131
132
.. automodule:: torchvision.transforms.functional
    :members: