Esempio n. 1
0
        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())
Esempio n. 2
0
 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)
Esempio n. 3
0
    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
Esempio n. 4
0
    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
Esempio n. 5
0
        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())
Esempio n. 6
0
 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)