DFA-MoE / datasets_ref /fmow.py
boringKey's picture
Upload 126 files
3ea5987 verified
Raw
History Blame Contribute Delete
2.69 kB
import os
import torch
import wilds
from wilds.common.data_loaders import get_eval_loader, get_train_loader
class FMOW:
test_subset = None
def __init__(self,
preprocess,
location=os.path.expanduser('~/data'),
batch_size=128,
num_workers=16,
subset='test',
classnames=None,
**kwargs):
self.dataset = wilds.get_dataset(dataset='fmow', root_dir=location)
self.train_dataset = self.dataset.get_subset('train', transform=preprocess)
self.train_loader = get_train_loader("standard", self.train_dataset, num_workers=num_workers, batch_size=batch_size)
self.test_dataset = self.dataset.get_subset(self.test_subset, transform=preprocess)
self.test_loader = get_eval_loader("standard", self.test_dataset, num_workers=num_workers, batch_size=batch_size)
self.classnames = [
"airport", "airport_hangar", "airport_terminal", "amusement_park", "aquaculture",
"archaeological_site", "barn", "border_checkpoint", "burial_site", "car_dealership",
"construction_site", "crop_field", "dam", "debris_or_rubble", "educational_institution",
"electric_substation", "factory_or_powerplant", "fire_station", "flooded_road", "fountain",
"gas_station", "golf_course", "ground_transportation_station", "helipad", "hospital",
"impoverished_settlement", "interchange", "lake_or_pond", "lighthouse", "military_facility",
"multi-unit_residential", "nuclear_powerplant", "office_building", "oil_or_gas_facility", "park",
"parking_lot_or_garage", "place_of_worship", "police_station", "port", "prison", "race_track",
"railway_bridge", "recreational_facility", "road_bridge", "runway", "shipyard", "shopping_mall",
"single-unit_residential", "smokestack", "solar_farm", "space_facility", "stadium", "storage_tank",
"surface_mine", "swimming_pool", "toll_booth", "tower", "tunnel_opening", "waste_disposal",
"water_treatment_facility", "wind_farm", "zoo"
]
def post_loop_metrics(self, labels, preds, metadata, args):
metadata = torch.stack(metadata)
preds = preds.argmax(dim=1, keepdim=True).view_as(labels)
results = self.dataset.eval(preds, labels, metadata)
return results[0]
class FMOWID(FMOW):
def __init__(self, *args, **kwargs):
self.test_subset = 'id_test'
super().__init__(*args, **kwargs)
class FMOWOOD(FMOW):
def __init__(self, *args, **kwargs):
self.test_subset = 'test'
super().__init__(*args, **kwargs)