def main(config):

    if config["datasets"] == "VOC":
        voc = VOC()
        yolo = YOLO(os.path.abspath(config["cls_list"]))

        flag, data = voc.parse(config["label"])

        if flag == True:

            flag, data = yolo.generate(data)
            if flag == True:
                flag, data = yolo.save(data, config["output_path"], config["img_path"] ,
                                       config["img_type"], config["records_path"])

                if flag == False:
                    print("Saving Result : {}, msg : {}".format(flag, data))

            else:
                print("YOLO Generating Result : {}, msg : {}".format(flag, data))


        else:
            print("VOC Parsing Result : {}, msg : {}".format(flag, data))


    elif config["datasets"] == "COCO":
        coco = COCO()
        yolo = YOLO(os.path.abspath(config["cls_list"]))

        flag, data = coco.parse(config["label"])

        if flag == True:
            flag, data = yolo.generate(data)

            if flag == True:
                flag, data = yolo.save(data, config["output_path"], config["img_path"],
                                        config["img_type"], config["records_path"])

                if flag == False:
                    print("Saving Result : {}, msg : {}".format(flag, data))

            else:
                print("YOLO Generating Result : {}, msg : {}".format(flag, data))

        else:
            print("COCO Parsing Result : {}, msg : {}".format(flag, data))

    else:
        print("Unkwon Datasets")
def main(config):
    if config["no_label"]:
        make_image_path(config)
        return
    coco = COCO()
    print(config["label"])
    print(config["img_path"])
    flag, data, cls_hierarchy = coco.parse(config["label"], config["img_path"])
    yolo = YOLO(os.path.abspath(config["cls_list"]),
                cls_hierarchy=cls_hierarchy)

    if flag == True:
        flag, data = yolo.generate(data)

        if flag == True:
            flag, data = yolo.save(data, config["output_path"],
                                   config["img_path"], config["img_type"],
                                   config["manifest_path"],
                                   config["manifest_name"])

            if flag == False:
                print("Saving Result : {}, msg : {}".format(flag, data))
        else:
            print("YOLO Generating Result : {}, msg : {}".format(flag, data))
    else:
        print("COCO Parsing Result : {}, msg : {}".format(flag, data))
Exemple #3
0
def main(config):
    if config["datasets"] == "VOC":
        voc = VOC()
        yolo = YOLO(os.path.abspath(config["cls_list"]))
        print('parsing...')

        flag, data = voc.parse(config["label"])
        if flag == True:
            print('parsing succeeded')
            flag, data = yolo.generate(data)
            if flag == True:
                print('saving results')
                if not os.path.exists(config["output_path"]):
                    os.makedirs(config["output_path"])
                flag, data = yolo.save(data, config["output_path"],
                                       config["img_path"], config["img_type"],
                                       config["manifest_path"])

                if flag == False:
                    print("Saving Result : {}, msg : {}".format(flag, data))

            else:
                print("YOLO Generating Result : {}, msg : {}".format(
                    flag, data))

        else:
            print("VOC Parsing Result : {}, msg : {}".format(flag, data))
Exemple #4
0
def main(config):

    if config["datasets"] == "VOC":
        voc = VOC()
        yolo = YOLO(os.path.abspath(config["cls_list"]))

        flag, data = voc.parse(config["label"])

        if flag == True:

            flag, data = yolo.generate(data)
            if flag == True:
                flag, data = yolo.save(data, config["output_path"],
                                       config["img_path"], config["img_type"],
                                       config["manipast_path"])

                if flag == False:
                    print("Saving Result : {}, msg : {}".format(flag, data))

            else:
                print("YOLO Generating Result : {}, msg : {}".format(
                    flag, data))

        else:
            print("VOC Parsing Result : {}, msg : {}".format(flag, data))

    elif config["datasets"] == "COCO":
        coco = COCO()
        yolo = YOLO(os.path.abspath(config["cls_list"]))

        flag, data = coco.parse(config["label"])

        if flag == True:
            flag, data, data_annotation = yolo.generate(data)

            if flag == True:
                flag, data = yolo.save_annotation(data, data_annotation,
                                                  config["output_path"],
                                                  config["img_path"],
                                                  config["img_type"],
                                                  config["manipast_path"])

                if flag == False:
                    print("Saving Result : {}, msg : {}".format(flag, data))

            else:
                print("YOLO Generating Result : {}, msg : {}".format(
                    flag, data))

        else:
            print("COCO Parsing Result : {}, msg : {}".format(flag, data))

    elif config["datasets"] == "UDACITY":
        udacity = UDACITY()
        yolo = YOLO(os.path.abspath(config["cls_list"]))

        flag, data = udacity.parse(config["label"])

        if flag == True:
            flag, data = yolo.generate(data)

            if flag == True:
                flag, data = yolo.save(data, config["output_path"],
                                       config["img_path"], config["img_type"],
                                       config["manipast_path"])

                if flag == False:
                    print("Saving Result : {}, msg : {}".format(flag, data))

            else:
                print("UDACITY Generating Result : {}, msg : {}".format(
                    flag, data))

        else:
            print("COCO Parsing Result : {}, msg : {}".format(flag, data))

    elif config["datasets"] == "KITTI":
        kitti = KITTI()
        yolo = YOLO(os.path.abspath(config["cls_list"]))

        flag, data = kitti.parse(config["label"],
                                 config["img_path"],
                                 img_type=config["img_type"])

        if flag == True:
            flag, data = yolo.generate(data)

            if flag == True:
                flag, data = yolo.save(data, config["output_path"],
                                       config["img_path"], config["img_type"],
                                       config["manipast_path"])

                if flag == False:
                    print("Saving Result : {}, msg : {}".format(flag, data))

            else:
                print("YOLO Generating Result : {}, msg : {}".format(
                    flag, data))

        else:
            print("KITTI Parsing Result : {}, msg : {}".format(flag, data))

    else:
        print("Unkwon Datasets")
Exemple #5
0
def generate_voc_annotations():
    image_num = 0
    images_train = []
    xml_files = get_xml_files()
    voc_format = VOC()
    yolo_format = YOLO(os.path.abspath(os.path.join(data_yolo, 'penelope.name').replace("\\", "/")))
    with tqdm(bar_format='{l_bar}{bar}{n_fmt}/{total_fmt} [{elapsed}<{remaining}]') as pbar:
        for xml_file in xml_files:
            root = ElementTree.parse(xml_file).getroot()

            title = root.get('title')
            pages = root.find('pages')

            pbar.total = len(xml_files)
            pbar.set_description("Labeling {0}".format(title), refresh=True)
            # pbar.reset()
            pbar.update()

            for page in pages:
                index_img = page.get('index').zfill(3)

                width = page.get('width')
                height = page.get('height')

                texts = page.findall('text')

                # Some page doesn't have texts
                if not texts:
                    continue

                image_path = os.path.join(images_dir, title, index_img + '.jpg').replace("\\", "/")
                new_image_path = os.path.join(data_yolo_labels, str(image_num) + '.jpg').replace("\\", "/")
                copyfile(image_path, new_image_path)

                images_train.append(new_image_path + '\n')

                voc_file = os.path.join(images_voc_dir, str(image_num) + '.xml').replace("\\", "/")
                voc_root = ElementTree.Element("annotations")
                ElementTree.SubElement(voc_root, "filename").text = "{}.jpg".format(image_num)
                ElementTree.SubElement(voc_root, "folder").text = new_image_path

                source = ElementTree.SubElement(voc_root, "source")
                ElementTree.SubElement(source, "database").text = "Unknown"

                size = ElementTree.SubElement(voc_root, "size")
                ElementTree.SubElement(size, "width").text = str(width)
                ElementTree.SubElement(size, "height").text = str(height)
                ElementTree.SubElement(size, "depth").text = "3"

                ElementTree.SubElement(voc_root, "segmented").text = str(0)

                for each_text in texts:
                    # Draw rectangle around the text
                    # +/- 10 because some letters are output of the rectangle
                    x_min = int(each_text.get('xmin')) - 10
                    x_max = int(each_text.get('xmax')) + 10
                    y_min = int(each_text.get('ymin')) - 10
                    y_max = int(each_text.get('ymax')) + 10

                    text = each_text.text
                    if text is not None:
                        obj = ElementTree.SubElement(voc_root, "object")
                        ElementTree.SubElement(obj, "name").text = "text"
                        ElementTree.SubElement(obj, "pose").text = "Unspecified"
                        ElementTree.SubElement(obj, "truncated").text = str(0)
                        ElementTree.SubElement(obj, "difficult").text = str(0)
                        bbox = ElementTree.SubElement(obj, "bndbox")
                        ElementTree.SubElement(bbox, "xmin").text = str(x_min)
                        ElementTree.SubElement(bbox, "ymin").text = str(y_min)
                        ElementTree.SubElement(bbox, "xmax").text = str(x_max)
                        ElementTree.SubElement(bbox, "ymax").text = str(y_max)

                        # TEST PYTESSERACT
                        # RESULT : FAILED
                        # image_roi = cv_image[y_min:y_max, x_min:x_max]
                        # configuration = "-l jpn_vert --oem 1 --psm 5"
                        # pytext = pytesseract.image_to_string(image_roi, config=configuration).replace("\n", "").replace(" ", "")
                        # if text == pytext:
                        #     print("It's equal {0} and {1}".format(text, pytext))
                        # else:
                        #     print("It's NOT equal {0} and {1}".format(text, pytext))
                        # assert text == pytext, "Difference between {0} and {1}".format(text, pytext)

                        # For debugging
                        # cv2.rectangle(cv_image, (int(x_min), int(y_min)), (int(x_max), int(y_max)), (0, 255, 0), 2)

                image_num = image_num + 1
                xml_str = minidom.parseString(ElementTree.tostring(voc_root)).toprettyxml(indent="   ")
                with open(voc_file, "w") as f:
                    f.write(xml_str)

    with open(os.path.join(data_yolo, 'train.txt').replace("\\", "/"), 'w') as f:
        f.writelines(images_train)

    flag, data = voc_format.parse(images_voc_dir)
    if flag:
        flag, data = yolo_format.generate(data)
        if flag:
            flag, data = yolo_format.save(data, data_yolo_labels, data_yolo_labels, '.jpg', data_yolo_labels)
            if not flag:
                print("Saving Result : {}, msg : {}".format(flag, data))
        else:
            print("YOLO Generating Result : {}, msg : {}".format(flag, data))
def main(config):

    if config["datasets"] == "VOC":
        voc = VOC()
        yolo = YOLO(os.path.abspath(config["cls_list"]))

        flag, data = voc.parse(config["label"])

        if flag == True:

            flag, data = yolo.generate(data)
            if flag == True:
                flag, data = yolo.save(data, config["output_path"],
                                       config["img_path"], config["img_type"],
                                       config["manifest_path"])

                if flag == False:
                    print("Saving Result : {}, msg : {}".format(flag, data))

            else:
                print("YOLO Generating Result : {}, msg : {}".format(
                    flag, data))

        else:
            print("VOC Parsing Result : {}, msg : {}".format(flag, data))

    elif config["datasets"] == "COCO":
        coco = COCO()

        keep = {
            "person", "bicycle", "car", "motorcycle", "bus", "train", "truck"
        }

        flag, data, cls_hierarchy = coco.parse(config["label"],
                                               config["img_path"],
                                               keep=keep)

        data = sampleDataset(data, config["num_samples"], keep, config["seed"])

        yolo = YOLO(os.path.abspath(config["cls_list"]),
                    cls_hierarchy=cls_hierarchy)

        if flag == True:
            flag, data = yolo.generate(data)

            if flag == True:
                flag, data = yolo.save(data, config["output_path"],
                                       config["img_path"], config["img_type"],
                                       config["manifest_path"])

                if flag == False:
                    print("Saving Result : {}, msg : {}".format(flag, data))

            else:
                print("YOLO Generating Result : {}, msg : {}".format(
                    flag, data))

        else:
            print("COCO Parsing Result : {}, msg : {}".format(flag, data))

    elif config["datasets"] == "UDACITY":
        udacity = UDACITY()
        yolo = YOLO(os.path.abspath(config["cls_list"]))

        flag, data = udacity.parse(config["label"])

        if flag == True:
            flag, data = yolo.generate(data)

            if flag == True:
                flag, data = yolo.save(data, config["output_path"],
                                       config["img_path"], config["img_type"],
                                       config["manifest_path"])

                if flag == False:
                    print("Saving Result : {}, msg : {}".format(flag, data))

            else:
                print("UDACITY Generating Result : {}, msg : {}".format(
                    flag, data))

        else:
            print("COCO Parsing Result : {}, msg : {}".format(flag, data))

    elif config["datasets"] == "KITTI":
        kitti = KITTI()
        yolo = YOLO(os.path.abspath(config["cls_list"]))

        flag, data = kitti.parse(config["label"],
                                 config["img_path"],
                                 img_type=config["img_type"])

        if flag == True:
            flag, data = yolo.generate(data)

            if flag == True:
                flag, data = yolo.save(data, config["output_path"],
                                       config["img_path"], config["img_type"],
                                       config["manifest_path"])

                if flag == False:
                    print("Saving Result : {}, msg : {}".format(flag, data))

            else:
                print("YOLO Generating Result : {}, msg : {}".format(
                    flag, data))

        else:
            print("KITTI Parsing Result : {}, msg : {}".format(flag, data))

    else:
        print("Unkwon Datasets")