Turoad/CLRNet

Training on Custom dataset

Opened this issue · 6 comments

Hi, would appreciate your thoughts on training on a custom dataset. My image are about 1400x1000 in shape. I've changed the below variables in the config file:

ori_img_w = 1000
ori_img_h = 1400
img_w = 1000
img_h = 1400
cut_height = 0
sample_y = range(ori_img_h - 1, 0, -20)

Since I cannot resize the image, org_img_h/w and img_h/w are the same. Based on your intuition what are the other aspects/hyper-parameters should I focus on? Since the images are portrait (H>W),do any specific recommendation for a data set with such images?

Sorry, not a response to your question : Were you able to train on the provided dataset? For me I get the max recursion error and if I change the default python recursion value, it just hung after "Start training" message.

Sorry, not a response to your question : Were you able to train on the provided dataset? For me I get the max recursion error and if I change the default python recursion value, it just hung after "Start training" message.

Yes, I was able to train fine on CULane

@AshwinAKannan - which dataset format did you use for your custom dataset?

@AshwinAKannan - which dataset format did you use for your custom dataset?

I am using CULane dataset format

@AshwinAKannan - which dataset format did you use for your custom dataset?

I am using CULane dataset format

@AshwinAKannan is it possible to share a link to the tool used for labeling with CULane format?

@mindmad my code is derived from llamas.py (lines 115 to 121). Here's is what it looks like (modify load_annotation function. It'll create seg map on the fly)

    if mask_path and not os.path.exists(mask_path):

            seg = np.zeros((self.cfg.ori_img_h, self.cfg.ori_img_w, 3))
            for i, lane in enumerate(lanes):

                class_id = get_class_id(i)
                
                for j in range(0, len(lane) - 1):
                    cv2.line(seg, (round(lane[j][0]), round(lane[j][1])),
                         (round(lane[j + 1][0]), round(lane[j + 1][1])),
                             (class_id, class_id, class_id),    
                         thickness=15)

            cv2.imwrite(mask_path, seg)