diff --git a/pyproject.toml b/pyproject.toml
index 107619fda093873189adc614ea440c6d06079545..6eee969fe7c5b21b1808b33926f5e105163a7031 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -152,7 +152,7 @@ shenzhen_rs_f7 = "ptbench.configs.datasets.shenzhen_RS.fold_7"
 shenzhen_rs_f8 = "ptbench.configs.datasets.shenzhen_RS.fold_8"
 shenzhen_rs_f9 = "ptbench.configs.datasets.shenzhen_RS.fold_9"
 # indian dataset (and cross-validation folds)
-indian = "ptbench.configs.datasets.indian.default"
+indian = "ptbench.data.indian.default"
 indian_rgb = "ptbench.configs.datasets.indian.rgb"
 indian_f0 = "ptbench.configs.datasets.indian.fold_0"
 indian_f1 = "ptbench.configs.datasets.indian.fold_1"
@@ -433,26 +433,26 @@ tbpoc_rs_f7 = "ptbench.configs.datasets.tbpoc_RS.fold_7"
 tbpoc_rs_f8 = "ptbench.configs.datasets.tbpoc_RS.fold_8"
 tbpoc_rs_f9 = "ptbench.configs.datasets.tbpoc_RS.fold_9"
 # hivtb dataset (and cross-validation folds)
-hivtb_f0 = "ptbench.configs.datasets.hivtb.fold_0"
-hivtb_f1 = "ptbench.configs.datasets.hivtb.fold_1"
-hivtb_f2 = "ptbench.configs.datasets.hivtb.fold_2"
-hivtb_f3 = "ptbench.configs.datasets.hivtb.fold_3"
-hivtb_f4 = "ptbench.configs.datasets.hivtb.fold_4"
-hivtb_f5 = "ptbench.configs.datasets.hivtb.fold_5"
-hivtb_f6 = "ptbench.configs.datasets.hivtb.fold_6"
-hivtb_f7 = "ptbench.configs.datasets.hivtb.fold_7"
-hivtb_f8 = "ptbench.configs.datasets.hivtb.fold_8"
-hivtb_f9 = "ptbench.configs.datasets.hivtb.fold_9"
-hivtb_f0_rgb = "ptbench.configs.datasets.hivtb.fold_0_rgb"
-hivtb_f1_rgb = "ptbench.configs.datasets.hivtb.fold_1_rgb"
-hivtb_f2_rgb = "ptbench.configs.datasets.hivtb.fold_2_rgb"
-hivtb_f3_rgb = "ptbench.configs.datasets.hivtb.fold_3_rgb"
-hivtb_f4_rgb = "ptbench.configs.datasets.hivtb.fold_4_rgb"
-hivtb_f5_rgb = "ptbench.configs.datasets.hivtb.fold_5_rgb"
-hivtb_f6_rgb = "ptbench.configs.datasets.hivtb.fold_6_rgb"
-hivtb_f7_rgb = "ptbench.configs.datasets.hivtb.fold_7_rgb"
-hivtb_f8_rgb = "ptbench.configs.datasets.hivtb.fold_8_rgb"
-hivtb_f9_rgb = "ptbench.configs.datasets.hivtb.fold_9_rgb"
+hivtb_f0 = "ptbench.data.hivtb.fold_0"
+hivtb_f1 = "ptbench.data.hivtb.fold_1"
+hivtb_f2 = "ptbench.data.hivtb.fold_2"
+hivtb_f3 = "ptbench.data.hivtb.fold_3"
+hivtb_f4 = "ptbench.data.hivtb.fold_4"
+hivtb_f5 = "ptbench.data.hivtb.fold_5"
+hivtb_f6 = "ptbench.data.hivtb.fold_6"
+hivtb_f7 = "ptbench.data.hivtb.fold_7"
+hivtb_f8 = "ptbench.data.hivtb.fold_8"
+hivtb_f9 = "ptbench.data.hivtb.fold_9"
+hivtb_f0_rgb = "ptbench.data.hivtb.fold_0_rgb"
+hivtb_f1_rgb = "ptbench.data.hivtb.fold_1_rgb"
+hivtb_f2_rgb = "ptbench.data.hivtb.fold_2_rgb"
+hivtb_f3_rgb = "ptbench.data.hivtb.fold_3_rgb"
+hivtb_f4_rgb = "ptbench.data.hivtb.fold_4_rgb"
+hivtb_f5_rgb = "ptbench.data.hivtb.fold_5_rgb"
+hivtb_f6_rgb = "ptbench.data.hivtb.fold_6_rgb"
+hivtb_f7_rgb = "ptbench.data.hivtb.fold_7_rgb"
+hivtb_f8_rgb = "ptbench.data.hivtb.fold_8_rgb"
+hivtb_f9_rgb = "ptbench.data.hivtb.fold_9_rgb"
 # extended hivtb dataset (with radiological signs)
 hivtb_rs_f0 = "ptbench.configs.datasets.hivtb_RS.fold_0"
 hivtb_rs_f1 = "ptbench.configs.datasets.hivtb_RS.fold_1"
diff --git a/src/ptbench/configs/datasets/hivtb/__init__.py b/src/ptbench/configs/datasets/hivtb/__init__.py
deleted file mode 100644
index e026f4a4b062d41b5530242474061f0d781798ee..0000000000000000000000000000000000000000
--- a/src/ptbench/configs/datasets/hivtb/__init__.py
+++ /dev/null
@@ -1,29 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-
-def _maker(protocol, resize_size=512, cc_size=512, RGB=False):
-    from torchvision import transforms
-
-    from ....data.hivtb import dataset as raw
-    from ....data.transforms import ElasticDeformation, RemoveBlackBorders
-    from .. import make_dataset as mk
-
-    post_transforms = []
-    if RGB:
-        post_transforms = [
-            transforms.Lambda(lambda x: x.convert("RGB")),
-            transforms.ToTensor(),
-        ]
-
-    return mk(
-        [raw.subsets(protocol)],
-        [
-            RemoveBlackBorders(),
-            transforms.Resize(resize_size),
-            transforms.CenterCrop(cc_size),
-        ],
-        [ElasticDeformation(p=0.8)],
-        post_transforms,
-    )
diff --git a/src/ptbench/configs/datasets/hivtb/fold_0.py b/src/ptbench/configs/datasets/hivtb/fold_0.py
deleted file mode 100644
index 36cb16e03ba6b5b79dd333895c4da836ba452e53..0000000000000000000000000000000000000000
--- a/src/ptbench/configs/datasets/hivtb/fold_0.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""HIV-TB dataset for TB detection (cross validation fold 0)
-
-* Split reference: none (stratified kfolding)
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.hivtb` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_0")
diff --git a/src/ptbench/configs/datasets/hivtb/fold_0_rgb.py b/src/ptbench/configs/datasets/hivtb/fold_0_rgb.py
deleted file mode 100644
index d8bf759afb9cb24e2ef74c6d49d22f18f8069a9d..0000000000000000000000000000000000000000
--- a/src/ptbench/configs/datasets/hivtb/fold_0_rgb.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""HIV-TB dataset for TB detection (cross validation fold 0)
-
-* Split reference: none (stratified kfolding)
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.hivtb` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_0", RGB=True)
diff --git a/src/ptbench/configs/datasets/hivtb/fold_1.py b/src/ptbench/configs/datasets/hivtb/fold_1.py
deleted file mode 100644
index bacec20d489adb351e8bbe1782a235d57fe7c308..0000000000000000000000000000000000000000
--- a/src/ptbench/configs/datasets/hivtb/fold_1.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""HIV-TB dataset for TB detection (cross validation fold 1)
-
-* Split reference: none (stratified kfolding)
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.hivtb` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_1")
diff --git a/src/ptbench/configs/datasets/hivtb/fold_1_rgb.py b/src/ptbench/configs/datasets/hivtb/fold_1_rgb.py
deleted file mode 100644
index 7dc5eb622aecd5aaa5b1ee2c7d31e7cbabf4282e..0000000000000000000000000000000000000000
--- a/src/ptbench/configs/datasets/hivtb/fold_1_rgb.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""HIV-TB dataset for TB detection (cross validation fold 1)
-
-* Split reference: none (stratified kfolding)
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.hivtb` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_1", RGB=True)
diff --git a/src/ptbench/configs/datasets/hivtb/fold_2.py b/src/ptbench/configs/datasets/hivtb/fold_2.py
deleted file mode 100644
index edd547980fcb4cddd1e264aa79d4d73f4d8fe098..0000000000000000000000000000000000000000
--- a/src/ptbench/configs/datasets/hivtb/fold_2.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""HIV-TB dataset for TB detection (cross validation fold 2)
-
-* Split reference: none (stratified kfolding)
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.hivtb` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_2")
diff --git a/src/ptbench/configs/datasets/hivtb/fold_2_rgb.py b/src/ptbench/configs/datasets/hivtb/fold_2_rgb.py
deleted file mode 100644
index cb88d1e1d787fd5529ad4dcc86001883a6df3bc7..0000000000000000000000000000000000000000
--- a/src/ptbench/configs/datasets/hivtb/fold_2_rgb.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""HIV-TB dataset for TB detection (cross validation fold 2)
-
-* Split reference: none (stratified kfolding)
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.hivtb` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_2", RGB=True)
diff --git a/src/ptbench/configs/datasets/hivtb/fold_3.py b/src/ptbench/configs/datasets/hivtb/fold_3.py
deleted file mode 100644
index 2e8371b81993f985c0cf14f339717c9328742389..0000000000000000000000000000000000000000
--- a/src/ptbench/configs/datasets/hivtb/fold_3.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""HIV-TB dataset for TB detection (cross validation fold 3)
-
-* Split reference: none (stratified kfolding)
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.hivtb` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_3")
diff --git a/src/ptbench/configs/datasets/hivtb/fold_3_rgb.py b/src/ptbench/configs/datasets/hivtb/fold_3_rgb.py
deleted file mode 100644
index c4fc878f0f5e05fe91eb064309a1121f73adbe50..0000000000000000000000000000000000000000
--- a/src/ptbench/configs/datasets/hivtb/fold_3_rgb.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""HIV-TB dataset for TB detection (cross validation fold 3)
-
-* Split reference: none (stratified kfolding)
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.hivtb` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_3", RGB=True)
diff --git a/src/ptbench/configs/datasets/hivtb/fold_4.py b/src/ptbench/configs/datasets/hivtb/fold_4.py
deleted file mode 100644
index adbd52a401dfdac59c768643741c9aabb4f0227f..0000000000000000000000000000000000000000
--- a/src/ptbench/configs/datasets/hivtb/fold_4.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""HIV-TB dataset for TB detection (cross validation fold 4)
-
-* Split reference: none (stratified kfolding)
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.hivtb` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_4")
diff --git a/src/ptbench/configs/datasets/hivtb/fold_4_rgb.py b/src/ptbench/configs/datasets/hivtb/fold_4_rgb.py
deleted file mode 100644
index db79d17baeae36f1bcee8ec06d69b14b97c2e432..0000000000000000000000000000000000000000
--- a/src/ptbench/configs/datasets/hivtb/fold_4_rgb.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""HIV-TB dataset for TB detection (cross validation fold 4)
-
-* Split reference: none (stratified kfolding)
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.hivtb` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_4", RGB=True)
diff --git a/src/ptbench/configs/datasets/hivtb/fold_5.py b/src/ptbench/configs/datasets/hivtb/fold_5.py
deleted file mode 100644
index 66862f150d9e016d87da110de5dff4b23f613020..0000000000000000000000000000000000000000
--- a/src/ptbench/configs/datasets/hivtb/fold_5.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""HIV-TB dataset for TB detection (cross validation fold 5)
-
-* Split reference: none (stratified kfolding)
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.hivtb` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_5")
diff --git a/src/ptbench/configs/datasets/hivtb/fold_5_rgb.py b/src/ptbench/configs/datasets/hivtb/fold_5_rgb.py
deleted file mode 100644
index bf9805b7b52c799bcadeb68541428468ef859c4d..0000000000000000000000000000000000000000
--- a/src/ptbench/configs/datasets/hivtb/fold_5_rgb.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""HIV-TB dataset for TB detection (cross validation fold 5)
-
-* Split reference: none (stratified kfolding)
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.hivtb` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_5", RGB=True)
diff --git a/src/ptbench/configs/datasets/hivtb/fold_6.py b/src/ptbench/configs/datasets/hivtb/fold_6.py
deleted file mode 100644
index f4a4e786c1232637295b4c2695a92844ad650f79..0000000000000000000000000000000000000000
--- a/src/ptbench/configs/datasets/hivtb/fold_6.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""HIV-TB dataset for TB detection (cross validation fold 6)
-
-* Split reference: none (stratified kfolding)
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.hivtb` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_6")
diff --git a/src/ptbench/configs/datasets/hivtb/fold_6_rgb.py b/src/ptbench/configs/datasets/hivtb/fold_6_rgb.py
deleted file mode 100644
index dd4e0f681a830d95077ffffed786dfad25303e75..0000000000000000000000000000000000000000
--- a/src/ptbench/configs/datasets/hivtb/fold_6_rgb.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""HIV-TB dataset for TB detection (cross validation fold 6)
-
-* Split reference: none (stratified kfolding)
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.hivtb` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_6", RGB=True)
diff --git a/src/ptbench/configs/datasets/hivtb/fold_7.py b/src/ptbench/configs/datasets/hivtb/fold_7.py
deleted file mode 100644
index 5a84c9560655ea8a9f95aa0d54172a96844b52aa..0000000000000000000000000000000000000000
--- a/src/ptbench/configs/datasets/hivtb/fold_7.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""HIV-TB dataset for TB detection (cross validation fold 7)
-
-* Split reference: none (stratified kfolding)
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.hivtb` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_7")
diff --git a/src/ptbench/configs/datasets/hivtb/fold_7_rgb.py b/src/ptbench/configs/datasets/hivtb/fold_7_rgb.py
deleted file mode 100644
index 511f7d2ce327f0cfad096a62b98198b2a4757a33..0000000000000000000000000000000000000000
--- a/src/ptbench/configs/datasets/hivtb/fold_7_rgb.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""HIV-TB dataset for TB detection (cross validation fold 7)
-
-* Split reference: none (stratified kfolding)
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.hivtb` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_7", RGB=True)
diff --git a/src/ptbench/configs/datasets/hivtb/fold_8.py b/src/ptbench/configs/datasets/hivtb/fold_8.py
deleted file mode 100644
index cfe6c632b2f048312fee34c914f44fd8a68c1953..0000000000000000000000000000000000000000
--- a/src/ptbench/configs/datasets/hivtb/fold_8.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""HIV-TB dataset for TB detection (cross validation fold 8)
-
-* Split reference: none (stratified kfolding)
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.hivtb` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_8")
diff --git a/src/ptbench/configs/datasets/hivtb/fold_8_rgb.py b/src/ptbench/configs/datasets/hivtb/fold_8_rgb.py
deleted file mode 100644
index 7ddfabe603540cf65bc60bec88e1bbb707fca0c5..0000000000000000000000000000000000000000
--- a/src/ptbench/configs/datasets/hivtb/fold_8_rgb.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""HIV-TB dataset for TB detection (cross validation fold 8)
-
-* Split reference: none (stratified kfolding)
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.hivtb` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_8", RGB=True)
diff --git a/src/ptbench/configs/datasets/hivtb/fold_9.py b/src/ptbench/configs/datasets/hivtb/fold_9.py
deleted file mode 100644
index 27b45302f01cc0698b258d0bc462a8c4d2afc3d0..0000000000000000000000000000000000000000
--- a/src/ptbench/configs/datasets/hivtb/fold_9.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""HIV-TB dataset for TB detection (cross validation fold 9)
-
-* Split reference: none (stratified kfolding)
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.hivtb` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_9")
diff --git a/src/ptbench/configs/datasets/hivtb/fold_9_rgb.py b/src/ptbench/configs/datasets/hivtb/fold_9_rgb.py
deleted file mode 100644
index 0b32f34935502ee7c4766d415865bd4974737a77..0000000000000000000000000000000000000000
--- a/src/ptbench/configs/datasets/hivtb/fold_9_rgb.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""HIV-TB dataset for TB detection (cross validation fold 9)
-
-* Split reference: none (stratified kfolding)
-* This configuration resolution: 512 x 512 (default)
-* See :py:mod:`ptbench.data.hivtb` for dataset details
-"""
-
-from . import _maker
-
-dataset = _maker("fold_9", RGB=True)
diff --git a/src/ptbench/data/hivtb/__init__.py b/src/ptbench/data/hivtb/__init__.py
index dd87f9a4555590851011d7786224a32ceb1295c7..b5d2753c0ba191b42bcaf8d66c104e36cb4dd839 100644
--- a/src/ptbench/data/hivtb/__init__.py
+++ b/src/ptbench/data/hivtb/__init__.py
@@ -18,6 +18,7 @@ import importlib.resources
 import os
 
 from ...utils.rc import load_rc
+from .. import make_dataset
 from ..dataset import JSONDataset
 from ..loader import load_pil_baw, make_delayed
 
@@ -50,9 +51,33 @@ def _loader(context, sample):
     return make_delayed(sample, _raw_data_loader)
 
 
-dataset = JSONDataset(
+json_dataset = JSONDataset(
     protocols=_protocols,
     fieldnames=("data", "label"),
     loader=_loader,
 )
 """HIV-TB dataset object."""
+
+
+def _maker(protocol, resize_size=512, cc_size=512, RGB=False):
+    from torchvision import transforms
+
+    from ..transforms import ElasticDeformation, RemoveBlackBorders
+
+    post_transforms = []
+    if RGB:
+        post_transforms = [
+            transforms.Lambda(lambda x: x.convert("RGB")),
+            transforms.ToTensor(),
+        ]
+
+    return make_dataset(
+        [json_dataset.subsets(protocol)],
+        [
+            RemoveBlackBorders(),
+            transforms.Resize(resize_size),
+            transforms.CenterCrop(cc_size),
+        ],
+        [ElasticDeformation(p=0.8)],
+        post_transforms,
+    )
diff --git a/src/ptbench/data/hivtb/fold_0.py b/src/ptbench/data/hivtb/fold_0.py
new file mode 100644
index 0000000000000000000000000000000000000000..af3be161a75f76c8287168fdca0e4cac2c5b43d3
--- /dev/null
+++ b/src/ptbench/data/hivtb/fold_0.py
@@ -0,0 +1,46 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""HIV-TB dataset for TB detection (cross validation fold 0)
+
+* Split reference: none (stratified kfolding)
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.hivtb` for dataset details
+"""
+
+from clapper.logging import setup
+
+from .. import return_subsets
+from ..base_datamodule import BaseDataModule
+from . import _maker
+
+logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
+
+
+class DefaultModule(BaseDataModule):
+    def __init__(
+        self,
+        train_batch_size=1,
+        predict_batch_size=1,
+        drop_incomplete_batch=False,
+        multiproc_kwargs=None,
+    ):
+        super().__init__(
+            train_batch_size=train_batch_size,
+            predict_batch_size=predict_batch_size,
+            drop_incomplete_batch=drop_incomplete_batch,
+            multiproc_kwargs=multiproc_kwargs,
+        )
+
+    def setup(self, stage: str):
+        self.dataset = _maker("fold_0")
+        (
+            self.train_dataset,
+            self.validation_dataset,
+            self.extra_validation_datasets,
+            self.predict_dataset,
+        ) = return_subsets(self.dataset)
+
+
+datamodule = DefaultModule
diff --git a/src/ptbench/data/hivtb/fold_0_rgb.py b/src/ptbench/data/hivtb/fold_0_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..3a5e13cb473c81a4b04ada39b7504551e952c6f2
--- /dev/null
+++ b/src/ptbench/data/hivtb/fold_0_rgb.py
@@ -0,0 +1,46 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""HIV-TB dataset for TB detection (cross validation fold 0)
+
+* Split reference: none (stratified kfolding)
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.hivtb` for dataset details
+"""
+
+from clapper.logging import setup
+
+from .. import return_subsets
+from ..base_datamodule import BaseDataModule
+from . import _maker
+
+logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
+
+
+class DefaultModule(BaseDataModule):
+    def __init__(
+        self,
+        train_batch_size=1,
+        predict_batch_size=1,
+        drop_incomplete_batch=False,
+        multiproc_kwargs=None,
+    ):
+        super().__init__(
+            train_batch_size=train_batch_size,
+            predict_batch_size=predict_batch_size,
+            drop_incomplete_batch=drop_incomplete_batch,
+            multiproc_kwargs=multiproc_kwargs,
+        )
+
+    def setup(self, stage: str):
+        self.dataset = _maker("fold_0", RGB=True)
+        (
+            self.train_dataset,
+            self.validation_dataset,
+            self.extra_validation_datasets,
+            self.predict_dataset,
+        ) = return_subsets(self.dataset)
+
+
+datamodule = DefaultModule
diff --git a/src/ptbench/data/hivtb/fold_1.py b/src/ptbench/data/hivtb/fold_1.py
new file mode 100644
index 0000000000000000000000000000000000000000..ec86cab362f9b4f298f3b92f7e62893d2f83d16b
--- /dev/null
+++ b/src/ptbench/data/hivtb/fold_1.py
@@ -0,0 +1,46 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""HIV-TB dataset for TB detection (cross validation fold 1)
+
+* Split reference: none (stratified kfolding)
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.hivtb` for dataset details
+"""
+
+from clapper.logging import setup
+
+from .. import return_subsets
+from ..base_datamodule import BaseDataModule
+from . import _maker
+
+logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
+
+
+class DefaultModule(BaseDataModule):
+    def __init__(
+        self,
+        train_batch_size=1,
+        predict_batch_size=1,
+        drop_incomplete_batch=False,
+        multiproc_kwargs=None,
+    ):
+        super().__init__(
+            train_batch_size=train_batch_size,
+            predict_batch_size=predict_batch_size,
+            drop_incomplete_batch=drop_incomplete_batch,
+            multiproc_kwargs=multiproc_kwargs,
+        )
+
+    def setup(self, stage: str):
+        self.dataset = _maker("fold_1")
+        (
+            self.train_dataset,
+            self.validation_dataset,
+            self.extra_validation_datasets,
+            self.predict_dataset,
+        ) = return_subsets(self.dataset)
+
+
+datamodule = DefaultModule
diff --git a/src/ptbench/data/hivtb/fold_1_rgb.py b/src/ptbench/data/hivtb/fold_1_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..4b5af9ecbb5180957d08697d9dbed005d201be9c
--- /dev/null
+++ b/src/ptbench/data/hivtb/fold_1_rgb.py
@@ -0,0 +1,46 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""HIV-TB dataset for TB detection (cross validation fold 1)
+
+* Split reference: none (stratified kfolding)
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.hivtb` for dataset details
+"""
+
+from clapper.logging import setup
+
+from .. import return_subsets
+from ..base_datamodule import BaseDataModule
+from . import _maker
+
+logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
+
+
+class DefaultModule(BaseDataModule):
+    def __init__(
+        self,
+        train_batch_size=1,
+        predict_batch_size=1,
+        drop_incomplete_batch=False,
+        multiproc_kwargs=None,
+    ):
+        super().__init__(
+            train_batch_size=train_batch_size,
+            predict_batch_size=predict_batch_size,
+            drop_incomplete_batch=drop_incomplete_batch,
+            multiproc_kwargs=multiproc_kwargs,
+        )
+
+    def setup(self, stage: str):
+        self.dataset = _maker("fold_1", RGB=True)
+        (
+            self.train_dataset,
+            self.validation_dataset,
+            self.extra_validation_datasets,
+            self.predict_dataset,
+        ) = return_subsets(self.dataset)
+
+
+datamodule = DefaultModule
diff --git a/src/ptbench/data/hivtb/fold_2.py b/src/ptbench/data/hivtb/fold_2.py
new file mode 100644
index 0000000000000000000000000000000000000000..56ae69fee9fe57a2a9d2042f0b20e984832334ac
--- /dev/null
+++ b/src/ptbench/data/hivtb/fold_2.py
@@ -0,0 +1,46 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""HIV-TB dataset for TB detection (cross validation fold 2)
+
+* Split reference: none (stratified kfolding)
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.hivtb` for dataset details
+"""
+
+from clapper.logging import setup
+
+from .. import return_subsets
+from ..base_datamodule import BaseDataModule
+from . import _maker
+
+logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
+
+
+class DefaultModule(BaseDataModule):
+    def __init__(
+        self,
+        train_batch_size=1,
+        predict_batch_size=1,
+        drop_incomplete_batch=False,
+        multiproc_kwargs=None,
+    ):
+        super().__init__(
+            train_batch_size=train_batch_size,
+            predict_batch_size=predict_batch_size,
+            drop_incomplete_batch=drop_incomplete_batch,
+            multiproc_kwargs=multiproc_kwargs,
+        )
+
+    def setup(self, stage: str):
+        self.dataset = _maker("fold_2")
+        (
+            self.train_dataset,
+            self.validation_dataset,
+            self.extra_validation_datasets,
+            self.predict_dataset,
+        ) = return_subsets(self.dataset)
+
+
+datamodule = DefaultModule
diff --git a/src/ptbench/data/hivtb/fold_2_rgb.py b/src/ptbench/data/hivtb/fold_2_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..bd72b8147b5277539efe92c5c4310234f563a49f
--- /dev/null
+++ b/src/ptbench/data/hivtb/fold_2_rgb.py
@@ -0,0 +1,47 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""HIV-TB dataset for TB detection (cross validation fold 2)
+
+* Split reference: none (stratified kfolding)
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.hivtb` for dataset details
+"""
+
+
+from clapper.logging import setup
+
+from .. import return_subsets
+from ..base_datamodule import BaseDataModule
+from . import _maker
+
+logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
+
+
+class DefaultModule(BaseDataModule):
+    def __init__(
+        self,
+        train_batch_size=1,
+        predict_batch_size=1,
+        drop_incomplete_batch=False,
+        multiproc_kwargs=None,
+    ):
+        super().__init__(
+            train_batch_size=train_batch_size,
+            predict_batch_size=predict_batch_size,
+            drop_incomplete_batch=drop_incomplete_batch,
+            multiproc_kwargs=multiproc_kwargs,
+        )
+
+    def setup(self, stage: str):
+        self.dataset = _maker("fold_2", RGB=True)
+        (
+            self.train_dataset,
+            self.validation_dataset,
+            self.extra_validation_datasets,
+            self.predict_dataset,
+        ) = return_subsets(self.dataset)
+
+
+datamodule = DefaultModule
diff --git a/src/ptbench/data/hivtb/fold_3.py b/src/ptbench/data/hivtb/fold_3.py
new file mode 100644
index 0000000000000000000000000000000000000000..5dbddeda83eda1b46e485a7cbed619a3f8ff1714
--- /dev/null
+++ b/src/ptbench/data/hivtb/fold_3.py
@@ -0,0 +1,46 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""HIV-TB dataset for TB detection (cross validation fold 3)
+
+* Split reference: none (stratified kfolding)
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.hivtb` for dataset details
+"""
+
+from clapper.logging import setup
+
+from .. import return_subsets
+from ..base_datamodule import BaseDataModule
+from . import _maker
+
+logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
+
+
+class DefaultModule(BaseDataModule):
+    def __init__(
+        self,
+        train_batch_size=1,
+        predict_batch_size=1,
+        drop_incomplete_batch=False,
+        multiproc_kwargs=None,
+    ):
+        super().__init__(
+            train_batch_size=train_batch_size,
+            predict_batch_size=predict_batch_size,
+            drop_incomplete_batch=drop_incomplete_batch,
+            multiproc_kwargs=multiproc_kwargs,
+        )
+
+    def setup(self, stage: str):
+        self.dataset = _maker("fold_3")
+        (
+            self.train_dataset,
+            self.validation_dataset,
+            self.extra_validation_datasets,
+            self.predict_dataset,
+        ) = return_subsets(self.dataset)
+
+
+datamodule = DefaultModule
diff --git a/src/ptbench/data/hivtb/fold_3_rgb.py b/src/ptbench/data/hivtb/fold_3_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..6c6a8d678afb30fefb0909de3979bada403e8c71
--- /dev/null
+++ b/src/ptbench/data/hivtb/fold_3_rgb.py
@@ -0,0 +1,46 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""HIV-TB dataset for TB detection (cross validation fold 3)
+
+* Split reference: none (stratified kfolding)
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.hivtb` for dataset details
+"""
+
+from clapper.logging import setup
+
+from .. import return_subsets
+from ..base_datamodule import BaseDataModule
+from . import _maker
+
+logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
+
+
+class DefaultModule(BaseDataModule):
+    def __init__(
+        self,
+        train_batch_size=1,
+        predict_batch_size=1,
+        drop_incomplete_batch=False,
+        multiproc_kwargs=None,
+    ):
+        super().__init__(
+            train_batch_size=train_batch_size,
+            predict_batch_size=predict_batch_size,
+            drop_incomplete_batch=drop_incomplete_batch,
+            multiproc_kwargs=multiproc_kwargs,
+        )
+
+    def setup(self, stage: str):
+        self.dataset = _maker("fold_3", RGB=True)
+        (
+            self.train_dataset,
+            self.validation_dataset,
+            self.extra_validation_datasets,
+            self.predict_dataset,
+        ) = return_subsets(self.dataset)
+
+
+datamodule = DefaultModule
diff --git a/src/ptbench/data/hivtb/fold_4.py b/src/ptbench/data/hivtb/fold_4.py
new file mode 100644
index 0000000000000000000000000000000000000000..9ab5a79fe3642254302388e0e054f6753cc8e3f5
--- /dev/null
+++ b/src/ptbench/data/hivtb/fold_4.py
@@ -0,0 +1,46 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""HIV-TB dataset for TB detection (cross validation fold 4)
+
+* Split reference: none (stratified kfolding)
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.hivtb` for dataset details
+"""
+
+from clapper.logging import setup
+
+from .. import return_subsets
+from ..base_datamodule import BaseDataModule
+from . import _maker
+
+logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
+
+
+class DefaultModule(BaseDataModule):
+    def __init__(
+        self,
+        train_batch_size=1,
+        predict_batch_size=1,
+        drop_incomplete_batch=False,
+        multiproc_kwargs=None,
+    ):
+        super().__init__(
+            train_batch_size=train_batch_size,
+            predict_batch_size=predict_batch_size,
+            drop_incomplete_batch=drop_incomplete_batch,
+            multiproc_kwargs=multiproc_kwargs,
+        )
+
+    def setup(self, stage: str):
+        self.dataset = _maker("fold_4")
+        (
+            self.train_dataset,
+            self.validation_dataset,
+            self.extra_validation_datasets,
+            self.predict_dataset,
+        ) = return_subsets(self.dataset)
+
+
+datamodule = DefaultModule
diff --git a/src/ptbench/data/hivtb/fold_4_rgb.py b/src/ptbench/data/hivtb/fold_4_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..99a56b4108e362f0469a06e5f2c3ad6b7d7d35da
--- /dev/null
+++ b/src/ptbench/data/hivtb/fold_4_rgb.py
@@ -0,0 +1,46 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""HIV-TB dataset for TB detection (cross validation fold 4)
+
+* Split reference: none (stratified kfolding)
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.hivtb` for dataset details
+"""
+
+from clapper.logging import setup
+
+from .. import return_subsets
+from ..base_datamodule import BaseDataModule
+from . import _maker
+
+logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
+
+
+class DefaultModule(BaseDataModule):
+    def __init__(
+        self,
+        train_batch_size=1,
+        predict_batch_size=1,
+        drop_incomplete_batch=False,
+        multiproc_kwargs=None,
+    ):
+        super().__init__(
+            train_batch_size=train_batch_size,
+            predict_batch_size=predict_batch_size,
+            drop_incomplete_batch=drop_incomplete_batch,
+            multiproc_kwargs=multiproc_kwargs,
+        )
+
+    def setup(self, stage: str):
+        self.dataset = _maker("fold_4", RGB=True)
+        (
+            self.train_dataset,
+            self.validation_dataset,
+            self.extra_validation_datasets,
+            self.predict_dataset,
+        ) = return_subsets(self.dataset)
+
+
+datamodule = DefaultModule
diff --git a/src/ptbench/data/hivtb/fold_5.py b/src/ptbench/data/hivtb/fold_5.py
new file mode 100644
index 0000000000000000000000000000000000000000..445ce4589a85bf6323de19f654e93bbd5d766e4b
--- /dev/null
+++ b/src/ptbench/data/hivtb/fold_5.py
@@ -0,0 +1,46 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""HIV-TB dataset for TB detection (cross validation fold 5)
+
+* Split reference: none (stratified kfolding)
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.hivtb` for dataset details
+"""
+
+from clapper.logging import setup
+
+from .. import return_subsets
+from ..base_datamodule import BaseDataModule
+from . import _maker
+
+logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
+
+
+class DefaultModule(BaseDataModule):
+    def __init__(
+        self,
+        train_batch_size=1,
+        predict_batch_size=1,
+        drop_incomplete_batch=False,
+        multiproc_kwargs=None,
+    ):
+        super().__init__(
+            train_batch_size=train_batch_size,
+            predict_batch_size=predict_batch_size,
+            drop_incomplete_batch=drop_incomplete_batch,
+            multiproc_kwargs=multiproc_kwargs,
+        )
+
+    def setup(self, stage: str):
+        self.dataset = _maker("fold_5")
+        (
+            self.train_dataset,
+            self.validation_dataset,
+            self.extra_validation_datasets,
+            self.predict_dataset,
+        ) = return_subsets(self.dataset)
+
+
+datamodule = DefaultModule
diff --git a/src/ptbench/data/hivtb/fold_5_rgb.py b/src/ptbench/data/hivtb/fold_5_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..2033c03ba93c859bf99e5d74b844ecb2d39c08ac
--- /dev/null
+++ b/src/ptbench/data/hivtb/fold_5_rgb.py
@@ -0,0 +1,46 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""HIV-TB dataset for TB detection (cross validation fold 5)
+
+* Split reference: none (stratified kfolding)
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.hivtb` for dataset details
+"""
+
+from clapper.logging import setup
+
+from .. import return_subsets
+from ..base_datamodule import BaseDataModule
+from . import _maker
+
+logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
+
+
+class DefaultModule(BaseDataModule):
+    def __init__(
+        self,
+        train_batch_size=1,
+        predict_batch_size=1,
+        drop_incomplete_batch=False,
+        multiproc_kwargs=None,
+    ):
+        super().__init__(
+            train_batch_size=train_batch_size,
+            predict_batch_size=predict_batch_size,
+            drop_incomplete_batch=drop_incomplete_batch,
+            multiproc_kwargs=multiproc_kwargs,
+        )
+
+    def setup(self, stage: str):
+        self.dataset = _maker("fold_5", RGB=True)
+        (
+            self.train_dataset,
+            self.validation_dataset,
+            self.extra_validation_datasets,
+            self.predict_dataset,
+        ) = return_subsets(self.dataset)
+
+
+datamodule = DefaultModule
diff --git a/src/ptbench/data/hivtb/fold_6.py b/src/ptbench/data/hivtb/fold_6.py
new file mode 100644
index 0000000000000000000000000000000000000000..fbbea2ad903d704787d106077fdfc60cc35b2988
--- /dev/null
+++ b/src/ptbench/data/hivtb/fold_6.py
@@ -0,0 +1,46 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""HIV-TB dataset for TB detection (cross validation fold 6)
+
+* Split reference: none (stratified kfolding)
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.hivtb` for dataset details
+"""
+
+from clapper.logging import setup
+
+from .. import return_subsets
+from ..base_datamodule import BaseDataModule
+from . import _maker
+
+logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
+
+
+class DefaultModule(BaseDataModule):
+    def __init__(
+        self,
+        train_batch_size=1,
+        predict_batch_size=1,
+        drop_incomplete_batch=False,
+        multiproc_kwargs=None,
+    ):
+        super().__init__(
+            train_batch_size=train_batch_size,
+            predict_batch_size=predict_batch_size,
+            drop_incomplete_batch=drop_incomplete_batch,
+            multiproc_kwargs=multiproc_kwargs,
+        )
+
+    def setup(self, stage: str):
+        self.dataset = _maker("fold_6")
+        (
+            self.train_dataset,
+            self.validation_dataset,
+            self.extra_validation_datasets,
+            self.predict_dataset,
+        ) = return_subsets(self.dataset)
+
+
+datamodule = DefaultModule
diff --git a/src/ptbench/data/hivtb/fold_6_rgb.py b/src/ptbench/data/hivtb/fold_6_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..16bc6df5069847263cf05154836fb9919bdd2a86
--- /dev/null
+++ b/src/ptbench/data/hivtb/fold_6_rgb.py
@@ -0,0 +1,46 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""HIV-TB dataset for TB detection (cross validation fold 6)
+
+* Split reference: none (stratified kfolding)
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.hivtb` for dataset details
+"""
+
+from clapper.logging import setup
+
+from .. import return_subsets
+from ..base_datamodule import BaseDataModule
+from . import _maker
+
+logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
+
+
+class DefaultModule(BaseDataModule):
+    def __init__(
+        self,
+        train_batch_size=1,
+        predict_batch_size=1,
+        drop_incomplete_batch=False,
+        multiproc_kwargs=None,
+    ):
+        super().__init__(
+            train_batch_size=train_batch_size,
+            predict_batch_size=predict_batch_size,
+            drop_incomplete_batch=drop_incomplete_batch,
+            multiproc_kwargs=multiproc_kwargs,
+        )
+
+    def setup(self, stage: str):
+        self.dataset = _maker("fold_6", RGB=True)
+        (
+            self.train_dataset,
+            self.validation_dataset,
+            self.extra_validation_datasets,
+            self.predict_dataset,
+        ) = return_subsets(self.dataset)
+
+
+datamodule = DefaultModule
diff --git a/src/ptbench/data/hivtb/fold_7.py b/src/ptbench/data/hivtb/fold_7.py
new file mode 100644
index 0000000000000000000000000000000000000000..dcce836d87ff865a88f5f22c8a98bea7f2ded780
--- /dev/null
+++ b/src/ptbench/data/hivtb/fold_7.py
@@ -0,0 +1,46 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""HIV-TB dataset for TB detection (cross validation fold 7)
+
+* Split reference: none (stratified kfolding)
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.hivtb` for dataset details
+"""
+
+from clapper.logging import setup
+
+from .. import return_subsets
+from ..base_datamodule import BaseDataModule
+from . import _maker
+
+logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
+
+
+class DefaultModule(BaseDataModule):
+    def __init__(
+        self,
+        train_batch_size=1,
+        predict_batch_size=1,
+        drop_incomplete_batch=False,
+        multiproc_kwargs=None,
+    ):
+        super().__init__(
+            train_batch_size=train_batch_size,
+            predict_batch_size=predict_batch_size,
+            drop_incomplete_batch=drop_incomplete_batch,
+            multiproc_kwargs=multiproc_kwargs,
+        )
+
+    def setup(self, stage: str):
+        self.dataset = _maker("fold_7")
+        (
+            self.train_dataset,
+            self.validation_dataset,
+            self.extra_validation_datasets,
+            self.predict_dataset,
+        ) = return_subsets(self.dataset)
+
+
+datamodule = DefaultModule
diff --git a/src/ptbench/data/hivtb/fold_7_rgb.py b/src/ptbench/data/hivtb/fold_7_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..292ef81e0511ff576c3ea23650421a100a81bd27
--- /dev/null
+++ b/src/ptbench/data/hivtb/fold_7_rgb.py
@@ -0,0 +1,46 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""HIV-TB dataset for TB detection (cross validation fold 7)
+
+* Split reference: none (stratified kfolding)
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.hivtb` for dataset details
+"""
+
+from clapper.logging import setup
+
+from .. import return_subsets
+from ..base_datamodule import BaseDataModule
+from . import _maker
+
+logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
+
+
+class DefaultModule(BaseDataModule):
+    def __init__(
+        self,
+        train_batch_size=1,
+        predict_batch_size=1,
+        drop_incomplete_batch=False,
+        multiproc_kwargs=None,
+    ):
+        super().__init__(
+            train_batch_size=train_batch_size,
+            predict_batch_size=predict_batch_size,
+            drop_incomplete_batch=drop_incomplete_batch,
+            multiproc_kwargs=multiproc_kwargs,
+        )
+
+    def setup(self, stage: str):
+        self.dataset = _maker("fold_7", RGB=True)
+        (
+            self.train_dataset,
+            self.validation_dataset,
+            self.extra_validation_datasets,
+            self.predict_dataset,
+        ) = return_subsets(self.dataset)
+
+
+datamodule = DefaultModule
diff --git a/src/ptbench/data/hivtb/fold_8.py b/src/ptbench/data/hivtb/fold_8.py
new file mode 100644
index 0000000000000000000000000000000000000000..7ba95a1e1cb501b408d409ce04cd2f466bdd55c3
--- /dev/null
+++ b/src/ptbench/data/hivtb/fold_8.py
@@ -0,0 +1,46 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""HIV-TB dataset for TB detection (cross validation fold 8)
+
+* Split reference: none (stratified kfolding)
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.hivtb` for dataset details
+"""
+
+from clapper.logging import setup
+
+from .. import return_subsets
+from ..base_datamodule import BaseDataModule
+from . import _maker
+
+logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
+
+
+class DefaultModule(BaseDataModule):
+    def __init__(
+        self,
+        train_batch_size=1,
+        predict_batch_size=1,
+        drop_incomplete_batch=False,
+        multiproc_kwargs=None,
+    ):
+        super().__init__(
+            train_batch_size=train_batch_size,
+            predict_batch_size=predict_batch_size,
+            drop_incomplete_batch=drop_incomplete_batch,
+            multiproc_kwargs=multiproc_kwargs,
+        )
+
+    def setup(self, stage: str):
+        self.dataset = _maker("fold_8")
+        (
+            self.train_dataset,
+            self.validation_dataset,
+            self.extra_validation_datasets,
+            self.predict_dataset,
+        ) = return_subsets(self.dataset)
+
+
+datamodule = DefaultModule
diff --git a/src/ptbench/data/hivtb/fold_8_rgb.py b/src/ptbench/data/hivtb/fold_8_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..eca72655c656c1262137130afea68cbd890577e0
--- /dev/null
+++ b/src/ptbench/data/hivtb/fold_8_rgb.py
@@ -0,0 +1,46 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""HIV-TB dataset for TB detection (cross validation fold 8)
+
+* Split reference: none (stratified kfolding)
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.hivtb` for dataset details
+"""
+
+from clapper.logging import setup
+
+from .. import return_subsets
+from ..base_datamodule import BaseDataModule
+from . import _maker
+
+logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
+
+
+class DefaultModule(BaseDataModule):
+    def __init__(
+        self,
+        train_batch_size=1,
+        predict_batch_size=1,
+        drop_incomplete_batch=False,
+        multiproc_kwargs=None,
+    ):
+        super().__init__(
+            train_batch_size=train_batch_size,
+            predict_batch_size=predict_batch_size,
+            drop_incomplete_batch=drop_incomplete_batch,
+            multiproc_kwargs=multiproc_kwargs,
+        )
+
+    def setup(self, stage: str):
+        self.dataset = _maker("fold_8", RGB=True)
+        (
+            self.train_dataset,
+            self.validation_dataset,
+            self.extra_validation_datasets,
+            self.predict_dataset,
+        ) = return_subsets(self.dataset)
+
+
+datamodule = DefaultModule
diff --git a/src/ptbench/data/hivtb/fold_9.py b/src/ptbench/data/hivtb/fold_9.py
new file mode 100644
index 0000000000000000000000000000000000000000..4a244adfd3807f1abfb46b5b7f55dcedf6dc0292
--- /dev/null
+++ b/src/ptbench/data/hivtb/fold_9.py
@@ -0,0 +1,46 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""HIV-TB dataset for TB detection (cross validation fold 9)
+
+* Split reference: none (stratified kfolding)
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.hivtb` for dataset details
+"""
+
+from clapper.logging import setup
+
+from .. import return_subsets
+from ..base_datamodule import BaseDataModule
+from . import _maker
+
+logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
+
+
+class DefaultModule(BaseDataModule):
+    def __init__(
+        self,
+        train_batch_size=1,
+        predict_batch_size=1,
+        drop_incomplete_batch=False,
+        multiproc_kwargs=None,
+    ):
+        super().__init__(
+            train_batch_size=train_batch_size,
+            predict_batch_size=predict_batch_size,
+            drop_incomplete_batch=drop_incomplete_batch,
+            multiproc_kwargs=multiproc_kwargs,
+        )
+
+    def setup(self, stage: str):
+        self.dataset = _maker("fold_9")
+        (
+            self.train_dataset,
+            self.validation_dataset,
+            self.extra_validation_datasets,
+            self.predict_dataset,
+        ) = return_subsets(self.dataset)
+
+
+datamodule = DefaultModule
diff --git a/src/ptbench/data/hivtb/fold_9_rgb.py b/src/ptbench/data/hivtb/fold_9_rgb.py
new file mode 100644
index 0000000000000000000000000000000000000000..3a12fc23aa92245d070196ac0cfe07e09f204ffe
--- /dev/null
+++ b/src/ptbench/data/hivtb/fold_9_rgb.py
@@ -0,0 +1,46 @@
+# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""HIV-TB dataset for TB detection (cross validation fold 9)
+
+* Split reference: none (stratified kfolding)
+* This configuration resolution: 512 x 512 (default)
+* See :py:mod:`ptbench.data.hivtb` for dataset details
+"""
+
+from clapper.logging import setup
+
+from .. import return_subsets
+from ..base_datamodule import BaseDataModule
+from . import _maker
+
+logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
+
+
+class DefaultModule(BaseDataModule):
+    def __init__(
+        self,
+        train_batch_size=1,
+        predict_batch_size=1,
+        drop_incomplete_batch=False,
+        multiproc_kwargs=None,
+    ):
+        super().__init__(
+            train_batch_size=train_batch_size,
+            predict_batch_size=predict_batch_size,
+            drop_incomplete_batch=drop_incomplete_batch,
+            multiproc_kwargs=multiproc_kwargs,
+        )
+
+    def setup(self, stage: str):
+        self.dataset = _maker("fold_9", RGB=True)
+        (
+            self.train_dataset,
+            self.validation_dataset,
+            self.extra_validation_datasets,
+            self.predict_dataset,
+        ) = return_subsets(self.dataset)
+
+
+datamodule = DefaultModule