Exemple #1
0
import numpy as np
import util as u

parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument('--true-db', type=str, required=True, help='true labels')
parser.add_argument('--predicted-db', type=str, required=True, help='predicted labels')
opts = parser.parse_args()
assert opts.true_db != opts.predicted_db

true_db = LabelDB(label_db_file=opts.true_db)
predicted_db = LabelDB(label_db_file=opts.predicted_db)

# iterate over predicted_db; we expect true_db to be a super set of it.
print("\t".join(["img", "#1_total", "#2_total", "ad", "#1_left", "#2_left"]))
total_TP = total_FP = total_FN = 0
for img in predicted_db.imgs():
  if not true_db.has_labels(img):
    # note: this can imply 0 labels
    raise Exception("img %s is in --predicted-db but not --true-db")

  true_labels = true_db.get_labels(img)
  predicted_labels = predicted_db.get_labels(img)
  TP, FP, FN = u.compare_sets(true_labels, predicted_labels)
  print("img", img, TP, FP, FN)

  total_TP += TP
  total_FP += FP
  total_FN += FN

precision = total_TP / ( total_TP + total_FP )
recall = total_TP / ( total_TP + total_FN )
Exemple #2
0
import os
import sys
import util as u

# TODO: make this multiprocess, too slow as is...

parser = argparse.ArgumentParser(
    formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument('--label-db',
                    type=str,
                    help='label_db to materialise bitmaps from')
parser.add_argument('--directory', type=str, help='directory to store bitmaps')
opts = parser.parse_args()
print(opts)

label_db = LabelDB(label_db_file=opts.label_db)

if not os.path.exists(opts.directory):
    os.makedirs(opts.directory)

fnames = list(label_db.imgs())
for i, fname in enumerate(fnames):
    bitmap = u.xys_to_bitmap(xys=label_db.get_labels(fname),
                             height=1024,
                             width=768,
                             rescale=0.5)
    single_channel_img = u.bitmap_to_single_channel_pil_image(bitmap)
    single_channel_img.save("%s/%s" %
                            (opts.directory, fname.replace(".jpg", ".png")))
    sys.stdout.write("%d/%d   \r" % (i, len(fnames)))
Exemple #3
0
# super clumsy :/

parser = argparse.ArgumentParser(
    formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument('--from-db',
                    type=str,
                    required=True,
                    help='db to take entries from')
parser.add_argument('--into-db',
                    type=str,
                    required=True,
                    help='db to add entries to')
opts = parser.parse_args()

assert opts.from_db != opts.into_db

from_db = LabelDB(label_db_file=opts.from_db)
into_db = LabelDB(label_db_file=opts.into_db)

num_ignored = 0
num_added = 0
for img in from_db.imgs():
    if into_db.has_labels(img):
        print("ignore", img, "; already in into_db")
        num_ignored += 1
    else:
        into_db.set_labels(img, from_db.get_labels(img))
        num_added += 1

print("num_ignored", num_ignored, "num_added", num_added)