def __init__(self, parent, network):

    NetworkInspector.__init__(self, parent, network)

    # Find the classifier
    self.classifier = _findClassifier(network)
    if not self.classifier:
      raise RuntimeError("No classifier found (no region with 'categoriesOut')")

    # Get the categoryInfo from the sensor
    sensor = _getElement(network, 'sensor')
    self.categoryInfo = _getCategoryInfo(sensor)
    self.catNames = [cat[0] for cat in self.categoryInfo]

    # Acquire reference to the gabor region
    if 'GaborRegion' in _getRegionType(network, 'level1SP'):
      self._hasGabor = True
      self._gaborRegion = None
      self._gaborProxy = None
      gaborRegion = _getElement(network, VisionUtils.getTierName(1, network=network))
      if gaborRegion:
        self._gaborProxy = _getGaborProxy(gaborRegion)

      # Obtain gabor scales
      gaborInputDims = self._gaborProxy._inputDims
      baseWidth = float(gaborInputDims[0][1])
      self.scales = [float(dims[1])/baseWidth for dims in gaborInputDims]

      # Used to store cached gabor responses
      self._cachedResponses = {}
    else:
      self._gaborRegion = None
      self._hasGabor = False

    self.showTitle = False
    self.mode = 'unfiltered'
    self.filterOnCategory = False
    self.logDir = ""
    self._bboxes = None
    self._imageFilenames = None


    # Check if our classifier complies with the required API:
    self._compliantClassifier = _classifierComplies(self.classifier)
    if self._compliantClassifier:
      # Convert category labels to numpy
      c = _getSelf(self.classifier)
      categoryList = c.getCategoryList()
      if categoryList is None:
        categoryList = []
      self._catLabels = numpy.array(categoryList)
      self.numPrototypes = "Total Prototypes: %d" % len(self._catLabels)

    # Parameters that need to be handled with custom code in updateParameters
    customParameters = {
      'numPresentationsInLog': Str,
      'logDir': Str,
      # Used for displaying "Distance:"
      'dummy': Str
    }

    for name, trait in customParameters.iteritems():
      self.add_trait(name, trait(label=name))

    self._createDefaultImages()

    # Add traits
    if not self._hasGabor:
      availableSpaces = ['pixel']
    else:
      availableSpaces = ['pixel', 'gabor']

    for k in xrange(self._numNeighbors):
      for spaceType in availableSpaces:
        traitName = '%s%03d' % (spaceType, k)
        self.add_trait(traitName, Instance(PIL.Image.Image))
        exec "self.%s = self._missingImage" % traitName

      traitName = 'score%03d' % k
      self.add_trait(traitName, Str)
      protoScoreStr = self._makeScoreString()
      exec "self.%s = protoScoreStr" % traitName

      traitName = 'imagename%03d' % k
      self.add_trait(traitName, Str)
      imagename = ""
      exec "self.%s = imagename" % traitName

    self.createView()
Ejemplo n.º 2
0
    def __init__(self, parent, network):

        NetworkInspector.__init__(self, parent, network)

        # Find the classifier
        self.classifier = _findClassifier(network)
        if not self.classifier:
            raise RuntimeError(
                "No classifier found (no region with 'categoriesOut')")

        # Get the categoryInfo from the sensor
        sensor = _getElement(network, 'sensor')
        self.categoryInfo = _getCategoryInfo(sensor)
        self.catNames = [cat[0] for cat in self.categoryInfo]

        # Acquire reference to the gabor region
        if 'GaborRegion' in _getRegionType(network, 'level1SP'):
            self._hasGabor = True
            self._gaborRegion = None
            self._gaborProxy = None
            gaborRegion = _getElement(
                network, VisionUtils.getTierName(1, network=network))
            if gaborRegion:
                self._gaborProxy = _getGaborProxy(gaborRegion)

            # Obtain gabor scales
            gaborInputDims = self._gaborProxy._inputDims
            baseWidth = float(gaborInputDims[0][1])
            self.scales = [
                float(dims[1]) / baseWidth for dims in gaborInputDims
            ]

            # Used to store cached gabor responses
            self._cachedResponses = {}
        else:
            self._gaborRegion = None
            self._hasGabor = False

        self.showTitle = False
        self.mode = 'unfiltered'
        self.filterOnCategory = False
        self.logDir = ""
        self._bboxes = None
        self._imageFilenames = None

        # Check if our classifier complies with the required API:
        self._compliantClassifier = _classifierComplies(self.classifier)
        if self._compliantClassifier:
            # Convert category labels to numpy
            c = _getSelf(self.classifier)
            categoryList = c.getCategoryList()
            if categoryList is None:
                categoryList = []
            self._catLabels = numpy.array(categoryList)
            self.numPrototypes = "Total Prototypes: %d" % len(self._catLabels)

        # Parameters that need to be handled with custom code in updateParameters
        customParameters = {
            'numPresentationsInLog': Str,
            'logDir': Str,
            # Used for displaying "Distance:"
            'dummy': Str
        }

        for name, trait in customParameters.iteritems():
            self.add_trait(name, trait(label=name))

        self._createDefaultImages()

        # Add traits
        if not self._hasGabor:
            availableSpaces = ['pixel']
        else:
            availableSpaces = ['pixel', 'gabor']

        for k in xrange(self._numNeighbors):
            for spaceType in availableSpaces:
                traitName = '%s%03d' % (spaceType, k)
                self.add_trait(traitName, Instance(PIL.Image.Image))
                exec "self.%s = self._missingImage" % traitName

            traitName = 'score%03d' % k
            self.add_trait(traitName, Str)
            protoScoreStr = self._makeScoreString()
            exec "self.%s = protoScoreStr" % traitName

            traitName = 'imagename%03d' % k
            self.add_trait(traitName, Str)
            imagename = ""
            exec "self.%s = imagename" % traitName

        self.createView()