IDEA-Research / detrex

detrex is a research platform for DETR-based object detection, segmentation, pose estimation and other visual recognition tasks.
https://detrex.readthedocs.io/en/latest/
Apache License 2.0
1.9k stars 199 forks source link

How to Fine-tune with pretrained weights from Model Zoo on custom datasets? #311

Open guoqsGary opened 9 months ago

guoqsGary commented 9 months ago

How to Fine-tune with pretrained weights from Model Zoo on custom datasets? change the init_checkpoint where: train.init_checkpoint = "detectron2://ImageNetPretrained/torchvision/R-50.pkl" ?

rentainhe commented 9 months ago

How to Fine-tune with pretrained weights from Model Zoo on custom datasets? change the init_checkpoint where: train.init_checkpoint = "detectron2://ImageNetPretrained/torchvision/R-50.pkl" ?

Yes, you can simply update config by setting train.init_checkpoint to the pretrained weights then train on your own dataset

guoqsGary commented 9 months ago

Thanks! I want to ask an other question. How to visualize predictions on my own datasets? I have regist my dataset in "coco_detr.py" but still got the error "KeyError: "Dataset 'my_dataset_test' is not registered!"

rentainhe commented 9 months ago

Thanks! I want to ask an other question. How to visualize predictions on my own datasets? I have regist my dataset in "coco_detr.py" but still got the error "KeyError: "Dataset 'my_dataset_test' is not registered!"

Would you like to share the whole content of you config, which may be helpful for us to check the issue

guoqsGary commented 9 months ago

from omegaconf import OmegaConf

import detectron2.data.transforms as T from detectron2.config import LazyCall as L from detectron2.data import ( build_detection_test_loader, build_detection_train_loader, get_detection_dataset_dicts, ) from detectron2.data.datasets import register_coco_instances from detectron2.evaluation import COCOEvaluator

from detrex.data import DetrDatasetMapper

dataloader = OmegaConf.create()

register_coco_instances("my_dataset_train", {}, '/home/workspace/datasets/annotations/instances_train2017.json', '/home/workspace/datasets/train2017') register_coco_instances("my_dataset_test", {}, '/home/workspace/datasets/annotations/instances_val2017.json', '/home/workspace/datasets/val2017')

dataloader.train = L(build_detection_train_loader)( dataset=L(get_detection_dataset_dicts)(names="my_dataset_train"), mapper=L(DetrDatasetMapper)( augmentation=[ L(T.RandomFlip)(), L(T.ResizeShortestEdge)( short_edge_length=(480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800), max_size=1333, sample_style="choice", ), ], augmentation_with_crop=[ L(T.RandomFlip)(), L(T.ResizeShortestEdge)( short_edge_length=(400, 500, 600), sample_style="choice", ), L(T.RandomCrop)( crop_type="absolute_range", crop_size=(384, 600), ), L(T.ResizeShortestEdge)( short_edge_length=(480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800), max_size=1333, sample_style="choice", ), ], is_train=True, mask_on=False, img_format="RGB", ), total_batch_size=4, num_workers=4, )

dataloader.test = L(build_detection_test_loader)( dataset=L(get_detection_dataset_dicts)(names="my_dataset_test", filter_empty=False), mapper=L(DetrDatasetMapper)( augmentation=[ L(T.ResizeShortestEdge)( short_edge_length=800, max_size=1333, ), ], augmentation_with_crop=None, is_train=False, mask_on=False, img_format="RGB", ), num_workers=4, )

dataloader.evaluator = L(COCOEvaluator)( dataset_name="${..test.dataset.names}", )

Thanks! I want to ask an other question. How to visualize predictions on my own datasets? I have regist my dataset in "coco_detr.py" but still got the error "KeyError: "Dataset 'my_dataset_test' is not registered!"

Would you like to share the whole content of you config, which may be helpful for us to check the issue