| import argparse |
| from . import * |
| from .classes import Image_Classifier |
| from .funcs import * |
| from abcli import file |
| import abcli.logging |
| import logging |
|
|
| logger = logging.getLogger(__name__) |
|
|
|
|
| parser = argparse.ArgumentParser(name, description=f"{name}-{version}") |
| parser.add_argument( |
| "task", |
| type=str, |
| default="", |
| help="describe,eval,ingest,predict,preprocess,train", |
| ) |
| parser.add_argument( |
| "--objects", |
| type=str, |
| default="", |
| ) |
| parser.add_argument( |
| "--color", |
| type=int, |
| default=0, |
| help="0/1", |
| ) |
| parser.add_argument( |
| "--convnet", |
| type=int, |
| default=1, |
| help="0/1", |
| ) |
| parser.add_argument( |
| "--count", |
| type=int, |
| default=-1, |
| ) |
| parser.add_argument( |
| "--data_path", |
| type=str, |
| default="", |
| ) |
| parser.add_argument( |
| "--epochs", |
| default=10, |
| type=int, |
| help="", |
| ) |
| parser.add_argument( |
| "--exclude", |
| type=str, |
| default="", |
| ) |
| parser.add_argument( |
| "--include", |
| type=str, |
| default="", |
| ) |
| parser.add_argument( |
| "--infer_annotation", |
| type=int, |
| default=1, |
| help="0/1", |
| ) |
| parser.add_argument( |
| "--input_path", |
| type=str, |
| default="", |
| ) |
| parser.add_argument( |
| "--model_path", |
| type=str, |
| default="", |
| ) |
| parser.add_argument( |
| "--negative", |
| type=int, |
| default=0, |
| help="0/1", |
| ) |
| parser.add_argument( |
| "--non_empty", |
| type=int, |
| default=0, |
| help="0/1", |
| ) |
| parser.add_argument( |
| "--output_path", |
| type=str, |
| default="", |
| ) |
| parser.add_argument( |
| "--positive", |
| type=int, |
| default=0, |
| help="0/1", |
| ) |
| parser.add_argument( |
| "--purpose", |
| type=str, |
| default="", |
| help="predict/train", |
| ) |
| parser.add_argument( |
| "--test_size", |
| type=float, |
| default=1.0 / 6, |
| ) |
| parser.add_argument( |
| "--window_size", |
| type=int, |
| default=28, |
| ) |
| args = parser.parse_args() |
|
|
| success = False |
| if args.task == "describe": |
| Image_Classifier().load(args.model_path) |
| success = True |
| elif args.task == "eval": |
| success = eval(args.input_path, args.output_path) |
| elif args.task == "predict": |
| classifier = Image_Classifier() |
|
|
| if classifier.load(args.model_path): |
| success, test_images = file.load(f"{args.data_path}/test_images.pyndarray") |
|
|
| if success: |
| logger.info(f"test_images: {string.pretty_shape_of_matrix(test_images)}") |
|
|
| _, test_labels = file.load( |
| "{}/test_labels.pyndarray".format(args.data_path), |
| civilized=True, |
| default=None, |
| ) |
|
|
| test_images = test_images / 255.0 |
|
|
| success = classifier.predict( |
| test_images, |
| test_labels, |
| args.output_path, |
| ) |
| elif args.task == "preprocess": |
| success = preprocess( |
| args.output_path, |
| objects=args.objects, |
| infer_annotation=args.infer_annotation, |
| purpose=args.purpose, |
| window_size=args.window_size, |
| ) |
| elif args.task == "train": |
| success = Image_Classifier.train( |
| args.data_path, |
| args.model_path, |
| color=args.color, |
| convnet=args.convnet, |
| epochs=args.epochs, |
| ) |
| else: |
| logger.error(f"-{name}: {args.task}: command not found.") |
|
|
| if not success: |
| logger.error(f"-{name}: {args.task}: failed.") |
|
|