Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion BENCHMARKS.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ Results updated: 07/23/2023
| jfhealthcare-DenseNet121 |12,525,301| 0.78 | 0.89 | 0.82 | 0.94 | 0.96 | - | - | - | - | - | - | - | - | - | - |
| CheXpert-DenseNet121-ensemble | | 0.82 | 0.92 | 0.88 | 0.97 | 0.97 | - | - | - | - | - | - | - | - | - | - |

## VinBrain
## VinDr-CXR

| Model Name |# Params| Atelectasis | Cardiomegaly | Consolidation | Effusion | Infiltration | Lung Opacity | Pleural_Thickening | Pneumothorax |
|-|-:|-|-|-|-|-|-|-|-|
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -185,8 +185,8 @@ d_siim = xrv.datasets.SIIM_Pneumothorax_Dataset(imgpath="dicom-images-train/",
csvpath="train-rle.csv")

# VinDr-CXR: An open dataset of chest X-rays with radiologist's annotations. https://arxiv.org/abs/2012.15029
d_vin = xrv.datasets.VinBrain_Dataset(imgpath=".../train",
csvpath=".../train.csv")
d_vin = xrv.datasets.VinDr_Dataset(imgpath=".../train",
csvpath=".../train.csv")

# National Library of Medicine Tuberculosis Datasets. https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4256233/
d_nlmtb = xrv.datasets.NLMTB_Dataset(imgpath="path to MontgomerySet or ChinaSet_AllFiles")
Expand Down
6 changes: 3 additions & 3 deletions docs/source/datasets.rst
Original file line number Diff line number Diff line change
Expand Up @@ -78,8 +78,8 @@ Available Datasets
- TBX11K tuberculosis dataset
* - :class:`xrv.datasets.SIIM_Pneumothorax_Dataset <xrv.datasets.SIIM_Pneumothorax_Dataset>`
- SIIM-ACR Pneumothorax Segmentation
* - :class:`xrv.datasets.VinBrain_Dataset <xrv.datasets.VinBrain_Dataset>`
- VinBigData Chest X-ray Abnormalities Detection
* - :class:`xrv.datasets.VinDr_Dataset <xrv.datasets.VinDr_Dataset>`
- VinDr-CXR (VinBigData Chest X-ray Abnormalities Detection)
* - :class:`xrv.datasets.StonyBrookCOVID_Dataset <xrv.datasets.StonyBrookCOVID_Dataset>`
- Stony Brook University COVID-19 positive cases
* - :class:`xrv.datasets.ObjectCXR_Dataset <xrv.datasets.ObjectCXR_Dataset>`
Expand Down Expand Up @@ -131,7 +131,7 @@ Dataset Classes
.. autoclass:: xrv.datasets.SIIM_Pneumothorax_Dataset
:members: string

.. autoclass:: xrv.datasets.VinBrain_Dataset
.. autoclass:: xrv.datasets.VinDr_Dataset
:members: string

.. autoclass:: xrv.datasets.StonyBrookCOVID_Dataset
Expand Down
2 changes: 1 addition & 1 deletion scripts/dataset_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ def get_data(dataset_str, masks=False, unique_patients=False,
datasets.append(dataset)

if "vin" in dataset_str:
dataset = xrv.datasets.VinBrain_Dataset(
dataset = xrv.datasets.VinDr_Dataset(
imgpath=dataset_dir + "vinbigdata-chest-xray-abnormalities-detection/train",
csvpath=dataset_dir + "vinbigdata-chest-xray-abnormalities-detection/train.csv",
pathology_masks=masks,
Expand Down
2 changes: 1 addition & 1 deletion scripts/model_calibrate.py
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@
datas.append(dataset)
datas_names.append("siim")
if "vin" in cfg.dataset:
dataset = xrv.datasets.VinBrain_Dataset(
dataset = xrv.datasets.VinDr_Dataset(
imgpath=cfg.dataset_dir + "vinbigdata-chest-xray-abnormalities-detection/train",
csvpath=cfg.dataset_dir + "vinbigdata-chest-xray-abnormalities-detection/train.csv",
transform=transforms, data_aug=data_aug)
Expand Down
2 changes: 1 addition & 1 deletion scripts/train_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@
datas.append(dataset)
datas_names.append("siim")
if "vin" in cfg.dataset:
dataset = xrv.datasets.VinBrain_Dataset(
dataset = xrv.datasets.VinDr_Dataset(
imgpath=cfg.dataset_dir + "vinbigdata-chest-xray-abnormalities-detection/train",
csvpath=cfg.dataset_dir + "vinbigdata-chest-xray-abnormalities-detection/train.csv",
transform=transform, data_aug=data_aug)
Expand Down
12 changes: 8 additions & 4 deletions tests/test_dataloaders.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,10 @@
xrv.datasets.Openi_Dataset,
xrv.datasets.CheX_Dataset,
xrv.datasets.SIIM_Pneumothorax_Dataset,
xrv.datasets.VinBrain_Dataset]
xrv.datasets.VinDr_Dataset]

dataset_classes_pydicom = [xrv.datasets.SIIM_Pneumothorax_Dataset,
xrv.datasets.VinBrain_Dataset]
xrv.datasets.VinDr_Dataset]

test_data_path = "/tmp/testdata"
test_png_img_file = os.path.join(file_path, "00000001_000.png")
Expand Down Expand Up @@ -76,7 +76,7 @@ def create_test_images(request):
create_test_img(test_png_img_file, xrv.datasets.Openi_Dataset, "CXR10_IM-0002-1001.png")
create_test_img(test_jpg_img_file, xrv.datasets.CheX_Dataset, "train/patient00004/study1/view1_frontal.jpg")
create_test_img(test_dcm_img_file, xrv.datasets.SIIM_Pneumothorax_Dataset, "1.2.276.0.7230010.3.1.2.8323329.6904.1517875201.850818/1.2.276.0.7230010.3.1.3.8323329.6904.1517875201.850817/1.2.276.0.7230010.3.1.4.8323329.6904.1517875201.850819.dcm")
create_test_img(test_dcm_img_file, xrv.datasets.VinBrain_Dataset, "000434271f63a053c4128a0ba6352c7f.dicom")
create_test_img(test_dcm_img_file, xrv.datasets.VinDr_Dataset, "000434271f63a053c4128a0ba6352c7f.dicom")


def test_dataloader_basic(create_test_images, is_pydicom_installed):
Expand Down Expand Up @@ -112,6 +112,10 @@ def test_dataloader_merging(is_pydicom_installed):
xrv.datasets.Merge_Dataset(datasets)


def test_vinbrain_alias():
assert xrv.datasets.VinBrain_Dataset is xrv.datasets.VinDr_Dataset


def test_dataloader_merging_dups():

datasets = []
Expand Down Expand Up @@ -438,7 +442,7 @@ def test_chexlocalize_dataset_segmentation_masks(tmp_path):
assert atelectasis_idx in sample["pathology_masks"]
assert sample["pathology_masks"][atelectasis_idx].sum() > 0
# Pathologies absent from the segmentation JSON get no entry (sparse dict,
# matching NIH_Dataset/VinBrain_Dataset/ObjectCXR_Dataset)
# matching NIH_Dataset/VinDr_Dataset/ObjectCXR_Dataset)
assert cardiomegaly_idx not in sample["pathology_masks"]
assert bool(d.csv["has_masks"].iloc[0])

Expand Down
16 changes: 11 additions & 5 deletions torchxrayvision/datasets.py
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,7 @@ class MergeDataset(Dataset):
- 1 RSNA_Pneumonia_Dataset num_samples=26684 views=['PA', 'AP']
- 2 NIH_Dataset num_samples=112120 views=['PA', 'AP']
- 3 SIIM_Pneumothorax_Dataset num_samples=12954
- 4 VinBrain_Dataset num_samples=15000 views=['PA', 'AP']
- 4 VinDr_Dataset num_samples=15000 views=['PA', 'AP']
"""

def __init__(self, datasets, seed=0, label_concat=False):
Expand Down Expand Up @@ -1400,7 +1400,7 @@ def get_mask_dict(self, imgid, this_size):
"Airspace Opacity" if patho == "Lung Opacity" else patho

# Don't add masks for labels we don't have (matches NIH_Dataset,
# VinBrain_Dataset, ObjectCXR_Dataset: sparse dict, no zero masks)
# VinDr_Dataset, ObjectCXR_Dataset: sparse dict, no zero masks)
if json_key not in entry:
continue

Expand Down Expand Up @@ -2215,7 +2215,7 @@ def rle2mask(rle, width, height):
return path_mask


class VinBrain_Dataset(Dataset):
class VinDr_Dataset(Dataset):
"""VinDr-CXR dataset

A large chest X-ray dataset collected at two major hospitals in Vietnam
Expand All @@ -2234,11 +2234,13 @@ class VinBrain_Dataset(Dataset):

Example::

d_vin = xrv.datasets.VinBrain_Dataset(
d_vin = xrv.datasets.VinDr_Dataset(
imgpath=".../train",
csvpath=".../train.csv"
)

``VinBrain_Dataset`` is kept as a backward-compatible alias of this class.

Citation:
Nguyen HQ, Lam K, Le LT, et al.
VinDr-CXR: An open dataset of chest X-rays with radiologist's
Expand All @@ -2259,7 +2261,7 @@ def __init__(self,
seed=0,
pathology_masks=False
):
super(VinBrain_Dataset, self).__init__()
super(VinDr_Dataset, self).__init__()

np.random.seed(seed) # Reset the seed so all runs are the same.
self.imgpath = imgpath
Expand Down Expand Up @@ -2382,6 +2384,10 @@ def get_mask_dict(self, image_name, this_size):
return path_mask


# alias so it is backwards compatible
VinBrain_Dataset = VinDr_Dataset


class StonyBrookCOVID_Dataset(Dataset):
"""Stony Brook COVID-19 Radiographic Assessment of Lung Opacity (RALO) dataset

Expand Down
Loading