def test_pickle_save_restore(self, m_cdg_setupNetwork): # Mocking set_network so we don't have to worry about actually # initializing any caffe things for this test. expected_params = { 'network_prototxt': DataMemoryElement(), 'network_model': DataMemoryElement(), 'image_mean': DataMemoryElement(), 'return_layer': 'layer name', 'batch_size': 777, 'use_gpu': False, 'gpu_device_id': 8, 'network_is_bgr': False, 'data_layer': 'data-other', 'load_truncated_images': True, 'pixel_rescale': (.2, .8), 'input_scale': 1.5, } g = CaffeDescriptorGenerator(**expected_params) # Initialization sets up the network on construction. self.assertEqual(m_cdg_setupNetwork.call_count, 1) g_pickled = pickle.dumps(g, -1) g2 = pickle.loads(g_pickled) # Network should be setup for second class class just like in # initial construction. self.assertEqual(m_cdg_setupNetwork.call_count, 2) self.assertIsInstance(g2, CaffeDescriptorGenerator) self.assertEqual(g.get_config(), g2.get_config())
def test_get_config(self, _m_cdg_setupNetwork): # Mocking set_network so we don't have to worry about actually # initializing any caffe things for this test. expected_params = { 'network_prototxt': DataMemoryElement(), 'network_model': DataMemoryElement(), 'image_mean': DataMemoryElement(), 'return_layer': 'layer name', 'batch_size': 777, 'use_gpu': False, 'gpu_device_id': 8, 'network_is_bgr': False, 'data_layer': 'data-other', 'load_truncated_images': True, 'pixel_rescale': (.2, .8), 'input_scale': 1.5, } # make sure that we're considering all constructor parameter options expected_param_keys = \ set(inspect.getargspec(CaffeDescriptorGenerator.__init__) .args[1:]) self.assertSetEqual(set(expected_params.keys()), expected_param_keys) g = CaffeDescriptorGenerator(**expected_params) for key in ('network_prototxt', 'network_model', 'image_mean'): expected_params[key] = to_config_dict(expected_params[key]) self.assertEqual(g.get_config(), expected_params)
def test_get_config(self, _m_cdg_setupNetwork): # Mocking set_network so we don't have to worry about actually # initializing any caffe things for this test. expected_params = { 'network_prototxt': DataMemoryElement(), 'network_model': DataMemoryElement(), 'image_mean': DataMemoryElement(), 'return_layer': 'layer name', 'batch_size': 777, 'use_gpu': False, 'gpu_device_id': 8, 'network_is_bgr': False, 'data_layer': 'data-other', 'load_truncated_images': True, 'pixel_rescale': (.2, .8), 'input_scale': 1.5, 'threads': 14, } # make sure that we're considering all constructor parameter # options default_params = CaffeDescriptorGenerator.get_default_config() assert set(default_params) == set(expected_params) g = CaffeDescriptorGenerator(**expected_params) # Shift to expecting sub-configs for DataElement params for key in ('network_prototxt', 'network_model', 'image_mean'): expected_params[key] = to_config_dict(expected_params[key]) assert g.get_config() == expected_params
def test_config_cycle_imagemean_nonetyped(self, m_cdg_setup_network): """ Test being able to get an instances config and use that config to construct an equivalently parameterized instance where the second instance is configured with a None-typed 'image_mean' parameter. """ # Mocking ``_setup_network`` so no caffe functionality is hit during # this test # Only required parameters, image_mean is empty SMQTK configuration # dict g1 = CaffeDescriptorGenerator(self.dummy_net_topo_elem, self.dummy_caffe_model_elem) g1_config = g1.get_config() # Modify config for g2 to pass None for image_mean for_g2 = dict(g1_config) for_g2['image_mean'] = {'type': None} g2 = CaffeDescriptorGenerator.from_config(for_g2) expected_config = { 'network_prototxt': to_config_dict(self.dummy_net_topo_elem), 'network_model': to_config_dict(self.dummy_caffe_model_elem), 'image_mean': None, 'return_layer': 'fc7', 'batch_size': 1, 'use_gpu': False, 'gpu_device_id': 0, 'network_is_bgr': True, 'data_layer': 'data', 'load_truncated_images': False, 'pixel_rescale': None, 'input_scale': None, 'threads': None, } assert g1_config == g2.get_config() == expected_config
def test_pickle_save_restore(self, m_cdg_setupNetwork): # Mocking set_network so we don't have to worry about actually # initializing any caffe things for this test. expected_params = { 'network_prototxt_uri': 'some_prototxt_uri', 'network_model_uri': 'some_caffemodel_uri', 'image_mean_uri': 'some_imagemean_uri', 'return_layer': 'layer name', 'batch_size': 777, 'use_gpu': False, 'gpu_device_id': 8, 'network_is_bgr': False, 'data_layer': 'data-other', 'load_truncated_images': True, 'pixel_rescale': (.2, .8), 'input_scale': 1.5, } g = CaffeDescriptorGenerator(**expected_params) # Initialization sets up the network on construction. self.assertEqual(m_cdg_setupNetwork.call_count, 1) g_pickled = pickle.dumps(g, -1) g2 = pickle.loads(g_pickled) # Network should be setup for second class class just like in # initial construction. self.assertEqual(m_cdg_setupNetwork.call_count, 2) self.assertIsInstance(g2, CaffeDescriptorGenerator) self.assertEqual(g.get_config(), g2.get_config())
def test_get_config(self, _m_cdg_setupNetwork): # Mocking set_network so we don't have to worry about actually # initializing any caffe things for this test. expected_params = { 'network_prototxt_uri': 'some_prototxt_uri', 'network_model_uri': 'some_caffemodel_uri', 'image_mean_uri': 'some_imagemean_uri', 'return_layer': 'layer name', 'batch_size': 777, 'use_gpu': False, 'gpu_device_id': 8, 'network_is_bgr': False, 'data_layer': 'data-other', 'load_truncated_images': True, 'pixel_rescale': (.2, .8), 'input_scale': 1.5, } # make sure that we're considering all constructor parameter options expected_param_keys = \ set(inspect.getargspec(CaffeDescriptorGenerator.__init__) .args[1:]) self.assertSetEqual(set(expected_params.keys()), expected_param_keys) g = CaffeDescriptorGenerator(**expected_params) self.assertEqual(g.get_config(), expected_params)