|
import argparse |
|
from . import * |
|
from .classes import * |
|
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=default_window_size, |
|
) |
|
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.") |
|
|