@@ -3884,7 +3884,15 @@ def test_kernel_video(self):
38843884
38853885 @pytest .mark .parametrize (
38863886 "make_input" ,
3887- [make_image_tensor , make_image_pil , make_image , make_video ],
3887+ [
3888+ make_image_tensor ,
3889+ make_image_pil ,
3890+ make_image ,
3891+ make_video ,
3892+ pytest .param (
3893+ make_image_cvcuda , marks = pytest .mark .skipif (not CVCUDA_AVAILABLE , reason = "CVCUDA is not available" )
3894+ ),
3895+ ],
38883896 )
38893897 def test_functional (self , make_input ):
38903898 check_functional (F .gaussian_blur , make_input (), kernel_size = (3 , 3 ))
@@ -3896,14 +3904,29 @@ def test_functional(self, make_input):
38963904 (F ._misc ._gaussian_blur_image_pil , PIL .Image .Image ),
38973905 (F .gaussian_blur_image , tv_tensors .Image ),
38983906 (F .gaussian_blur_video , tv_tensors .Video ),
3907+ pytest .param (
3908+ F ._misc ._gaussian_blur_cvcuda ,
3909+ cvcuda .Tensor ,
3910+ marks = pytest .mark .skipif (not CVCUDA_AVAILABLE , reason = "CVCUDA is not available" ),
3911+ ),
38993912 ],
39003913 )
39013914 def test_functional_signature (self , kernel , input_type ):
39023915 check_functional_kernel_signature_match (F .gaussian_blur , kernel = kernel , input_type = input_type )
39033916
39043917 @pytest .mark .parametrize (
39053918 "make_input" ,
3906- [make_image_tensor , make_image_pil , make_image , make_bounding_boxes , make_segmentation_mask , make_video ],
3919+ [
3920+ make_image_tensor ,
3921+ make_image_pil ,
3922+ make_image ,
3923+ make_bounding_boxes ,
3924+ make_segmentation_mask ,
3925+ make_video ,
3926+ pytest .param (
3927+ make_image_cvcuda , marks = pytest .mark .skipif (not CVCUDA_AVAILABLE , reason = "CVCUDA is not available" )
3928+ ),
3929+ ],
39073930 )
39083931 @pytest .mark .parametrize ("device" , cpu_and_cuda ())
39093932 @pytest .mark .parametrize ("sigma" , [5 , 2.0 , (0.5 , 2 ), [1.3 , 2.7 ]])
@@ -3994,39 +4017,8 @@ def test_functional_image_correctness(self, dimensions, kernel_size, sigma, dtyp
39944017
39954018 torch .testing .assert_close (actual , expected , rtol = 0 , atol = 1 )
39964019
3997-
3998- @pytest .mark .skipif (not CVCUDA_AVAILABLE , reason = "test requires CVCUDA" )
3999- @needs_cuda
4000- class TestGaussianBlurCVCUDA :
4001- def test_kernel_image_errors (self ):
4002- image = make_image_cvcuda (batch_dims = (1 ,))
4003-
4004- with pytest .raises (ValueError , match = "kernel_size is a sequence its length should be 2" ):
4005- F .gaussian_blur_cvcuda (image , kernel_size = [1 , 2 , 3 ])
4006-
4007- for kernel_size in [2 , - 1 ]:
4008- with pytest .raises (ValueError , match = "kernel_size should have odd and positive integers" ):
4009- F .gaussian_blur_cvcuda (image , kernel_size = kernel_size )
4010-
4011- with pytest .raises (ValueError , match = "sigma is a sequence, its length should be 2" ):
4012- F .gaussian_blur_cvcuda (image , kernel_size = 1 , sigma = [1 , 2 , 3 ])
4013-
4014- with pytest .raises (TypeError , match = "sigma should be either float or sequence of floats" ):
4015- F .gaussian_blur_cvcuda (image , kernel_size = 1 , sigma = object ())
4016-
4017- with pytest .raises (ValueError , match = "sigma should have positive values" ):
4018- F .gaussian_blur_cvcuda (image , kernel_size = 1 , sigma = - 1 )
4019-
4020- def test_functional (self ):
4021- check_functional (F .gaussian_blur , make_image_cvcuda (batch_dims = (1 ,)), kernel_size = (3 , 3 ))
4022-
4023- @pytest .mark .parametrize ("device" , cpu_and_cuda ())
4024- @pytest .mark .parametrize ("sigma" , [5 , 2.0 , (0.5 , 2 ), [1.3 , 2.7 ]])
4025- def test_transform (self , device , sigma ):
4026- check_transform (
4027- transforms .GaussianBlur (kernel_size = 3 , sigma = sigma ), make_image_cvcuda (batch_dims = (1 ,), device = device )
4028- )
4029-
4020+ @pytest .mark .skipif (not CVCUDA_AVAILABLE , reason = "test requires CVCUDA" )
4021+ @needs_cuda
40304022 @pytest .mark .parametrize (
40314023 ("dimensions" , "kernel_size" , "sigma" ),
40324024 [
@@ -4040,7 +4032,7 @@ def test_transform(self, device, sigma):
40404032 @pytest .mark .parametrize ("color_space" , ["RGB" , "GRAY" ])
40414033 @pytest .mark .parametrize ("batch_dims" , [(1 ,), (2 ,), (4 ,)])
40424034 @pytest .mark .parametrize ("dtype" , [torch .uint8 , torch .float32 ])
4043- def test_functional_image_correctness (self , dimensions , kernel_size , sigma , color_space , batch_dims , dtype ):
4035+ def test_functional_cvcuda_parity (self , dimensions , kernel_size , sigma , color_space , batch_dims , dtype ):
40444036 height , width = dimensions
40454037
40464038 image_tensor = make_image (
@@ -4049,7 +4041,7 @@ def test_functional_image_correctness(self, dimensions, kernel_size, sigma, colo
40494041 image_cvcuda = F .to_cvcuda_tensor (image_tensor )
40504042
40514043 expected = F .gaussian_blur_image (image_tensor , kernel_size = kernel_size , sigma = sigma )
4052- actual = F .gaussian_blur_cvcuda (image_cvcuda , kernel_size = kernel_size , sigma = sigma )
4044+ actual = F ._misc . _gaussian_blur_cvcuda (image_cvcuda , kernel_size = kernel_size , sigma = sigma )
40534045 actual_torch = F .cvcuda_to_tensor (actual )
40544046
40554047 if dtype .is_floating_point :
0 commit comments