From 8330d78a9d232c8f6a70a5755f25157e4eaa16eb Mon Sep 17 00:00:00 2001 From: chanhal Date: Thu, 25 Nov 2021 10:22:04 +0800 Subject: [PATCH 1/3] r --- common/vision/datasets/rareplanes.py | 65 ++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 common/vision/datasets/rareplanes.py diff --git a/common/vision/datasets/rareplanes.py b/common/vision/datasets/rareplanes.py new file mode 100644 index 00000000..a5cdb764 --- /dev/null +++ b/common/vision/datasets/rareplanes.py @@ -0,0 +1,65 @@ +""" +@author: Junguang Jiang +@contact: JiangJunguang1123@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. + :: + Art/ + Alarm_Clock/*.jpg + ... + Clipart/ + Product/ + Real_World/ + image_list/ + Art.txt + Clipart.txt + Product.txt + Real_World.txt + """ + download_list = [ + ] + image_list = { + "rareplanes": "image_list/rareplanes.txt", + "fgvc": "image_list/fgvc.txt", + } + CLASSES = ['Drill', 'Exit_Sign', 'Bottle', 'Glasses', 'Computer', 'File_Cabinet', 'Shelf', 'Toys', 'Sink', + 'Laptop', 'Kettle', 'Folder', 'Keyboard', 'Flipflops', 'Pencil', 'Bed', 'Hammer', 'ToothBrush', 'Couch', + 'Bike', 'Postit_Notes', 'Mug', 'Webcam', 'Desk_Lamp', 'Telephone', 'Helmet', 'Mouse', 'Pen', 'Monitor', + 'Mop', 'Sneakers', 'Notebook', 'Backpack', 'Alarm_Clock', 'Push_Pin', 'Paper_Clip', 'Batteries', 'Radio', + 'Fan', 'Ruler', 'Pan', 'Screwdriver', 'Trash_Can', 'Printer', 'Speaker', 'Eraser', 'Bucket', 'Chair', + 'Calendar', 'Calculator', 'Flowers', 'Lamp_Shade', 'Spoon', 'Candles', 'Clipboards', 'Scissors', 'TV', + 'Curtains', 'Fork', 'Soda', 'Table', 'Knives', 'Oven', 'Refrigerator', 'Marker'] + + 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 From a6ebe50828dc8a4b24efbd682cf22bf540bb8347 Mon Sep 17 00:00:00 2001 From: chanhal Date: Fri, 26 Nov 2021 09:29:51 +0800 Subject: [PATCH 2/3] r --- common/vision/datasets/__init__.py | 3 ++- common/vision/datasets/rareplanes.py | 26 +++++++------------ .../image_classification/dann.py | 7 ++--- .../image_classification/utils.py | 5 ++++ 4 files changed, 20 insertions(+), 21 deletions(-) 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 index a5cdb764..747246a8 100644 --- a/common/vision/datasets/rareplanes.py +++ b/common/vision/datasets/rareplanes.py @@ -1,6 +1,6 @@ """ -@author: Junguang Jiang -@contact: JiangJunguang1123@outlook.com +@author: Hao Chen +@contact: chanhal@outlook.com """ import os from typing import Optional @@ -23,17 +23,13 @@ class Rareplanes(ImageList): .. note:: In `root`, there will exist following files after downloading. :: - Art/ + rareplanes/ Alarm_Clock/*.jpg ... - Clipart/ - Product/ - Real_World/ + fgvc/ image_list/ - Art.txt - Clipart.txt - Product.txt - Real_World.txt + rareplanes.txt + fgvc.txt """ download_list = [ ] @@ -41,13 +37,9 @@ class Rareplanes(ImageList): "rareplanes": "image_list/rareplanes.txt", "fgvc": "image_list/fgvc.txt", } - CLASSES = ['Drill', 'Exit_Sign', 'Bottle', 'Glasses', 'Computer', 'File_Cabinet', 'Shelf', 'Toys', 'Sink', - 'Laptop', 'Kettle', 'Folder', 'Keyboard', 'Flipflops', 'Pencil', 'Bed', 'Hammer', 'ToothBrush', 'Couch', - 'Bike', 'Postit_Notes', 'Mug', 'Webcam', 'Desk_Lamp', 'Telephone', 'Helmet', 'Mouse', 'Pen', 'Monitor', - 'Mop', 'Sneakers', 'Notebook', 'Backpack', 'Alarm_Clock', 'Push_Pin', 'Paper_Clip', 'Batteries', 'Radio', - 'Fan', 'Ruler', 'Pan', 'Screwdriver', 'Trash_Can', 'Printer', 'Speaker', 'Eraser', 'Bucket', 'Chair', - 'Calendar', 'Calculator', 'Flowers', 'Lamp_Shade', 'Spoon', 'Candles', 'Clipboards', 'Scissors', 'TV', - 'Curtains', 'Fork', 'Soda', 'Table', 'Knives', 'Oven', 'Refrigerator', 'Marker'] + 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 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') diff --git a/examples/domain_adaptation/image_classification/utils.py b/examples/domain_adaptation/image_classification/utils.py index 13756bd4..73e8de97 100644 --- a/examples/domain_adaptation/image_classification/utils.py +++ b/examples/domain_adaptation/image_classification/utils.py @@ -68,6 +68,11 @@ def get_dataset_names(): def get_dataset(dataset_name, root, source, target, train_source_transform, val_transform, train_target_transform=None): + print('************ ', dataset_name) + + with open('test.txt', 'w') as fw: + fw.write(str(datasets.__dict__)) + if train_target_transform is None: train_target_transform = train_source_transform if dataset_name == "Digits": From f18dd697776ff17231319e7bfaa9f94a17f07155 Mon Sep 17 00:00:00 2001 From: chanhal Date: Fri, 26 Nov 2021 10:00:14 +0800 Subject: [PATCH 3/3] r --- examples/domain_adaptation/image_classification/utils.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/examples/domain_adaptation/image_classification/utils.py b/examples/domain_adaptation/image_classification/utils.py index 73e8de97..13756bd4 100644 --- a/examples/domain_adaptation/image_classification/utils.py +++ b/examples/domain_adaptation/image_classification/utils.py @@ -68,11 +68,6 @@ def get_dataset_names(): def get_dataset(dataset_name, root, source, target, train_source_transform, val_transform, train_target_transform=None): - print('************ ', dataset_name) - - with open('test.txt', 'w') as fw: - fw.write(str(datasets.__dict__)) - if train_target_transform is None: train_target_transform = train_source_transform if dataset_name == "Digits":