def model_test(net, test_list, input_dir, iter_num=1): total_score = 0.0 score = 0.0 class_score = {} for im_name in test_list: if DEBUG: print "############## scoring {0} ##############".format(im_name) im_file = os.path.join(input_dir, 'img', im_name) label_file = os.path.join(input_dir, 'annotation', im_name) index = label_file.rindex('.') label_file = label_file[:index] + ".xml" if not os.path.isfile(label_file): sys.stderr.write("can't find label file for {0}".format(im_file)) continue label_reader = PascalVocReader(label_file) size = label_reader.getSize() shapes = label_reader.getShapes() true_label = convert_shapes(shapes) pre_label = predict_label(net, im_file) t_s, s = compare_label(true_label, pre_label, class_score) print "scoring {0}".format(im_name), t_s, s, s / t_s total_score += t_s score += s print "iter {0} total_score".format( iter_num), score, total_score, score / total_score for i in class_score.iterkeys(): print "iter {0} class_score:".format( iter_num), i, class_score[i], class_score[i][0] / class_score[i][1] return total_score, score
for i in xrange(2): _, _= im_detect(net, im) im_names = os.listdir(input_dir+"/img") for im_name in im_names: print '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' print "auto label {0}".format(im_name) im_file = os.path.join(input_dir, 'img', im_name) label_file = os.path.join(input_dir, 'annotation', im_name) index = label_file.rindex('.') label_file = label_file[:index] + ".xml" if os.path.isfile(label_file): tmp_reader = PascalVocReader(label_file) size = tmp_reader.getSize() tmp_writer = PascalVocWriter(input_dir, im_name, size) shapes = tmp_reader.getShapes() for i in shapes: tmp_writer.addBndBox(i[1][0][0], i[1][0][1], i[1][2][0], i[1][2][1], i[0]) print "load {0} labels from {1}".format(len(shapes), label_file) else: print "can not find label file {0}".format(label_file) size = cv2.imread(im_file).shape tmp_writer = PascalVocWriter(input_dir, im_name, size) n = auto_label(net, im_file, tmp_writer) tmp_writer.save(output_dir + '/' + os.path.basename(label_file)) print "auto label {0} labels".format(n) plt.show()