1. 11 Jun, 2020 1 commit
    • Philip Meier's avatar
      Add convert_image_dtype to functionals (#2078) · c2e8a008
      Philip Meier authored
      
      
      * add convert_image_dtype to functionals
      
      * add ConvertImageDtype transform
      
      * add test
      
      * remove underscores from numbers since they are not compatible with python<3.6
      
      * address review comments 1/3
      
      * fix torch.bool
      
      * use torch.iinfo in test
      
      * fix flake8
      
      * remove double conversion
      
      * fix flake9
      
      * bug fix
      
      * add error messages to test
      
      * disable torch.float16 and torch.half for now
      
      * add docstring
      
      * add test for consistency
      
      * move nested function to top
      
      * test in CI
      
      * dirty progress
      
      * add int to int and cleanup
      
      * lint
      Co-authored-by: default avatarPhilip Meier <meier.philip@posteo.de>
      c2e8a008
  2. 10 Jun, 2020 1 commit
  3. 04 Jun, 2020 2 commits
  4. 18 May, 2020 2 commits
    • Steven Basart's avatar
      Add pil_to_tensor to functionals (#2092) · e6d3f8c5
      Steven Basart authored
      * Adds as_tensor to functional.py
      
      Similar functionality to to_tensor without the default conversion to float and division by 255.
      Also adds support for Image mode 'L'.
      
      * Adds tests to AsTensor()
      
      Adds tests to AsTensor and removes the conversion to float and division by 255.
      
      * Adds AsTensor to transforms.py
      
      Calls the as_tensor function in functionals and adds the function AsTensor as callable from transforms.
      
      * Removes the pic.mode == 'L'
      
      This was handled by the else condition previously so I'll remove it.
      
      * Fix Lint issue
      
      Adds two line breaks between functions to fix lint issue
      
      * Replace from_numpy with as_tensor
      
      Removes the extra if conditionals and replaces from_numpy with as_tensor.
      
      * Renames as_tensor to pil_to_tensor
      
      Renames the function as_tensor to pil_to_tensor and narrows the scope of the function.  At the same time also creates a flag that defaults to True for swapping to the channels first format.
      
      * Renames AsTensor to PILToImage
      
      Renames the function AsTensor to PILToImage and modifies the description.  Adds the swap_to_channelsfirst boolean variable to indicate if the user wishes to change the shape of the input.
      
      * Add the __init__ function to PILToTensor 
      
      Add the __init__ function to PILToTensor since it contains the swap_to_channelsfirst parameter now.
      
      * fix lint issue
      
      remove trailing white space
      
      * Fix the tests
      
      Reflects the name change to PILToTensor and the parameter to the function as well as the new narrowed scope that the function only accepts PIL images.
      
      * fix tests
      
      Instead of undoing the transpose just create a new tensor and test that one.
      
      * Add the view back
      
      Add img.view(pic.size[1], pic.size[0], len(pic.getbands())) back to outside the if condition.
      
      * fix test
      
      fix conversion from torch tensor to PIL back to torch tensor.
      
      * fix lint issues
      
      * fix lint
      
      remove trailing white space
      
      * Fixed the channel swapping tensor test
      
      Torch tranpose operates differently than numpy transpose.  Changed operation to permute.
      
      * Add mode='F'
      
      Add mode information when converting to PIL Image from Float Tensor.
      
      * Added inline comments to follow shape changes
      
      * ToPILImage converts FloatTensors to uint8
      
      * Remove testing not swapping
      
      * Removes the swap_channelsfirst parameter
      
      Makes the channel swapping the default behavior.
      
      * Remove the swap_channelsfirst argument
      
      Remove the swap_channelsfirst argument and makes the swapping the default functionality.
      e6d3f8c5
    • Francisco Massa's avatar
      Fix Python lint (#2226) · e2e511be
      Francisco Massa authored
      e2e511be
  5. 04 May, 2020 1 commit
  6. 03 Apr, 2020 1 commit
  7. 02 Apr, 2020 1 commit
  8. 01 Apr, 2020 2 commits
  9. 31 Mar, 2020 1 commit
  10. 30 Mar, 2020 1 commit
  11. 23 Mar, 2020 2 commits
  12. 27 Feb, 2020 1 commit
  13. 25 Feb, 2020 1 commit
    • Phoenix Meadowlark's avatar
      Improved error messages for transforms.functional.normalize(). (#1915) · 2f433e0a
      Phoenix Meadowlark authored
      * Improved error messages for transforms.functional.normalize().
      
      Split the original TypeError into 1. a TypeError if `tensor` is not a torch.Tensor and 2. a ValueError if `tensor` does not have the correct dimensionality.
      
      Added more detail to the error for when `tensor` has the wrong dimension to make it easier to diagnose. This is useful when this function isn't called directly by the user (e.g. when the user uses transforms.Normalize and can't directly see this functions doc string).
      
      Deleted hanging function `_is_tensor_image()`. It isn't used in this file and isn't used internally anywhere else in torchvision that I can see. (Some users will have used it despite the underscore prefix, but a quick google search for "F._is_tensor_image" suggests this is rare).
      
      * Value checking to prevent division by zero runtime crashes.
      
      Added a ValueError to check for and avoid division by zero in `div_`. Not preventing the call leads to runtime crashes, at least in some environments.
      
      * Fixed div by zero check for non-scalar inputs.
      2f433e0a
  14. 29 Jan, 2020 1 commit
  15. 22 Jan, 2020 2 commits
  16. 29 Oct, 2019 1 commit
    • pedrofreire's avatar
      Make shear operation area preserving (#1529) · c226bb95
      pedrofreire authored
      * Improve readability of affine transformation code
      
      * Make shear transformation area preserving
      
      The previous shear implementation did not preserve area, and we
      implement a version that does.
      
      The formula used was verified with the following sympy code:
      
      from sympy import Matrix, cos, sin, tan, simplify
      from sympy.abc import x, y, phi
      
      Xs = Matrix(
              [[1, -tan(x)],
               [0, 1]]
              )
      
      Ys = Matrix(
              [[1, 0],
               [-tan(y), 1]]
              )
      
      R = Matrix(
              [[cos(phi), -sin(phi)],
               [sin(phi), cos(phi)]]
              )
      
      RSS = Matrix(
              [[cos(phi - y)/cos(y), -cos(phi - y)*tan(x)/cos(y) - sin(phi)],
               [sin(phi - y)/cos(y), -sin(phi - y)*tan(x)/cos(y) + cos(phi)]])
      
      print(simplify(R * Ys * Xs - RSS))
      
      One thing that is not clear (and could be tested) is whether avoiding
      the explicit products and calculations in _get_inverse_affine_matrix
      really gives performance benefits - compared to doing the explicit
      calculation done in _test_transformation.
      
      * Use np.matmul instead of @
      
      The @ syntax is not supported in Python 2.
      c226bb95
  17. 18 Oct, 2019 1 commit
  18. 30 Sep, 2019 1 commit
  19. 11 Sep, 2019 1 commit
  20. 06 Sep, 2019 1 commit
  21. 09 Jul, 2019 1 commit
  22. 06 Jul, 2019 1 commit
    • Zhun Zhong's avatar
      Fix bug to RandomErasing (#1095) · 34833427
      Zhun Zhong authored
      * Fix bug to Random Erasing
      
      1. Avoid forever loop for getting parameters of erase.
      2. replace' img_b' by 'img_c', because it indicates the channel.
      3. replace v = torch.rand([img_c, h, w]) by v = torch.empty([img_c, h, w], dtype=torch.float32).normal_(). Normally distributed achieves better performance.
      
      * add test
      
      * Update test_transforms.py
      
      * Update transforms.py
      
      * Update test_transforms.py
      
      * Update transforms.py
      
      * Update functional.py
      34833427
  23. 03 Jul, 2019 1 commit
  24. 28 Jun, 2019 2 commits
  25. 24 Jun, 2019 1 commit
    • Zhun Zhong's avatar
      transforms: add Random Erasing for image augmentation (#909) · 3254560b
      Zhun Zhong authored
      * add erase function
      
      * add Random Erasing
      
      * Update transforms.py
      
      * Update transforms.py
      
      * add test for random erasing
      
      * Update test_transforms.py
      
      * fix flake8
      
      * Update test_transforms.py
      
      * Update functional.py
      
      * Update test_transforms.py
      
      * fix bug for per-pixel erasing
      
      * Update transforms.py
      
      * specific for coordinate (x, y)
      
      * add raise TypeError for img
      
      * Update transforms.py
      
      * Update transforms.rst
      3254560b
  26. 20 Jun, 2019 1 commit
    • Geovanni Zhang's avatar
      fix:error message of to_tensor (#1000) · ae2cb6ec
      Geovanni Zhang authored
      * fix:error message of to_tensor
      
      The error "pic should be PIL Image or ndarray. Got '<numpy.ndarray>'" is confusing.
      
      * fix:a clearer function name
      
      _is_numpy_image is clearer than _is_numpy_image_dim
      
      * fix:add a test case
      
      Add a test case in test/test_transforms.py to test the error message
      
      * fix:pass ci check
      
      * fix:wrong random matrix
      ae2cb6ec
  27. 14 Jun, 2019 2 commits
  28. 14 May, 2019 1 commit
  29. 25 Apr, 2019 1 commit
  30. 29 Mar, 2019 1 commit
  31. 26 Mar, 2019 1 commit
  32. 24 Mar, 2019 1 commit
  33. 09 Mar, 2019 1 commit