Example #1
0
def add_box(path,boxes):
    # print(path)
    tree = ET.ElementTree(file=path)
    root = tree.getroot()
    for bndbox in boxes:
        root=XML.add_tag(root,bndbox)
    XML.write_xml(tree,path) 
def calculate_similarity_on_labels(baseName, checkName):
    # 1. Match labels
    global labelNumber
    scoreSoles = 0
    baseXml = os.path.join(xmlDir, baseName)
    checkXml = os.path.join(xmlDir, checkName)
    baseObjs = XML.read_objects(baseXml)
    checkObjs = XML.read_objects(checkXml)
    for checkObj in checkObjs:
        if checkObj['name'] in forceFetch:
            return 0
    labelNumber += len(baseObjs) + len(checkObjs)
    pairs, baseSoles, checkSoles = match_labels(baseObjs, checkObjs)
    # 2. Calculate similarity of each pair labels which containing roi similarity and location similarity
    availablePairLenth = len(pairs)
    # for pair in pairs:
    #     if pair[0]['name'] in ignoreLabels:
    #         availablePairLenth-=1
    if availablePairLenth > 0:
        similarity = pair_similarity(pairs, baseName, checkName)
        for baseSole in baseSoles:
            scoreSoles += 1 / weight[baseSole['name']]
        for checkSole in checkSoles:
            scoreSoles += 1 / weight[checkSole['name']]

        print('mother={}+{}+{}'.format(availablePairLenth, scoreSoles,
                                       scoreSoles))
        similarity = similarity / (availablePairLenth + scoreSoles +
                                   scoreSoles)
        return similarity
    else:
        # print(baseSole)
        # print(checkSole)
        return 0
Example #3
0
def regular_xml(path, filename):
    global count
    tree = ET.ElementTree(file=path)
    root = tree.getroot()
    XML.chk_label(root, sizeThreshDict)
    XML.chag_size(root, filename, width, height)
    XML.chag_filename(root, filename)
    XML.thresh_size(root, width, sizeThreshDict)
    XML.write_xml(tree, path)
Example #4
0
def regular_xml(path, filename):
    global count
    tree = ET.ElementTree(file=path)
    root = tree.getroot()
    # XML.chag_label(root,labelDict) # 修改label名称
    # root=XML.del_tag(root,names) # 删除指定label
    root = XML.save_tag(root, names)  # 只保留指定label
    # root=XML.thresh_size(path,root,sizeThresh,sizeThreshNames)
    XML.write_xml(tree, path)
def add_new_cates(xmlPath,referPath,addCates):
    addBoxes=XML.read_objects(referPath)
    tree = ET.ElementTree(file=xmlPath)
    root = tree.getroot()
    root=XML.del_tag(root,addCates)
    # print(addBoxes)
    for box in addBoxes:
        if box['name'] in addCates:
            root=XML.add_tag(root,box)
    XML.write_xml(tree,xmlPath)           
Example #6
0
def calculate_similarity_on_labels(baseName, checkName):
    # 1. Match labels
    global labelNumber
    scoreSoles = 0
    baseXml = os.path.join(xmlDir, baseName)
    checkXml = os.path.join(xmlDir, checkName)
    baseObjs = XML.read_objects_exclude_minsize(baseXml)
    checkObjs = XML.read_objects_exclude_minsize(checkXml)
    for checkObj in checkObjs:
        if checkObj['name'] in forceFetch:
            return 100
    labelNumber += len(baseObjs) + len(checkObjs)
    similarity = match_labels(baseObjs, checkObjs)
    return similarity
Example #7
0
def regular_xml(newxmlPath, img, newimg):
    print(newxmlPath, xml, newxml)

    tree = ET.ElementTree(file=newxmlPath)
    root = tree.getroot()

    for obj in root.findall('filename'):
        print(obj.text)
        obj.text = newimg

    for obj in root.findall('path'):
        print(obj.text)
        obj.text = obj.text.replace(img, newimg)

    XML.write_xml(tree, newxmlPath)
Example #8
0
def filter_by_cate(allXmls, cateName):
    filteredXmls = []
    viewCount = 0
    xmlSum = len(allXmls)
    for xml in allXmls:
        xmlPath = os.path.join(xmlDir, xml)
        objs = XML.read_objects(xmlPath)
        for obj in objs:
            objName = obj['name']
            if objName == cateName:
                filteredXmls.append(xml)
        viewCount += 1
        sys.stdout.write('\rFiltering xmls >>{count:.2f}%'.format(
            count=100 * float(viewCount) / xmlSum))
        # sys.stdout.write('\r>> Detecting {name} {count:.2f}%'.format(name=videoPath.split('/')[-1],count=(100*float(i)/total_frames)))
        sys.stdout.flush()
    return filteredXmls
def analyze_xml(path):

    objs = XML.read_objects(path)
    #print(objs)

    for obj in objs:
        name = obj['name']
        '''
        if name in ['、', 'microbus_foreign\n', 'micorbus_foreign', 'car_pickup', 'truck_foregin', 'suv_foreign']:
            print(path)
            print(obj)
            exit()
        '''
        if name not in count.info:
            count.addtag(name)
        else:
            count.update(name)
        count.count()

        xmin = int(obj['xmin'])
        ymin = int(obj['ymin'])
        xmax = int(obj['xmax'])
        ymax = int(obj['ymax'])
        w = xmax - xmin
        h = ymax - ymin
        scale = round(np.sqrt(w * h))

        nn = int(scale / 25) + 1
        scale = nn * 25
        '''
        if scale >2000:
            print(path)
            print(obj)
            exit()
        '''

        if scale not in count2.info:
            count2.addtag(scale)
        else:
            count2.update(scale)
        count2.count()
Example #10
0
 augNameList=['close','cover','open']
 xmlDir=r"/DATACENTER2/yh/detectron/caffe2/train/safebox/faster_voc/11469/xml_1713"
 tarDir=r"/DATACENTER2/yh/detectron/caffe2/train/safebox/faster_voc/11469/xml_1713_aug"
 FILES.mkdir(tarDir)
 allXmls=[x for x in FILES.get_sorted_files(xmlDir) if ".xml" in x]
 cur=0
 bgn=800 #包含
 end=1900 #包含
 for xml in allXmls:
     cur+=1
     # print(cur) #第cur个文件
     if cur>=bgn and cur<=end:
         xmlPath=xmlDir+'/'+xml
         tarXmlPath=tarDir+'/'+xml
         shutil.copy(xmlPath,tarXmlPath)
         BBOXES=XML.read_object(xmlPath)
         for augRate_xmin in range(0,5):
             augValue_xmin=augRate_xmin*0.02
             for augRate_xmax in range(0,5):
                 augValue_xmax=augRate_xmax*0.02
                 for augRate_ymin in range(0,5):
                     augValue_ymin=augRate_ymin*0.02
                     for augRate_ymax in range(0,5):
                         augValue_ymax=augRate_ymax*0.02
                         if augRate_xmin+augRate_xmax+augRate_ymin+augRate_ymax!=0:
                             bboxes=[]
                             for i in range(len(BBOXES)):
                                 if BBOXES[i][0] in augNameList and check_overlap(BBOXES[i],BBOXES):
                                     bboxes.append(trans_box(BBOXES[i],augValue_xmin,augValue_ymin,augValue_xmax,augValue_ymax))
                             try:
                                 add_box(tarXmlPath,bboxes)
Example #11
0
        if top_labels:
            #outImg
            image, labels, xmins, ymins, xmaxs, ymaxs = drawImg(
                image, top_labels, top_xmin, top_ymin, top_xmax, top_ymax,
                top_scores)
            # desImg = os.path.join(outImg,file)
            # cv2.imwrite(desImg,image)
            # # outXml
            if len(labels) > 0:
                tarXml = os.path.join(tarXmlDir, file.split('.')[0] + '.xml')
                shutil.copy(referXml, tarXml)
                tree = ET.ElementTree(file=tarXml)
                root = tree.getroot()
                for i in range(len(labels)):
                    # if labels[i] not in ["close","open","cover"]:
                    if 1 > 0:
                        xmin = str(xmins[i])
                        ymin = str(ymins[i])
                        xmax = str(xmaxs[i])
                        ymax = str(ymaxs[i])
                        # print(labels[i],xmin,ymin,xmax,ymax)
                        obj = {
                            'name': labels[i],
                            'xmin': xmin,
                            'ymin': ymin,
                            'xmax': xmax,
                            'ymax': ymax
                        }
                        XML.add_tag(root, obj)
                        XML.write_xml(tree, tarXml)
Example #12
0
def changeXmlLabelName(path, labelDict):
    tree = ET.ElementTree(file=path)
    root = tree.getroot()
    root = XML.del_tag(root, ["13"])
    root = XML.chag_name(root, labelDict)
    XML.write_xml(tree, path)
Example #13
0
def countObj(path):
    boxes = XML.read_object(path)
    return (len(boxes))
Example #14
0
def regular_xml(path, changeLabelDict):
    global count
    tree = ET.ElementTree(file=path)
    root = tree.getroot()
    XML.chag_label(root, changeLabelDict, tag="object")
    XML.write_xml(tree, path)
Example #15
0
labelXmlDir = r'/disk2/hao.yang/project/Qin/data/imgs/isle/modelxml_isle_17117_havered/'
# checkedDir='/disk2/hao.yang/project/Qin/data/xmls/checkout/complete'
attentionNames = ['red']
confuseNames = ['yellow', 'other', 'blue']
count = 0
allChecked = []
# allChecked=[x for x in FILES.get_sorted_files(checkedDir) if ".xml" in x]
allXmls = [
    x for x in FILES.get_sorted_files(modelXmlDir)
    if ".xml" in x and x not in allChecked
]
for xml in allXmls:
    labelXmlPath = os.path.join(labelXmlDir, xml)
    modelXmlPath = os.path.join(modelXmlDir, xml)
    if os.path.exists(labelXmlPath):
        labelObjs = XML.read_objects(labelXmlPath)
        modelObjs = XML.read_objects(modelXmlPath)
        newObjs = []
        for labelObj in labelObjs:
            if labelObj['name'] in confuseNames:
                newObjs.append(fuse(labelObj, modelObjs))
            else:
                newObjs.append(labelObj)
        tree = ET.ElementTree(file=labelXmlPath)
        root = tree.getroot()
        XML.del_all_tag(root)
        for box in newObjs:
            root = XML.add_tag(root, box)
        XML.write_xml(tree, labelXmlPath)
# FILES.copy_files_refer_dir(imgDir,'.jpg',badDir,badDir)
Example #16
0
        # font_label = ImageFont.truetype('/DATACENTER2/yh/resources/heiti.TTF',50)
        # img_PIL = Image.fromarray(cv2.cvtColor(image,cv2.COLOR_BGR2RGB)) # cv2==>PIL
        # draw = ImageDraw.Draw(img_PIL)
        # draw.text((xmin,ymax-50),label_name,font_color,font=font_label)
        # image = cv2.cvtColor(numpy.asarray(img_PIL),cv2.COLOR_RGB2BGR) # PIL==>cv2
    # img_PIL = Image.fromarray(cv2.cvtColor(image,cv2.COLOR_BGR2RGB)) # cv2==>PIL
    # draw = ImageDraw.Draw(img_PIL)
    # image = cv2.cvtColor(numpy.asarray(img_PIL),cv2.COLOR_RGB2BGR) # PIL==>cv2
    return image


if __name__ == "__main__":
    start = time.time()
    jpgDir = r"/disk2/hao.yang/project/Qin/data/xmls/isle/complete/imgs_overlook_16000_test/"
    xmlDir = r"/disk2/hao.yang/project/Qin/data/xmls/isle/complete/isle_FMXX_test_16000/"
    outDir = r"/disk2/hao.yang/project/Qin/data/xmls/isle/complete/imgs_overlook_16000_test_truth/"
    FILES.rm_mkdir(outDir)
    allJpgs = FILES.get_files(jpgDir)
    for jpg in allJpgs:
        # print(jpg)
        if '.jpg' in jpg:
            jpgPath = os.path.join(jpgDir, jpg)
            xmlPath = os.path.join(xmlDir, jpg.split('.')[0] + '.xml')
            objs = XML.read_objects(xmlPath)
            image = cv2.imread(jpgPath)
            img = drawXml(image, objs)
            desImg = os.path.join(outDir, jpg)
            cv2.imwrite(desImg, img)

    # extraFrames(davDir,mp4Dir)
Example #17
0
def checkName(path, name):
    boxes = XML.read_object(path)
    for box in boxes:
        if box[0] == name:
            return 1
    return 0
Example #18
0
bigNames = []
# bigNames不可能有漏标,如果漏掉,必然是故意的,所以不算错误
count = 0
allChecked = [x for x in FILES.get_sorted_files(checkedDir) if ".xml" in x]
if allChecked:
    allXmls = [
        x for x in FILES.get_sorted_files(labelXmlDir)
        if ".xml" in x and x not in allChecked
    ]
else:
    allXmls = [x for x in FILES.get_sorted_files(modelXmlDir) if ".xml" in x]
for xml in tqdm(allXmls):
    labelXmlPath = os.path.join(labelXmlDir, xml)
    modelXmlPath = os.path.join(modelXmlDir, xml)
    if os.path.exists(labelXmlPath):
        modelObjs = XML.read_objects(modelXmlPath)
        labelObjs = XML.read_objects(labelXmlPath)
        differ = 0
        differ, newObjs = combine(modelObjs, labelObjs)
        if differ:
            badXmlPath = os.path.join(badDir, xml)
            shutil.copy(labelXmlPath, badXmlPath)
            # tree = ET.ElementTree(file=badXmlPath)
            # root = tree.getroot()
            # root=XML.del_all_tag(root)
            # for boj in newObjs:
            #     root=XML.add_tag(root,boj)
            # XML.write_xml(tree,badXmlPath)
        count += differ
print(count)
# for modelObj in modelObjs: