Ejemplo n.º 1
0
def main():
    pp = pprint.PrettyPrinter(indent=4)

    img_path = args.img_path
    print("imageee path",img_path)
    label_path = args.label_path
    img_type = args.img_type
    datasets = args.datasets
    cls_list = args.cls_list_file

    result = None
    data = None

    if datasets == "COCO":
        coco = COCO()
        result, data = coco.parse(label_path)
    elif datasets == "VOC":
        voc = VOC()
        result, data = voc.parse(label_path)
    elif datasets == "UDACITY":
        udacity = UDACITY()
        result, data = udacity.parse(label_path, img_path)
    elif datasets == "KITTI":
        kitti = KITTI()
        result, data = kitti.parse(label_path, img_path, img_type=img_type)
    elif datasets == "YOLO":
        yolo =YOLO(os.path.abspath(cls_list))
        result, data = yolo.parse(label_path, img_path, img_type=img_type)

    if result is True:
        for key in data:

            filepath = "".join([img_path, key, img_type])

            im = Image.open(filepath)

            draw = ImageDraw.Draw(im)
            print("data['{}']: ".format(key), end="")
            pp.pprint(data[key])
            print("num_object : {}".format(data[key]["objects"]["num_obj"]))
            for idx in range(0, int(data[key]["objects"]["num_obj"])):
                print("idx {}, name : {}, bndbox :{}".format(idx, data[key]["objects"][str(idx)]["name"], data[key]["objects"][str(idx)]["bndbox"]))

                x0 = data[key]["objects"][str(idx)]["bndbox"]["xmin"]
                y0 = data[key]["objects"][str(idx)]["bndbox"]["ymin"]
                x1 = data[key]["objects"][str(idx)]["bndbox"]["xmax"]
                y1 = data[key]["objects"][str(idx)]["bndbox"]["ymax"]

                draw.rectangle(((x0,y0), (x1,y1)), outline='#00ff88')
                draw.text((x0,y0), data[key]["objects"][str(idx)]["name"])

            del draw
            print("===============================================================================================\n\n")
            plt.imshow(im)
            plt.show()
            plt.clf()
            im.close()

    else:
        print("return value : {}, msg : {}, args: {}".format(result, data, args))
Ejemplo n.º 2
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))
Ejemplo n.º 3
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"],
                                       config["train"])

                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))
    else:
        print("Unknown Datasets")
Ejemplo n.º 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")
Ejemplo n.º 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))
Ejemplo n.º 6
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["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")