Skip to content

Leezy-Ray/twoTST

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

2 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

TwoTST: ๅŒๆต่‡ช็›‘็ฃ้ข„่ฎญ็ปƒๆก†ๆžถ

GitHub

TwoTST (Dual-Stream Self-Supervised Pretraining Framework) ๆ˜ฏไธ€ไธช็”จไบŽfMRIๆ•ฐๆฎๅˆ†ๆž็š„ๅŒๆตTransformerๆก†ๆžถ๏ผŒ่žๅˆไบ†ๆ—ถๅบTransformerๅ’Œ่ฟžๆŽฅTransformer็š„ไผ˜็‚น๏ผŒ้€š่ฟ‡่‡ช็›‘็ฃ้ข„่ฎญ็ปƒๅ’Œๅฏนๆฏ”ๅญฆไน ๆๅ‡ASDๅˆ†็ฑปๆ€ง่ƒฝใ€‚

๐Ÿ“‹ ้กน็›ฎๆฆ‚่ฟฐ

TwoTSTๆก†ๆžถๅŒ…ๅซไธคไธช็‹ฌ็ซ‹็š„Transformerๅˆ†ๆ”ฏ๏ผš

  • TST1 (Transformer-TS): ๅค„็†ๅŽŸๅง‹fMRIๆ—ถ้—ดๅบๅˆ—๏ผŒไฝฟ็”จROI-levelๆŽฉ็ ็ญ–็•ฅ่ฟ›่กŒ้ข„่ฎญ็ปƒ
  • TST2 (Transformer-FC): ๅค„็†PCC๏ผˆPearson็›ธๅ…ณ็ณปๆ•ฐ๏ผ‰ไธŠไธ‰่ง’ๅ‘้‡๏ผŒไฝฟ็”จๅ…ƒ็ด ็บงๆŽฉ็ ็ญ–็•ฅ่ฟ›่กŒ้ข„่ฎญ็ปƒ

ๆ ธๅฟƒ็‰นๆ€ง

  • โœ… ๅŒๆตTransformerๆžถๆž„๏ผšๅˆ†ๅˆซๅค„็†ๆ—ถๅบๅ’Œ่ฟžๆŽฅ็‰นๅพ
  • โœ… ่‡ช็›‘็ฃ้ข„่ฎญ็ปƒ๏ผšไธค็งไธๅŒ็š„ๆŽฉ็ ็ญ–็•ฅ้€‚้…ไธๅŒๆ•ฐๆฎ็ฑปๅž‹
  • โœ… ้กบๅบ้ข„่ฎญ็ปƒ๏ผšๅ…ˆTST1๏ผŒๅŽTST2๏ผŒ้€ๆญฅๅญฆไน ่กจๅพ
  • โœ… ๅฏ้€‰ๅฏนๆฏ”ๅญฆไน ๏ผšๅฏน้ฝไธคไธชๅˆ†ๆ”ฏ็š„็‰นๅพ็ฉบ้—ด
  • โœ… ๅคš็ง่žๅˆ็ญ–็•ฅ๏ผšๆ”ฏๆŒ5็ง็‰นๅพ่žๅˆๆ–นๆณ•
  • โœ… 5ๆŠ˜ไบคๅ‰้ชŒ่ฏ๏ผš็จณๅฅ็š„ๆจกๅž‹่ฏ„ไผฐ

๐Ÿ—๏ธ ๆžถๆž„่ฎพ่ฎก

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                     ๆ•ฐๆฎ้ข„ๅค„็†                                โ”‚
โ”‚  fmri.npy (N, T, R) โ†’ ๆธ…ๆด— โ†’ (N', T, R)                    โ”‚
โ”‚  โ†“                                                          โ”‚
โ”‚  ๆ—ถ้—ดๅบๅˆ— (N', R, T)  +  PCCๅ‘้‡ (N', R*(R-1)/2)            โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                            โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚              Phase 1: TST1 ้ข„่ฎญ็ปƒ                            โ”‚
โ”‚  ๆ—ถ้—ดๅบๅˆ— โ†’ ROI-levelๆŽฉ็  โ†’ Transformer-TS โ†’ ้‡ๅปบๆ—ถๅบ      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                            โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚              Phase 2: TST2 ้ข„่ฎญ็ปƒ                            โ”‚
โ”‚  PCCๅ‘้‡ โ†’ ๅ…ƒ็ด ็บงๆŽฉ็  โ†’ Transformer-FC โ†’ ้‡ๅปบPCC          โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                            โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚         Phase 3: ๅฏนๆฏ”ๅญฆไน ๏ผˆๅฏ้€‰๏ผ‰                            โ”‚
โ”‚  TST1็‰นๅพ + TST2็‰นๅพ โ†’ InfoNCEๆŸๅคฑ โ†’ ็‰นๅพๅฏน้ฝ              โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                            โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚              Phase 4: ๅพฎ่ฐƒๅˆ†็ฑป                                โ”‚
โ”‚  ่žๅˆ็‰นๅพ โ†’ MLPๅˆ†็ฑปๅ™จ โ†’ ASD/TC้ข„ๆต‹                         โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ“ ้กน็›ฎ็ป“ๆž„

TwoTST/
โ”œโ”€โ”€ models/                        # ๆจกๅž‹ๅฎšไน‰
โ”‚   โ”œโ”€โ”€ transformer_ts.py         # TST1: ๆ—ถๅบTransformer
โ”‚   โ”œโ”€โ”€ transformer_fc.py         # TST2: ่ฟžๆŽฅTransformer
โ”‚   โ”œโ”€โ”€ fusion.py                 # ่žๅˆๆจกๅ—๏ผˆ5็ง็ญ–็•ฅ๏ผ‰
โ”‚   โ”œโ”€โ”€ dual_stream.py            # ๅŒๆตๆจกๅž‹
โ”‚   โ””โ”€โ”€ __init__.py               # ๆจกๅž‹ๅฏผๅ‡บ
โ”‚
โ”œโ”€โ”€ pretrain/                     # ้ข„่ฎญ็ปƒๆจกๅ—
โ”‚   โ”œโ”€โ”€ mask_utils.py            # ๆŽฉ็ ็ญ–็•ฅๅทฅๅ…ท
โ”‚   โ”œโ”€โ”€ pretrain_ts.py           # TST1้ข„่ฎญ็ปƒ่„šๆœฌ
โ”‚   โ”œโ”€โ”€ pretrain_fc.py           # TST2้ข„่ฎญ็ปƒ่„šๆœฌ
โ”‚   โ”œโ”€โ”€ contrastive.py           # ๅฏนๆฏ”ๅญฆไน ๆจกๅ—
โ”‚   โ””โ”€โ”€ __init__.py
โ”‚
โ”œโ”€โ”€ scripts/                      # ่ฎญ็ปƒ่„šๆœฌ
โ”‚   โ”œโ”€โ”€ prepare_data.py          # ๆ•ฐๆฎ้ข„ๅค„็†
โ”‚   โ”œโ”€โ”€ train_pretrain.py        # ้ข„่ฎญ็ปƒๅ…ฅๅฃ
โ”‚   โ”œโ”€โ”€ train_finetune.py        # ๅพฎ่ฐƒๅ…ฅๅฃ
โ”‚   โ””โ”€โ”€ start_tensorboard.sh     # TensorBoardๅฏๅŠจ่„šๆœฌ
โ”‚
โ”œโ”€โ”€ utils/                        # ๅทฅๅ…ทๅ‡ฝๆ•ฐ
โ”‚   โ”œโ”€โ”€ data_loader.py           # ๆ•ฐๆฎๅŠ ่ฝฝๅ™จ
โ”‚   โ”œโ”€โ”€ metrics.py               # ่ฏ„ไผฐๆŒ‡ๆ ‡
โ”‚   โ””โ”€โ”€ __init__.py
โ”‚
โ”œโ”€โ”€ configs/                      # ้…็ฝฎๆ–‡ไปถ
โ”‚   โ”œโ”€โ”€ default.yaml             # ้ป˜่ฎค้…็ฝฎ
โ”‚   โ””โ”€โ”€ base_template.yaml       # ้…็ฝฎๆจกๆฟ
โ”‚
โ”œโ”€โ”€ requirements.txt             # ไพ่ต–ๅŒ…
โ””โ”€โ”€ README.md                    # ๆœฌๆ–‡ๆกฃ

ๆณจๆ„: ่ฎญ็ปƒ่ฟ‡็จ‹ไธญไผš็”Ÿๆˆไปฅไธ‹็›ฎๅฝ•๏ผˆๅปบ่ฎฎๆทปๅŠ ๅˆฐ .gitignore๏ผ‰๏ผš

  • checkpoints/ - ๆจกๅž‹ๆฃ€ๆŸฅ็‚น
  • logs/ - TensorBoardๆ—ฅๅฟ—
  • data/ - ๆ•ฐๆฎๆ–‡ไปถ
  • results/ - ๅฎž้ชŒ็ป“ๆžœ

๐Ÿš€ ๅฟซ้€Ÿๅผ€ๅง‹

1. ็Žฏๅขƒ้…็ฝฎ

็ณป็ปŸ่ฆๆฑ‚:

  • Python >= 3.7
  • CUDA >= 10.2 (GPUๆŽจ่)

ๅฎ‰่ฃ…ไพ่ต–:

# ๅ…‹้š†ไป“ๅบ“
git clone https://github.com/Leezy-Ray/twoTST.git
cd twoTST

# ๅฎ‰่ฃ…ไพ่ต–
pip install -r requirements.txt

ไธป่ฆไพ่ต–ๅŒ…๏ผš

  • PyTorch >= 1.10.0
  • NumPy >= 1.20.0
  • scikit-learn >= 1.0.0
  • TensorBoard >= 2.8.0
  • tqdm, PyYAML

2. ๆ•ฐๆฎๅ‡†ๅค‡

ๅ‡†ๅค‡ๆ‚จ็š„fMRIๆ•ฐๆฎ๏ผŒๆ ผๅผไธบ (n_samples, time_points, n_rois) ็š„numpyๆ•ฐ็ป„ใ€‚

# ่ฟ่กŒๆ•ฐๆฎ้ข„ๅค„็†่„šๆœฌ
python scripts/prepare_data.py \
    --data_path /path/to/your/fmri.npy \
    --output_dir data/processed \
    --n_rois 200 \
    --time_points 100

ๆ•ฐๆฎ้ข„ๅค„็†ๅŠŸ่ƒฝ:

  • โœ… ่‡ชๅŠจๆธ…ๆด—ROIๅ…จ้›ถๆ ทๆœฌ
  • โœ… ่ฎก็ฎ—PCC๏ผˆPearson็›ธๅ…ณ็ณปๆ•ฐ๏ผ‰ไธŠไธ‰่ง’ๅ‘้‡
  • โœ… ๅฏ้€‰ๆป‘ๅŠจ็ช—ๅฃๆ•ฐๆฎๅขžๅผบ
  • โœ… ๆ•ฐๆฎๆ ‡ๅ‡†ๅŒ–ๅ’Œๅˆ’ๅˆ†๏ผˆ่ฎญ็ปƒ/้ชŒ่ฏ/ๆต‹่ฏ•๏ผ‰

่พ“ๅ‡บๆ•ฐๆฎๆ ผๅผ:

  • timeseries: (n_samples, n_rois, time_points) - ๆ—ถ้—ดๅบๅˆ—
  • pcc_vectors: (n_samples, n_rois*(n_rois-1)/2) - PCCไธŠไธ‰่ง’ๅ‘้‡
  • labels: (n_samples,) - ๆ ‡็ญพ (0=ASD, 1=TC)

3. ้ข„่ฎญ็ปƒ

ๆ–นๅผ1: ้กบๅบ้ข„่ฎญ็ปƒ๏ผˆๆŽจ่๏ผ‰

ไฝฟ็”จ็ปŸไธ€ๅ…ฅๅฃ่„šๆœฌ่ฟ›่กŒ้กบๅบ้ข„่ฎญ็ปƒ๏ผš

python scripts/train_pretrain.py \
    --data_path data/processed/processed_data.pkl \
    --pretrain_tst1 \
    --pretrain_tst2 \
    --tst1_epochs 100 \
    --tst2_epochs 100 \
    --batch_size 32 \
    --lr 1e-4 \
    --save_dir checkpoints \
    --log_dir logs

ๆ–นๅผ2: ๅ•็‹ฌ้ข„่ฎญ็ปƒ

TST1้ข„่ฎญ็ปƒ๏ผˆๆ—ถๅบTransformer๏ผ‰:

python pretrain/pretrain_ts.py \
    --data_path data/processed/processed_data.pkl \
    --epochs 100 \
    --batch_size 32 \
    --lr 1e-4 \
    --save_dir checkpoints/tst1 \
    --log_dir logs/tst1

TST1็‰น็‚น:

  • ่พ“ๅ…ฅ: (batch, n_rois, time_points) - ๆ—ถ้—ดๅบๅˆ—
  • ๆŽฉ็ ็ญ–็•ฅ: ROI-levelๆŽฉ็ ๏ผˆ้šๆœบๆŽฉ็ 25%ๆˆ–50%็š„ROIๆ•ดๅˆ—๏ผ‰
  • ้ข„่ฎญ็ปƒไปปๅŠก: ้‡ๅปบ่ขซๆŽฉ็ ROI็š„ๅฎŒๆ•ดๆ—ถ้—ดๅบๅˆ—
  • ๆจกๅž‹ๅ‚ๆ•ฐ: ~19M

TST2้ข„่ฎญ็ปƒ๏ผˆ่ฟžๆŽฅTransformer๏ผ‰:

python pretrain/pretrain_fc.py \
    --data_path data/processed/processed_data.pkl \
    --epochs 100 \
    --batch_size 32 \
    --lr 1e-4 \
    --mask_ratio 0.15 \
    --save_dir checkpoints/tst2 \
    --log_dir logs/tst2

TST2็‰น็‚น:

  • ่พ“ๅ…ฅ: (batch, pcc_dim) - PCCไธŠไธ‰่ง’ๅ‘้‡
  • ๆŽฉ็ ็ญ–็•ฅ: ๅ…ƒ็ด ็บงๆŽฉ็ ๏ผˆ้šๆœบๆŽฉ็ 15%็š„PCCๅ€ผ๏ผ‰
  • ้ข„่ฎญ็ปƒไปปๅŠก: ้‡ๅปบ่ขซๆŽฉ็ ็š„PCCๅ€ผ
  • ๆจกๅž‹ๅ‚ๆ•ฐ: ~16M

4. ๅพฎ่ฐƒๅˆ†็ฑป

ๅŠ ่ฝฝ้ข„่ฎญ็ปƒๆƒ้‡่ฟ›่กŒไธ‹ๆธธๅˆ†็ฑปไปปๅŠก๏ผš

python scripts/train_finetune.py \
    --data_path data/processed/processed_data.pkl \
    --tst1_checkpoint checkpoints/tst1/tst1_best.pt \
    --tst2_checkpoint checkpoints/tst2/tst2_best.pt \
    --fusion_type cross_attention \
    --epochs 100 \
    --batch_size 32 \
    --lr 5e-5 \
    --n_folds 5 \
    --use_contrastive  # ๅฏ้€‰๏ผšๅฏ็”จๅฏนๆฏ”ๅญฆไน 

ๅพฎ่ฐƒๅ‚ๆ•ฐ่ฏดๆ˜Ž:

  • --fusion_type: ่žๅˆ็ญ–็•ฅ (concat, gated, cross_attention, bilinear, attention_pooling)
  • --n_folds: ไบคๅ‰้ชŒ่ฏๆŠ˜ๆ•ฐ๏ผˆ้ป˜่ฎค5ๆŠ˜๏ผ‰
  • --use_contrastive: ๆ˜ฏๅฆๅœจๅพฎ่ฐƒๅ‰่ฟ›่กŒๅฏนๆฏ”ๅญฆไน ๅฏน้ฝ

5. TensorBoardๅฏ่ง†ๅŒ–

่ฎญ็ปƒ่ฟ‡็จ‹ไธญๅฏไปฅไฝฟ็”จTensorBoardๅฎžๆ—ถๆŸฅ็œ‹่ฎญ็ปƒๆ›ฒ็บฟ๏ผš

# ๅฏๅŠจTensorBoardๆœๅŠก
bash scripts/start_tensorboard.sh

# ๆˆ–ๆ‰‹ๅŠจๅฏๅŠจ
tensorboard --logdir=logs --port=6006 --host=0.0.0.0

็„ถๅŽๅœจๆต่งˆๅ™จไธญ่ฎฟ้—ฎ http://localhost:6006 ๆŸฅ็œ‹่ฎญ็ปƒๆ›ฒ็บฟใ€‚

๐Ÿ”ง ้…็ฝฎ่ฏดๆ˜Ž

้…็ฝฎๆ–‡ไปถไฝไบŽ configs/default.yaml๏ผŒไธป่ฆ้…็ฝฎ้กน๏ผš

# ๆ•ฐๆฎ้…็ฝฎ
data:
  n_rois: 200
  time_points: 100
  pcc_dim: 19900

# TST1้…็ฝฎ
tst1:
  emb_dim: 512
  n_heads: 8
  n_layers: 6
  dim_feedforward: 2048

# TST2้…็ฝฎ
tst2:
  d_model: 256
  n_heads: 8
  n_layers: 2
  dim_feedforward: 512

# ่žๅˆ้…็ฝฎ
fusion:
  type: cross_attention  # concat/gated/cross_attention/bilinear/attention_pooling

# ๅฏนๆฏ”ๅญฆไน ้…็ฝฎ
contrastive:
  enabled: false
  temperature: 0.07
  epochs: 50

๐Ÿ“Š ่žๅˆ็ญ–็•ฅ

ๆก†ๆžถๆ”ฏๆŒ5็ง่žๅˆ็ญ–็•ฅ๏ผš

  1. ConcatFusion: ็ฎ€ๅ•ๆ‹ผๆŽฅ [h_ts; h_fc]
  2. GatedFusion: ้—จๆŽง่žๅˆ gate * h_ts + (1-gate) * h_fc
  3. CrossAttentionFusion: ไบคๅ‰ๆณจๆ„ๅŠ›่žๅˆ๏ผˆๆŽจ่๏ผ‰
  4. BilinearFusion: ๅŒ็บฟๆ€ง่žๅˆ
  5. AttentionPoolingFusion: ๆณจๆ„ๅŠ›ๆฑ ๅŒ–่žๅˆ

๐Ÿ“ˆ ่ฏ„ไผฐๆŒ‡ๆ ‡

ๅพฎ่ฐƒ่„šๆœฌไผš่‡ชๅŠจ่ฎก็ฎ—ไปฅไธ‹ๆŒ‡ๆ ‡๏ผš

  • Accuracy: ๅ‡†็กฎ็އ
  • Precision: ็ฒพ็กฎ็އ
  • Recall: ๅฌๅ›ž็އ
  • F1 Score: F1ๅˆ†ๆ•ฐ
  • AUC: ROCๆ›ฒ็บฟไธ‹้ข็งฏ
  • Sensitivity/Specificity: ๆ•ๆ„Ÿๅบฆ/็‰นๅผ‚ๅบฆ

่พ“ๅ‡บ็คบไพ‹๏ผš

Cross-Validation Results:
----------------------------------------
Accuracy    : 0.7234 ยฑ 0.0234
Precision   : 0.7123 ยฑ 0.0198
Recall      : 0.7345 ยฑ 0.0212
F1          : 0.7231 ยฑ 0.0201
AUC         : 0.7891 ยฑ 0.0156

๐Ÿ“ ไฝฟ็”จ็คบไพ‹

Python API

import torch
from models import create_dual_stream_model
from utils.data_loader import load_processed_data, TwoTSTDataset

# ๅŠ ่ฝฝๆ•ฐๆฎ
data = load_processed_data('data/processed/processed_data.pkl')
dataset = TwoTSTDataset(
    data['timeseries'],
    data['pcc_vectors'],
    data['labels']
)

# ๅˆ›ๅปบๆจกๅž‹
model = create_dual_stream_model(
    n_rois=200,
    time_points=100,
    pcc_dim=19900,
    fusion_type='cross_attention'
)

# ๅŠ ่ฝฝ้ข„่ฎญ็ปƒๆƒ้‡
model.load_pretrained_tst1('checkpoints/tst1/tst1_best.pt')
model.load_pretrained_tst2('checkpoints/tst2/tst2_best.pt')

# ๅ‰ๅ‘ไผ ๆ’ญ
timeseries = torch.randn(8, 200, 100)
pcc_vector = torch.randn(8, 19900)
logits = model(timeseries, pcc_vector)

๐Ÿ› ๅธธ่ง้—ฎ้ข˜

Q1: ๅ†…ๅญ˜ไธ่ถณๆ€ŽไนˆๅŠž๏ผŸ

A: ๅฏไปฅๅ‡ๅฐbatch_sizeๆˆ–ไฝฟ็”จๆขฏๅบฆ็ดฏ็งฏ๏ผš

--batch_size 16  # ๅ‡ๅฐbatch size

Q2: ๅฆ‚ไฝ•ๅช่ฎญ็ปƒๆŸไธชๅˆ†ๆ”ฏ๏ผŸ

A: ๅฏไปฅไฟฎๆ”น่„šๆœฌ๏ผŒๅชๅŠ ่ฝฝๅนถไฝฟ็”จๅ•ไธชๅˆ†ๆ”ฏ็š„้ข„่ฎญ็ปƒๆƒ้‡ใ€‚

Q3: ้ข„่ฎญ็ปƒๆƒ้‡ๅฆ‚ไฝ•ๅŠ ่ฝฝ๏ผŸ

A: ๅœจๅพฎ่ฐƒ่„šๆœฌไธญๆŒ‡ๅฎšcheckpoint่ทฏๅพ„๏ผš

--tst1_checkpoint checkpoints/tst1/tst1_best.pt
--tst2_checkpoint checkpoints/tst2/tst2_best.pt

Q4: ๅฆ‚ไฝ•ไฝฟ็”จๆป‘ๅŠจ็ช—ๅฃๆ•ฐๆฎๅขžๅผบ๏ผŸ

A: ๅœจๆ•ฐๆฎ้ข„ๅค„็†ๆ—ถๅฏ็”จ๏ผš

python scripts/prepare_data.py \
    --use_sliding_window \
    --window_size 50 \
    --stride 25

๐Ÿ“š ๅ‚่€ƒๆ–‡็Œฎ

ๆœฌ้กน็›ฎๅ‚่€ƒไบ†ไปฅไธ‹ๅทฅไฝœ๏ผš

  • ROI-levelๆŽฉ็ ้ข„่ฎญ็ปƒๆ—ถๅบTransformer
  • PCCไธŠไธ‰่ง’ๅ‘้‡ๆŽฉ็ ้ข„่ฎญ็ปƒ่ฟžๆŽฅTransformer

๐Ÿ“„ ่ฎธๅฏ่ฏ

ๆœฌ้กน็›ฎไป…ไพ›็ ”็ฉถไฝฟ็”จใ€‚

๐Ÿ‘ฅ ่ดก็Œฎ

ๆฌข่ฟŽๆไบคIssueๅ’ŒPull Request๏ผ

ๅฆ‚ๆžœๆ‚จๆœ‰ไปปไฝ•้—ฎ้ข˜ๆˆ–ๅปบ่ฎฎ๏ผŒ่ฏท๏ผš

  1. ๆไบค Issue
  2. ๅ‘่ตท Pull Request

๐Ÿ“ง ่”็ณปๆ–นๅผ

ๅฆ‚ๆœ‰้—ฎ้ข˜๏ผŒ่ฏทๆไบคIssueๆˆ–่”็ณป้กน็›ฎ็ปดๆŠค่€…ใ€‚


TwoTST - Dual-Stream Self-Supervised Pretraining Framework for fMRI Analysis

GitHub: https://github.com/Leezy-Ray/twoTST.git

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published