mirror of
				https://github.com/facebookresearch/pytorch3d.git
				synced 2025-11-04 18:02:14 +08:00 
			
		
		
		
	Fix camera clone() with torch.save
Summary: User reported that cloned cameras fail to save. The error with latest PyTorch is ``` pickle.PicklingError: Can't pickle ~T_destination: attribute lookup T_destination on torch.nn.modules.module failed ``` This fixes it. Reviewed By: btgraham Differential Revision: D39692258 fbshipit-source-id: 75bbf3b8dfa0023dc28bf7d4cc253ca96e46a64d
This commit is contained in:
		
							parent
							
								
									ce3fce49d7
								
							
						
					
					
						commit
						efea540bbc
					
				@ -8,7 +8,7 @@
 | 
			
		||||
import copy
 | 
			
		||||
import inspect
 | 
			
		||||
import warnings
 | 
			
		||||
from typing import Any, List, Optional, Tuple, Union
 | 
			
		||||
from typing import Any, List, Optional, Tuple, TypeVar, Union
 | 
			
		||||
 | 
			
		||||
import numpy as np
 | 
			
		||||
import torch
 | 
			
		||||
@ -191,7 +191,7 @@ class TensorProperties(nn.Module):
 | 
			
		||||
        """
 | 
			
		||||
        for k in dir(self):
 | 
			
		||||
            v = getattr(self, k)
 | 
			
		||||
            if inspect.ismethod(v) or k.startswith("__"):
 | 
			
		||||
            if inspect.ismethod(v) or k.startswith("__") or type(v) is TypeVar:
 | 
			
		||||
                continue
 | 
			
		||||
            if torch.is_tensor(v):
 | 
			
		||||
                v_clone = v.clone()
 | 
			
		||||
 | 
			
		||||
@ -31,6 +31,7 @@
 | 
			
		||||
# SOFTWARE.
 | 
			
		||||
 | 
			
		||||
import math
 | 
			
		||||
import pickle
 | 
			
		||||
import typing
 | 
			
		||||
import unittest
 | 
			
		||||
from itertools import product
 | 
			
		||||
@ -1333,6 +1334,11 @@ class TestPerspectiveProjection(TestCaseMixin, unittest.TestCase):
 | 
			
		||||
        # Check in_ndc is handled correctly
 | 
			
		||||
        self.assertEqual(cam._in_ndc, c0._in_ndc)
 | 
			
		||||
 | 
			
		||||
    def test_clone_picklable(self):
 | 
			
		||||
        camera = PerspectiveCameras()
 | 
			
		||||
        pickle.dumps(camera)
 | 
			
		||||
        pickle.dumps(camera.clone())
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
############################################################
 | 
			
		||||
#                FishEye Camera                        #
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user