diff --git a/common/vision/datasets/__init__.py b/common/vision/datasets/__init__.py index c8813b58..770bc4cd 100644 --- a/common/vision/datasets/__init__.py +++ b/common/vision/datasets/__init__.py @@ -20,7 +20,8 @@ from .retinopathy import Retinopathy from .eurosat import EuroSAT from .resisc45 import Resisc45 +from .rareplanes import Rareplanes __all__ = ['ImageList', 'Office31', 'OfficeHome', "VisDA2017", "OfficeCaltech", "DomainNet", "ImageNetR", "ImageNetSketch", "Aircraft", "cub200", "StanfordCars", "StanfordDogs", "COCO70", "OxfordIIITPet", "PACS", "DTD", - "OxfordFlowers102", "PatchCamelyon", "Retinopathy", "EuroSAT", "Resisc45"] + "OxfordFlowers102", "PatchCamelyon", "Retinopathy", "EuroSAT", "Resisc45", "Rareplanes"] diff --git a/common/vision/datasets/rareplanes.py b/common/vision/datasets/rareplanes.py new file mode 100644 index 00000000..747246a8 --- /dev/null +++ b/common/vision/datasets/rareplanes.py @@ -0,0 +1,57 @@ +""" +@author: Hao Chen +@contact: chanhal@outlook.com +""" +import os +from typing import Optional +from .imagelist import ImageList +from ._util import download as download_data, check_exits + + +class Rareplanes(ImageList): + """`OfficeHome `_ Dataset. + + Args: + root (str): Root directory of dataset + task (str): The task (domain) to create dataset. Choices include ``'Ar'``: Art, \ + ``'Cl'``: Clipart, ``'Pr'``: Product and ``'Rw'``: Real_World. + download (bool, optional): If true, downloads the dataset from the internet and puts it \ + in root directory. If dataset is already downloaded, it is not downloaded again. + transform (callable, optional): A function/transform that takes in an PIL image and returns a \ + transformed version. E.g, :class:`torchvision.transforms.RandomCrop`. + target_transform (callable, optional): A function/transform that takes in the target and transforms it. + + .. note:: In `root`, there will exist following files after downloading. + :: + rareplanes/ + Alarm_Clock/*.jpg + ... + fgvc/ + image_list/ + rareplanes.txt + fgvc.txt + """ + download_list = [ + ] + image_list = { + "rareplanes": "image_list/rareplanes.txt", + "fgvc": "image_list/fgvc.txt", + } + CLASSES = ['707-320','Boeing_717','727-200','737-200','737-300','747-200','757-300','767-200', + '767-400','777-300','A300B4','A319','A320','A330-300','A340-300','A380','Cessna_172', + 'BAE_146-300','Fokker_100','MD-11'] + + def __init__(self, root: str, task: str, download: Optional[bool] = False, **kwargs): + assert task in self.image_list + data_list_file = os.path.join(root, self.image_list[task]) + + if download: + list(map(lambda args: download_data(root, *args), self.download_list)) + else: + list(map(lambda file_name, _: check_exits(root, file_name), self.download_list)) + + super(Rareplanes, self).__init__(root, Rareplanes.CLASSES, data_list_file=data_list_file, **kwargs) + + @classmethod + def domains(cls): + return list(cls.image_list.keys()) \ No newline at end of file diff --git a/examples/domain_adaptation/image_classification/dann.py b/examples/domain_adaptation/image_classification/dann.py index 034ecae6..2592ccc4 100644 --- a/examples/domain_adaptation/image_classification/dann.py +++ b/examples/domain_adaptation/image_classification/dann.py @@ -203,9 +203,10 @@ def train(train_source_iter: ForeverDataIterator, train_target_iter: ForeverData # dataset parameters parser.add_argument('root', metavar='DIR', help='root path of dataset') - parser.add_argument('-d', '--data', metavar='DATA', default='Office31', choices=utils.get_dataset_names(), - help='dataset: ' + ' | '.join(utils.get_dataset_names()) + - ' (default: Office31)') + # parser.add_argument('-d', '--data', metavar='DATA', default='Office31', choices=utils.get_dataset_names(), + # help='dataset: ' + ' | '.join(utils.get_dataset_names()) + + # ' (default: Office31)') + parser.add_argument('-d', '--data', default='default') # -chh parser.add_argument('-s', '--source', help='source domain(s)', nargs='+') parser.add_argument('-t', '--target', help='target domain(s)', nargs='+') parser.add_argument('--train-resizing', type=str, default='default')