Exemplo n.º 1
0
def GetTestFeatures(features_uri):
    images_features = []
    reader = py_pert.StringTableShardReader()
    CHECK(reader.Open(features_uri))
    for i, (k, v) in enumerate(reader):
        image_id = iwutil.ParseUint64Key(k)
        features = iw_pb2.ImageFeatures()
        features.ParseFromString(v)
        images_features.append((image_id, features))
        break
    return images_features
Exemplo n.º 2
0
    def test_basic(self):
        index_uri = 'local://%s/index' % self.tmp_path
        cbirutil.CreateIndex(self.features_uri, index_uri)
        index = cbirutil.LoadIndex(index_uri)
        features_reader = py_pert.StringTableReader()
        CHECK(features_reader.Open(self.features_uri))

        feature_counts_table = cbirutil.LoadFeatureCountsTable(
            self.feature_counts_uri)

        k = 10
        for key, value in features_reader:
            image_id = iwutil.ParseUint64Key(key)
            query_features = iw_pb2.ImageFeatures()
            query_features.ParseFromString(value)
            print image_id
            print 'num_features: %d' % (len(query_features.descriptors))
            ok, neighbors = index.Search([image_id], k, query_features)
            CHECK(ok)
            CHECK_GT(len(neighbors.features), 0)
            scorer = cbirutil.CreateQueryScorer(feature_counts_table)

            ok, results = scorer.Run(neighbors)
            CHECK(ok)
            print results


#        ok, results = scorer.TestSmoothnessFilter(neighbors)
#        CHECK(ok)
#
#        fig = plt.figure()
#        for i, entry in enumerate(results.entries):
#          ax = fig.add_subplot(len(results.entries),1,i+1)
#          #ax.hist(entry.smoothness_scores, 10, cumulative = True)
#
#          hist, bins = np.histogram(entry.smoothness_scores, bins=10, range=(0,100), normed=False)
#          hist = np.cumsum(hist)
#          width = bins[1]-bins[0]
#          ax.bar(bins[:-1], hist, width=width)
#          ax.set_xlim(bins[0],bins[-1])
#          #ax.set_ylim(0, 100)
#          ax.set_title('query: %d candidate: %d' % (image_id, entry.image_id))
#
#
#      plt.show()

#ok, results = scorer.Run(cbirutil.GetCbirKeypoints(query_features), neighbors)
#CHECK(ok)
#print results

        return
Exemplo n.º 3
0
def CreateExactIndex(features_uri_list, index_path):
    index = py_cbir.FeatureIndex(True, True)
    for features_uri in features_uri_list:
        reader = py_pert.StringTableShardSetReader()
        CHECK(reader.Open(features_uri))
        features = iw_pb2.ImageFeatures()
        for i, (k, v) in enumerate(reader):
            image_id = iwutil.ParseUint64Key(k)
            features.ParseFromString(v)
            index.Add(image_id, features)

    index.Build()
    index.Save(index_path)
    return
Exemplo n.º 4
0
def CreateIndex(features_uri, index_uri):
  reader = py_pert.StringTableShardSetReader()
  CHECK(reader.Open(features_uri))
  features = iw_pb2.ImageFeatures()
  
  include_keypoints = True
  index = py_cbir.FeatureIndex(include_keypoints)
  progress = iwutil.MakeProgressBar(reader.Entries())  
  for i, (k,v) in enumerate(reader):    
    image_id = iwutil.KeyToUint64(k)
    features.ParseFromString(v)
    index.Add(image_id, features)      
    progress.update(i)
  progress.finish()    
  index.Build()  
  return index.Save(index_uri)
Exemplo n.º 5
0
def ExtractFeatures(feature_extractor_params, images_uri, features_uri):
    extractor = py_featureextractor.CreateFeatureExtractorOrDie(
        feature_extractor_params)
    CHECK(extractor)
    reader = py_pert.StringTableReader()
    CHECK(reader.Open(images_uri), 'can not open file: %s' % (images_uri))
    image = iw_pb2.JpegImage()
    writer = py_pert.ProtoTableWriter()
    features = iw_pb2.ImageFeatures()
    writer.Open(features, features_uri, 1)
    progress = MakeProgressBar(reader.Entries())
    for i, (k, v) in enumerate(reader):
        image.ParseFromString(v)
        ok, features = extractor.Run(image.data)
        if ok:
            writer.Add(k, features.SerializeToString())
        progress.update(i)
    return
Exemplo n.º 6
0
 def test_basic(self):
     index_uri = 'local://%s/index' % self.tmp_path
     cbirutil.CreateIndex(self.features_uri, index_uri)
     index = cbirutil.LoadIndex(index_uri)
     features_reader = py_pert.StringTableReader()
     CHECK(features_reader.Open(self.features_uri))
     feature_counts_table = cbirutil.LoadFeatureCountsTable(
         self.feature_counts_uri)
     k = 10
     for key, value in features_reader:
         image_id = iwutil.ParseUint64Key(key)
         query_features = iw_pb2.ImageFeatures()
         query_features.ParseFromString(value)
         print image_id
         print 'num_features: %d' % (len(query_features.descriptors))
         ok, neighbors = index.Search([image_id], k, query_features)
         CHECK(ok)
         CHECK_GT(len(neighbors.features), 0)
         scorer = CreateQueryScorer(feature_counts_table)
         ok, results = scorer.Run(neighbors)
         CHECK(ok)
         print results
     return