OSCR

Few-shot deployment of pretrained MRI transformers in brain imaging tasks.

Code ↔ Paper

10 matches between paragraphs of the paper and lines of its authors' code, computed by the harvester (lexical-v1). Click a colored paragraph or line to see its counterpart.

The 10 matches
  1. [1] § Materials and methods › Direct classification ↔ sequence_detection/sequence_detection_finetune.py, lines 651–726 · score 0.73 · AdamW, cross entropy loss, sequence detection, MAE encoder, tokens, optimizer
  2. [2] § Results › Multi-class anatomical segmentation ↔ multi_segmentation_finetune.ipynb, lines 45–74 · score 0.70 · cerebral cortex, cerebral white matter, cerebellum, amygdala, hippocampus, Unet
  3. [3] § Materials and methods › Segmentation with fused embedding › MAE fusion architecture ↔ multi_seg/mae_unet_fuse.py, lines 79–180 · score 0.61 · skip connections, decoder stages, MAE transformer, fuses, fusion
  4. [4] § Materials and methods › Segmentation with fused embedding › MAE fusion architecture ↔ modeling/conformer/transconv.py, lines 1261–1403 · score 0.57 · skip connections, spatial dimensions, restore, decoder, layers, head
  5. [5] § Materials and methods › Segmentation with fused embedding › MAE fusion architecture ↔ multi_seg/mae_unet_fuse.py, lines 79–180 · score 0.55 · pretrained MAE transformer, encoder decoder, fuses, fusion
  6. [6] § Materials and methods › Dataset details › Fine-tuning dataset › Sequence detection dataset ↔ sequence_detection/sequence_detection_finetune.py, lines 1–52 · score 0.55 · T2 FLAIR, sequence detection, OASIS, SWI, ADNI, DTI
  7. [7] § Materials and methods › Dataset details › Fine-tuning dataset › Sequence detection dataset ↔ sequence_detection/sequence_detection_finetune_unet.py, lines 1–50 · score 0.55 · T2 FLAIR, sequence detection, OASIS, SWI, ADNI, DTI
  8. [8] § Materials and methods › Direct classification ↔ modeling/conformer/mae/main_finetune.py, lines 282–348 · score 0.53 · AdamW, cross entropy loss, encodes, optimizer, layer, MAE
  9. [9] § Materials and methods › Segmentation with fused embedding › MAE fusion architecture ↔ sequence_detection/sequence_detection_finetune.py, lines 651–726 · score 0.53 · AdamW, encoder decoder, optimizer, patches, batch, pretrained
  10. [10] § Materials and methods › Dataset details › Fine-tuning dataset › Skull stripping dataset › SynthStrip ↔ utils/nacc_loader.py, lines 95–149 · score 0.50 · slice thickness, sagittal, axial, coronal, scan, sequence

Paper

Loaded from Europe PMC by your browser, not stored by OSCR: doi.org · Europe PMC

The paper is loaded when this pane is shown.

The authors' code

Python · 726 lines · 48 KB · MIT · 3 matches

  1. # import numpy as np
  2. # from matplotlib import pyplot as plt
  3. # from help_func import print_var_detail
  4. import torch
  5. import os
  6. os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE"
  7. import sys
  8. import os
  9. sys.path.append(os.path.abspath(".."))
  10. from torch.utils.data import DataLoader
  11. from torchvision.datasets import ImageFolder
  12. from torchvision import transforms
  13. from utils.adni_loader import ADNILoader
  14. from utils.nacc_loader import NACCLoader
  15. from utils.general_dataloader import create_combine_dataloader
  16. from utils.general_dataloader_cache import GeneralDataset, GeneralDatasetMae
  17. from utils.fastmri_loader import FastmriDataSetMae, create_fastmri_data_info
  18. import os
  19. import time
  20. import pickle
  21. from help_func import print_var_detail
  22. from utils.oasis_loader import OASISLoader
  23. import copy
  24. from utils.help_func import create_path
  25. from utils.data_utils import img_augment
  26. from torch.utils.data import Dataset, DataLoader, WeightedRandomSampler, ConcatDataset, DistributedSampler
  27. device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
  28. print('device:', device)
  29. rebuilt_OASIS = False
  30. rebuilt_ADNI = False
  31. rebuilt_NACC = False
  32. RANDOM_SEED = 42
  33. VAL_SPLIT = 0.0
  34. IS_TRAIN = True
  35. INPUT_SIZE = 224
  36. nifti_root_oasis = "C:/oasis_nifti/"
  37. cache_root_oasis_pkl = "E:/oasis_nifti_cache_reshape_norm_pkl/"
  38. nifti_root_adni = "F:/adni_nifti/"
  39. cache_root_adni_pkl = "E:/adni_nifti_cache_reshape_norm_pkl/"
  40. nifti_root_nacc = "F:/nacc_nifti/"
  41. cache_root_nacc_pkl = "E:/nacc_n_pkl/"
  42. target_sequence_woDWI = ['T1_T1flair', 'T2', 'T2flair_flair', 'PD', 'T2star_hemo', 'T2star_swi']
  43. target_sequence_woDWI_woT1_T1flair = [ 'T2', 'T2flair_flair', 'PD', 'T2star_hemo', 'T2star_swi']
  44. target_sequence_DWI = ['DTI_DWI_500', 'DTI_DWI']
  45. target_sequence_all = ['T1_T1flair', 'T2', 'T2flair_flair', 'PD', 'T2star_hemo', 'T2star_swi', 'DTI_DWI_500', 'DTI_DWI']
  46. mri_sequence = target_sequence_all
  47. detect_sequence = ['T1_T1flair', 'T2', 'T2flair_flair', 'PD', 'T2star_hemo', 'T2star_swi', 'DTI_DWI']
  48. #['T1_T1flair', 'T2', 'T2flair_flair', 'PD', 'T2star_hemo', 'T2star_swi', 'DTI_DWI', 'DTI_DWI_500']
  49. max_val_len = 20000
  50. rebuild_val_dataset = False
  51. if rebuild_val_dataset:
  52. OASISdataset_train_all_sequence_val_T1_T1flair = copy.deepcopy(OASISdataset_train_all_sequence_val)
  53. OASISdataset_train_all_sequence_val_T1_T1flair.filter_by_sequence_labels(['T1_T1flair'])
  54. print(len(OASISdataset_train_all_sequence_val_T1_T1flair))
  55. OASISdataset_train_all_sequence_val_T1_T1flair.max_val_len = max_val_len
  56. OASISdataset_train_all_sequence_val_T1_T1flair._update_train_val_paths()
  57. print(len(OASISdataset_train_all_sequence_val_T1_T1flair))
  58. OASISdataset_train_all_sequence_val_T2 = copy.deepcopy(OASISdataset_train_all_sequence_val)
  59. OASISdataset_train_all_sequence_val_T2.filter_by_sequence_labels(['T2'])
  60. print(len(OASISdataset_train_all_sequence_val_T2))
  61. OASISdataset_train_all_sequence_val_T2.max_val_len = max_val_len
  62. OASISdataset_train_all_sequence_val_T2._update_train_val_paths()
  63. print(len(OASISdataset_train_all_sequence_val_T2))
  64. OASISdataset_train_all_sequence_val_T2flair_flair = copy.deepcopy(OASISdataset_train_all_sequence_val)
  65. OASISdataset_train_all_sequence_val_T2flair_flair.filter_by_sequence_labels(['T2flair_flair'])
  66. print(len(OASISdataset_train_all_sequence_val_T2flair_flair))
  67. OASISdataset_train_all_sequence_val_T2flair_flair.max_val_len = max_val_len
  68. OASISdataset_train_all_sequence_val_T2flair_flair._update_train_val_paths()
  69. print(len(OASISdataset_train_all_sequence_val_T2flair_flair))
  70. OASISdataset_train_all_sequence_val_PD = copy.deepcopy(OASISdataset_train_all_sequence_val)
  71. OASISdataset_train_all_sequence_val_PD.filter_by_sequence_labels(['PD'])
  72. print(len(OASISdataset_train_all_sequence_val_PD))
  73. OASISdataset_train_all_sequence_val_PD.max_val_len = max_val_len
  74. OASISdataset_train_all_sequence_val_PD._update_train_val_paths()
  75. print(len(OASISdataset_train_all_sequence_val_PD))
  76. OASISdataset_train_all_sequence_val_T2star_hemo = copy.deepcopy(OASISdataset_train_all_sequence_val)
  77. OASISdataset_train_all_sequence_val_T2star_hemo.filter_by_sequence_labels(['T2star_hemo'])
  78. print(len(OASISdataset_train_all_sequence_val_T2star_hemo))
  79. OASISdataset_train_all_sequence_val_T2star_hemo.max_val_len = max_val_len
  80. OASISdataset_train_all_sequence_val_T2star_hemo._update_train_val_paths()
  81. print(len(OASISdataset_train_all_sequence_val_T2star_hemo))
  82. OASISdataset_train_all_sequence_val_T2star_swi = copy.deepcopy(OASISdataset_train_all_sequence_val)
  83. OASISdataset_train_all_sequence_val_T2star_swi.filter_by_sequence_labels(['T2star_swi'])
  84. print(len(OASISdataset_train_all_sequence_val_T2star_swi))
  85. OASISdataset_train_all_sequence_val_T2star_swi.max_val_len = max_val_len
  86. OASISdataset_train_all_sequence_val_T2star_swi._update_train_val_paths()
  87. print(len(OASISdataset_train_all_sequence_val_T2star_swi))
  88. OASISdataset_train_all_sequence_val_DTI_DWI = copy.deepcopy(OASISdataset_train_all_sequence_val)
  89. OASISdataset_train_all_sequence_val_DTI_DWI.filter_by_sequence_labels(['DTI_DWI', 'DTI_DWI_500'])
  90. print(len(OASISdataset_train_all_sequence_val_DTI_DWI))
  91. OASISdataset_train_all_sequence_val_DTI_DWI.max_val_len = max_val_len
  92. OASISdataset_train_all_sequence_val_DTI_DWI._update_train_val_paths()
  93. print(len(OASISdataset_train_all_sequence_val_DTI_DWI))
  94. # save them
  95. with open('./index_list/OASISdataset_train_all_sequence_val_T1_T1flair.pkl', 'wb') as outp:
  96. pickle.dump(OASISdataset_train_all_sequence_val_T1_T1flair, outp, pickle.HIGHEST_PROTOCOL)
  97. print(len(OASISdataset_train_all_sequence_val_T1_T1flair))
  98. with open('./index_list/OASISdataset_train_all_sequence_val_T2.pkl', 'wb') as outp:
  99. pickle.dump(OASISdataset_train_all_sequence_val_T2, outp, pickle.HIGHEST_PROTOCOL)
  100. print(len(OASISdataset_train_all_sequence_val_T2))
  101. with open('./index_list/OASISdataset_train_all_sequence_val_T2flair_flair.pkl', 'wb') as outp:
  102. pickle.dump(OASISdataset_train_all_sequence_val_T2flair_flair, outp, pickle.HIGHEST_PROTOCOL)
  103. print(len(OASISdataset_train_all_sequence_val_T2flair_flair))
  104. with open('./index_list/OASISdataset_train_all_sequence_val_PD.pkl', 'wb') as outp:
  105. pickle.dump(OASISdataset_train_all_sequence_val_PD, outp, pickle.HIGHEST_PROTOCOL)
  106. print(len(OASISdataset_train_all_sequence_val_PD))
  107. with open('./index_list/OASISdataset_train_all_sequence_val_T2star_hemo.pkl', 'wb') as outp:
  108. pickle.dump(OASISdataset_train_all_sequence_val_T2star_hemo, outp, pickle.HIGHEST_PROTOCOL)
  109. print(len(OASISdataset_train_all_sequence_val_T2star_hemo))
  110. with open('./index_list/OASISdataset_train_all_sequence_val_T2star_swi.pkl', 'wb') as outp:
  111. pickle.dump(OASISdataset_train_all_sequence_val_T2star_swi, outp, pickle.HIGHEST_PROTOCOL)
  112. print(len(OASISdataset_train_all_sequence_val_T2star_swi))
  113. with open('./index_list/OASISdataset_train_all_sequence_val_DTI_DWI.pkl', 'wb') as outp:
  114. pickle.dump(OASISdataset_train_all_sequence_val_DTI_DWI, outp, pickle.HIGHEST_PROTOCOL)
  115. print(len(OASISdataset_train_all_sequence_val_DTI_DWI))
  116. else:
  117. with open('./index_list/OASISdataset_train_all_sequence_val_T1_T1flair.pkl', 'rb') as inp:
  118. OASISdataset_train_all_sequence_val_T1_T1flair = pickle.load(inp)
  119. print(len(OASISdataset_train_all_sequence_val_T1_T1flair))
  120. with open('./index_list/OASISdataset_train_all_sequence_val_T2.pkl', 'rb') as inp:
  121. OASISdataset_train_all_sequence_val_T2 = pickle.load(inp)
  122. print(len(OASISdataset_train_all_sequence_val_T2))
  123. with open('./index_list/OASISdataset_train_all_sequence_val_T2flair_flair.pkl', 'rb') as inp:
  124. OASISdataset_train_all_sequence_val_T2flair_flair = pickle.load(inp)
  125. print(len(OASISdataset_train_all_sequence_val_T2flair_flair))
  126. with open('./index_list/OASISdataset_train_all_sequence_val_PD.pkl', 'rb') as inp:
  127. OASISdataset_train_all_sequence_val_PD = pickle.load(inp)
  128. print(len(OASISdataset_train_all_sequence_val_PD))
  129. with open('./index_list/OASISdataset_train_all_sequence_val_T2star_hemo.pkl', 'rb') as inp:
  130. OASISdataset_train_all_sequence_val_T2star_hemo = pickle.load(inp)
  131. print(len(OASISdataset_train_all_sequence_val_T2star_hemo))
  132. with open('./index_list/OASISdataset_train_all_sequence_val_T2star_swi.pkl', 'rb') as inp:
  133. OASISdataset_train_all_sequence_val_T2star_swi = pickle.load(inp)
  134. print(len(OASISdataset_train_all_sequence_val_T2star_swi))
  135. with open('./index_list/OASISdataset_train_all_sequence_val_DTI_DWI.pkl', 'rb') as inp:
  136. OASISdataset_train_all_sequence_val_DTI_DWI = pickle.load(inp)
  137. print(len(OASISdataset_train_all_sequence_val_DTI_DWI))
  138. #['T1_T1flair', 'T2', 'T2flair_flair', 'PD', 'T2star_hemo', 'T2star_swi', 'DTI_DWI', 'DTI_DWI_500']
  139. if rebuild_val_dataset:
  140. ADNIdataset_train_all_sequence_val_T1_T1flair = copy.deepcopy(ADNIdataset_train_all_sequence_val)
  141. ADNIdataset_train_all_sequence_val_T1_T1flair.filter_by_sequence_labels(['T1_T1flair'])
  142. print(len(ADNIdataset_train_all_sequence_val_T1_T1flair))
  143. ADNIdataset_train_all_sequence_val_T1_T1flair.max_val_len = max_val_len
  144. ADNIdataset_train_all_sequence_val_T1_T1flair._update_train_val_paths()
  145. print(len(ADNIdataset_train_all_sequence_val_T1_T1flair))
  146. ADNIdataset_train_all_sequence_val_T2 = copy.deepcopy(ADNIdataset_train_all_sequence_val)
  147. ADNIdataset_train_all_sequence_val_T2.filter_by_sequence_labels(['T2'])
  148. print(len(ADNIdataset_train_all_sequence_val_T2))
  149. ADNIdataset_train_all_sequence_val_T2.max_val_len = max_val_len
  150. ADNIdataset_train_all_sequence_val_T2._update_train_val_paths()
  151. print(len(ADNIdataset_train_all_sequence_val_T2))
  152. ADNIdataset_train_all_sequence_val_T2flair_flair = copy.deepcopy(ADNIdataset_train_all_sequence_val)
  153. ADNIdataset_train_all_sequence_val_T2flair_flair.filter_by_sequence_labels(['T2flair_flair'])
  154. print(len(ADNIdataset_train_all_sequence_val_T2flair_flair))
  155. ADNIdataset_train_all_sequence_val_T2flair_flair.max_val_len = max_val_len
  156. ADNIdataset_train_all_sequence_val_T2flair_flair._update_train_val_paths()
  157. print(len(ADNIdataset_train_all_sequence_val_T2flair_flair))
  158. ADNIdataset_train_all_sequence_val_PD = copy.deepcopy(ADNIdataset_train_all_sequence_val)
  159. ADNIdataset_train_all_sequence_val_PD.filter_by_sequence_labels(['PD'])
  160. print(len(ADNIdataset_train_all_sequence_val_PD))
  161. ADNIdataset_train_all_sequence_val_PD.max_val_len = max_val_len
  162. ADNIdataset_train_all_sequence_val_PD._update_train_val_paths()
  163. print(len(ADNIdataset_train_all_sequence_val_PD))
  164. ADNIdataset_train_all_sequence_val_T2star_hemo = copy.deepcopy(ADNIdataset_train_all_sequence_val)
  165. ADNIdataset_train_all_sequence_val_T2star_hemo.filter_by_sequence_labels(['T2star_hemo'])
  166. print(len(ADNIdataset_train_all_sequence_val_T2star_hemo))
  167. ADNIdataset_train_all_sequence_val_T2star_hemo.max_val_len = max_val_len
  168. ADNIdataset_train_all_sequence_val_T2star_hemo._update_train_val_paths()
  169. print(len(ADNIdataset_train_all_sequence_val_T2star_hemo))
  170. ADNIdataset_train_all_sequence_val_T2star_swi = copy.deepcopy(ADNIdataset_train_all_sequence_val)
  171. ADNIdataset_train_all_sequence_val_T2star_swi.filter_by_sequence_labels(['T2star_swi'])
  172. print(len(ADNIdataset_train_all_sequence_val_T2star_swi))
  173. ADNIdataset_train_all_sequence_val_T2star_swi.max_val_len = max_val_len
  174. ADNIdataset_train_all_sequence_val_T2star_swi._update_train_val_paths()
  175. print(len(ADNIdataset_train_all_sequence_val_T2star_swi))
  176. ADNIdataset_train_all_sequence_val_DTI_DWI = copy.deepcopy(ADNIdataset_train_all_sequence_val)
  177. ADNIdataset_train_all_sequence_val_DTI_DWI.filter_by_sequence_labels(['DTI_DWI', 'DTI_DWI_500'])
  178. print(len(ADNIdataset_train_all_sequence_val_DTI_DWI))
  179. ADNIdataset_train_all_sequence_val_DTI_DWI.max_val_len = max_val_len
  180. ADNIdataset_train_all_sequence_val_DTI_DWI._update_train_val_paths()
  181. print(len(ADNIdataset_train_all_sequence_val_DTI_DWI))
  182. # save them
  183. with open('./index_list/ADNIdataset_train_all_sequence_val_T1_T1flair.pkl', 'wb') as outp:
  184. pickle.dump(ADNIdataset_train_all_sequence_val_T1_T1flair, outp, pickle.HIGHEST_PROTOCOL)
  185. print(len(ADNIdataset_train_all_sequence_val_T1_T1flair))
  186. with open('./index_list/ADNIdataset_train_all_sequence_val_T2.pkl', 'wb') as outp:
  187. pickle.dump(ADNIdataset_train_all_sequence_val_T2, outp, pickle.HIGHEST_PROTOCOL)
  188. print(len(ADNIdataset_train_all_sequence_val_T2))
  189. with open('./index_list/ADNIdataset_train_all_sequence_val_T2flair_flair.pkl', 'wb') as outp:
  190. pickle.dump(ADNIdataset_train_all_sequence_val_T2flair_flair, outp, pickle.HIGHEST_PROTOCOL)
  191. print(len(ADNIdataset_train_all_sequence_val_T2flair_flair))
  192. with open('./index_list/ADNIdataset_train_all_sequence_val_PD.pkl', 'wb') as outp:
  193. pickle.dump(ADNIdataset_train_all_sequence_val_PD, outp, pickle.HIGHEST_PROTOCOL)
  194. print(len(ADNIdataset_train_all_sequence_val_PD))
  195. with open('./index_list/ADNIdataset_train_all_sequence_val_T2star_hemo.pkl', 'wb') as outp:
  196. pickle.dump(ADNIdataset_train_all_sequence_val_T2star_hemo, outp, pickle.HIGHEST_PROTOCOL)
  197. print(len(ADNIdataset_train_all_sequence_val_T2star_hemo))
  198. with open('./index_list/ADNIdataset_train_all_sequence_val_T2star_swi.pkl', 'wb') as outp:
  199. pickle.dump(ADNIdataset_train_all_sequence_val_T2star_swi, outp, pickle.HIGHEST_PROTOCOL)
  200. print(len(ADNIdataset_train_all_sequence_val_T2star_swi))
  201. with open('./index_list/ADNIdataset_train_all_sequence_val_DTI_DWI.pkl', 'wb') as outp:
  202. pickle.dump(ADNIdataset_train_all_sequence_val_DTI_DWI, outp, pickle.HIGHEST_PROTOCOL)
  203. print(len(ADNIdataset_train_all_sequence_val_DTI_DWI))
  204. else:
  205. with open('./index_list/ADNIdataset_train_all_sequence_val_T1_T1flair.pkl', 'rb') as inp:
  206. ADNIdataset_train_all_sequence_val_T1_T1flair = pickle.load(inp)
  207. print(len(ADNIdataset_train_all_sequence_val_T1_T1flair))
  208. with open('./index_list/ADNIdataset_train_all_sequence_val_T2.pkl', 'rb') as inp:
  209. ADNIdataset_train_all_sequence_val_T2 = pickle.load(inp)
  210. print(len(ADNIdataset_train_all_sequence_val_T2))
  211. with open('./index_list/ADNIdataset_train_all_sequence_val_T2flair_flair.pkl', 'rb') as inp:
  212. ADNIdataset_train_all_sequence_val_T2flair_flair = pickle.load(inp)
  213. print(len(ADNIdataset_train_all_sequence_val_T2flair_flair))
  214. with open('./index_list/ADNIdataset_train_all_sequence_val_PD.pkl', 'rb') as inp:
  215. ADNIdataset_train_all_sequence_val_PD = pickle.load(inp)
  216. print(len(ADNIdataset_train_all_sequence_val_PD))
  217. with open('./index_list/ADNIdataset_train_all_sequence_val_T2star_hemo.pkl', 'rb') as inp:
  218. ADNIdataset_train_all_sequence_val_T2star_hemo = pickle.load(inp)
  219. print(len(ADNIdataset_train_all_sequence_val_T2star_hemo))
  220. with open('./index_list/ADNIdataset_train_all_sequence_val_T2star_swi.pkl', 'rb') as inp:
  221. ADNIdataset_train_all_sequence_val_T2star_swi = pickle.load(inp)
  222. print(len(ADNIdataset_train_all_sequence_val_T2star_swi))
  223. with open('./index_list/ADNIdataset_train_all_sequence_val_DTI_DWI.pkl', 'rb') as inp:
  224. ADNIdataset_train_all_sequence_val_DTI_DWI = pickle.load(inp)
  225. print(len(ADNIdataset_train_all_sequence_val_DTI_DWI))
  226. #['T1_T1flair', 'T2', 'T2flair_flair', 'PD', 'T2star_hemo', 'T2star_swi', 'DTI_DWI', 'DTI_DWI_500']
  227. if rebuild_val_dataset:
  228. NACCdataset_train_all_sequence_val_T1_T1flair = copy.deepcopy(NACCdataset_train_all_sequence_val)
  229. NACCdataset_train_all_sequence_val_T1_T1flair.filter_by_sequence_labels(['T1_T1flair'])
  230. print(len(NACCdataset_train_all_sequence_val_T1_T1flair))
  231. NACCdataset_train_all_sequence_val_T1_T1flair.max_val_len = max_val_len
  232. NACCdataset_train_all_sequence_val_T1_T1flair._update_train_val_paths()
  233. print(len(NACCdataset_train_all_sequence_val_T1_T1flair))
  234. NACCdataset_train_all_sequence_val_T2 = copy.deepcopy(NACCdataset_train_all_sequence_val)
  235. NACCdataset_train_all_sequence_val_T2.filter_by_sequence_labels(['T2'])
  236. print(len(NACCdataset_train_all_sequence_val_T2))
  237. NACCdataset_train_all_sequence_val_T2.max_val_len = max_val_len
  238. NACCdataset_train_all_sequence_val_T2._update_train_val_paths()
  239. print(len(NACCdataset_train_all_sequence_val_T2))
  240. NACCdataset_train_all_sequence_val_T2flair_flair = copy.deepcopy(NACCdataset_train_all_sequence_val)
  241. NACCdataset_train_all_sequence_val_T2flair_flair.filter_by_sequence_labels(['T2flair_flair'])
  242. print(len(NACCdataset_train_all_sequence_val_T2flair_flair))
  243. NACCdataset_train_all_sequence_val_T2flair_flair.max_val_len = max_val_len
  244. NACCdataset_train_all_sequence_val_T2flair_flair._update_train_val_paths()
  245. print(len(NACCdataset_train_all_sequence_val_T2flair_flair))
  246. NACCdataset_train_all_sequence_val_PD = copy.deepcopy(NACCdataset_train_all_sequence_val)
  247. NACCdataset_train_all_sequence_val_PD.filter_by_sequence_labels(['PD'])
  248. print(len(NACCdataset_train_all_sequence_val_PD))
  249. NACCdataset_train_all_sequence_val_PD.max_val_len = max_val_len
  250. NACCdataset_train_all_sequence_val_PD._update_train_val_paths()
  251. print(len(NACCdataset_train_all_sequence_val_PD))
  252. NACCdataset_train_all_sequence_val_T2star_hemo = copy.deepcopy(NACCdataset_train_all_sequence_val)
  253. NACCdataset_train_all_sequence_val_T2star_hemo.filter_by_sequence_labels(['T2star_hemo'])
  254. print(len(NACCdataset_train_all_sequence_val_T2star_hemo))
  255. NACCdataset_train_all_sequence_val_T2star_hemo.max_val_len = max_val_len
  256. NACCdataset_train_all_sequence_val_T2star_hemo._update_train_val_paths()
  257. print(len(NACCdataset_train_all_sequence_val_T2star_hemo))
  258. NACCdataset_train_all_sequence_val_T2star_swi = copy.deepcopy(NACCdataset_train_all_sequence_val)
  259. NACCdataset_train_all_sequence_val_T2star_swi.filter_by_sequence_labels(['T2star_swi'])
  260. print(len(NACCdataset_train_all_sequence_val_T2star_swi))
  261. NACCdataset_train_all_sequence_val_T2star_swi.max_val_len = max_val_len
  262. NACCdataset_train_all_sequence_val_T2star_swi._update_train_val_paths()
  263. print(len(NACCdataset_train_all_sequence_val_T2star_swi))
  264. NACCdataset_train_all_sequence_val_DTI_DWI = copy.deepcopy(NACCdataset_train_all_sequence_val)
  265. NACCdataset_train_all_sequence_val_DTI_DWI.filter_by_sequence_labels(['DTI_DWI', 'DTI_DWI_500'])
  266. print(len(NACCdataset_train_all_sequence_val_DTI_DWI))
  267. NACCdataset_train_all_sequence_val_DTI_DWI.max_val_len = max_val_len
  268. NACCdataset_train_all_sequence_val_DTI_DWI._update_train_val_paths()
  269. print(len(NACCdataset_train_all_sequence_val_DTI_DWI))
  270. # save them
  271. with open('./index_list/NACCdataset_train_all_sequence_val_T1_T1flair.pkl', 'wb') as outp:
  272. pickle.dump(NACCdataset_train_all_sequence_val_T1_T1flair, outp, pickle.HIGHEST_PROTOCOL)
  273. print(len(NACCdataset_train_all_sequence_val_T1_T1flair))
  274. with open('./index_list/NACCdataset_train_all_sequence_val_T2.pkl', 'wb') as outp:
  275. pickle.dump(NACCdataset_train_all_sequence_val_T2, outp, pickle.HIGHEST_PROTOCOL)
  276. print(len(NACCdataset_train_all_sequence_val_T2))
  277. with open('./index_list/NACCdataset_train_all_sequence_val_T2flair_flair.pkl', 'wb') as outp:
  278. pickle.dump(NACCdataset_train_all_sequence_val_T2flair_flair, outp, pickle.HIGHEST_PROTOCOL)
  279. print(len(NACCdataset_train_all_sequence_val_T2flair_flair))
  280. with open('./index_list/NACCdataset_train_all_sequence_val_PD.pkl', 'wb') as outp:
  281. pickle.dump(NACCdataset_train_all_sequence_val_PD, outp, pickle.HIGHEST_PROTOCOL)
  282. print(len(NACCdataset_train_all_sequence_val_PD))
  283. with open('./index_list/NACCdataset_train_all_sequence_val_T2star_hemo.pkl', 'wb') as outp:
  284. pickle.dump(NACCdataset_train_all_sequence_val_T2star_hemo, outp, pickle.HIGHEST_PROTOCOL)
  285. print(len(NACCdataset_train_all_sequence_val_T2star_hemo))
  286. with open('./index_list/NACCdataset_train_all_sequence_val_T2star_swi.pkl', 'wb') as outp:
  287. pickle.dump(NACCdataset_train_all_sequence_val_T2star_swi, outp, pickle.HIGHEST_PROTOCOL)
  288. print(len(NACCdataset_train_all_sequence_val_T2star_swi))
  289. with open('./index_list/NACCdataset_train_all_sequence_val_DTI_DWI.pkl', 'wb') as outp:
  290. pickle.dump(NACCdataset_train_all_sequence_val_DTI_DWI, outp, pickle.HIGHEST_PROTOCOL)
  291. print(len(NACCdataset_train_all_sequence_val_DTI_DWI))
  292. else:
  293. with open('./index_list/NACCdataset_train_all_sequence_val_T1_T1flair.pkl', 'rb') as inp:
  294. NACCdataset_train_all_sequence_val_T1_T1flair = pickle.load(inp)
  295. print(len(NACCdataset_train_all_sequence_val_T1_T1flair))
  296. with open('./index_list/NACCdataset_train_all_sequence_val_T2.pkl', 'rb') as inp:
  297. NACCdataset_train_all_sequence_val_T2 = pickle.load(inp)
  298. print(len(NACCdataset_train_all_sequence_val_T2))
  299. with open('./index_list/NACCdataset_train_all_sequence_val_T2flair_flair.pkl', 'rb') as inp:
  300. NACCdataset_train_all_sequence_val_T2flair_flair = pickle.load(inp)
  301. print(len(NACCdataset_train_all_sequence_val_T2flair_flair))
  302. with open('./index_list/NACCdataset_train_all_sequence_val_PD.pkl', 'rb') as inp:
  303. NACCdataset_train_all_sequence_val_PD = pickle.load(inp)
  304. print(len(NACCdataset_train_all_sequence_val_PD))
  305. with open('./index_list/NACCdataset_train_all_sequence_val_T2star_hemo.pkl', 'rb') as inp:
  306. NACCdataset_train_all_sequence_val_T2star_hemo = pickle.load(inp)
  307. print(len(NACCdataset_train_all_sequence_val_T2star_hemo))
  308. with open('./index_list/NACCdataset_train_all_sequence_val_T2star_swi.pkl', 'rb') as inp:
  309. NACCdataset_train_all_sequence_val_T2star_swi = pickle.load(inp)
  310. print(len(NACCdataset_train_all_sequence_val_T2star_swi))
  311. with open('./index_list/NACCdataset_train_all_sequence_val_DTI_DWI.pkl', 'rb') as inp:
  312. NACCdataset_train_all_sequence_val_DTI_DWI = pickle.load(inp)
  313. print(len(NACCdataset_train_all_sequence_val_DTI_DWI))
  314. # train dataset construction
  315. #['T1_T1flair', 'T2', 'T2flair_flair', 'PD', 'T2star_hemo', 'T2star_swi', 'DTI_DWI', 'DTI_DWI_500']
  316. max_train_len = 100
  317. rebuild_train_dataset= True
  318. if rebuild_train_dataset:
  319. OASISdataset_train_all_sequence_train_T1_T1flair = copy.deepcopy(OASISdataset_train_all_sequence_val_T1_T1flair)
  320. OASISdataset_train_all_sequence_train_T1_T1flair.is_train = True
  321. OASISdataset_train_all_sequence_train_T1_T1flair.update_train_paths_w_shuffle(max_train_len) # shuffle train dataset
  322. # OASISdataset_train_all_sequence_train_T1_T1flair.max_train_len = max_train_len
  323. print(len(OASISdataset_train_all_sequence_train_T1_T1flair))
  324. OASISdataset_train_all_sequence_train_T2 = copy.deepcopy(OASISdataset_train_all_sequence_val_T2)
  325. OASISdataset_train_all_sequence_train_T2.is_train = True
  326. OASISdataset_train_all_sequence_train_T2.update_train_paths_w_shuffle(max_train_len) # shuffle train dataset
  327. # OASISdataset_train_all_sequence_train_T2.max_train_len = max_train_len
  328. print(len(OASISdataset_train_all_sequence_train_T2))
  329. OASISdataset_train_all_sequence_train_T2flair_flair = copy.deepcopy(OASISdataset_train_all_sequence_val_T2flair_flair)
  330. OASISdataset_train_all_sequence_train_T2flair_flair.is_train = True
  331. OASISdataset_train_all_sequence_train_T2flair_flair.update_train_paths_w_shuffle(max_train_len)
  332. # OASISdataset_train_all_sequence_train_T2flair_flair.max_train_len = max_train_len
  333. print(len(OASISdataset_train_all_sequence_train_T2flair_flair))
  334. OASISdataset_train_all_sequence_train_PD = copy.deepcopy(OASISdataset_train_all_sequence_val_PD)
  335. OASISdataset_train_all_sequence_train_PD.is_train = True
  336. OASISdataset_train_all_sequence_train_PD.update_train_paths_w_shuffle(max_train_len)
  337. # OASISdataset_train_all_sequence_train_PD.max_train_len = max_train_len
  338. print(len(OASISdataset_train_all_sequence_train_PD))
  339. OASISdataset_train_all_sequence_train_T2star_hemo = copy.deepcopy(OASISdataset_train_all_sequence_val_T2star_hemo)
  340. OASISdataset_train_all_sequence_train_T2star_hemo.is_train = True
  341. OASISdataset_train_all_sequence_train_T2star_hemo.update_train_paths_w_shuffle(max_train_len)
  342. # OASISdataset_train_all_sequence_train_T2star_hemo.max_train_len = max_train_len
  343. print(len(OASISdataset_train_all_sequence_train_T2star_hemo))
  344. OASISdataset_train_all_sequence_train_T2star_swi = copy.deepcopy(OASISdataset_train_all_sequence_val_T2star_swi)
  345. OASISdataset_train_all_sequence_train_T2star_swi.is_train = True
  346. OASISdataset_train_all_sequence_train_T2star_swi.update_train_paths_w_shuffle(max_train_len)
  347. # OASISdataset_train_all_sequence_train_T2star_swi.max_train_len = max_train_len
  348. print(len(OASISdataset_train_all_sequence_train_T2star_swi))
  349. OASISdataset_train_all_sequence_train_DTI_DWI = copy.deepcopy(OASISdataset_train_all_sequence_val_DTI_DWI)
  350. OASISdataset_train_all_sequence_train_DTI_DWI.is_train = True
  351. OASISdataset_train_all_sequence_train_DTI_DWI.update_train_paths_w_shuffle(max_train_len)
  352. # OASISdataset_train_all_sequence_train_DTI_DWI.max_train_len = max_train_len
  353. print(len(OASISdataset_train_all_sequence_train_DTI_DWI))
  354. # save them
  355. with open('./index_list/OASISdataset_train_all_sequence_train_T1_T1flair.pkl', 'wb') as outp:
  356. pickle.dump(OASISdataset_train_all_sequence_train_T1_T1flair, outp, pickle.HIGHEST_PROTOCOL)
  357. print(len(OASISdataset_train_all_sequence_train_T1_T1flair))
  358. with open('./index_list/OASISdataset_train_all_sequence_train_T2.pkl', 'wb') as outp:
  359. pickle.dump(OASISdataset_train_all_sequence_train_T2, outp, pickle.HIGHEST_PROTOCOL)
  360. print(len(OASISdataset_train_all_sequence_train_T2))
  361. with open('./index_list/OASISdataset_train_all_sequence_train_T2flair_flair.pkl', 'wb') as outp:
  362. pickle.dump(OASISdataset_train_all_sequence_train_T2flair_flair, outp, pickle.HIGHEST_PROTOCOL)
  363. print(len(OASISdataset_train_all_sequence_train_T2flair_flair))
  364. with open('./index_list/OASISdataset_train_all_sequence_train_PD.pkl', 'wb') as outp:
  365. pickle.dump(OASISdataset_train_all_sequence_train_PD, outp, pickle.HIGHEST_PROTOCOL)
  366. print(len(OASISdataset_train_all_sequence_train_PD))
  367. with open('./index_list/OASISdataset_train_all_sequence_train_T2star_hemo.pkl', 'wb') as outp:
  368. pickle.dump(OASISdataset_train_all_sequence_train_T2star_hemo, outp, pickle.HIGHEST_PROTOCOL)
  369. print(len(OASISdataset_train_all_sequence_train_T2star_hemo))
  370. with open('./index_list/OASISdataset_train_all_sequence_train_T2star_swi.pkl', 'wb') as outp:
  371. pickle.dump(OASISdataset_train_all_sequence_train_T2star_swi, outp, pickle.HIGHEST_PROTOCOL)
  372. print(len(OASISdataset_train_all_sequence_train_T2star_swi))
  373. with open('./index_list/OASISdataset_train_all_sequence_train_DTI_DWI.pkl', 'wb') as outp:
  374. pickle.dump(OASISdataset_train_all_sequence_train_DTI_DWI, outp, pickle.HIGHEST_PROTOCOL)
  375. print(len(OASISdataset_train_all_sequence_train_DTI_DWI))
  376. else:
  377. with open('./index_list/OASISdataset_train_all_sequence_train_T1_T1flair.pkl', 'rb') as inp:
  378. OASISdataset_train_all_sequence_train_T1_T1flair = pickle.load(inp)
  379. print(len(OASISdataset_train_all_sequence_train_T1_T1flair))
  380. with open('./index_list/OASISdataset_train_all_sequence_train_T2.pkl', 'rb') as inp:
  381. OASISdataset_train_all_sequence_train_T2 = pickle.load(inp)
  382. print(len(OASISdataset_train_all_sequence_train_T2))
  383. with open('./index_list/OASISdataset_train_all_sequence_train_T2flair_flair.pkl', 'rb') as inp:
  384. OASISdataset_train_all_sequence_train_T2flair_flair = pickle.load(inp)
  385. print(len(OASISdataset_train_all_sequence_train_T2flair_flair))
  386. with open('./index_list/OASISdataset_train_all_sequence_train_PD.pkl', 'rb') as inp:
  387. OASISdataset_train_all_sequence_train_PD = pickle.load(inp)
  388. print(len(OASISdataset_train_all_sequence_train_PD))
  389. with open('./index_list/OASISdataset_train_all_sequence_train_T2star_hemo.pkl', 'rb') as inp:
  390. OASISdataset_train_all_sequence_train_T2star_hemo = pickle.load(inp)
  391. print(len(OASISdataset_train_all_sequence_train_T2star_hemo))
  392. with open('./index_list/OASISdataset_train_all_sequence_train_T2star_swi.pkl', 'rb') as inp:
  393. OASISdataset_train_all_sequence_train_T2star_swi = pickle.load(inp)
  394. print(len(OASISdataset_train_all_sequence_train_T2star_swi))
  395. with open('./index_list/OASISdataset_train_all_sequence_train_DTI_DWI.pkl', 'rb') as inp:
  396. OASISdataset_train_all_sequence_train_DTI_DWI = pickle.load(inp)
  397. print(len(OASISdataset_train_all_sequence_train_DTI_DWI))
  398. # train dataset construction
  399. #['T1_T1flair', 'T2', 'T2flair_flair', 'PD', 'T2star_hemo', 'T2star_swi', 'DTI_DWI', 'DTI_DWI_500']
  400. if rebuild_train_dataset:
  401. ADNIdataset_train_all_sequence_train_T1_T1flair = copy.deepcopy(ADNIdataset_train_all_sequence_val_T1_T1flair)
  402. ADNIdataset_train_all_sequence_train_T1_T1flair.is_train = True
  403. ADNIdataset_train_all_sequence_train_T1_T1flair.update_train_paths_w_shuffle(max_train_len)
  404. # ADNIdataset_train_all_sequence_train_T1_T1flair.max_train_len = max_train_len
  405. ADNIdataset_train_all_sequence_train_T1_T1flair._update_train_val_paths()
  406. print(len(ADNIdataset_train_all_sequence_train_T1_T1flair))
  407. ADNIdataset_train_all_sequence_train_T2 = copy.deepcopy(ADNIdataset_train_all_sequence_val_T2)
  408. ADNIdataset_train_all_sequence_train_T2.is_train = True
  409. ADNIdataset_train_all_sequence_train_T2.update_train_paths_w_shuffle(max_train_len)
  410. # ADNIdataset_train_all_sequence_train_T2.max_train_len = max_train_len
  411. ADNIdataset_train_all_sequence_train_T2._update_train_val_paths()
  412. print(len(ADNIdataset_train_all_sequence_train_T2))
  413. ADNIdataset_train_all_sequence_train_T2flair_flair = copy.deepcopy(ADNIdataset_train_all_sequence_val_T2flair_flair)
  414. ADNIdataset_train_all_sequence_train_T2flair_flair.is_train = True
  415. ADNIdataset_train_all_sequence_train_T2flair_flair.update_train_paths_w_shuffle(max_train_len)
  416. # ADNIdataset_train_all_sequence_train_T2flair_flair.max_train_len = max_train_len
  417. ADNIdataset_train_all_sequence_train_T2flair_flair._update_train_val_paths()
  418. print(len(ADNIdataset_train_all_sequence_train_T2flair_flair))
  419. ADNIdataset_train_all_sequence_train_PD = copy.deepcopy(ADNIdataset_train_all_sequence_val_PD)
  420. ADNIdataset_train_all_sequence_train_PD.is_train = True
  421. ADNIdataset_train_all_sequence_train_PD.update_train_paths_w_shuffle(max_train_len)
  422. # ADNIdataset_train_all_sequence_train_PD.max_train_len = max_train_len
  423. ADNIdataset_train_all_sequence_train_PD._update_train_val_paths()
  424. print(len(ADNIdataset_train_all_sequence_train_PD))
  425. ADNIdataset_train_all_sequence_train_T2star_hemo = copy.deepcopy(ADNIdataset_train_all_sequence_val_T2star_hemo)
  426. ADNIdataset_train_all_sequence_train_T2star_hemo.is_train = True
  427. ADNIdataset_train_all_sequence_train_T2star_hemo.update_train_paths_w_shuffle(max_train_len)
  428. # ADNIdataset_train_all_sequence_train_T2star_hemo.max_train_len = max_train_len
  429. ADNIdataset_train_all_sequence_train_T2star_hemo._update_train_val_paths()
  430. print(len(ADNIdataset_train_all_sequence_train_T2star_hemo))
  431. ADNIdataset_train_all_sequence_train_T2star_swi = copy.deepcopy(ADNIdataset_train_all_sequence_val_T2star_swi)
  432. ADNIdataset_train_all_sequence_train_T2star_swi.is_train = True
  433. ADNIdataset_train_all_sequence_train_T2star_swi.update_train_paths_w_shuffle(max_train_len)
  434. # ADNIdataset_train_all_sequence_train_T2star_swi.max_train_len = max_train_len
  435. ADNIdataset_train_all_sequence_train_T2star_swi._update_train_val_paths()
  436. print(len(ADNIdataset_train_all_sequence_train_T2star_swi))
  437. ADNIdataset_train_all_sequence_train_DTI_DWI = copy.deepcopy(ADNIdataset_train_all_sequence_val_DTI_DWI)
  438. ADNIdataset_train_all_sequence_train_DTI_DWI.is_train = True
  439. ADNIdataset_train_all_sequence_train_DTI_DWI.update_train_paths_w_shuffle(max_train_len)
  440. # ADNIdataset_train_all_sequence_train_DTI_DWI.max_train_len = max_train_len
  441. ADNIdataset_train_all_sequence_train_DTI_DWI._update_train_val_paths()
  442. print(len(ADNIdataset_train_all_sequence_train_DTI_DWI))
  443. # save them
  444. with open('./index_list/ADNIdataset_train_all_sequence_train_T1_T1flair.pkl', 'wb') as outp:
  445. pickle.dump(ADNIdataset_train_all_sequence_train_T1_T1flair, outp, pickle.HIGHEST_PROTOCOL)
  446. print(len(ADNIdataset_train_all_sequence_train_T1_T1flair))
  447. with open('./index_list/ADNIdataset_train_all_sequence_train_T2.pkl', 'wb') as outp:
  448. pickle.dump(ADNIdataset_train_all_sequence_train_T2, outp, pickle.HIGHEST_PROTOCOL)
  449. print(len(ADNIdataset_train_all_sequence_train_T2))
  450. with open('./index_list/ADNIdataset_train_all_sequence_train_T2flair_flair.pkl', 'wb') as outp:
  451. pickle.dump(ADNIdataset_train_all_sequence_train_T2flair_flair, outp, pickle.HIGHEST_PROTOCOL)
  452. print(len(ADNIdataset_train_all_sequence_train_T2flair_flair))
  453. with open('./index_list/ADNIdataset_train_all_sequence_train_PD.pkl', 'wb') as outp:
  454. pickle.dump(ADNIdataset_train_all_sequence_train_PD, outp, pickle.HIGHEST_PROTOCOL)
  455. print(len(ADNIdataset_train_all_sequence_train_PD))
  456. with open('./index_list/ADNIdataset_train_all_sequence_train_T2star_hemo.pkl', 'wb') as outp:
  457. pickle.dump(ADNIdataset_train_all_sequence_train_T2star_hemo, outp, pickle.HIGHEST_PROTOCOL)
  458. print(len(ADNIdataset_train_all_sequence_train_T2star_hemo))
  459. with open('./index_list/ADNIdataset_train_all_sequence_train_T2star_swi.pkl', 'wb') as outp:
  460. pickle.dump(ADNIdataset_train_all_sequence_train_T2star_swi, outp, pickle.HIGHEST_PROTOCOL)
  461. print(len(ADNIdataset_train_all_sequence_train_T2star_swi))
  462. with open('./index_list/ADNIdataset_train_all_sequence_train_DTI_DWI.pkl', 'wb') as outp:
  463. pickle.dump(ADNIdataset_train_all_sequence_train_DTI_DWI, outp, pickle.HIGHEST_PROTOCOL)
  464. print(len(ADNIdataset_train_all_sequence_train_DTI_DWI))
  465. else:
  466. with open('./index_list/ADNIdataset_train_all_sequence_train_T1_T1flair.pkl', 'rb') as inp:
  467. ADNIdataset_train_all_sequence_train_T1_T1flair = pickle.load(inp)
  468. print(len(ADNIdataset_train_all_sequence_train_T1_T1flair))
  469. with open('./index_list/ADNIdataset_train_all_sequence_train_T2.pkl', 'rb') as inp:
  470. ADNIdataset_train_all_sequence_train_T2 = pickle.load(inp)
  471. print(len(ADNIdataset_train_all_sequence_train_T2))
  472. with open('./index_list/ADNIdataset_train_all_sequence_train_T2flair_flair.pkl', 'rb') as inp:
  473. ADNIdataset_train_all_sequence_train_T2flair_flair = pickle.load(inp)
  474. print(len(ADNIdataset_train_all_sequence_train_T2flair_flair))
  475. with open('./index_list/ADNIdataset_train_all_sequence_train_PD.pkl', 'rb') as inp:
  476. ADNIdataset_train_all_sequence_train_PD = pickle.load(inp)
  477. print(len(ADNIdataset_train_all_sequence_train_PD))
  478. with open('./index_list/ADNIdataset_train_all_sequence_train_T2star_hemo.pkl', 'rb') as inp:
  479. ADNIdataset_train_all_sequence_train_T2star_hemo = pickle.load(inp)
  480. print(len(ADNIdataset_train_all_sequence_train_T2star_hemo))
  481. with open('./index_list/ADNIdataset_train_all_sequence_train_T2star_swi.pkl', 'rb') as inp:
  482. ADNIdataset_train_all_sequence_train_T2star_swi = pickle.load(inp)
  483. print(len(ADNIdataset_train_all_sequence_train_T2star_swi))
  484. with open('./index_list/ADNIdataset_train_all_sequence_train_DTI_DWI.pkl', 'rb') as inp:
  485. ADNIdataset_train_all_sequence_train_DTI_DWI = pickle.load(inp)
  486. print(len(ADNIdataset_train_all_sequence_train_DTI_DWI))
  487. # train dataset construction
  488. #['T1_T1flair', 'T2', 'T2flair_flair', 'PD', 'T2star_hemo', 'T2star_swi', 'DTI_DWI', 'DTI_DWI_500']
  489. if rebuild_train_dataset:
  490. NACCdataset_train_all_sequence_train_T1_T1flair = copy.deepcopy(NACCdataset_train_all_sequence_val_T1_T1flair)
  491. NACCdataset_train_all_sequence_train_T1_T1flair.is_train = True
  492. NACCdataset_train_all_sequence_train_T1_T1flair.update_train_paths_w_shuffle(max_train_len)
  493. # NACCdataset_train_all_sequence_train_T1_T1flair.max_train_len = max_train_len
  494. NACCdataset_train_all_sequence_train_T1_T1flair._update_train_val_paths()
  495. print(len(NACCdataset_train_all_sequence_train_T1_T1flair))
  496. NACCdataset_train_all_sequence_train_T2 = copy.deepcopy(NACCdataset_train_all_sequence_val_T2)
  497. NACCdataset_train_all_sequence_train_T2.is_train = True
  498. NACCdataset_train_all_sequence_train_T2.update_train_paths_w_shuffle(max_train_len)
  499. # NACCdataset_train_all_sequence_train_T2.max_train_len = max_train_len
  500. NACCdataset_train_all_sequence_train_T2._update_train_val_paths()
  501. print(len(NACCdataset_train_all_sequence_train_T2))
  502. NACCdataset_train_all_sequence_train_T2flair_flair = copy.deepcopy(NACCdataset_train_all_sequence_val_T2flair_flair)
  503. NACCdataset_train_all_sequence_train_T2flair_flair.is_train = True
  504. NACCdataset_train_all_sequence_train_T2flair_flair.update_train_paths_w_shuffle(max_train_len)
  505. # NACCdataset_train_all_sequence_train_T2flair_flair.max_train_len = max_train_len
  506. NACCdataset_train_all_sequence_train_T2flair_flair._update_train_val_paths()
  507. print(len(NACCdataset_train_all_sequence_train_T2flair_flair))
  508. NACCdataset_train_all_sequence_train_PD = copy.deepcopy(NACCdataset_train_all_sequence_val_PD)
  509. NACCdataset_train_all_sequence_train_PD.is_train = True
  510. NACCdataset_train_all_sequence_train_PD.update_train_paths_w_shuffle(max_train_len)
  511. # NACCdataset_train_all_sequence_train_PD.max_train_len = max_train_len
  512. NACCdataset_train_all_sequence_train_PD._update_train_val_paths()
  513. print(len(NACCdataset_train_all_sequence_train_PD))
  514. NACCdataset_train_all_sequence_train_T2star_hemo = copy.deepcopy(NACCdataset_train_all_sequence_val_T2star_hemo)
  515. NACCdataset_train_all_sequence_train_T2star_hemo.is_train = True
  516. NACCdataset_train_all_sequence_train_T2star_hemo.update_train_paths_w_shuffle(max_train_len)
  517. # NACCdataset_train_all_sequence_train_T2star_hemo.max_train_len = max_train_len
  518. NACCdataset_train_all_sequence_train_T2star_hemo._update_train_val_paths()
  519. print(len(NACCdataset_train_all_sequence_train_T2star_hemo))
  520. NACCdataset_train_all_sequence_train_T2star_swi = copy.deepcopy(NACCdataset_train_all_sequence_val_T2star_swi)
  521. NACCdataset_train_all_sequence_train_T2star_swi.is_train = True
  522. NACCdataset_train_all_sequence_train_T2star_swi.update_train_paths_w_shuffle(max_train_len)
  523. # NACCdataset_train_all_sequence_train_T2star_swi.max_train_len = max_train_len
  524. NACCdataset_train_all_sequence_train_T2star_swi._update_train_val_paths()
  525. print(len(NACCdataset_train_all_sequence_train_T2star_swi))
  526. NACCdataset_train_all_sequence_train_DTI_DWI = copy.deepcopy(NACCdataset_train_all_sequence_val_DTI_DWI)
  527. NACCdataset_train_all_sequence_train_DTI_DWI.is_train = True
  528. NACCdataset_train_all_sequence_train_DTI_DWI.update_train_paths_w_shuffle(max_train_len)
  529. # NACCdataset_train_all_sequence_train_DTI_DWI.max_train_len = max_train_len
  530. NACCdataset_train_all_sequence_train_DTI_DWI._update_train_val_paths()
  531. print(len(NACCdataset_train_all_sequence_train_DTI_DWI))
  532. # save them
  533. with open('./index_list/NACCdataset_train_all_sequence_train_T1_T1flair.pkl', 'wb') as outp:
  534. pickle.dump(NACCdataset_train_all_sequence_train_T1_T1flair, outp, pickle.HIGHEST_PROTOCOL)
  535. print(len(NACCdataset_train_all_sequence_train_T1_T1flair))
  536. with open('./index_list/NACCdataset_train_all_sequence_train_T2.pkl', 'wb') as outp:
  537. pickle.dump(NACCdataset_train_all_sequence_train_T2, outp, pickle.HIGHEST_PROTOCOL)
  538. print(len(NACCdataset_train_all_sequence_train_T2))
  539. with open('./index_list/NACCdataset_train_all_sequence_train_T2flair_flair.pkl', 'wb') as outp:
  540. pickle.dump(NACCdataset_train_all_sequence_train_T2flair_flair, outp, pickle.HIGHEST_PROTOCOL)
  541. print(len(NACCdataset_train_all_sequence_train_T2flair_flair))
  542. with open('./index_list/NACCdataset_train_all_sequence_train_PD.pkl', 'wb') as outp:
  543. pickle.dump(NACCdataset_train_all_sequence_train_PD, outp, pickle.HIGHEST_PROTOCOL)
  544. print(len(NACCdataset_train_all_sequence_train_PD))
  545. with open('./index_list/NACCdataset_train_all_sequence_train_T2star_hemo.pkl', 'wb') as outp:
  546. pickle.dump(NACCdataset_train_all_sequence_train_T2star_hemo, outp, pickle.HIGHEST_PROTOCOL)
  547. print(len(NACCdataset_train_all_sequence_train_T2star_hemo))
  548. with open('./index_list/NACCdataset_train_all_sequence_train_T2star_swi.pkl', 'wb') as outp:
  549. pickle.dump(NACCdataset_train_all_sequence_train_T2star_swi, outp, pickle.HIGHEST_PROTOCOL)
  550. print(len(NACCdataset_train_all_sequence_train_T2star_swi))
  551. with open('./index_list/NACCdataset_train_all_sequence_train_DTI_DWI.pkl', 'wb') as outp:
  552. pickle.dump(NACCdataset_train_all_sequence_train_DTI_DWI, outp, pickle.HIGHEST_PROTOCOL)
  553. print(len(NACCdataset_train_all_sequence_train_DTI_DWI))
  554. else:
  555. with open('./index_list/NACCdataset_train_all_sequence_train_T1_T1flair.pkl', 'rb') as inp:
  556. NACCdataset_train_all_sequence_train_T1_T1flair = pickle.load(inp)
  557. print(len(NACCdataset_train_all_sequence_train_T1_T1flair))
  558. with open('./index_list/NACCdataset_train_all_sequence_train_T2.pkl', 'rb') as inp:
  559. NACCdataset_train_all_sequence_train_T2 = pickle.load(inp)
  560. print(len(NACCdataset_train_all_sequence_train_T2))
  561. with open('./index_list/NACCdataset_train_all_sequence_train_T2flair_flair.pkl', 'rb') as inp:
  562. NACCdataset_train_all_sequence_train_T2flair_flair = pickle.load(inp)
  563. print(len(NACCdataset_train_all_sequence_train_T2flair_flair))
  564. with open('./index_list/NACCdataset_train_all_sequence_train_PD.pkl', 'rb') as inp:
  565. NACCdataset_train_all_sequence_train_PD = pickle.load(inp)
  566. print(len(NACCdataset_train_all_sequence_train_PD))
  567. with open('./index_list/NACCdataset_train_all_sequence_train_T2star_hemo.pkl', 'rb') as inp:
  568. NACCdataset_train_all_sequence_train_T2star_hemo = pickle.load(inp)
  569. print(len(NACCdataset_train_all_sequence_train_T2star_hemo))
  570. with open('./index_list/NACCdataset_train_all_sequence_train_T2star_swi.pkl', 'rb') as inp:
  571. NACCdataset_train_all_sequence_train_T2star_swi = pickle.load(inp)
  572. print(len(NACCdataset_train_all_sequence_train_T2star_swi))
  573. with open('./index_list/NACCdataset_train_all_sequence_train_DTI_DWI.pkl', 'rb') as inp:
  574. NACCdataset_train_all_sequence_train_DTI_DWI = pickle.load(inp)
  575. print(len(NACCdataset_train_all_sequence_train_DTI_DWI))
  576. BATCH_SIZE= 128 * 4 # 128 * 4
  577. datasets_train = [OASISdataset_train_all_sequence_train_T1_T1flair, OASISdataset_train_all_sequence_train_T2, OASISdataset_train_all_sequence_train_T2flair_flair, OASISdataset_train_all_sequence_train_PD, OASISdataset_train_all_sequence_train_T2star_hemo, OASISdataset_train_all_sequence_train_T2star_swi, OASISdataset_train_all_sequence_train_DTI_DWI,
  578. ADNIdataset_train_all_sequence_train_T1_T1flair, ADNIdataset_train_all_sequence_train_T2, ADNIdataset_train_all_sequence_train_T2flair_flair, ADNIdataset_train_all_sequence_train_PD, ADNIdataset_train_all_sequence_train_T2star_hemo, ADNIdataset_train_all_sequence_train_T2star_swi, ADNIdataset_train_all_sequence_train_DTI_DWI,
  579. NACCdataset_train_all_sequence_train_T1_T1flair, NACCdataset_train_all_sequence_train_T2, NACCdataset_train_all_sequence_train_T2flair_flair, NACCdataset_train_all_sequence_train_PD, NACCdataset_train_all_sequence_train_T2star_hemo, NACCdataset_train_all_sequence_train_T2star_swi, NACCdataset_train_all_sequence_train_DTI_DWI]
  580. num_workers = 0
  581. dataloader_train = create_combine_dataloader(
  582. datasets= datasets_train,
  583. batch_size = BATCH_SIZE,
  584. is_distributed=False,
  585. is_train=True,
  586. num_workers = num_workers,
  587. )
  588. len_datasets = 0
  589. for dataset in datasets_train:
  590. len_datasets += len(dataset)
  591. print('len(train_dataset):', len_datasets)
  592. print('len(train_dataloader):', len(dataloader_train))
  593. rebuild_datasets_val = True
  594. if rebuild_datasets_val:
  595. datasets_val = [OASISdataset_train_all_sequence_val_T1_T1flair, OASISdataset_train_all_sequence_val_T2, OASISdataset_train_all_sequence_val_T2flair_flair, OASISdataset_train_all_sequence_val_PD, OASISdataset_train_all_sequence_val_T2star_hemo, OASISdataset_train_all_sequence_val_T2star_swi, OASISdataset_train_all_sequence_val_DTI_DWI,
  596. ADNIdataset_train_all_sequence_val_T1_T1flair, ADNIdataset_train_all_sequence_val_T2, ADNIdataset_train_all_sequence_val_T2flair_flair, ADNIdataset_train_all_sequence_val_PD, ADNIdataset_train_all_sequence_val_T2star_hemo, ADNIdataset_train_all_sequence_val_T2star_swi, ADNIdataset_train_all_sequence_val_DTI_DWI,
  597. NACCdataset_train_all_sequence_val_T1_T1flair, NACCdataset_train_all_sequence_val_T2, NACCdataset_train_all_sequence_val_T2flair_flair, NACCdataset_train_all_sequence_val_PD, NACCdataset_train_all_sequence_val_T2star_hemo, NACCdataset_train_all_sequence_val_T2star_swi, NACCdataset_train_all_sequence_val_DTI_DWI]
  598. # reset random crop flip and rot to 0 random_crop_change = 0.5# 0.5
  599. # random_flip_chance = 0.5# 0.5
  600. # random_rotate_chance = 0.85# 0.85
  601. for dataset in datasets_val:
  602. dataset.random_crop_change = 0.0
  603. dataset.random_flip_chance = 0.0
  604. dataset.random_rotate_chance = 0.0
  605. num_workers = 0
  606. batch_size = BATCH_SIZE
  607. # batch_size = 128 * 4
  608. for dataset in datasets_val:
  609. print(dataset.__class__, dataset.random_crop_change, dataset.random_flip_chance, dataset.random_rotate_chance)
  610. dataloader_val = create_combine_dataloader(
  611. datasets= datasets_val,
  612. batch_size = batch_size,
  613. is_distributed=False,
  614. is_train=False,
  615. num_workers = num_workers,
  616. )
  617. with open('./index_list/dataloader_val.pkl', 'wb') as outp:
  618. pickle.dump(dataloader_val, outp, pickle.HIGHEST_PROTOCOL)
  619. print(len(dataloader_val))
  620. else:
  621. with open('./index_list/dataloader_val.pkl', 'rb') as inp:
  622. dataloader_val = pickle.load(inp)
  623. print(len(dataloader_val))
  624. print('len(dataloader_val):', len(dataloader_val))
  625. from sequence_detection.models_mae_finetune import MaskedAutoencoderViTClassify
  626. from functools import partial
  627. import torch
  628. import torch.nn as nn
  629. model = MaskedAutoencoderViTClassify(
  630. patch_size=16, embed_dim=768, depth=12, num_heads=12,
  631. decoder_embed_dim=512, decoder_depth=8, decoder_num_heads=16,
  632. mlp_ratio=4, norm_layer=partial(nn.LayerNorm, eps=1e-6), num_classes=len(detect_sequence) + 1, mode='cls')
  633. pretrain_path = 'D:/Mengyu_Li/General_Dataloader_Git_V1/saved_models/mae_vit_base_patch16_pretrain_test0.75_E30/model_E30.pt'
  634. missing, unexpected = model.load_state_dict(torch.load(pretrain_path)['model_state_dict'], strict=False) # strict=False ignores unmatched keys
  635. print("Missing keys:", missing)
  636. print("Unexpected keys:", unexpected)
  637. print(sum(p.numel() for p in model.parameters()))
  638. print(sum(p.numel() for p in model.parameters() if p.requires_grad))
  639. from sequence_detection.train_mae_finetune import Trainer
  640. optimizer = torch.optim.AdamW(model.parameters(), lr=1e-4, weight_decay=0.05)
  641. loss_fn = torch.nn.CrossEntropyLoss()
  642. freeze_mae_encoder = True
  643. TRAIN_EPOCHS = 1000
  644. cls_strategy = 'cls_token'
  645. if freeze_mae_encoder:
  646. path_save = "../saved_models/sequence_detection/max_train_len_freeze_mae_encoder_" + cls_strategy + "_e" + str(TRAIN_EPOCHS) + '_' + str(max_train_len) + '/'
  647. else:
  648. path_save = "../saved_models/sequence_detection/max_train_len_nofreeze_mae_encoder_" + cls_strategy + "_e" + str(TRAIN_EPOCHS) + '_' + str(max_train_len) + '/'
  649. create_path(path_save)
  650. trainer = Trainer(
  651. loader_train=dataloader_train,
  652. loader_test=dataloader_val,
  653. my_model=model,
  654. my_loss=torch.nn.CrossEntropyLoss(),
  655. optimizer=optimizer,
  656. RESUME_EPOCH=0,
  657. PATH_MODEL=path_save,
  658. device=device,
  659. cls_strategy = cls_strategy, # or 'cls_token', 'mean_patch', 'mean_all', 'attn_pool',
  660. freeze_mae_encoder=freeze_mae_encoder,
  661. freeze_mae_encoder_decoder=freeze_mae_encoder, # free encoder and decoder for classification to get actual trainable params printed out
  662. )
  663. trainer.train(epochs=TRAIN_EPOCHS, show_step=500, show_test=True)

sequence_detection_finetune.py at commit e2c0f21, under MIT · at the source

Overview

Authors: Mengyu Li1,2, Guoyao Shen1,2, Chad W. Farris3,4, Xin Zhang1,2,5,6,7,8
  1. Department of Mechanical Engineering, Boston University, Boston, MA, United States
  2. The Photonics Center, Boston University, Boston, MA, United States
  3. Department of Radiology, Boston University Chobanian & Avedisian School of Medicine, Boston, MA, United States
  4. Department of Radiology, Boston Medical Center, Boston, MA, United States
  5. Department of Electrical and Computer Engineering, Boston University, Boston, MA, United States
  6. Department of Biomedical Engineering, Boston University, Boston, MA, United States
  7. Division of Materials Science and Engineering, Boston University, Boston, MA, United States
  8. Rafik B. Hariri Institute for Computing and Computational Science & Engineering, Boston University, Boston, MA, United States
Institutions: Boston University (United States); Boston Medical Center (United States)
Journal: Frontiers in artificial intelligence, volume 9, article 1771088
Dates: received 18 December 2025; accepted 13 March 2026; published online 1 April 2026
Type: Research article · Language: English
License: CC BY
Identifiers: DOI 10.3389/frai.2026.1771088 · PMID 41994558 · PMCID PMC13079346 · OpenAlex W7147195416
Open access: gold, a free copy (OpenAlex)
Status: code verified
Categories: structural MRI / diffusion (modality), human (organism), methods / tools (subfield)
Methods: Connectivity, Machine learning
Keywords: brain MRI, classification, deep learning, few-shot learning, medical imaging, pretraining and fine-tuning, segmentation, transformer
Topic: Advanced Neural Network Applications (Computer Vision and Pattern Recognition, Computer Science), according to OpenAlex
Funding: National Institute on Aging, the National Institute of Biomedical Imaging and Bioengineering; DOD ADNI (W81XWH-12-2-0012); Alzheimer’s Disease Neuroimaging Initiative (U01 AG024904); NIA/NIH (U24 AG072122); Rajen Kilachand Fund for Integrated Life Science and Engineering and the Hariri Institute
Citations: not cited yet (Europe PMC); 74 references in the paper

Abstract

Introduction: Transformer-based deep learning has shown great potential in medical imaging, but its real-world applicability remains limited due to the scarcity of annotated data. This study aims to develop a practical framework for the few-shot deployment of pretrained MRI transformers across diverse brain imaging tasks.

Methods: We employ a Masked Autoencoder (MAE) pretraining strategy on a large-scale, multi-cohort brain MRI dataset comprising over 31 million 2D slices to learn transferable representations. For classification tasks, a frozen MAE encoder with a lightweight linear head (MAE-classify) is used. For segmentation, we propose MAE-FUnet, a hybrid architecture that fuses pretrained MAE embeddings with multi-scale CNN features. Extensive evaluations are conducted on multiple datasets, including NACC, ADNI, OASIS, NFBS, SynthStrip, and MRBrainS18, under controlled few-shot settings.

Results: The proposed framework achieves state-of-the-art performance in MRI sequence classification, reaching an accuracy of 99.24% with only 6,152 trainable parameters. For segmentation tasks, MAE-FUnet consistently outperforms strong baselines, achieving superior Dice and IoU scores across skull stripping and multi-class anatomical segmentation benchmarks. The model also demonstrates enhanced robustness and stability under data-limited conditions, with lower performance variance compared to competing methods.

Discussion: These results highlight the effectiveness of pretrained MAE representations for few-shot medical imaging tasks. The proposed framework enables efficient, scalable, and adaptable deployment of transformer-based models in data-constrained clinical environments. The fusion of global transformer embeddings with local CNN features provides a generalizable design paradigm for a wide range of medical imaging applications.

Reproduced under the paper's license (CC BY), from the paper cited above.

Repository

Its files are read in the Code ↔ Paper reader above, with 10 matches between paragraphs and lines of code.

MengyuLiGit/MAE-FUnet-MRI-finetune

License: MIT
State: the link answers, verified on 28 September 2026
Evidence: files inventoried
Commit: e2c0f21a5c9f18304b04438edcacc3c41f4e809f, 27 July 2025
Languages: Python (523), Jupyter (17), Shell (1)
Size: 1,872 files, 541 scripts
Software Heritage: not archived
Found in: “Data availability statement”
Holds: README, license file, environment (requirements.txt, nets/MedViT/requirements.txt, modeling/conformer/mmdetection/requirements.txt, modeling/conformer/mmdetection/setup.py, modeling/conformer/mmdetection/docker/Dockerfile, modeling/conformer/mmdetection/requirements/build.txt, modeling/conformer/mmdetection/requirements/docs.txt, modeling/conformer/mmdetection/requirements/optional.txt, modeling/conformer/mmdetection/requirements/readthedocs.txt, modeling/conformer/mmdetection/requirements/runtime.txt, modeling/conformer/mmdetection/requirements/tests.txt), tests, documentation, 17 notebooks
Not found: CITATION.cff, continuous integration
Tools: PyTorch (335 files), NumPy (153 files), Matplotlib (36 files), Pillow (27 files), OpenCV (13 files), SciPy (9 files), scikit-image (7 files), pandas (6 files), pydicom (6 files), imageio (5 files), NiBabel (4 files), SimpleITK (4 files), h5py (2 files), nnU-Net (2 files), scikit-learn (2 files), MONAI (1 file), seaborn (1 file)
Availability: 1 check, the latest on 28 September 2026: the link answers
  • 28 September 2026: the link answers
543 files

The paper's code and data availability statement is in the Data section.

Tracing map

Proposed by the machine: these links were found in the paper and verified at the source, without human review. The map will receive a Zenodo DOI once one of the paper's authors has validated it with their ORCID.

What the map holds:

  • 1 repository of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
  • 541 scripts, each with its path and the digest of its content;
  • 10 matches between paragraphs of the paper and lines of the code (method lexical-v1);
  • neither the text of the paper nor the code itself.

Its JSON (tracing-map.json) is deposited on Zenodo with its DOI once the map is validated.

Data

No dataset and no data link were found in the paper.

Data availability statement

The ADNI dataset used in the current study is available on the Alzheimer's Disease Neuroimaging Initiative office website at: https://adni.loni.usc.edu/. To access the ADNI data repository, one must register with a valid account and complete the online application process. The NACC dataset used in the current study is available on the National Alzheimer’s Coordinating Center office website at: https://naccdata.org/requesting-data/data-request-process. To access the NACC data repository, registration with a valid account is required, followed by the online application process. The OASIS dataset used in the current study can be applied in the Open Access Series of Imaging Studies office website at: https://sites.wustl.edu/oasisbrains/. To access the OASIS data repository, registration with a valid account is required, followed by the online application process. The RadImageNet dataset used in the current study can be accessed by creating an account on the RAD IMAGE NET official website at: https://www.radimagenet.com/. To access the RadImageNet data repository, registration with a valid account is required, followed by the online application process. The fastMRI dataset used in the current study can be applied on the NYU fastMRI official website. To access the fastMRI data repository: https://fastmri.med.nyu.edu/, you need to submit an online application and a valid email address to receive downloadable links. The NFBS dataset used in the current study can be directly accessed in the NFBS Skull-Stripped Repository: http://preprocessed-connectomes-project.org/NFB_skullstripped. The NFBS repository is publicly available and can be downloaded from the webpage. The SynthStrip dataset used in the current study can be directly accessed in the SynthStrip: Skull-Stripping for Any Brain Image Repository: https://surfer.nmr.mgh.harvard.edu/docs/synthstrip/. SynthStrip repository is publicly available and can be downloaded on webpage. The MRBrainS18 dataset used in the current study can be directly accessed in the MR Brain Segmentation at MICCAI 2018 Repository: https://mrbrains18.isi.uu.nl/data/download/index.html. MRBrainS18 repository is publicly available and can be downloaded on webpage. All data/code and the pretrained models generated in this study are accessible through Github Repository: https://github.com/MengyuLiGit/MAE-FUnet-MRI-finetune.

Reproduced under the paper's license (CC BY), from the paper cited above.

Versions

The history of this record: each version stored by the harvester or made by a correction of its authors or of the maintainers of its code, and what changed in its facts. The texts of the paper (its abstract, its availability statements) are not part of it; versions that changed only those are not listed.

Version 1, 28 September 2026: the first record

Recorded: type, language, journal, volume, pages, dates, 4 authors, 8 keywords, 5 funders, 56 references.

Cite

This paper

Li, M., Shen, G., Farris, C. W., & Zhang, X. (2026). Few-shot deployment of pretrained MRI transformers in brain imaging tasks. Frontiers in artificial intelligence, 9, 1771088. https://doi.org/10.3389/frai.2026.1771088

BibTeX

@article{li2026few,
author = {Li, Mengyu and Shen, Guoyao and Farris, Chad W. and Zhang, Xin},
title = {{Few-shot deployment of pretrained MRI transformers in brain imaging tasks}},
journal = {Frontiers in artificial intelligence},
year = {2026},
month = apr,
volume = {9},
pages = {1771088},
publisher = {Frontiers Media SA},
issn = {2624-8212},
doi = {10.3389/frai.2026.1771088},
url = {https://doi.org/10.3389/frai.2026.1771088},
pmid = {41994558},
pmcid = {PMC13079346}
}

RIS

TY - JOUR
AU - Li, Mengyu
AU - Shen, Guoyao
AU - Farris, Chad W.
AU - Zhang, Xin
TI - Few-shot deployment of pretrained MRI transformers in brain imaging tasks
T2 - Frontiers in artificial intelligence
J2 - Front Artif Intell
PY - 2026
DA - 2026/04/01
VL - 9
SP - 1771088
SN - 2624-8212
PB - Frontiers Media SA
DO - 10.3389/frai.2026.1771088
UR - https://doi.org/10.3389/frai.2026.1771088
LA - en
ER -

CSL-JSON

{
"id": "10.3389/frai.2026.1771088",
"type": "article-journal",
"title": "Few-shot deployment of pretrained MRI transformers in brain imaging tasks",
"container-title": "Frontiers in artificial intelligence",
"author": [
{
"family": "Li",
"given": "Mengyu"
},
{
"family": "Shen",
"given": "Guoyao"
},
{
"family": "Farris",
"given": "Chad W."
},
{
"family": "Zhang",
"given": "Xin"
}
],
"container-title-short": "Front Artif Intell",
"volume": "9",
"page": "1771088",
"DOI": "10.3389/frai.2026.1771088",
"PMID": "41994558",
"PMCID": "PMC13079346",
"ISSN": "2624-8212",
"publisher": "Frontiers Media SA",
"URL": "https://doi.org/10.3389/frai.2026.1771088",
"language": "en",
"issued": {
"date-parts": [
[
2026,
4,
1
]
]
}
}

The tracing map gets a citation of its own once an author has validated it and it has a DOI.

Similar papers

The papers with a page that share the most with this one: the tools found in their code, their categories, datasets, cited references and authors, the rarest counting most.

[1] doi:10.1371/journal.pcbi.1014555 [code]
Body surface potential driven personalisation of electrophysiological digital twins in hypertrophic cardiomyopathy.
Journal: PLoS computational biology
In common: nnU-Net, MONAI, pydicom, 11 other tools, structural MRI / diffusion
[2] doi:10.3389/fnins.2026.1870124 [code]
An end-to-end pipeline for automated fetal brain segmentation and biometry from 3D SSFP MRI.
Journal: Frontiers in neuroscience
In common: nnU-Net, MONAI, imageio, 11 other tools, structural MRI / diffusion
[3] doi:10.1016/j.patter.2026.101538 [code]
A multi-modal foundation model for brain disease diagnosis and medical imaging.
Journal: Patterns (New York, N.Y.)
In common: MONAI, OpenCV, scikit-image, 9 other tools, 3 references
[4] doi:10.1162/nol.a.265 [code]
Structural Brain Correlates of Poor Reading Comprehension.
Journal: Neurobiology of language (Cambridge, Mass.)
In common: structural MRI / diffusion, 13 references
[5] doi:10.1002/alz.71649 [code]
Postmortem brain MRI reveals differential associations of subcortical and limbic volumes with cortical thinning and neurodegenerative pathologies.
Journal: Alzheimer's & dementia : the journal of the Alzheimer's Association
In common: nnU-Net, SimpleITK, OpenCV, 10 other tools, structural MRI / diffusion, 1 reference
[6] doi:10.1186/s13244-026-02296-3 [code]
A pre-trained foundation model framework for multiplanar MRI classification of extramural vascular invasion and mesorectal fascia invasion in rectal cancer.
Journal: Insights into imaging
In common: nnU-Net, MONAI, pydicom, 9 other tools, structural MRI / diffusion
[7] doi:10.1186/s12880-026-02481-2 [code]
Deep learning-based neuroanatomical profiling reveals population-specific brain changes in multiple sclerosis: a large-scale Middle Eastern study.
Journal: BMC medical imaging
In common: pydicom, imageio, OpenCV, 9 other tools, structural MRI / diffusion, 1 reference
[8] doi:10.1111/joa.70203 [code]
Two-step workflow integrating automatic registration and manual refinement for the accurate alignment of serial histological sections in 3D reconstruction.
Journal: Journal of anatomy
In common: MONAI, pydicom, SimpleITK, 9 other tools, methods / tools
[9] doi:10.1080/07853890.2026.2685416 [code]
Pulmonary and cerebral damage in COVID-19 survivors: is there any association?
Journal: Annals of medicine
In common: pydicom, imageio, SimpleITK, 9 other tools, structural MRI / diffusion
[10] doi:10.1038/s41467-026-73373-w [code]
Mapping neuro-vascular unit communications reveals distinct angiogenic programs across developing mouse brain regions.
Journal: Nature communications
In common: imageio, SimpleITK, OpenCV, 10 other tools

Contribute

The authors of this paper can claim it, correct its record and validate its tracing map, and the maintainers of its code (its owner, or a public member of its organization) correct what it says of their repository; anyone signed in can ask for its removal. Every request goes to OSCR's own machine, which answers it; your account page follows them.

Sign in with ORCID to claim this paper as one of its authors, correct its record or validate its tracing map: when the paper's metadata lists your ORCID iD, you are recognized at once. Maintainers of its code: sign in with GitHub, then claim the repository on your account page.

Request its removal

To ask OSCR to remove this record, the copies of its authors' scripts or its tracing map, use the removal request page: signed in, you say who you are, what to remove and why, then review and confirm the request. Published rules decide every request (how).

Discussion, reproductions, activity

Discussion: questions and error reports about this paper and its code, from signed-in readers and its authors. It opens with sign-in.

Reproductions: reports from readers who ran the authors' code: what they reproduced, with which environment, commit and data. It opens with sign-in.

Activity: what happens around this paper: new versions of its record, its map's validation, discussions and reproductions. It opens with sign-in.