def main(argv): parser = argparse.ArgumentParser( description= '\nReplicates list of images using new face data in argumentlist. Ex: xml_extract_list -o auto_test.xml gold_test.xml allBears_faces.xml', formatter_class=lambda prog: argparse.HelpFormatter( prog, max_help_position=50)) # parser.formatter.max_help_position = 50 parser.add_argument('orig_file', help='file to replicate') parser.add_argument('files', nargs='+') parser.add_argument( '-o', '--output', default="", help='Output filename. Defaults to "copy_<date><time>_"') parser.add_argument('--verbosity', type=int, default=1, choices=[0, 1, 2], help=argparse.SUPPRESS) # help="increase output verbosity" args = parser.parse_args() verbose = args.verbosity # pdb.set_trace () if not args.output: args.output = datetime.datetime.now().strftime("copy_%Y%m%d_%H%M.xml") if verbose > 0: print "output : ", args.output print 'orig file : ', args.orig_file print 'files : ', args.files xml_files = u.generate_xml_file_list(args.files) u.set_argv(argv) u.set_exec_name('extract_list') u.replicate_file([args.orig_file], xml_files, args.output)
def main(argv): parser = argparse.ArgumentParser( description= '\Generate new file with non-existent chips removed. Ex: xml_validate_chips -o valid_chips folds/*.xml', formatter_class=lambda prog: argparse.HelpFormatter( prog, max_help_position=50)) # parser.formatter.max_help_position = 50 parser.add_argument('xml_file') parser.add_argument( '-o', '--output', default="", help='Output file postfix. Defaults to "valid_chips_<date><time>_"') parser.add_argument('--verbosity', type=int, default=1, choices=[0, 1, 2], help=argparse.SUPPRESS) # help="increase output verbosity" args = parser.parse_args() verbose = args.verbosity # pdb.set_trace () if not args.output: args.output = datetime.datetime.now().strftime( "valid_chips_%Y%m%d_%H%M.xml") if verbose > 0: print('input : ', args.xml_file) print("output : ", args.output) u.set_argv(argv) u.set_exec_name('xml_validate_chips') u.validate_file(args.xml_file, args.output)
def main(argv): parser = argparse.ArgumentParser( description= '\nWrite xml file for each of zero, one and multi faces.\n\n\tExample: xml_group_by_face_count -out bc2018 bc2018_faces.xml', formatter_class=RawTextHelpFormatter) parser.add_argument('files', nargs='+') parser.add_argument('-out', '--output', default="images", help='write files using this base name.') parser.add_argument('-v', '--verbosity', type=int, default=1, choices=[0, 1, 2, 3], help='') # help="increase output verbosity" u.set_argv(argv) args = parser.parse_args() u.set_verbosity(args.verbosity) u.set_argv(argv) u.set_filetype('faces') verbose = 0 if verbose > 0: print("files: ", args.files) #TODO : prevent clobbering previous default output # if args.output == 'images' : # args.output = u.get_new_filename (args.output) u.split_faces_by_count(args.files, args.output)
def main(argv): parser = argparse.ArgumentParser( description='\nWrite html to display images grouped by day per label', formatter_class=RawTextHelpFormatter) parser.add_argument('file') parser.add_argument('-out', '--output', default="same_dates.html", help='write files using this base name.') parser.add_argument('-v', '--verbosity', type=int, default=1, choices=[0, 1, 2, 3], help='') # help="increase output verbosity" u.set_argv(argv) args = parser.parse_args() u.set_verbosity(args.verbosity) u.set_argv(argv) verbose = 0 if verbose > 0: print("files: ", args.files) #TODO : prevent clobbering previous default output # if args.output == 'images' : # args.output = u.get_new_filename (args.output) u.html_same_date_from_csv(args.file, args.output)
def main(argv): parser = argparse.ArgumentParser( description='Create file with matched and unmatched chip pairs.', formatter_class=lambda prog: argparse.HelpFormatter( prog, max_help_position=50)) # parser.formatter.max_help_position = 50 parser.add_argument('-m', '--matched', default=0, help='Number of matched pairs. 0 for all.') parser.add_argument('-u', '--unmatched', default=0, help='Number of unmatched pairs. 0 for all.') parser.add_argument( '-t', '--triplets', default=0, help= 'Number of triplets of un/matched sets. Overides --unmatched and --matched.' ) parser.add_argument('chipfile', nargs='+') parser.add_argument( '-out', '--output', default="", help='Output file basename. Defaults to "part_<date><time>_"') parser.add_argument('-v', '--verbosity', type=int, default=1, choices=[0, 1, 2, 3], help=argparse.SUPPRESS) u.set_argv(argv) args = parser.parse_args() u.set_verbosity(args.verbosity) u.set_filetype('pairs') verbose = args.verbosity if not args.output: args.output = datetime.datetime.now().strftime("pairs_%Y%m%d_%H%M.xml") if verbose > 0: print("matched : ", args.matched) print("unmatched : ", args.unmatched) print("triplets : ", args.triplets) print("output : ", args.output) print("chipfile : ", args.chipfile) ''' filetype = args.filetype if (filetype != "chips") and (filetype != "faces") : print 'unrecognized filetype :', filetype, ', setting filetype to "chips".' filetype = "chips" ''' if (args.triplets > 0) and ((args.matched > 0) or (args.unmatched > 0)): print( 'triplets argument will override matched and unmatched arguments') xml_files = u.generate_xml_file_list(args.chipfile) u.generate_chip_pairs(xml_files, int(args.matched), int(args.unmatched), int(args.triplets), args.output)
def main(argv): parser = argparse.ArgumentParser(description='Partitions data.', formatter_class=lambda prog: argparse. HelpFormatter(prog, max_help_position=50)) # parser.formatter.max_help_position = 50 parser.add_argument('n', default=5, help='Number of paritions to create. ') parser.add_argument('files', nargs='+') parser.add_argument('-out', '--output', default="", help='Output file basename.') parser.add_argument( '-m', '--mode', type=int, default=0, choices=[0, 1, 2], help= 'Mode for split chips. 0: shuffle all, then split. 1: split each label evenly. 2: split by label - i.e. each label is only in one fold.' ) parser.add_argument('-v', '--verbosity', type=int, default=1, choices=[0, 1, 2, 3], help='') # help="increase output verbosity" args = parser.parse_args() u.set_verbosity(args.verbosity) u.set_argv(argv) u.set_filetype('chips') # pdb.set_trace () verbose = args.verbosity if verbose > 0: print("n: ", args.n) print("output: ", args.output) print("files: ", args.files) if args.mode == 0: print("mode 0: splitting after shuffling all...") elif args.mode == 1: print("mode 1: splitting each label evenly...") elif args.mode == 2: print("mode 2: separting each into different fold ... ") if not args.output: args.output = datetime.datetime.now().strftime("%Y%m%d_%H%M") if verbose > 0: print("new output: ", args.output) xml_files = u.generate_xml_file_list(args.files) u.do_generate_folds(xml_files, args.n, args.output, args.mode)
def main(argv): parser = argparse.ArgumentParser( description='write faces from different locale to different xmls.', formatter_class=RawTextHelpFormatter) parser.add_argument('files', nargs='+') parser.add_argument('-v', '--verbosity', type=int, default=1, choices=[0, 1, 2, 3], help='') # help="increase output verbosity" u.set_argv(argv) args = parser.parse_args() u.set_verbosity(args.verbosity) u.set_argv(argv) u.set_filetype('faces') verbose = 0 if verbose > 0: print("files: ", args.files) u.split_objects_by_locales(args.files)
def main(argv): parser = argparse.ArgumentParser( description= ' Downscale images and writes them to parallel directories.\n Also write new xml with updated content.\n\n Example: \n\tdownscale_images -xy 640 480 -replace imageSource imageSourceTiny x.xml', formatter_class=RawTextHelpFormatter) grp = parser.add_mutually_exclusive_group() parser.add_argument('files', nargs='+') grp.add_argument('-xy', '--xy_max', nargs=2, help='max x and y of image.') grp.add_argument('-max', '--max_area', default=30000, help='max size of image.') parser.add_argument('-replace', '--replace_path', nargs=2, default=['', './'], help='replace old with new.') parser.add_argument('-v', '--verbosity', type=int, default=1, choices=[0, 1, 2, 3], help='') # help="increase output verbosity" u.set_argv(argv) args = parser.parse_args() u.set_verbosity(args.verbosity) u.set_filetype('faces') verbose = 0 if verbose > 0: print("files: ", args.files) if args.xy_max: args.max_area = int(args.xy_max[0]) * int(args.xy_max[1]) # print ('max_area: ', args.max_area) # print ('replace_path: ', args.replace_path) # print ('replace_path: ', args.replace_path[0], args.replace_path[1]) for face_xml in args.files: u.downscale_face_file(face_xml, args.max_area, args.replace_path)
def main(argv): parser = argparse.ArgumentParser( description= '\n\tCreate new file using original file updated with new sources. Unmatched content will also be written out.\n\n\tUsage: xml_update_from_xml <orig_file> <new_sources> \n\n\tEx: xml_update_from_xml -o test.xml resize_test.xml', formatter_class=RawTextHelpFormatter) # parser.formatter.max_help_position = 50 parser.add_argument('orig_file', help='file with search content') parser.add_argument('new_sources', nargs='+') parser.add_argument('-filetype', '--filetype', default="faces", help='type of xml file: <images,chips,faces,pairs> .') parser.add_argument( '-o', '--output', default="", help='Output filename. Defaults to "copy_<date><time>_"') parser.add_argument('--verbosity', type=int, default=1, choices=[0, 1, 2], help=argparse.SUPPRESS) # help="increase output verbosity" args = parser.parse_args() verbose = args.verbosity # pdb.set_trace () if not args.output: args.output = datetime.datetime.now().strftime("copy_%Y%m%d_%H%M.xml") if verbose > 0: print("output : ", args.output) print('orig file : ', args.orig_file) print('files : ', args.files) xml_files = u.generate_xml_file_list(args.files) u.set_argv(argv) u.set_exec_name(sys.argv[0]) u.update_path([args.orig_file], xml_files, args.output, args.filetype)
def main(argv): parser = argparse.ArgumentParser( description= 'Downscale face images, cropping to maintain face close to mininum size.\n\tCreates new images to parallel directories and generates new xml with updated content.\n\n\tExample:\n\tresize_images.py -x_max 640 -y_max 480 faces.xml', formatter_class=RawTextHelpFormatter) parser.add_argument('files', nargs='+') parser.add_argument('-x_max', '--x_max', default=1500, help='max width of image, defaults to 1500.') parser.add_argument('-y_max', '--y_max', default=2000, help='max heigth of image, defaults to 2000.') parser.add_argument('-min_face', '--min_face', default=200, help='max heigth of image, defaults to 2000.') parser.add_argument('-v', '--verbosity', type=int, default=1, choices=[0, 1, 2, 3], help='') # help="increase output verbosity" u.set_argv(argv) args = parser.parse_args() u.set_verbosity(args.verbosity) u.set_argv(argv) u.set_filetype('faces') verbose = 0 if verbose > 0: print("files: ", args.files) for face_xml in args.files: u.resize_face_file(face_xml, args.x_max, args.y_max, args.min_face)
def main(argv): parser = argparse.ArgumentParser( description='Plot dimension-reduced embeddings.', formatter_class=lambda prog: argparse.HelpFormatter( prog, max_help_position=50)) parser.add_argument('files', nargs='+') parser.add_argument('-v', '--verbosity', type=int, default=1, choices=[0, 1, 2, 3], help='') # help="increase output verbosity" u.set_argv(argv) args = parser.parse_args() u.set_verbosity(args.verbosity) u.set_argv(argv) u.set_filetype('embeddings') verbose = 0 if verbose > 0: print("files: ", args.files) xml_files = u.generate_xml_file_list(args.files) u.plot_embeddings(xml_files)
def main(argv): parser = argparse.ArgumentParser( description= '\nFilter chips with given circle (center & radius). Defaults to average nose and half the distance between the eyes. Ex: filter -pt [23 45] -dist 40 <files>', formatter_class=lambda prog: argparse.HelpFormatter( prog, max_help_position=50)) # parser.formatter.max_help_position = 50 parser.add_argument('files', nargs='+') parser.add_argument( '-pt', '--pt', default="", help='"x y" for center of circle. Defaults to average of noses.') parser.add_argument( '-d', '--distance', default=0, help='Radius of circle. Defaults to half distance between eyes.') parser.add_argument( '-o', '--output', default="", help='Output file basename. Defaults to "part_<date><time>_"') parser.add_argument('--verbosity', type=int, default=1, choices=[0, 1, 2], help=argparse.SUPPRESS) # help="increase output verbosity" u.set_argv(argv) args = parser.parse_args() verbose = args.verbosity center = [0, 0] if args.pt: pt = (args.pt).split(' ') if len(pt) != 2: print( "Input error for -pt: needs exactly 2 numbers. Using default." ) elif not pt[0].isdigit() or not pt[1].isdigit(): print( "Input error for -pt: needs to be 2 numbers. Using default.") else: center[0] = int(pt[0]) center[1] = int(pt[1]) # pdb.set_trace () if not args.output: args.output = datetime.datetime.now().strftime( "chip_filtered_%Y%m%d_%H%M.xml") distance = 0 if args.distance: if not (args.distance).isdigit(): print( "Input error for --distance: needs to be a number. Using default." ) else: distance = int(args.distance) if verbose > 0: print("output : ", args.output) print("center : ", center) print("distance: ", distance) xml_files = u.generate_xml_file_list(args.files) u.filter_chips(xml_files, center, distance, args.output)
def main(argv): parser = argparse.ArgumentParser( description= 'Partitions chips into x and y. If shuffle is set to 0, the partition will be per label. x and y can be set to 100 and 0, respectively, for no partitioning.', formatter_class=lambda prog: argparse.HelpFormatter( prog, max_help_position=50)) # parser.formatter.max_help_position = 50 parser.add_argument('x', default=80, help='Percent of first set.') parser.add_argument('y', default=20, help='Percent of second set.') parser.add_argument('input', nargs='+') parser.add_argument( '-shuffle', '--shuffle', default="", action="store_true", help='Shuffles labels before partition. Defaults to False') parser.add_argument( '-test_count_minimum', '--test_count_minimum', default=0, help= 'Minimum test images per label, overrides partition percentage. Defaults to 0.' ) parser.add_argument( '-image_count_minimum', '--image_count_minimum', default=0, help='Minimum number of images per label. Defaults to 0.') parser.add_argument('-image_size_minimum', '--image_size_minimum', default=0, help='Minimum size of image. Defaults to 0.') parser.add_argument( '-filetype', '--filetype', default="chips", help='Type of file to partition. <faces|chips>.Defaults to "chips".') parser.add_argument( '-o', '--output', default="", help='Output file basename. Defaults to "part_<date><time>_"') parser.add_argument('--verbosity', type=int, default=1, choices=[0, 1, 2], help=argparse.SUPPRESS) u.set_argv(argv) args = parser.parse_args() verbose = args.verbosity ### -------------- # TODO check & WARN that if shuffle is set, will ignore # image_count_minimum, test_count_minimum ### -------------- if verbose > 2: print() print("x: ", args.x) print("y: ", args.y) print("sum: ", int(args.y) + int(args.x)) print("output: ", args.output) print("input: ", args.input) if int(args.x) + int(args.y) != 100: print("error: (x + y) needs to be 100") return if not args.output: args.output = datetime.datetime.now().strftime("part_%Y%m%d_%H%M") if verbose > 0: print("new output: ", args.output) filetype = args.filetype if (filetype != "chips") and (filetype != "faces"): print('unrecognized filetype :', filetype, ', setting filetype to "chips".') filetype = "chips" xml_files = u.generate_xml_file_list(args.input) u.generate_partitions(xml_files, args.x, args.y, args.output, args.shuffle, int(args.image_count_minimum), int(args.test_count_minimum), int(args.image_size_minimum), filetype)
def main(argv): parser = argparse.ArgumentParser( description= 'Partitions objects into x and y percents.\nIf shuffle is set to False, each label will be split as specified.\nIf -group is set, will use db argument to partition after grouped by date.\nx and y can be set to 100 and 0, respectively, for no partitioning (to combine multiple XMLs.)\n\nExample: generate_partition -shuffle False -file faces 80 20 images.xml\n\t generate_partition -group all.csv 75 25 chips.xml', formatter_class=RawTextHelpFormatter) # parser.formatter.max_help_position = 50 parser.add_argument('x', default=80, help='Percent of first set.') parser.add_argument('y', default=20, help='Percent of second set.') parser.add_argument('input', nargs='+') parser.add_argument( '-shuffle', '--shuffle', default=True, help= 'Determines whether all objects are mixed before partition. If set to False, each label wil be split as specified. Defaults to True.' ) parser.add_argument( '--test_count_minimum', default=0, help= 'Minimum test images per label, overrides partition percentage. Defaults to 0.' ) parser.add_argument( '-image_count_minimum', '--image_count_minimum', default=0, help='Minimum number of images per label. Defaults to 0.') parser.add_argument('-image_size_minimum', '--image_size_minimum', default=0, help='Minimum size of image. Defaults to 0.') parser.add_argument( '-filetype', '--filetype', default="chips", help='Type of file to partition. <faces|chips>. Defaults to "chips".') parser.add_argument( '-group', '--group_date_db', help= 'Group images with same date and label together before partitioning using csv (\';\' separated) for date/label information.' ) parser.add_argument( '-out', '--output', default="", help='Output file basename. Defaults to "part_<date><time>_"') parser.add_argument('-v', '--verbosity', type=int, default=1, choices=[0, 1, 2], help=argparse.SUPPRESS) u.set_argv(argv) args = parser.parse_args() verbose = args.verbosity ### -------------- # TODO check & WARN that if shuffle is set, will ignore # image_count_minimum, test_count_minimum ### -------------- ### -------------- validate arguments -------- ### try: x = int(args.x) except ValueError: print('Error: number expected for x, got:', args.x) return try: y = int(args.y) except ValueError: print('Error: number expected for y, got:', args.y) return if x + y != 100: print("Error: (x + y) needs to be 100") return filetypes = ['chips', 'faces'] filetype = args.filetype if filetype not in filetypes: print('unrecognized filetype :', filetype, 'should be one of:', filetypes) return if not args.output: args.output = datetime.datetime.now().strftime("part_%Y%m%d_%H%M") do_grouping = False if args.group_date_db != None: do_grouping = True if verbose > 2: print() print("x: ", x) print("y: ", y) print("sum: ", x + y) if do_grouping: print("------- partitioning grouped by date ------") print("group date db: ", args.group_date_db) print("output: ", args.output) print("input: ", args.input) xml_files = u.generate_xml_file_list(args.input) u.generate_partitions(xml_files, x, y, args.output, args.shuffle, int(args.image_count_minimum), int(args.test_count_minimum), int(args.image_size_minimum), filetype, do_grouping, args.group_date_db)