Example #1
0
        i[y, px, 0] = 255
        i[y + d - 1, px, 0] = 255
    return i

print ("Loading model ...")
data = np.loadtxt(os.path.join(args.d, args.features), delimiter = ',') / 255
labels = np.loadtxt(os.path.join(args.d, args.labels), np.uint8)
lines = [i.strip().split(" ") for i in open(os.path.join(args.d, args.labelmapping))]
labelmap = dict([(int(n), l) for l, n in lines])

clf = KNeighborsClassifier(n_neighbors = 7, algorithm = 'brute')
clf.fit(data, labels)

img = resize_rgb_image(read_rgb_image(args.i), (32, 32))
d = []
for i, details in normed_windows(img, [1.0], details = True):
    arr = flatten(i) / 255
    arr = np.reshape(arr, (1, -1))
    t = clf.predict(arr)
    c = t[0]
    print (c, labelmap[c])
    distances, idx = clf.kneighbors(arr)
    distances = [d for d, p in zip(distances.flatten(), idx.flatten()) if labels[p] == c]
    s = sum(distances) / len(distances)
    d.append([s, c, details])

d = sorted(d)
for s, c, details in d[:3]:
    print (s, labelmap[c], details)
    img = box(img, details[1], details[2], details[0])
args = p.parse_args()


def labels_and_files():
    for i in os.listdir(args.i):
        for j in os.listdir(os.path.join(args.i, i)):
            yield (i, os.path.join(args.i, i, j))


if not os.path.exists(args.o):
    os.makedirs(args.o)

f = open(os.path.join(args.o, args.features), "w")
l = open(os.path.join(args.o, args.labels), "w")

mapping = {}
for lb, fn in labels_and_files():
    if not lb in mapping:
        mapping[lb] = len(mapping)
    c = mapping[lb]
    print(c, lb, fn)
    img = resize_rgb_image(read_rgb_image(fn), (32, 32))
    for i in normed_windows(img, [1.0]):
        d = flatten(i)
        f.write(",".join([str(k) for k in d]) + "\n")
        l.write(str(c) + "\n")

m = open(os.path.join(args.o, args.labelmapping), "w")
for k, v in mapping.items():
    m.write(k + " " + str(v) + "\n")
p.add_argument('--features', default = "features.txt")
p.add_argument('--labelmapping', default = "map.txt")
args = p.parse_args()

def labels_and_files():
	for i in os.listdir(args.i):
		for j in os.listdir(os.path.join(args.i, i)):
			yield (i, os.path.join(args.i, i, j))

if not os.path.exists(args.o):
	os.makedirs(args.o)

f = open(os.path.join(args.o, args.features), "w")
l = open(os.path.join(args.o, args.labels), "w")

mapping = {}
for lb, fn in labels_and_files():
	if not lb in mapping:
		mapping[lb] = len(mapping)
	c = mapping[lb]
	print (c, lb, fn)
	img = resize_rgb_image(read_rgb_image(fn), (32, 32))
	for i in normed_windows(img, [1.0]):
		d = flatten(i)
		f.write(",".join([str(k) for k in d]) + "\n")
		l.write(str(c) + "\n")

m = open(os.path.join(args.o, args.labelmapping), "w")
for k, v in mapping.items():
	m.write(k + " " + str(v) + "\n")