def main(_argv):

    if FLAGS.tiny:
        initial_model = YoloV3Tiny(
            FLAGS.size,
            #training=True,
            classes=FLAGS.initial_num_classes)
        anchors = yolo_tiny_anchors
        anchor_masks = yolo_tiny_anchor_masks
        new_custom_model = YoloV3Tiny(
            FLAGS.size,
            #training=True,
            classes=FLAGS.custom_num_classes)
    else:
        initial_model = YoloV3(
            FLAGS.size,
            #training=True,
            classes=FLAGS.initial_num_classes)
        anchors = yolo_anchors
        anchor_masks = yolo_anchor_masks
        new_custom_model = YoloV3(
            FLAGS.size,
            #training=True,
            classes=FLAGS.custom_num_classes)

    load_weights_original(initial_model)
    copy_darknet_weights_to_custom_model(initial_model, new_custom_model)
    save_custom_model_weights(new_custom_model)
Пример #2
0
def load_model():
    if FLAGS.tiny:
        full_model = YoloV3Tiny(
            FLAGS.size,
            # training=True,
            classes=FLAGS.num_classes)
        training_model = YoloV3Tiny(FLAGS.size,
                                    training=True,
                                    classes=FLAGS.num_classes)
    else:
        full_model = YoloV3(
            FLAGS.size,
            # training=True,
            classes=FLAGS.num_classes)
        training_model = YoloV3(FLAGS.size,
                                training=True,
                                classes=FLAGS.num_classes)

    if FLAGS.first_load:
        training_model = load_weights_first(full_model, training_model)
        return training_model
    elif FLAGS.load_from_checkpoint:
        checkpoint_path = "custom_initial_weights/yolov3.tf"
        checkpoint_dir = os.path.dirname(checkpoint_path)
        latest_train = tf.train.latest_checkpoint(checkpoint_dir)
        training_model.load_weights(latest_train)

    if FLAGS.transfer == 'fine_tune':
        # freeze darknet
        darknet = training_model.get_layer('yolo_darknet')
        freeze_all(darknet)

    return training_model
Пример #3
0
def main(_argv):
    if FLAGS.tiny:
        yolo = YoloV3Tiny(classes=FLAGS.num_classes)
    else:
        yolo = YoloV3(classes=FLAGS.num_classes)

    yolo.load_weights(FLAGS.weights)
    logging.info('weights loaded')

    tf.saved_model.save(yolo, FLAGS.output)
    logging.info("model saved to: {}".format(FLAGS.output))

    model = tf.saved_model.load(FLAGS.output)
    infer = model.signatures[tf.saved_model.DEFAULT_SERVING_SIGNATURE_DEF_KEY]
    logging.info(infer.structured_outputs)

    class_names = [c.strip() for c in open(FLAGS.classes).readlines()]
    logging.info('classes loaded')

    img = tf.image.decode_image(open(FLAGS.image, 'rb').read(), channels=3)
    img = tf.expand_dims(img, 0)
    img = transform_images(img, 416)

    t1 = time.time()
    outputs = infer(img)
    boxes, scores, classes, nums = outputs["yolo_nms"], outputs[
        "yolo_nms_1"], outputs["yolo_nms_2"], outputs["yolo_nms_3"]
    t2 = time.time()
    logging.info('time: {}'.format(t2 - t1))

    logging.info('detections:')
    for i in range(nums[0]):
        logging.info('\t{}, {}, {}'.format(class_names[int(classes[0][i])],
                                           scores[0][i].numpy(),
                                           boxes[0][i].numpy()))
Пример #4
0
def main(args):
    # 1、初始化模型并加载权重
    if args.tiny:
        yolo = YoloV3Tiny(classes=args.num_classes)
    else:
        yolo = YoloV3(classes=args.num_classes)

    yolo.load_weights(args.weights)
    logging.info('加载模型权重weights')

    # 加载目标类型
    class_names = [c.strip() for c in open(args.classes).readlines()]

    # 2、加载图片处理图片并使用模型进行预测
    img = tf.image.decode_image(open(args.image, 'rb').read(), channels=3)
    img = tf.expand_dims(img, 0)
    img = transform_images  (img, args.size)

    # 记录时间
    t1 = time.time()
    boxes, scores, classes, nums = yolo(img)
    t2 = time.time()
    logging.info('耗时: {}'.format(t2 - t1))

    logging.info('检测结果:')
    print(boxes, scores, classes, nums)
    for i in range(nums[0]):
        logging.info('\t{}, {}, {}'.format(class_names[int(classes[0][i])],
                                           np.array(scores[0][i]),
                                           np.array(boxes[0][i])))
    # 3、显示图片并将图片框画出
    img = cv2.imread(args.image)
    img = draw_outputs(img, (boxes, scores, classes, nums), class_names)
    cv2.imwrite(args.output, img)
    logging.info('output saved to: {}'.format(args.output))
Пример #5
0
def init():
    os.system('ls -la')
    os.system('pwd')

    os.system('ls azure -la')
    os.system('cat main.py')
    os.system('cat model_config_map.json')

    global yolo, class_names, classes_path, weights_path, tiny, size, output_path, num_classes, physical_devices

    # customize your API through the following parameters
    classes_path = './azure/data/labels/coco.names'
    weights_path = Model.get_model_path("yolov3-tf")
    print("Model Path is  ", weights_path)
    tiny = False  # set to True if using a Yolov3 Tiny model
    size = 416  # size images are resized to for model
    output_path = './azure/detections/'  # path to output folder where images with detections are saved
    num_classes = 80  # number of classes in model

    # load in weights and classes
    physical_devices = tf.config.experimental.list_physical_devices('GPU')
    if len(physical_devices) > 0:
        tf.config.experimental.set_memory_growth(physical_devices[0], True)

    if tiny:
        yolo = YoloV3Tiny(classes=num_classes)
    else:
        yolo = YoloV3(classes=num_classes)

    yolo.load_weights(
        './azureml-models/yolov3-tf/4/tf/yolov3.tf').expect_partial()
    print('weights loaded')

    class_names = [c.strip() for c in open(classes_path).readlines()]
    print('classes loaded')
Пример #6
0
def main(_argv):
    if FLAGS.tiny:
        yolo = YoloV3Tiny(classes=FLAGS.num_classes)
    else:
        yolo = YoloV3(classes=FLAGS.num_classes)

    yolo.load_weights(FLAGS.weights)
    logging.info('weights loaded')

    class_names = [c.strip() for c in open(FLAGS.classes).readlines()]
    logging.info('classes loaded')

    img = tf.image.decode_image(open(FLAGS.image, 'rb').read(), channels=3)
    img = tf.expand_dims(img, 0)
    img = transform_images(img, FLAGS.size)

    t1 = time.time()
    boxes, scores, classes, nums = yolo(img)
    t2 = time.time()
    logging.info('time: {}'.format(t2 - t1))

    logging.info('detections:')
    for i in range(nums[0]):
        logging.info('\t{}, {}, {}'.format(class_names[int(classes[0][i])],
                                           np.array(scores[0][i]),
                                           np.array(boxes[0][i])))

    img = cv2.imread(FLAGS.image)
    img = draw_outputs(img, (boxes, scores, classes, nums), class_names)
    cv2.imwrite(FLAGS.output, img)
    logging.info('output saved to: {}'.format(FLAGS.output))
Пример #7
0
def main(_argv):
    physical_devices = tf.config.experimental.list_physical_devices('GPU')
    if len(physical_devices) > 0:
        tf.config.experimental.set_memory_growth(physical_devices[0], True)

    if FLAGS.tiny:
        yolo = YoloV3Tiny(classes=FLAGS.num_classes)
    else:
        yolo = YoloV3(classes=FLAGS.num_classes)

    yolo.load_weights(FLAGS.weights).expect_partial()

    class_names = [c.strip() for c in open(FLAGS.classes).readlines()]

    if FLAGS.tfrecord:
        dataset = load_tfrecord_dataset(FLAGS.tfrecord, FLAGS.classes,
                                        FLAGS.size)
        dataset = dataset.shuffle(512)
        img_raw, _label = next(iter(dataset.take(1)))
    else:
        img_raw = tf.image.decode_image(open(FLAGS.image, 'rb').read(),
                                        channels=3)

    img = tf.expand_dims(img_raw, 0)
    img = transform_images(img, FLAGS.size)

    t1 = time.time()
    boxes, scores, classes, nums = yolo(img)
    t2 = time.time()

    img = cv2.cvtColor(img_raw.numpy(), cv2.COLOR_RGB2BGR)
    img = draw_outputs(img, (boxes, scores, classes, nums), class_names)
    cv2.imwrite(FLAGS.output, img)
def main(_argv):
    if FLAGS.tiny:
        yolo = YoloV3Tiny()
    else:
        yolo = YoloV3()

    yolo.load_weights(FLAGS.weights)
    logging.info('weights loaded')

    class_names = [c.strip() for c in open(FLAGS.classes).readlines()]
    logging.info('classes loaded')

    times = []

    while True:

        (rpiName, frame) = imageHub.recv_image()
        imageHub.send_reply(b'OK')
        img = imutils.resize(frame, width=416)

        img_in = tf.expand_dims(img, 0)
        img_in = transform_images(img_in, FLAGS.size)

        boxes, scores, classes, nums = yolo.predict(img_in)

        img = draw_outputs(img, (boxes, scores, classes, nums), class_names)
        # img = cv2.putText(img, "Time: {:.2f}ms".format(sum(times)/len(times)*1000), (0, 30),
        #   cv2.FONT_HERSHEY_COMPLEX_SMALL, 1, (0, 0, 255), 2)
        cv2.imshow('output', img)
        if cv2.waitKey(1) == ord('q'):
            break

    cv2.destroyAllWindows()
Пример #9
0
def main(_argv):
    physical_devices = tf.config.experimental.list_physical_devices('GPU')
    for physical_device in physical_devices:
        tf.config.experimental.set_memory_growth(physical_device, True)

    if FLAGS.tiny:
        yolo = YoloV3Tiny(classes=FLAGS.num_classes)
    else:
        yolo = YoloV3(classes=FLAGS.num_classes)

    yolo.load_weights(FLAGS.weights).expect_partial()
    logging.info('weights loaded')

    class_names = [c.strip() for c in open(FLAGS.classes).readlines()]
    logging.info('classes loaded')

    print(FLAGS.output)
    
    os.chdir(FLAGS.image)
    for file in os.listdir(FLAGS.image):
        if file.endswith(".jpg"):
            logging.info("processing {}".format(file))
            img_raw = tf.image.decode_image(open(file, 'rb').read(), channels=3)
            img_predict(img_raw,yolo,class_names,file)
    logging.info('output saved to: {}'.format(FLAGS.output))
Пример #10
0
def main(_argv):
    if FLAGS.tiny:
        yolo = YoloV3Tiny(FLAGS.input_size, classes=FLAGS.num_classes)
    else:
        yolo = YoloV3(FLAGS.input_size, classes=FLAGS.num_classes)

    yolo.load_weights(FLAGS.weights).expect_partial()
    logging.info('weights loaded')

    path = 'tmp/yolov3.h5'
    out_path = 'tmp/yolov3.tflite'

    if FLAGS.tiny:
        path = 'tmp/yolov3-tiny.h5'
        out_path = 'tmp/yolov3-tiny.tflite'

    yolo.save(path)

    logging.info(f'keras model saved to location {path}')

    converter = tf.lite.TFLiteConverter.from_keras_model(yolo)
    converter.target_spec.supported_ops = [
        tf.lite.OpsSet.TFLITE_BUILTINS,
        tf.lite.OpsSet.SELECT_TF_OPS
    ]
    converter.experimental_new_converter = True
    converter.experimental_new_quantizer = True
    converter.allow_custom_ops = True

    tflite_model = converter.convert()
    logging.info(f'model converted')

    open(out_path, 'wb').write(tflite_model)

    logging.info(f'tflite model saved to location {out_path}')
Пример #11
0
    def __init__(self):
        # Definition of the parameters
        self.max_cosine_distance = 0.5
        self.nn_budget = None
        self.nms_max_overlap = 1.0

        #initialize deep sort
        self.model_filename = 'model_data/mars-small128.pb'
        self.encoder = gdet.create_box_encoder(self.model_filename,
                                               batch_size=1)
        self.metric = nn_matching.NearestNeighborDistanceMetric(
            "cosine", self.max_cosine_distance, self.nn_budget)
        self.tracker = Tracker(self.metric)

        self.physical_devices = tf.config.experimental.list_physical_devices(
            'GPU')
        if len(self.physical_devices) > 0:
            tf.config.experimental.set_memory_growth(self.physical_devices[0],
                                                     True)

        if FLAGS.tiny:
            self.yolo = YoloV3Tiny(classes=FLAGS.num_classes)
        else:
            self.yolo = YoloV3(classes=FLAGS.num_classes)

        self.yolo.load_weights(FLAGS.weights)
        logging.info('weights loaded')

        self.class_names = [c.strip() for c in open(FLAGS.classes).readlines()]
        logging.info('classes loaded')

        self.fps = 0.0

        self.last_tracked = []
def main(_argv):
    physical_devices = tf.config.experimental.list_physical_devices('GPU')
    for physical_device in physical_devices:
        tf.config.experimental.set_memory_growth(physical_device, True)

    if FLAGS.tiny:
        yolo = YoloV3Tiny(classes=FLAGS.num_classes)
    else:
        yolo = YoloV3(classes=FLAGS.num_classes)

    # Load weights
    yolo.load_weights(FLAGS.weights).expect_partial()
    logging.info('weights loaded')

    # Load classnames
    class_names = [c.strip() for c in open(FLAGS.classes).readlines()]
    logging.info(f'classes loaded: {class_names}')
    dataset = load_tfrecord_dataset(file_pattern=FLAGS.dataset,
                                    class_file=FLAGS.classes,
                                    size=FLAGS.size)
    dataset = dataset.as_numpy_iterator()
    times = []
    counter = 0
    for val_data in tqdm(dataset):
        counter += 1
        file_name = f"image_size_{im_size}/tiny/score_threshold_{score_threshold}/image-{counter}.txt"
        image_name = f"image_size_{im_size}/score_threshold_{score_threshold}/images/image-{counter}.jpeg"
        img_raw, _label = val_data

        img = tf.expand_dims(img_raw, 0)
        img = transform_images(img, FLAGS.size)

        t1 = time.time()
        boxes, scores, classes, nums = yolo(img)
        t2 = time.time()
        times.append([np.subtract(t2, t1)])
        logging.info('time: {}'.format(t2 - t1))

        if FLAGS.save_images:
            img = cv2.cvtColor(img_raw, cv2.COLOR_RGB2BGR)
            img = draw_outputs(img, (boxes, scores, classes, nums), class_names, text=True, color=(0, 0, 255), obj=False)
            cv2.imwrite(os.path.join(DETECTIONS_DIR, image_name), img)

        else:
            open(os.path.join(DETECTIONS_DIR, file_name), "w").close()
            for i in range(nums[0]):
                left, top, right, bottom = np.array(boxes[0][i]) * FLAGS.size
                with open(os.path.join(DETECTIONS_DIR, file_name), 'a+') as f:
                    f.write(f"{class_names[int(classes[0][i])]} "
                            f"{np.array(scores[0][i])} "
                            f"{round(Decimal(str(left)), 2)} "
                            f"{round(Decimal(str(top)), 2)} "
                            f"{round(Decimal(str(right)), 2)} "
                            f"{round(Decimal(str(bottom)), 2)}\n")

            print(f"Mean detection time for dataset: {data_set_name} "
                  f"with image size: {im_size} "
                  f"and score threshold: {score_threshold} is: "
                  f"{round(np.mean(times), 3)}, fps: {round(1/(np.mean(times)), 2)}")
Пример #13
0
def main(_argv):
    physical_devices = tf.config.experimental.list_physical_devices('GPU')
    if len(physical_devices) > 0:
        tf.config.experimental.set_memory_growth(physical_devices[0], True)

    if FLAGS.tiny:
        yolo = YoloV3Tiny(classes=FLAGS.num_classes)
    else:
        yolo = YoloV3(classes=FLAGS.num_classes)

    yolo.load_weights(FLAGS.weights)
    logging.info('weights loaded')

    class_names = [c.strip() for c in open(FLAGS.classes).readlines()]
    logging.info('classes loaded')

    times = []

    vid = cv2.VideoCapture(0, cv2.CAP_DSHOW)

    # out = None

    if FLAGS.output:
        # by default VideoCapture returns float instead of int
        width = int(vid.get(cv2.CAP_PROP_FRAME_WIDTH))
        height = int(vid.get(cv2.CAP_PROP_FRAME_HEIGHT))
        fps = int(vid.get(cv2.CAP_PROP_FPS))
        # codec = cv2.VideoWriter_fourcc(*FLAGS.output_format)
        # out = cv2.VideoWriter(FLAGS.output, codec, fps, (width, height))

    while True:
        _, img = vid.read()

        if img is None:
            logging.warning("Empty Frame")
            time.sleep(0.25)
            continue

        img_in = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
        img_in = tf.expand_dims(img_in, 0)
        img_in = transform_images(img_in, FLAGS.size)

        t1 = time.time()
        boxes, scores, classes, nums = yolo.predict(img_in)
        t2 = time.time()
        times.append(t2 - t1)
        times = times[-20:]

        img = draw_outputs(img, (boxes, scores, classes, nums), class_names)
        img = cv2.putText(
            img, "Time: {:.2f}ms".format(sum(times) / len(times) * 1000),
            (0, 30), cv2.FONT_HERSHEY_COMPLEX_SMALL, 1, (0, 0, 255), 2)
        # if FLAGS.output:
        #     out.write(img)
        cv2.imshow('output', img)
        if cv2.waitKey(1) == ord('q'):
            break

    cv2.destroyAllWindows()
Пример #14
0
def main(_argv):
    physical_devices = tf.config.experimental.list_physical_devices('GPU')
    for physical_device in physical_devices:
        tf.config.experimental.set_memory_growth(physical_device, True)

    if FLAGS.tiny:
        yolo = YoloV3Tiny(classes=FLAGS.num_classes)
    else:
        yolo = YoloV3(classes=FLAGS.num_classes)

    yolo.load_weights(FLAGS.weights).expect_partial()
    logging.info('weights loaded')

    class_names = [c.strip() for c in open(FLAGS.classes).readlines()]
    logging.info('classes loaded')

    if FLAGS.tfrecord:
        dataset = load_tfrecord_dataset(FLAGS.tfrecord, FLAGS.classes,
                                        FLAGS.size)
        dataset = dataset.shuffle(512)
        img_raw, _label = next(iter(dataset.take(1)))
    else:
        img_raw = tf.image.decode_image(open(FLAGS.image, 'rb').read(),
                                        channels=3)

    img = tf.expand_dims(img_raw, 0)
    img = transform_images(img, FLAGS.size)

    t1 = time.time()
    boxes, scores, classes, nums = yolo(img)
    t2 = time.time()
    logging.info('time: {}'.format(t2 - t1))

    logging.info('primary detections:')
    for i in range(nums[0]):
        logging.info('\t{}, {:.2f}'.format(class_names[int(classes[0][i])],
                                           np.array(scores[0][i])))

    img = cv2.cvtColor(img_raw.numpy(), cv2.COLOR_RGB2BGR)
    t3 = time.time()
    img, cat_det, dog_det = draw_outputs(img, (boxes, scores, classes, nums),
                                         class_names)
    t4 = time.time()
    cv2.imwrite(FLAGS.output, img)

    if np.size(cat_det) != 0 or np.size(dog_det) != 0:
        logging.info('secondary detections :')
        logging.info('time: {}'.format(t4 - t3))

        if np.size(cat_det) != 0:
            for cat in cat_det:
                logging.info('\t{}, {:.2f}'.format(cat[1], cat[0]))

        if np.size(dog_det) != 0:
            for dog in dog_det:
                logging.info('\t {}, {:.2f}'.format(dog[1], dog[0]))

    logging.info('output saved to: {}'.format(FLAGS.output))
    cv2.imshow(FLAGS.output)
Пример #15
0
def main(_argv):
    # Change flag values
    if FLAGS.height is None:
        FLAGS.height = FLAGS.size
    if FLAGS.width is None:
        FLAGS.width = FLAGS.size
    size = (FLAGS.height, FLAGS.width)

    physical_devices = tf.config.experimental.list_physical_devices('GPU')
    for physical_device in physical_devices:
        tf.config.experimental.set_memory_growth(physical_device, True)

    if FLAGS.tiny:
        yolo = YoloV3Tiny(classes=FLAGS.num_classes)
    else:
        yolo = YoloV3(classes=FLAGS.num_classes)

    yolo.load_weights(FLAGS.weights).expect_partial()
    logging.info('weights loaded')

    class_names = [c.strip() for c in open(FLAGS.classes).readlines()]
    logging.info('classes loaded')

    if FLAGS.tfrecord:
        dataset = load_tfrecord_dataset(FLAGS.tfrecord, FLAGS.classes, size)
        dataset = dataset.shuffle(512)
        img_iter = iter(dataset.take(FLAGS.count))
    else:
        img_raw = tf.image.decode_image(open(FLAGS.image, 'rb').read(),
                                        channels=3)
        img_iter = iter([(img_raw, None)])

    for idx, (img_raw, _label) in enumerate(img_iter):
        img = tf.expand_dims(img_raw, 0)
        img = transform_images(img, size)

        t1 = time.time()
        boxes, scores, classes, nums = yolo(img)
        t2 = time.time()
        logging.info('time: {}'.format(t2 - t1))

        logging.info('detections:')
        for i in range(nums[0]):
            logging.info('\t{}, {}, {}'.format(class_names[int(classes[0][i])],
                                               np.array(scores[0][i]),
                                               np.array(boxes[0][i])))

        img = cv2.cvtColor(img_raw.numpy(), cv2.COLOR_RGB2BGR)
        img = draw_outputs(img, (boxes, scores, classes, nums), class_names)
        output = FLAGS.output
        if idx != 0:
            dot = output.rfind(".")
            suffix = "-" + str(idx).zfill(3)
            if dot != -1:
                output = output[:dot] + suffix + output[dot:]
            else:
                output = output + suffix
        cv2.imwrite(output, img)
        logging.info('output saved to: {}'.format(output))
Пример #16
0
def main(_argv):
    physical_devices = tf.config.experimental.list_physical_devices('GPU')
    if len(physical_devices) > 0:
        tf.config.experimental.set_memory_growth(physical_devices[0], True)

    if FLAGS.tiny:
        yolo = YoloV3Tiny(classes=FLAGS.num_classes)
    else:
        yolo = YoloV3(classes=FLAGS.num_classes)

    yolo.load_weights(FLAGS.weights)
    logging.info('weights loaded')

    class_names = [c.strip() for c in open(FLAGS.classes).readlines()]
    logging.info('classes loaded')

    nfp = 0
    npp = 0
    nxp = 0

    files = os.listdir('data/scaled')
    for fn in files:
        lc = fn[len(fn) - 5]
        test_data = lc == '0'

        if not flags.FLAGS.all and not test_data:
            continue

        img = tf.image.decode_image(open('data/scaled/' + fn, 'rb').read(), channels=3)
        img = tf.expand_dims(img, 0)
        img = transform_images(img, FLAGS.size)

        t1 = time.time()
        boxes, scores, classes, nums = yolo(img)
        t2 = time.time()
        logging.info('time: {}'.format(t2 - t1))

        logging.info('detections:')
        for i in range(nums[0]):
            logging.info('\t{}, {}, {}'.format(class_names[int(classes[0][i])],
                                               np.array(scores[0][i]),
                                               np.array(boxes[0][i])))

        nfp += 1
        if nums[0] > 0:
            npp += 1
            img = cv2.imread('data/scaled/' + fn)
            img = draw_outputs(img, (boxes, scores, classes, nums), class_names)
            ofn = 'data/predict/' + fn
            if FLAGS.save or test_data:
                cv2.imwrite(ofn, img)
                logging.info('output saved to: {}'.format(ofn))
        if nums[0] == 4:
            nxp += 1

    print("%d processed. %d some prediction. %d has complete prediction\n" % (nfp, npp, nxp))
    print("%1.0f %% pass prediction" % (100 * nxp / nfp))
Пример #17
0
def main(_argv):
    del _argv
    if FLAGS.tiny:
        yolo = YoloV3Tiny()
    else:
        yolo = YoloV3()


#    yolo.summary()
    yolo.load_weights(FLAGS.weights)
    logging.info('weights loaded')

    class_names = [c.strip() for c in open(FLAGS.classes).readlines()]
    logging.info('classes loaded')

    url = images_url.copy()
    img = url[0]
    img = tf.image.decode_image(open(img, 'rb').read(), channels=3)
    img = tf.expand_dims(img, 0)
    im = transform_images(img, 416)

    for pic in url[1:]:

        img1 = tf.image.decode_image(open(pic, 'rb').read(), channels=3)
        img1 = tf.expand_dims(img1, 0)
        img1 = transform_images(img1, 416)
        im = tf.concat((im, img1), axis=0)

    print(tf.shape(im))

    t1 = time.time()
    Tboxes, Tscores, Tclasses, Tnums = yolo(im)
    t2 = time.time()
    logging.info('time: {}'.format(t2 - t1))
    #    boxes, scores, classes, nums=a
    #    print(tf.shape(Tscores[0:1,:]))
    #    print(tf.shape(Tclasses))
    #    print(tf.shape(Tboxes))
    #    print(tf.shape(Tnums[0:1]))

    for pic in range(tf.shape(Tnums)):
        scores = Tscores[0 + pic:1 + pic, :]
        classes = Tclasses[0 + pic:1 + pic, :]
        boxes = Tboxes[0 + pic:1 + pic, :, :]
        nums = Tnums[0 + pic:1 + pic]

        logging.info('detections:')
        print(nums[0])
        for i in range(nums[0]):
            logging.info('\t{}, {}, {}'.format(class_names[int(classes[0][i])],
                                               scores[0][i].numpy(),
                                               boxes[0][i].numpy()))

        img = cv2.imread(images_url[pic])
        img = draw_outputs(img, (boxes, scores, classes, nums), class_names)
        cv2.imwrite(str(pic) + '.jpg', img)
        logging.info('output saved to: {}'.format('output' + str(pic)))
Пример #18
0
def main(_argv):
    id_img = 0
    physical_devices = tf.config.experimental.list_physical_devices('GPU')
    for physical_device in physical_devices:
        tf.config.experimental.set_memory_growth(physical_device, True)

    if FLAGS.tiny:
        yolo = YoloV3Tiny(classes=FLAGS.num_classes)
    else:
        yolo = YoloV3(classes=FLAGS.num_classes)

    yolo.load_weights(FLAGS.weights).expect_partial()
    logging.info('weights loaded')

    class_names = [c.strip() for c in open(FLAGS.classes).readlines()]
    logging.info('classes loaded')

    logging.info('initialization connexion at {}:{}'.format(FLAGS.ip, str(FLAGS.port)))
    connexion_1 = time.time()
    sk = nt.init_connexion(FLAGS.ip, FLAGS.port)
    connexion_2 = time.time()
    connexion = connexion_2 - connexion_1
    logging.info("connected to {} port {} in {:.3f}ms".format(FLAGS.ip, FLAGS.port, connexion))

    if FLAGS.tfrecord:
        dataset = load_tfrecord_dataset(
            FLAGS.tfrecord, FLAGS.classes, FLAGS.size)
        dataset = dataset.shuffle(512)
        img_raw, _label = next(iter(dataset.take(1)))
    else:
        img_raw = tf.image.decode_image(
            open(FLAGS.image, 'rb').read(), channels=3)

    img = tf.expand_dims(img_raw, 0)
    img = transform_images(img, FLAGS.size)

    t1 = time.time()
    boxes, scores, classes, nums = yolo(img)
    t2 = time.time()

    img = cv2.cvtColor(img_raw.numpy(), cv2.COLOR_RGB2BGR)
    nt.get_more_data(img, (boxes, scores, classes, nums), class_names)

    logging.info('time: {}'.format(t2 - t1))

    logging.info('primary detections:')
    for i in range(nums[0]):
        logging.info('\t{}, {:.2f}'.format(class_names[int(classes[0][i])],
                                           np.array(scores[0][i])))

    img = draw_outputs(img, (boxes, scores, classes, nums), class_names)

    cv2.imwrite(FLAGS.output, img)

    logging.info('output saved to: {}'.format(FLAGS.output))
    sk.close()
Пример #19
0
def main(_argv):
    global g_yolo
    for i in (1, 2):
        S = time.time()
        physical_devices = tf.config.experimental.list_physical_devices('GPU')
        if len(physical_devices) > 0:
            tf.config.experimental.set_memory_growth(physical_devices[0], True)

        t1 = time.time()
        if FLAGS.tiny:
            yolo = YoloV3Tiny(classes=FLAGS.num_classes)
        else:
            if g_yolo is not None:
                yolo = g_yolo
            else:
                yolo = YoloV3(classes=FLAGS.num_classes)
                g_yolo = yolo
                yolo.load_weights(FLAGS.weights).expect_partial()

        t2 = time.time()
        logging.info('weights loaded')
        logging.info(f'graph_construction_time_{i} {t2-t1}')

        class_names = [c.strip() for c in open(FLAGS.classes).readlines()]
        logging.info('classes loaded')

        if FLAGS.tfrecord:
            dataset = load_tfrecord_dataset(FLAGS.tfrecord, FLAGS.classes,
                                            FLAGS.size)
            dataset = dataset.shuffle(512)
            img_raw, _label = next(iter(dataset.take(1)))
        else:
            img_raw = tf.image.decode_image(open(FLAGS.image, 'rb').read(),
                                            channels=3)

        img = tf.expand_dims(img_raw, 0)
        img = transform_images(img, FLAGS.size)

        t1 = time.time()
        boxes, scores, classes, nums = yolo(img)
        t2 = time.time()
        logging.info('inference_time_{} {}'.format(i, t2 - t1))

        logging.info('detections:')
        for i in range(nums[0]):
            logging.info('\t{}, {}, {}'.format(class_names[int(classes[0][i])],
                                               np.array(scores[0][i]),
                                               np.array(boxes[0][i])))

        img = cv2.cvtColor(img_raw.numpy(), cv2.COLOR_RGB2BGR)
        img = draw_outputs(img, (boxes, scores, classes, nums), class_names)
        cv2.imwrite(FLAGS.output, img)
        logging.info('output saved to: {}'.format(FLAGS.output))
        E = time.time()
        logging.info(f'phase_{i}_time: {E-S}')
Пример #20
0
def main(_argv):
    if FLAGS.tiny:
        yolo = YoloV3Tiny()
    else:
        yolo = YoloV3()

    yolo.load_weights(FLAGS.weights)
    logging.info('weights loaded')

    class_names = [c.strip() for c in open(FLAGS.classes).readlines()]
    logging.info('classes loaded')

    times = []

    try:
        vid = cv2.VideoCapture(int(FLAGS.video))
        vid.set(3, 3840)
        vid.set(4, 2160)
        vid.set(5, 10)
    except:
        vid = cv2.VideoCapture(FLAGS.video)
    frame_width = int(vid.get(3))
    frame_height = int(vid.get(4))
    vid_out = cv2.VideoWriter(FLAGS.output_video,
                              cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'), 30.0,
                              (frame_width, frame_height))

    while True:
        _, img = vid.read()
        if img is None:
            logging.warning("Empty Frame")
            time.sleep(0.1)
            break

        img_in = tf.expand_dims(img, 0)
        img_in = transform_images(img_in, FLAGS.size)

        t1 = time.time()
        boxes, scores, classes, nums = yolo.predict(img_in)
        t2 = time.time()
        times.append(t2 - t1)
        times = times[-20:]

        img = draw_outputs(img, (boxes, scores, classes, nums), class_names)
        img = cv2.putText(
            img, "Time: {:.2f}ms".format(sum(times) / len(times) * 1000),
            (0, 30), cv2.FONT_HERSHEY_COMPLEX, 1, (0, 0, 255), 2)
        vid_out.write(img)
        cv2.imshow('output', img)
        if cv2.waitKey(1) == ord('q'):
            break
    vid_out.release()
    vid.release()
    cv2.destroyAllWindows()
Пример #21
0
def main(_argv):
    #%%
    if FLAGS.tiny:
        yolo = YoloV3Tiny()
    else:
        yolo = YoloV3()

    yolo.load_weights(FLAGS.weights)
    logging.info('weights loaded')

    class_names = [c.strip() for c in open(FLAGS.classes).readlines()]
    logging.info('classes loaded')

    times = []

    cap = cv2.VideoCapture(FLAGS.url)

    out = cv2.VideoWriter(
        'appsrc ! videoconvert ! '
        'x264enc noise-reduction=10000 speed-preset=ultrafast tune=zerolatency ! '
        'rtph264pay config-interval=1 pt=96 !'
        'tcpserversink host=140.117.169.194 port=5000 sync=false', 0, 25,
        (640, 480))

    out_path = './out/'
    if not os.path.exists(out_path):
        os.makedirs(out_path)
    #%%
    while (cap.isOpened()):
        ret, img = cap.read()

        if cv2.waitKey(20) & 0xFF == ord('q'):
            break

        img_in = tf.expand_dims(img, 0)
        img_in = transform_images(img_in, FLAGS.size)

        t1 = time.time()
        boxes, scores, classes, nums = yolo.predict(img_in)
        t2 = time.time()
        img = draw_outputs(img, (boxes, scores, classes, nums), class_names)
        img = cv2.putText(
            img, "Time: {:.2f}ms".format(sum(times) / len(times) * 1000),
            (0, 30), cv2.FONT_HERSHEY_COMPLEX_SMALL, 1, (0, 0, 255), 2)
        # if(nums > 0):
        #     cv2.imwrite(out_path + 'frame{0}.jpg'.format(index), img)
        frameOfWindows = cv2.resize(img, (800, 600),
                                    interpolation=cv2.INTER_CUBIC)
        out.write(frameOfWindows)
        cv2.imshow('output', frameOfWindows)
        if cv2.waitKey(1) == ord('q'):
            break

    cap.release()
def main(_argv):
    physical_devices = tf.config.experimental.list_physical_devices('GPU')
    if len(physical_devices) > 0:
        tf.config.experimental.set_memory_growth(physical_devices[0], True)

    if FLAGS.tiny:
        yolo = YoloV3Tiny(classes=FLAGS.num_classes)
    else:
        yolo = YoloV3(classes=FLAGS.num_classes)

    yolo.load_weights(FLAGS.weights)
    logging.info('weights loaded')

    class_names = [c.strip() for c in open(FLAGS.classes).readlines()]
    logging.info('classes loaded')

    times = []

    fps = 0.0
    #count = 0

    while True:

        # capturing a part of the screen with resulation (1200,1200)px
        img = ImageGrab.grab(bbox=(50, 50, 950, 950),
                             all_screens=True)  # x, y, w, h
        img = np.array(img)
        _ = True

        img_in = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
        img_in = tf.expand_dims(img_in, 0)
        img_in = transform_images(img_in, FLAGS.size)

        t1 = time.time()
        boxes, scores, classes, nums = yolo.predict(img_in)
        fps = (fps + (1. / (time.time() - t1))) / 2

        img, objekt_dim, marra = draw_outputs(img,
                                              (boxes, scores, classes, nums),
                                              class_names)

        img = cv2.putText(
            img, "Das Code wird von ersten Gruppe_I erstellt " +
            str(int(fps)) + " (fps)", (0, 30), cv2.FONT_HERSHEY_COMPLEX_SMALL,
            1, (255, 0, 0), 1)
        img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

        cv2.imshow("Gruppe_I", img)
        if cv2.waitKey(1) == ord('q'):
            break

    cv2.destroyAllWindows()
Пример #23
0
def main(_argv):
    physical_devices = tf.config.experimental.list_physical_devices('GPU')
    if len(physical_devices) > 0:
        tf.config.experimental.set_memory_growth(physical_devices[0], True)

    if FLAGS.tiny:
        print("yolo used is tiny model")
        yolo = YoloV3Tiny(classes=FLAGS.num_classes)
    else:
        print("yolo used is full model")
        yolo = YoloV3(classes=FLAGS.num_classes)

    yolo.load_weights(FLAGS.weights).expect_partial()
    print('weights loaded')

    class_names = [c.strip() for c in open(FLAGS.classes).readlines()]
    print('classes loaded')

    if FLAGS.tfrecord:
        dataset = load_tfrecord_dataset(FLAGS.tfrecord, FLAGS.classes,
                                        FLAGS.size)
        dataset = dataset.shuffle(512)
        img_raw, _label = next(iter(dataset.take(1)))
    else:
        raw_images = []
        images = FLAGS.images
        for image in images:
            img_raw = tf.image.decode_image(open(image, 'rb').read(),
                                            channels=3)
            raw_images.append(img_raw)
    num = 0
    for raw_img in raw_images:
        num += 1
        img = tf.expand_dims(raw_img, 0)
        img = transform_images(img, FLAGS.size)

        t1 = time.time()
        boxes, scores, classes, nums = yolo(img)
        t2 = time.time()
        logging.info('time: {}'.format(t2 - t1))

        print('detections:')
        for i in range(nums[0]):
            print('\t{}, {}, {}'.format(class_names[int(classes[0][i])],
                                        np.array(scores[0][i]),
                                        np.array(boxes[0][i])))

        img = cv2.cvtColor(raw_img.numpy(), cv2.COLOR_RGB2BGR)
        img = draw_outputs(img, (boxes, scores, classes, nums), class_names)
        cv2.imwrite(FLAGS.output + 'detection' + str(num) + '.jpg', img)
        print('output saved to: {}'.format(FLAGS.output + 'detection' +
                                           str(num) + '.jpg'))
Пример #24
0
def main(_argv):
    if FLAGS.tiny:
        yolo = YoloV3Tiny(classes=FLAGS.num_classes)
    else:
        yolo = YoloV3(classes=FLAGS.num_classes)
    yolo.summary()
    logging.info('model created')
    load_darknet_weights(yolo, FLAGS.weights, FLAGS.tiny)
    logging.info('weights loaded')
    img = np.random.random((1, 320, 320, 3)).astype(np.float32)
    output = yolo(img)
    logging.info('sanity check passed')
    yolo.save_weights(FLAGS.output)
    logging.info('weights saved')
Пример #25
0
def main(_argv):
    print("Start")
    start_time = time.time()
    physical_devices = tf.config.experimental.list_physical_devices('GPU')
    if len(physical_devices) > 0:
        tf.config.experimental.set_memory_growth(physical_devices[0], True)

    if FLAGS.tiny:
        yolo = YoloV3Tiny(classes=FLAGS.num_classes)
    else:
        yolo = YoloV3(classes=FLAGS.num_classes)

    yolo.load_weights(FLAGS.weights)
    logging.info('weights loaded')

    logging.info('classes loaded')

    times = []

    try:
        vid = cv2.VideoCapture(int(FLAGS.video))
    except:
        vid = cv2.VideoCapture(FLAGS.video)

    out = None

    if FLAGS.output:
        # by default VideoCapture returns float instead of int
        width = int(vid.get(cv2.CAP_PROP_FRAME_WIDTH))
        height = int(vid.get(cv2.CAP_PROP_FRAME_HEIGHT))
        fps = int(vid.get(cv2.CAP_PROP_FPS))
        codec = cv2.VideoWriter_fourcc(*FLAGS.output_format)
        out = cv2.VideoWriter(FLAGS.output, codec, fps, (width, height))

    with ThreadPoolExecutor(max_workers=1) as executor:
        executor.submit(img_read_wrapper, vid, processed_img_queue,
                        raw_img_queue)
        executor.submit(predict_wrapper, yolo, processed_img_queue,
                        yolo_result_queue)
        display_wrapper(out, FLAGS, yolo_result_queue, raw_img_queue)

    # read_thread = threading.Thread(target=img_read_wrapper, args=(vid, processed_img_queue, raw_img_queue))
    # predict_thread = threading.Thread(target=predict_wrapper, args=(yolo, processed_img_queue, yolo_result_queue))
    # display_thread = threading.Thread(target=display_wrapper, args=(out, FLAGS, yolo_result_queue, raw_img_queue))
    # threads = [read_thread, predict_thread, display_thread]
    # for t in threads:
    #     t.start()
    # for t in threads:
    #     t.join()
    print("FInish", time.time() - start_time)
Пример #26
0
def main(_argv):
    physical_devices = tf.config.experimental.list_physical_devices('GPU')
    for physical_device in physical_devices:
        tf.config.experimental.set_memory_growth(physical_device, True)

    if FLAGS.tiny:
        yolo = YoloV3Tiny(classes=FLAGS.num_classes)
    else:
        yolo = YoloV3(classes=FLAGS.num_classes)

    yolo.load_weights(FLAGS.weights).expect_partial()
    logging.info('weights loaded')

    class_names = [c.strip() for c in open(FLAGS.classes).readlines()]
    logging.info('classes loaded')

    if FLAGS.tfrecord:
        dataset = load_tfrecord_dataset(FLAGS.tfrecord, FLAGS.classes,
                                        FLAGS.size)
        dataset = dataset.shuffle(512)
        img_raw, _label = next(iter(dataset.take(1)))
    else:
        img_raw = tf.image.decode_image(open(FLAGS.image, 'rb').read(),
                                        channels=3)

    img = tf.expand_dims(img_raw, 0)
    img = transform_images(img, FLAGS.size)

    t1 = time.time()
    boxes, scores, classes, nums = yolo(img)
    t2 = time.time()
    logging.info('time: {}'.format(t2 - t1))

    logging.info('detections:')
    for i in range(nums[0]):
        logging.info('\t{}, {}, {}'.format(class_names[int(classes[0][i])],
                                           np.array(scores[0][i]),
                                           np.array(boxes[0][i])))

    img = cv2.cvtColor(img_raw.numpy(), cv2.COLOR_RGB2BGR)
    img = draw_outputs(img, (boxes, scores, classes, nums), class_names)
    cv2.imshow("result", img)
    k = cv2.waitKey(0)
    if k & 0xFF == ord('q'):
        cv2.destroyAllWindows()
    if k == ord('s'):
        cv2.imwrite(FLAGS.output, img)
    logging.info('output saved to: {}'.format(FLAGS.output))
    cv2.destroyAllWindows()
Пример #27
0
def main(_argv):
    if FLAGS.tiny:
        yolo = YoloV3Tiny(classes=FLAGS.num_classes)
    else:
        yolo = YoloV3(classes=FLAGS.num_classes)

    yolo.load_weights(FLAGS.weights)
    logging.info('weights loaded')

    tf.saved_model.save(yolo, FLAGS.output)
    logging.info("model saved to: {}".format(FLAGS.output))

    model = tf.saved_model.load(FLAGS.output)
    infer = model.signatures[tf.saved_model.DEFAULT_SERVING_SIGNATURE_DEF_KEY]
    logging.info(infer.structured_outputs)
Пример #28
0
def main(_argv):
    physical_devices = tf.config.experimental.list_physical_devices('GPU')
    if len(physical_devices) > 0:
        tf.config.experimental.set_memory_growth(physical_devices[0], True)

    if FLAGS.tiny:
        yolo = YoloV3Tiny(classes=FLAGS.num_classes)
    else:
        yolo = YoloV3(classes=FLAGS.num_classes)

    yolo.load_weights(FLAGS.weights)
    logging.info('weights loaded')

    class_names = [c.strip() for c in open(FLAGS.classes).readlines()]
    logging.info('classes loaded')

    times = []

    try:
        vid = cv2.VideoCapture(int(FLAGS.video))
    except:
        vid = cv2.VideoCapture(FLAGS.video)
    while True:
        _, img = vid.read()

        if img is None:
            logging.warning("Empty Frame")
            time.sleep(0.1)
            continue

        img_in = tf.expand_dims(img, 0)
        img_in = transform_images(img_in, FLAGS.size)

        t1 = time.time()
        boxes, scores, classes, nums = yolo.predict(img_in)
        t2 = time.time()
        times.append(t2 - t1)
        times = times[-20:]

        img = draw_outputs(img, (boxes, scores, classes, nums), class_names)
        img = cv2.putText(
            img, "Time: {:.2f}ms".format(sum(times) / len(times) * 1000),
            (0, 30), cv2.FONT_HERSHEY_COMPLEX_SMALL, 1, (0, 0, 255), 2)
        cv2.imshow('output', img)
        if cv2.waitKey(1) == ord('q'):
            break

    cv2.destroyAllWindows()
Пример #29
0
def main(_argv):
    physical_devices = tf.config.experimental.list_physical_devices('GPU')
    for physical_device in physical_devices:
        tf.config.experimental.set_memory_growth(physical_device, True)

    if FLAGS.tiny:
        yolo = YoloV3Tiny(classes=FLAGS.num_classes)
    else:
        yolo = YoloV3(classes=FLAGS.num_classes)

    yolo.load_weights(FLAGS.weights).expect_partial()
    logging.info('weights loaded')

    dataset = load_tfrecord_dataset(
        FLAGS.tfrecord, FLAGS.classes, FLAGS.size)

    total_matched = 0
    total_count = 0
    total_iou = 0
    false_detected = 0

    for img_raw, _label in tqdm(dataset):
        _label = _label.numpy()
        true_labels = np.sum(np.sum(_label, axis=1) > 0)

        img = tf.expand_dims(img_raw, 0)
        img = transform_images(img, FLAGS.size)

        boxes, scores, classes, nums = yolo(img)

        total_count += true_labels

        for i in range(nums[0]):
            iou = 0
            for i_true in range(true_labels):
                if _label[i_true][-1] != int(classes[0][i]):
                    continue
                iou_current = bb_intersection_over_union(_label[i_true][:4], np.array(boxes[0][i]))
                if iou_current > iou:
                    iou = iou_current

            if iou > 0:
                total_matched += 1
            else:
                false_detected += 1
            total_iou += iou
    logging.info(f'Total objects: {total_count}\n\t matched: {total_matched} ratio: {total_matched / total_count:.3}\n\t false detected: {false_detected}\n\tavgIOU: {total_iou / total_count:.3} matched avgIOU: {total_iou / total_matched:.3}')
def main(_argv):
    if FLAGS.tiny:
        yolo = YoloV3Tiny(size=FLAGS.size, classes=FLAGS.num_classes)
    else:
        yolo = YoloV3(size=FLAGS.size, classes=FLAGS.num_classes)

    yolo.load_weights(FLAGS.weights)
    logging.info('weights loaded')

    converter = tf.lite.TFLiteConverter.from_keras_model(yolo)
    converter.target_ops = [
        tf.lite.OpsSet.TFLITE_BUILTINS, tf.lite.OpsSet.SELECT_TF_OPS
    ]
    converter.allow_custom_ops = True
    tflite_model = converter.convert()
    open(FLAGS.output, 'wb').write(tflite_model)
    logging.info("model saved to: {}".format(FLAGS.output))