Skip to content

only got val_acc of 20.22 on the validation set after trained for 200 epochs #1

@Jacksky2017

Description

@Jacksky2017

Hi~ the code of generating the file 'instanceSegDB_person_train.pkl' seems to be absent. So, I borrowed some code from your repository of 'PointTrack' and amended them to get the right formation of the instances blocks, illustrated below. I'm not sure whether they are right or not. The generated file 'instanceSegDB_person_train.pkl' contains 74 instances blocks with the source from the training set of Kitti MOTS. Without KINS for finetuning, I used 'python train_e2e.py person_mots_ccpnet' to train the model on 5 GPUs for 200 epochs with an initial learning rate '5e-4'. Finally, I only got val_acc of 20.22. I'm confused where is the problem?

Looking forward to your reply!

OBJ_ID = 2
instIDs = dict()
instList = dict()
count=0
SEQ_IDS_TRAIN = ["%04d" % idx for idx in [0, 1, 3, 4, 5, 9, 11, 12, 15, 17, 19, 20]]
SEQ_IDS_VAL = ["%04d" % idx for idx in [2, 6, 7, 8, 10, 13, 14, 16, 18]]

def getImgLabel(img_path, label_path):
    img = cv2.imread(img_path)
    label = np.array(Image.open(label_path))
    mask = np.logical_and(label >= OBJ_ID * 1000, label < (OBJ_ID + 1) * 1000)
    label[(1-mask).astype(np.bool)] = 0
    return img, label

def getPairs(id):
    global instIDs, instList, count
    label_root = os.path.join(kittiRoot, "instances/" + id)
    image_root = label_root.replace('instances', 'images')

    image_list = make_dataset(image_root, suffix='.png')
    image_list.sort()
    label_list = make_dataset(label_root, suffix='.png')
    label_list.sort()
    count_offset = count
    for ind, image_path in enumerate(image_list):
        img, label = getImgLabel(image_list[ind], label_list[ind])
        if np.unique(label).shape[0] == 1:
            continue

        obj_ids = np.unique(label).tolist()[1:]
        for id in obj_ids:
            mask = (label == id).astype(np.uint8)
            vs, us = np.nonzero(mask)
            v0, v1 = vs.min(), vs.max()
            u0, u1 = us.min(), us.max()
            inst_id = id + count_offset
            sp = [v0, u0]
            imgCrop = img[v0:v1 + 1, u0:u1 + 1]
            xyxy = [u0, v0, u1, v1]
            maskCrop = mask[v0:v1 + 1, u0:u1 + 1]
            if inst_id in instIDs.keys():
                instList[instIDs[inst_id]].append({'inst_id': inst_id, 'sp': sp, 'xyxy': xyxy, 'img': imgCrop, 'mask': maskCrop})
            else:
                
                instIDs[inst_id] = count
                instList[count] = [{'inst_id': inst_id, 'sp': sp, 'xyxy': xyxy, 'img': imgCrop, 'mask': maskCrop}]
                count = count + 1

for i in SEQ_IDS_TRAIN:
    getPairs(i)
    print('process %s seq' % i)
print('trainSet %s samples' % count)
save_pickle2(os.path.join(kittiRoot, 'instanceSegDB_person_train.pkl'), instList)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions