WenmuZhou / DBNet.pytorch

A pytorch re-implementation of Real-time Scene Text Detection with Differentiable Binarization
Apache License 2.0
956 stars 248 forks source link

家人们我好像发现了个盲点 #152

Open Eric-Sunxr opened 2 years ago

Eric-Sunxr commented 2 years ago

我单独再TotalText训练集和CTW1500训练集上面疯狂训练,然后效果都还挺低的六七十这样,然后重温论文突然发现实验细节中有一句所有模型均在SynthText上训练之后微调,所以是由于这个原因所以才会这样的嘛?还是我的超参数设置不对呀?

wang1234871 commented 2 years ago

遇到了同样的问题,蹲个点

Zplusdragon commented 2 years ago

应该是先在SynthText上进行预训练后再在其他数据集上进行微调训练吧

wang1234871 commented 2 years ago

刚debug了一下,对于totaltext数据集,对于一张图片中坐标点个数不一样的图片是没有进行加载的,比如,一张图片中有三个文本,第一个文本12个点,第二、三个文本8个点,那么这张图片就没有参与训练,但是我又不会改,不知道改哪里,如果你会改的话告我一下

Eric-Sunxr commented 2 years ago

应该是先在SynthText上进行预训练后再在其他数据集上进行微调训练吧 我使用官方那个DB代码的预训练模型finetune不知道为啥一点效果都没有5555

Eric-Sunxr commented 2 years ago

刚debug了一下,对于totaltext数据集,对于一张图片中坐标点个数不一样的图片是没有进行加载的,比如,一张图片中有三个文本,第一个文本12个点,第二、三个文本8个点,那么这张图片就没有参与训练,但是我又不会改,不知道改哪里,如果你会改的话告我一下

我使用的是转换成Coco的数据,然后写的数据读取是这样的。 `class CocoDataset(BaseDataSet): def init(self, data_path: str, img_mode, pre_processes, filter_keys, ignore_tags, transform=None, **kwargs): super().init(data_path, img_mode, pre_processes, filter_keys, ignore_tags, transform)

def load_data(self,data_path: str) -> list:
    data_path=data_path[0]
    file=COCO(annotation_file=data_path)# 这里的路径是一个列表哦
    data_list=[]
    root_path='/'+os.path.join(*(data_path.split('/')[:-1]))
    # 针对不同的数据集进行root path的修改
    if "totaltext" in data_path:
        if "train" in data_path:
            root_path=root_path+"/Images/Train"
        elif "test" in data_path or "val" in data_path:
            root_path=root_path+"/Images/Test"
    elif "ctw" in data_path:
        if "train" in data_path:
            root_path=root_path+"/train/text_image"
        elif "test" in data_path:
            root_path=root_path+"/test/text_image"
    elif "mlt" in data_path:
        root_path=root_path

    for id,image_info in tqdm(file.imgs.items()):
        img_path=os.path.join(root_path,image_info['file_name'])
        img_name=pathlib.Path(img_path).stem
        #获取标注
        label_id=image_info['id']
        ann_ids=file.getAnnIds(imgIds=label_id)
        annotation=file.loadAnns(ann_ids)
        boxes=[]
        texts=[]
        ignores=[]
        for ann in annotation:
            boxes.append(np.array(ann['segmentation'],dtype="float32").reshape(-1,2))
            if 'transcription' in ann.keys():
                texts.append(ann['transcription'])
                ignores.append(ann['transcription'] in self.ignore_tags)
            else:
                texts.append('None')
                ignores.append(False)
        # text_polys=np.array(boxes)#CWT1500
        text_polys=boxes
        data_list.append({
            'img_path': img_path,
            'img_name': img_name,
            'text_polys': text_polys,
            'texts': texts,
            'ignore_tags': ignores
        })
    return data_list

`

SWHL commented 2 years ago

应该是先在SynthText上进行预训练后再在其他数据集上进行微调训练吧

是的,都是先在SynthText上预训练的

huahuabai commented 2 years ago

您好,请问您在训练CTW数据集时有没有遇到这个问题呀 image

wangzhenyan001 commented 11 months ago

我单独再TotalText训练集和CTW1500训练集上面疯狂训练,然后效果都还挺低的六七十这样,然后重温论文突然发现实验细节中有一句所有模型均在SynthText上训练之后微调,所以是由于这个原因所以才会这样的嘛?还是我的超参数设置不对呀?

大佬您好,方便咨询一下CTW1500是怎样打标注,用代码当中哪个进行训练吗?是用DetDataset这个吗?