From a76c7a1839573052ea7694ea63aea31a6cd137f7 Mon Sep 17 00:00:00 2001 From: Leonard Kugis Date: Fri, 31 Mar 2023 03:16:10 +0200 Subject: Added options to choose prediction backend and skip tagged files. --- file-tagger.py | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) (limited to 'file-tagger.py') diff --git a/file-tagger.py b/file-tagger.py index 70909c8..36953ec 100644 --- a/file-tagger.py +++ b/file-tagger.py @@ -30,8 +30,15 @@ def walk(args): return if args["predict_images"]: - #predictor = Predictor(Predictor.BackendTorch(top=args["predict_images_top"])) - predictor = Predictor(Predictor.BackendTensorflow(top=args["predict_images_top"], detail=(not args["predict_images_skip_detail"]), detail_factor=args["predict_images_detail_factor"])) + backend = { + "torch": Predictor.BackendTorch, + "tensorflow": Predictor.BackendTensorflow, + "keras": Predictor.BackendTensorflow + }.get(args["predict_images_backend"]) + if backend == Predictor.BackendTorch: + predictor = Predictor(Predictor.BackendTorch(top=args["predict_images_top"])) + elif backend == Predictor.BackendTensorflow: + predictor = Predictor(Predictor.BackendTensorflow(top=args["predict_images_top"], detail=(not args["predict_images_skip_detail"]), detail_factor=args["predict_images_detail_factor"])) for i in range(args["index"], len(files)): file_path = files[i] @@ -40,6 +47,10 @@ def walk(args): not_empty = bool(tags) logger.info("Existing tags: {}".format(tags)) + if (not_empty and args["skip_tagged"]): + logger.info("Already tagged, skipping.") + continue + if args["open_system"]: open_system(file_path) @@ -95,13 +106,15 @@ if __name__ == "__main__": parser.add_argument('-f', '--file-dir', nargs='?', default='.', type=dir_path, help='File directory for walking (default: %(default)s)') parser.add_argument('-g', '--gui', nargs='?', const=1, default=False, type=bool, help='Show main GUI (default: %(default)s)') parser.add_argument('--predict-images', nargs='?', const=1, default=False, type=bool, help='Use prediction for image tagging (default: %(default)s)') + parser.add_argument('--predict-images-backend', nargs='?', const=1, choices=["torch", "tensorflow", "keras"], default="torch", type=str.lower, help='Determines which backend should be used for keyword prediction (default: %(default)s)') parser.add_argument('--predict-images-top', nargs='?', const=1, default=10, type=int, help='Defines how many top prediction keywords should be used (default: %(default)s)') parser.add_argument('--predict-images-detail-factor', nargs='?', const=1, default=2, type=int, help='Width factor for detail scan, multiplied by 224 for ResNet50 (default: %(default)s)') parser.add_argument('--predict-images-skip-detail', nargs='?', const=1, default=False, type=bool, help='Skip detail scan in image prediction (default: %(default)s)') parser.add_argument('--gui-tag', nargs='?', const=1, default=False, type=bool, help='Show GUI for tagging (default: %(default)s)') parser.add_argument('--gui-image-length', nargs='?', const=1, default=800, type=int, help='Length of longest side for preview (default: %(default)s)') parser.add_argument('--open-system', nargs='?', const=1, default=False, type=bool, help='Open all files with system default (default: %(default)s)') - parser.add_argument('-s', '--skip-prompt', nargs='?', const=1, default=False, type=bool, help='Skip prompt for file tags (default: %(default)s)') + parser.add_argument('--skip-prompt', nargs='?', const=1, default=False, type=bool, help='Skip prompt for file tags (default: %(default)s)') + parser.add_argument('--skip-tagged', nargs='?', const=1, default=False, type=bool, help='Skip already tagged files (default: %(default)s)') parser.add_argument('-i', '--index', nargs='?', const=1, default=0, type=int, help='Start tagging at the given file index (default: %(default)s)') parser.add_argument('-v', '--verbose', action="count", default=0, help="Verbosity level") args = parser.parse_args() @@ -121,6 +134,7 @@ if __name__ == "__main__": "file_dir": args.file_dir, "gui": args.gui, "predict_images": args.predict_images, + "predict_images_backend": args.predict_images_backend, "predict_images_top": args.predict_images_top, "predict_images_detail_factor": args.predict_images_detail_factor, "predict_images_skip_detail": args.predict_images_skip_detail, @@ -128,6 +142,7 @@ if __name__ == "__main__": "gui_image_length": args.gui_image_length, "open_system": args.open_system, "skip_prompt": args.skip_prompt, + "skip_tagged": args.skip_tagged, "index": args.index, "verbosity": args.verbose } -- cgit v1.2.1