예제 #1
0
def main(args=None):
    """
    The main method for parsing command-line arguments and labeling.

    :param args: the commandline arguments, uses sys.argv if not supplied
    :type args: list
    """
    parser = argparse.ArgumentParser()
    parser.add_argument("--image", help="image to be processed", required=True)
    parser.add_argument("--graph",
                        help="graph/model to be executed",
                        required=True)
    parser.add_argument("--labels",
                        help="name of file containing labels",
                        required=True)
    parser.add_argument("--input_height",
                        type=int,
                        help="input height",
                        default=299)
    parser.add_argument("--input_width",
                        type=int,
                        help="input width",
                        default=299)
    parser.add_argument("--input_mean", type=int, help="input mean", default=0)
    parser.add_argument("--input_std", type=int, help="input std", default=255)
    parser.add_argument("--input_layer",
                        help="name of input layer",
                        default="Placeholder")
    parser.add_argument("--output_layer",
                        help="name of output layer",
                        default="final_result")
    parser.add_argument("--top_x",
                        type=int,
                        help="output only the top K labels; use <1 for all",
                        default=5)
    args = parser.parse_args(args=args)

    graph = load_graph(args.graph)
    labels = load_labels(args.labels)
    with tf.compat.v1.Session(graph=graph) as sess:
        tensor = read_tensor_from_image_file(args.image,
                                             input_height=args.input_height,
                                             input_width=args.input_width,
                                             input_mean=args.input_mean,
                                             input_std=args.input_std,
                                             sess=sess)

        results = tensor_to_probs(graph, args.input_layer, args.output_layer,
                                  tensor, sess)
        top_x = top_k_probs(results, args.top_x)
        if args.top_x > 0:
            print("Top " + str(args.top_x) + " labels")
        else:
            print("All labels")
        for i in top_x:
            print("- " + labels[i] + ":", results[i])
예제 #2
0
파일: poll.py 프로젝트: 8176135/tensorflow
def main(args=None):
    """
    The main method for parsing command-line arguments and labeling.

    :param args: the commandline arguments, uses sys.argv if not supplied
    :type args: list
    """
    parser = argparse.ArgumentParser()
    parser.add_argument("--in_dir",
                        help="the input directory to poll for images",
                        required=True)
    parser.add_argument(
        "--out_dir",
        help="the output directory for processed images and predictions",
        required=True)
    parser.add_argument(
        '--delete',
        default=False,
        help=
        "Whether to delete images rather than move them to the output directory.",
        action='store_true')
    parser.add_argument("--graph",
                        help="graph/model to be executed",
                        required=True)
    parser.add_argument("--labels",
                        help="name of file containing labels",
                        required=True)
    parser.add_argument("--input_height",
                        type=int,
                        help="input height",
                        default=299)
    parser.add_argument("--input_width",
                        type=int,
                        help="input width",
                        default=299)
    parser.add_argument("--input_mean", type=int, help="input mean", default=0)
    parser.add_argument("--input_std", type=int, help="input std", default=255)
    parser.add_argument("--input_layer",
                        help="name of input layer",
                        default="Placeholder")
    parser.add_argument("--output_layer",
                        help="name of output layer",
                        default="final_result")
    parser.add_argument("--top_x",
                        type=int,
                        help="output only the top K labels; use <1 for all",
                        default=5)
    args = parser.parse_args(args=args)

    graph = load_graph(args.graph)
    labels = load_labels(args.labels)

    with tf.compat.v1.Session(graph=graph) as sess:
        poll(sess, graph, args.input_layer, args.output_layer, labels,
             args.in_dir, args.out_dir, args.input_height, args.input_width,
             args.input_mean, args.input_std, args.top_x, args.delete)
예제 #3
0
def main(args=None):
    """
    The main method for parsing command-line arguments and labeling.

    :param args: the commandline arguments, uses sys.argv if not supplied
    :type args: list
    """
    parser = argparse.ArgumentParser(
        description="For bulk or continuous prediction output using a trained model.",
        prog="tfic-poll",
        formatter_class=argparse.ArgumentDefaultsHelpFormatter)
    parser.add_argument("--in_dir", metavar="DIR", help="the input directory to poll for images", required=True)
    parser.add_argument("--out_dir", metavar="DIR", help="the output directory for processed images and predictions", required=True)
    parser.add_argument('--continuous', action='store_true', help='Whether to continuously load test images and perform prediction', required=False, default=False)
    parser.add_argument('--delete', default=False, help="Whether to delete images rather than move them to the output directory.", action='store_true')
    parser.add_argument("--graph", metavar="FILE", help="graph/model to be executed", required=True)
    parser.add_argument("--info", help="name of json file with model info (dimensions, layers); overrides input_height/input_width/labels/input_layer/output_layer options", default=None)
    parser.add_argument("--labels", metavar="FILE", help="name of file containing labels", required=False)
    parser.add_argument("--input_height", metavar="INT", type=int, help="input height", default=299)
    parser.add_argument("--input_width", metavar="INT", type=int, help="input width", default=299)
    parser.add_argument("--input_layer", metavar="NAME", help="name of input layer", default="Placeholder")
    parser.add_argument("--output_layer", metavar="NAME", help="name of output layer", default="final_result")
    parser.add_argument("--input_mean", metavar="INT", type=int, help="input mean", default=0)
    parser.add_argument("--input_std", metavar="INT", type=int, help="input std", default=255)
    parser.add_argument("--top_x", metavar="INT", type=int, help="output only the top K labels; use <1 for all", default=5)
    parser.add_argument("--grid_size", metavar="INT", type=int, help="the number of columns and rows to divide the image in, passing each sub-image through the model to obtain predictions", default=None)
    parser.add_argument("--grid_threshold", metavar="0-1", type=float, help="the minimum probability threshold for predictions in the grid to show up in the output", default=0.9)
    parser.add_argument("--grid_ignored", metavar="label1,label2,...", help="the labels to ignore when in grid prediction mode (comma-separated list)", default=None)
    parser.add_argument("--reset_session", metavar="INT", type=int, help="The number of processed images after which to reinitialize the Tensorflow session to reduce memory leaks.", default=50)
    args = parser.parse_args(args=args)

    # values from options
    labels = None
    input_height = args.input_height
    input_width = args.input_width
    input_layer = args.input_layer
    output_layer = args.output_layer

    # override from info file?
    if args.info is not None:
        input_height, input_width, input_layer, output_layer, labels = load_info_file(args.info)

    if (labels is None) and (args.labels is not None):
        labels = load_labels(args.labels)
    if labels is None:
        raise Exception("No labels determined, either supply --info or --labels!")

    graph = load_graph(args.graph)

    poll(graph, input_layer, output_layer, labels, args.in_dir, args.out_dir, args.continuous,
         input_height, input_width, args.input_mean, args.input_std, args.top_x, args.delete,
         grid_size=args.grid_size, grid_threshold=args.grid_threshold, grid_ignored=args.grid_ignored,
         reset_session=args.reset_session)
예제 #4
0
def main(args=None):
    """
    The main method for parsing command-line arguments and labeling.

    :param args: the commandline arguments, uses sys.argv if not supplied
    :type args: list
    """
    parser = argparse.ArgumentParser(
        description=
        "Generates statistics in CSV format by recording predictions on images list files.",
        prog="tfic-stats",
        formatter_class=argparse.ArgumentDefaultsHelpFormatter)
    parser.add_argument('--image_dir',
                        type=str,
                        default='',
                        help='Path to folders of labeled images.')
    parser.add_argument('--image_list',
                        type=str,
                        required=False,
                        help='The JSON file with images per sub-directory.')
    parser.add_argument("--graph",
                        help="graph/model to be executed",
                        required=True)
    parser.add_argument(
        "--info",
        help=
        "name of json file with model info (dimensions, layers); overrides input_height/input_width/labels/input_layer/output_layer options",
        default=None)
    parser.add_argument("--labels",
                        help="name of file containing labels",
                        required=False)
    parser.add_argument("--input_height",
                        type=int,
                        help="input height",
                        default=299)
    parser.add_argument("--input_width",
                        type=int,
                        help="input width",
                        default=299)
    parser.add_argument("--input_layer",
                        help="name of input layer",
                        default="Placeholder")
    parser.add_argument("--output_layer",
                        help="name of output layer",
                        default="final_result")
    parser.add_argument("--input_mean", type=int, help="input mean", default=0)
    parser.add_argument("--input_std", type=int, help="input std", default=255)
    parser.add_argument('--output_preds',
                        type=str,
                        required=True,
                        help='The CSV file to store the predictions in.')
    parser.add_argument('--output_stats',
                        type=str,
                        required=True,
                        help='The CSV file to store the statistics in.')
    parser.add_argument('--logging_verbosity',
                        type=str,
                        default='INFO',
                        choices=['DEBUG', 'INFO', 'WARN', 'ERROR', 'FATAL'],
                        help='How much logging output should be produced.')
    args = parser.parse_args(args=args)

    # values from options
    labels = None
    input_height = args.input_height
    input_width = args.input_width
    input_layer = args.input_layer
    output_layer = args.output_layer

    # override from info file?
    if args.info is not None:
        input_height, input_width, input_layer, output_layer, labels = load_info_file(
            args.info)

    if (labels is None) and (args.labels is not None):
        labels = load_labels(args.labels)
    if labels is None:
        raise Exception(
            "No labels determined, either supply --info or --labels!")

    graph = load_graph(args.graph)

    with tf.compat.v1.Session(graph=graph) as sess:
        generate_stats(sess, graph, input_layer, output_layer, labels,
                       args.image_dir, args.image_list, input_height,
                       input_width, args.input_mean, args.input_std,
                       args.output_preds, args.output_stats,
                       args.logging_verbosity)
예제 #5
0
def main(args=None):
    """
    The main method for parsing command-line arguments and labeling.

    :param args: the commandline arguments, uses sys.argv if not supplied
    :type args: list
    """
    parser = argparse.ArgumentParser()
    parser.add_argument('--image_dir',
                        type=str,
                        default='',
                        help='Path to folders of labeled images.')
    parser.add_argument('--image_list',
                        type=str,
                        required=False,
                        help='The JSON file with images per .')
    parser.add_argument("--graph",
                        help="graph/model to be executed",
                        required=True)
    parser.add_argument("--labels",
                        help="name of file containing labels",
                        required=True)
    parser.add_argument("--input_height",
                        type=int,
                        help="input height",
                        default=299)
    parser.add_argument("--input_width",
                        type=int,
                        help="input width",
                        default=299)
    parser.add_argument("--input_mean", type=int, help="input mean", default=0)
    parser.add_argument("--input_std", type=int, help="input std", default=255)
    parser.add_argument("--input_layer",
                        help="name of input layer",
                        default="Placeholder")
    parser.add_argument("--output_layer",
                        help="name of output layer",
                        default="final_result")
    parser.add_argument('--output_preds',
                        type=str,
                        required=True,
                        help='The CSV file to store the predictions in.')
    parser.add_argument('--output_stats',
                        type=str,
                        required=True,
                        help='The CSV file to store the statistics in.')
    parser.add_argument('--logging_verbosity',
                        type=str,
                        default='INFO',
                        choices=['DEBUG', 'INFO', 'WARN', 'ERROR', 'FATAL'],
                        help='How much logging output should be produced.')
    args = parser.parse_args(args=args)

    graph = load_graph(args.graph)
    labels = load_labels(args.labels)

    with tf.compat.v1.Session(graph=graph) as sess:
        generate_stats(sess, graph, args.input_layer, args.output_layer,
                       labels, args.image_dir, args.image_list,
                       args.input_height, args.input_width, args.input_mean,
                       args.input_std, args.output_preds, args.output_stats,
                       args.logging_verbosity)
예제 #6
0
def main(args=None):
    """
    The main method for parsing command-line arguments and labeling.

    :param args: the commandline arguments, uses sys.argv if not supplied
    :type args: list
    """
    parser = argparse.ArgumentParser(
        description=
        "Outputs predictions for single image using a trained model.",
        prog="tfic-labelimage",
        formatter_class=argparse.ArgumentDefaultsHelpFormatter)
    parser.add_argument("--image", help="image to be processed", required=True)
    parser.add_argument("--graph",
                        help="graph/model to be executed",
                        required=True)
    parser.add_argument(
        "--info",
        help=
        "name of json file with model info (dimensions, layers); overrides input_height/input_width/labels/input_layer/output_layer options",
        default=None)
    parser.add_argument("--labels",
                        help="name of file containing labels",
                        required=False)
    parser.add_argument("--input_height",
                        type=int,
                        help="input height",
                        default=299)
    parser.add_argument("--input_width",
                        type=int,
                        help="input width",
                        default=299)
    parser.add_argument("--input_layer",
                        help="name of input layer",
                        default="Placeholder")
    parser.add_argument("--output_layer",
                        help="name of output layer",
                        default="final_result")
    parser.add_argument("--input_mean", type=int, help="input mean", default=0)
    parser.add_argument("--input_std", type=int, help="input std", default=255)
    parser.add_argument("--top_x",
                        type=int,
                        help="output only the top K labels; use <1 for all",
                        default=5)
    args = parser.parse_args(args=args)

    # values from options
    labels = None
    input_height = args.input_height
    input_width = args.input_width
    input_layer = args.input_layer
    output_layer = args.output_layer

    # override from info file?
    if args.info is not None:
        input_height, input_width, input_layer, output_layer, labels = load_info_file(
            args.info)

    if (labels is None) and (args.labels is not None):
        labels = load_labels(args.labels)
    if labels is None:
        raise Exception(
            "No labels determined, either supply --info or --labels!")

    graph = load_graph(args.graph)

    with tf.compat.v1.Session(graph=graph) as sess:
        tensor = read_tensor_from_image_file(args.image,
                                             input_height=input_height,
                                             input_width=input_width,
                                             input_mean=args.input_mean,
                                             input_std=args.input_std,
                                             sess=sess)

        results = tensor_to_probs(graph, input_layer, output_layer, tensor,
                                  sess)
        top_x = top_k_probs(results, args.top_x)
        if args.top_x > 0:
            print("Top " + str(args.top_x) + " labels")
        else:
            print("All labels")
        for i in top_x:
            print("- " + labels[i] + ":", results[i])