ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

ReMiX-MAE:仅用RGB视频实现跨模态缺失通道表征与疼痛评估

ReMiX-MAE:仅用RGB视频实现跨模态缺失通道表征与疼痛评估 在实际科研和工程项目中多模态学习一直面临一个很现实的问题数据不好凑。要训练一个跨模态模型通常需要同一个场景下同时录制 RGB 视频、热成像视频、深度图甚至是心率或皮肤电信号。这些设备要么贵要么难以同步要么在临床环境下根本不允许部署。那有没有可能只靠一种数据比如最容易获取的 RGB 视频就能学到其他模态的特征ReMiX-MAE 这篇工作正是在回答这个问题只使用临床面部 RGB 视频学习缺失通道的跨模态表征并用于交感神经介导的疼痛评估。这篇文章不打算把论文复述一遍而是站在工程和技术拆解的角度带你梳理 ReMiX-MAE 的核心思路、与 MAE 之间的关系、跨模态缺失通道建模的方法以及如果你自己也想实现类似任务应该怎么搭建环境、写代码、做实验、排错。无论你是做多模态学习、自监督视觉表征还是医学图像分析这篇文章都能提供一套从原理到实践的完整思路。1. 背景与核心概念1.1 为什么多模态数据总是“缺通道”先想一个很常见的场景。研究人员想用面部视频判断一个人是否处于疼痛状态。临床上疼痛会激活交感神经系统导致面部血流变化、皮肤温度变化、微表情变化等。摄像头能拍到的是 RGB 彩色视频但皮肤温度信息通常要依赖热成像仪血流变化可能需要光电容积描记PPG信号深度信息则需要深度相机。问题来了热成像仪贵深度相机校准麻烦PPG 设备需要接触皮肤。于是很多实验只能拿到 RGB 视频。然而仅靠 RGB 原始像素模型未必能直接抓住交感神经激活带来的生理信号特征。这就引出了“缺失通道”的概念我们手里有 RGB 三通道但真正能反映交感神经活动的热通道、深度通道、生理信号通道是缺失的。ReMiX-MAE 的出发点就是在训练阶段让模型看到完整的跨模态信息在测试阶段只输入 RGB 视频强制模型从 RGB 中恢复或重建缺失模态的表征。这样模型不仅学会了“看脸”还学会了“推测脸上没直接拍到的生理状态”。1.2 MAE 掩码自编码器回顾MAE也就是 Masked Autoencoder掩码自编码器是 He 等人在 2022 年提出的自监督视觉预训练方法。它的思路很简单把输入图片划分成一个个 patch随机遮住一部分让编码器只处理可见 patch然后由一个轻量解码器重建被遮住的 patch。通过这种方式模型被迫学习图像的全局语义结构和局部纹理信息。MAE 的一个关键设计是“非对称编码器-解码器”。编码器只处理可见 patch计算量大幅下降解码器虽然处理完整 patch 序列但通常很轻量。这样一个简单的结构在 ImageNet 上取得了很好的自监督预训练效果。ReMiX-MAE 这个名字显然是在 MAE 的框架上做扩展。原版 MAE 遮掉的是空间位置的 patchReMiX-MAE 则把 mask 的概念从“空间维度”扩展到了“模态通道维度”——它遮掉的是某个模态通道而重建目标变成缺失模态的表征。1.3 Cross-Modal 跨模态学习的难点跨模态学习的核心难点在于不同模态之间存在异构性。RGB 图像是反射光形成的视觉信息热图像是物体热辐射形成的温度信息深度图是几何距离信息。它们描述的是同一场景但特征空间完全不同。要让模型从 RGB 预测热模态特征本质上是在学习一个跨模态映射函数。这个映射不是简单的像素级变换而是语义级、生理级的对应。比如表情变化引起的皮肤温度变化在 RGB 上表现为肤色微变和纹理变化在热图像上则表现为局部温度升高。模型需要捕捉到这种跨模态的微妙关联。ReMiX-MAE 的“Missing-Channel”设计正是为了让模型学会这种关联。它在训练时随机隐藏某个模态通道要求模型基于可见的 RGB 信息重建缺失通道。这个过程逼迫模型建立“RGB 特征”与“隐藏生理特征”之间的预测关系从而在下游疼痛评估任务中表现得更好。1.4 疼痛评估与交感神经介导临床上疼痛评估通常依赖患者自我报告比如视觉模拟评分法VAS或数字评分法NRS。但有些患者无法准确表达疼痛比如术后恢复中的病人、意识障碍患者、婴儿等。这时候客观疼痛评估就显得很重要。交感神经介导的疼痛评估指的是通过交感神经系统的反应来间接判断疼痛程度。疼痛刺激会引起交感神经兴奋导致心率加快、血压升高、皮肤电导变化、面部血流重新分布等。这些生理反应会部分体现在面部外观上比如前额出汗、眼部周围血管扩张、表情肌紧张等。因此从面部 RGB 视频中提取交感神经相关特征实现客观疼痛评估是一个很有临床价值的探索方向。ReMiX-MAE 的价值就是用自监督学习的思路让模型在没有大量疼痛标注的情况下先学会捕捉疼痛相关的跨模态生理表征。2. 环境准备与版本说明这部分我们重点讨论如果你想自己复现 ReMiX-MAE 的思路需要准备哪些环境。由于论文没有提供完整可下载的官方代码仓库这里给出一套基于常见深度学习框架的实现方案。2.1 硬件环境ReMiX-MAE 的核心是 Vision TransformerViT和 MAE 预训练对显存有一定要求。建议准备项目建议配置GPUNVIDIA RTX 3090 / 4090显存 24GB 起步CPU8 核以上即可内存32GB 以上硬盘建议 200GB 以上用于存放视频帧和预处理特征如果你只有消费级显卡比如 RTX 3060 12GB也可以跑但需要调小 batch size、patch size 或使用梯度累积。2.2 软件环境以下版本以常见稳定环境为例实际使用时请根据你的项目情况调整Python 3.10 PyTorch 2.0 torchvision 0.15 OpenCV 4.8 numpy 1.24 timm 0.9 scikit-learn 1.3 pandas 2.0 matplotlib 3.7建议使用 conda 创建独立环境conda create -n remix-mae python3.10 conda activate remix-mae pip install torch torchvision opencv-python numpy timm scikit-learn pandas matplotlib2.3 数据集结构为了方便后续处理推荐将面部视频按帧提取后按以下目录结构组织dataset/ ├── train/ │ ├── subject_001/ │ │ ├── frame_0001.jpg │ │ ├── frame_0002.jpg │ │ └── ... │ └── subject_002/ │ ├── frame_0001.jpg │ └── ... ├── val/ └── test/同时准备一个annotation.csv文件记录每个视频片段的疼痛标签video_id,subject_id,pain_level,frame_start,frame_end video_001,subject_001,2,1,120 video_002,subject_002,4,1,150这里的pain_level可以是离散等级也可以是连续数值视任务而定。3. RGB 视频数据与底层图像处理基础ReMiX-MAE 的输入是 RGB 临床面部视频。在做跨模态表征学习之前先要把 RGB 视频数据处理好。这一节我们聊一些底层图像处理知识它们虽然在论文里不会特意写但在工程落地时非常关键。3.1 Python 读取图片 RGB 值很多初学者在处理 RGB 图像时会把 OpenCV 读取的图片直接当成 RGB然后用 matplotlib 显示结果发现颜色不对。这是因为 OpenCV 默认读取顺序是 BGR而不是 RGB。import cv2 import matplotlib.pyplot as plt # OpenCV 读取图片默认通道顺序是 BGR img cv2.imread(frame_0001.jpg) print(img.shape) # (H, W, 3) # 读取某个像素的 BGR 值 b, g, r img[100, 200] print(fB{b}, G{g}, R{r}) # 转成 RGB 顺序 img_rgb cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # 显示 plt.imshow(img_rgb) plt.axis(off) plt.show()在自监督预训练任务中通道顺序错误会导致模型学到的特征完全错乱所以第一步一定要确认数据读取的通道顺序。3.2 Bayer 转 RGB 与 YUV 转 RGB在某些临床设备中摄像头直接输出的是 Raw 数据不是直接的 RGB 图像。Raw 数据通常是 Bayer 格式每个像素只记录 R、G、B 中的一个通道值需要通过去马赛克算法demosaicing恢复成完整 RGB 图像。OpenCV 提供了cv2.cvtColor完成 Bayer 转 RGBimport cv2 # raw_bayer 是单通道 Bayer 图像 # 常见模式有 BGGR、RGGB、GBRG、GRBG bayer_img cv2.imread(raw_frame.png, cv2.IMREAD_UNCHANGED) rgb_img cv2.cvtColor(bayer_img, cv2.COLOR_BayerBG2RGB)如果是视频设备输出的 YUV 格式也需要转换。BT.601 是标清视频常用的 YUV 转 RGB 矩阵标准BT.709 则对应高清视频。OpenCV 中可以直接转换import cv2 import numpy as np # 假设 yuv_frame 是 YUV 格式尺寸为 (H, W, 3) # 这里以 BT.601 为例 yuv_frame np.zeros((480, 640, 3), dtypenp.uint8) rgb_frame cv2.cvtColor(yuv_frame, cv2.COLOR_YUV2RGB_I420)在 ReMiX-MAE 的预处理流水线中如果数据来源是工业相机或医学影像设备第一步往往就是把 Bayer 或 YUV 统一转成标准 RGB。3.3 用 OpenCV 对齐 RGB 与红外相机画面对齐ReMiX-MAE 的训练阶段需要用到其他模态的数据比如热成像或深度图。这时候RGB 相机和热成像相机之间的画面对齐就是一个绕不开的问题。两种相机的位置、视场角、分辨率不同直接叠加会产生像素级偏移。常用的对齐方法是计算两个相机之间的单应性矩阵然后对热图像做透视变换。import cv2 import numpy as np # 手工选择对应点 rgb_pts np.array([[100, 100], [500, 100], [100, 400], [500, 400]], dtypenp.float32) thermal_pts np.array([[80, 120], [480, 110], [90, 390], [490, 380]], dtypenp.float32) # 计算单应性矩阵 H, _ cv2.findHomography(thermal_pts, rgb_pts) # 将热图像映射到 RGB 图像坐标系 aligned_thermal cv2.warpPerspective(thermal_img, H, (rgb_img.shape[1], rgb_img.shape[0]))对齐之后还需要裁剪出双方一致的面部区域再进行归一化、标准化等操作。如果你的实验数据本身就是对齐好的这步可以跳过但如果是自采数据对齐质量直接影响跨模态重建的效果。3.4 人脸检测与裁剪面部视频分析的第一步是定位人脸。常用方案有 OpenCV Haar Cascades、dlib、MediaPipe 等。考虑到速度和稳定性推荐使用 MediaPipe 或 MTCNN。import cv2 import mediapipe as mp mp_face_detection mp.solutions.face_detection face_detection mp_face_detection.FaceDetection(model_selection1, min_detection_confidence0.5) def crop_face(frame): rgb_frame cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) results face_detection.process(rgb_frame) if not results.detections: return None detection results.detections[0] bbox detection.location_data.relative_bounding_box h, w frame.shape[:2] x int(bbox.xmin * w) y int(bbox.ymin * h) bw int(bbox.width * w) bh int(bbox.height * h) return frame[y:ybh, x:xbw]裁剪后的人脸区域需要缩放到统一尺寸比如 224×224 或 256×256再进入模型。4. ReMiX-MAE 核心原理拆解ReMiX-MAE 的核心思想可以概括为在 MAE 框架下通过掩码建模实现跨模态缺失通道的表征学习。下面我们拆解它的几个关键设计点。4.1 从掩码空间 patch 到掩码通道原始 MAE 的 mask 是空间维度的一张图分成 N 个 patch随机遮住 75% 的 patch让编码器只处理剩余 25%。ReMiX-MAE 把 mask 扩展到了通道维度。具体来说ReMiX-MAE 在训练时有两种输入完整模态输入RGB 视频帧 其他模态热成像、深度图等。缺失通道输入只保留 RGB 帧其他模态被随机 mask 掉。模型需要基于可见的 RGB 信息重建被 mask 掉的模态通道。这个过程迫使模型学习 RGB 与其他模态之间的对应关系。用伪代码表示def forward(self, rgb_frames, thermal_mapsNone, depth_mapsNone, mask_ratio0.75): # 生成随机 mask决定哪些通道被遮住 mask generate_channel_mask(mask_ratio) # 如果训练阶段随机丢弃部分模态 if self.training and mask[thermal]: thermal_input None else: thermal_input thermal_maps # 编码 RGB rgb_feat self.encoder(rgb_frames) # 如果缺失通道用预测头重建 if thermal_input is None: thermal_recon self.thermal_predictor(rgb_feat) else: thermal_recon None return rgb_feat, thermal_recon4.2 编码器与解码器设计ReMiX-MAE 的编码器通常采用 ViT将输入的 RGB 帧划分为 patch通过线性投影得到 token 序列。与原始 MAE 不同的是编码器的输入不再只是可见 patch而是可见 patch 加上可见模态的 token。解码器的任务有两层重建被 mask 的 RGB patch。重建被 mask 的跨模态通道。前者保证模型对视觉结构的理解后者保证模型对跨模态关联的学习。两者共享编码器特征通过不同的解码头输出。这种设计的好处是一个编码器同时承担两种自监督任务学到的特征既包含空间结构信息又包含跨模态语义信息。4.3 损失函数设计ReMiX-MAE 的损失函数通常由两部分组成重建损失计算重建结果与真实模态之间的差异常用 MSE均方误差或 L1 损失。对比损失可选拉近同一视频样本不同模态特征之间的距离。以热通道重建为例损失可以写成import torch import torch.nn.functional as F def reconstruction_loss(pred, target, mask): # pred: 预测的热通道特征 # target: 真实热通道特征 # mask: 需要重建的位置 diff (pred - target) ** 2 loss (diff * mask).sum() / mask.sum() return loss对于 RGB patch 重建通常只计算被 mask 位置的损失不计算可见位置的损失。这与原始 MAE 一致。4.4 上下游任务衔接预训练完成后编码器输出的 CLS token 或平均池化特征可以作为下游任务的输入。对于疼痛评估任务通常会接一个 MLP 分类头或回归头class PainClassifier(nn.Module): def __init__(self, feat_dim768, num_classes3): super().__init__() self.fc1 nn.Linear(feat_dim, 256) self.relu nn.ReLU() self.dropout nn.Dropout(0.3) self.fc2 nn.Linear(256, num_classes) def forward(self, x): x self.relu(self.fc1(x)) x self.dropout(x) return self.fc2(x)在测试阶段模型只接收 RGB 视频帧不接收任何其他模态数据。这就是 ReMiX-MAE 的核心优势训练时多模态测试时单模态。5. 完整实战案例为了让前面讲的原理更具体下面给出一个简化版 ReMiX-MAE 复现思路。这个示例不是论文的完整实现而是核心流程的教学演示帮助你理解每个模块的职责。5.1 创建项目结构先创建如下目录remix-mae-demo/ ├── config.py ├── dataset.py ├── model.py ├── train.py ├── evaluate.py └── utils.py5.2 数据集读取与预处理假设训练阶段我们能拿到 RGB 帧和对应的热成像帧模拟跨模态数据测试阶段只有 RGB 帧。# 文件路径dataset.py import os import cv2 import torch from torch.utils.data import Dataset class FacialVideoDataset(Dataset): def __init__(self, root_dir, annotation_file, modalboth): self.root_dir root_dir self.items [] self.modal modal with open(annotation_file, r, encodingutf-8) as f: next(f) for line in f: parts line.strip().split(,) video_id, subject_id, pain_level parts[0], parts[1], int(parts[2]) self.items.append((video_id, pain_level)) def __len__(self): return len(self.items) def __getitem__(self, idx): video_id, pain_label self.items[idx] rgb_path os.path.join(self.root_dir, video_id, rgb, frame_0001.jpg) thermal_path os.path.join(self.root_dir, video_id, thermal, frame_0001.jpg) rgb cv2.imread(rgb_path) rgb cv2.cvtColor(rgb, cv2.COLOR_BGR2RGB) rgb cv2.resize(rgb, (224, 224)) rgb torch.from_numpy(rgb).permute(2, 0, 1).float() / 255.0 sample {rgb: rgb, label: pain_label} if self.modal both: thermal cv2.imread(thermal_path, cv2.IMREAD_GRAYSCALE) thermal cv2.resize(thermal, (224, 224)) thermal torch.from_numpy(thermal).float() / 255.0 sample[thermal] thermal.unsqueeze(0) return sample这里把热成像当作单通道灰度图处理模拟“缺失通道”的目标信号。5.3 定义简化版 ReMiX-MAE 模型我们用 timm 库加载一个 ViT 作为编码器再添加一个解码器用于重建。# 文件路径model.py import torch import torch.nn as nn import timm class ReMiXMAE_Demo(nn.Module): def __init__(self, img_size224, patch_size16, embed_dim768, decoder_dim256): super().__init__() # 使用 timm 提供的 ViT 作为编码器 self.encoder timm.create_model( vit_base_patch16_224, pretrainedFalse, num_classes0, global_pool, ) # 解码器重建 RGB 和热通道 self.decoder_embed nn.Linear(embed_dim, decoder_dim) self.mask_token nn.Parameter(torch.zeros(1, 1, decoder_dim)) self.decoder nn.TransformerEncoder( nn.TransformerEncoderLayer(d_modeldecoder_dim, nhead8, batch_firstTrue), num_layers4, ) self.pred_rgb nn.Linear(decoder_dim, patch_size * patch_size * 3) self.pred_thermal nn.Linear(decoder_dim, patch_size * patch_size * 1) def forward(self, rgb, thermalNone, mask_ratio0.75): B, C, H, W rgb.shape patch_size 16 num_patches (H // patch_size) * (W // patch_size) # 将 RGB 图像 patch 化并输入编码器 x self.encoder.forward_features(rgb) # 解码过程 x self.decoder_embed(x) x self.decoder(x) # 重建 RGB patch pred_rgb self.pred_rgb(x) # 重建热通道 pred_thermal self.pred_thermal(x) return pred_rgb, pred_thermal注意forward_features返回的是全部 patch token实际实现中需要根据 mask 位置来调整这里只是演示流程。5.4 训练循环训练时我们同时计算 RGB 重建损失和热通道重建损失。# 文件路径train.py import torch import torch.nn as nn from torch.utils.data import DataLoader from dataset import FacialVideoDataset from model import ReMiXMAE_Demo device torch.device(cuda if torch.cuda.is_available() else cpu) model ReMiXMAE_Demo().to(device) optimizer torch.optim.AdamW(model.parameters(), lr1e-4) criterion nn.MSELoss() train_dataset FacialVideoDataset(dataset/train, annotation.csv, modalboth) train_loader DataLoader(train_dataset, batch_size16, shuffleTrue) for epoch in range(50): total_loss 0.0 for batch in train_loader: rgb batch[rgb].to(device) thermal batch[thermal].to(device) pred_rgb, pred_thermal model(rgb, thermal) # 简化损失这里假设 pred_thermal 需要和 thermal 匹配 loss_rgb criterion(pred_rgb, rgb.repeat(1, 1, 14, 14)) loss_thermal criterion(pred_thermal, thermal.repeat(1, 1, 14, 14)) loss loss_rgb loss_thermal optimizer.zero_grad() loss.backward() optimizer.step() total_loss loss.item() print(fEpoch {epoch1}: Loss {total_loss / len(train_loader):.4f})为了代码能跑通上述示例对输出尺寸做了简化处理。实际实现中需要准确计算 patch 数量和重建尺寸。5.5 下游疼痛评估预训练完成后我们把编码器输出的特征送入分类器在带疼痛标签的数据上微调。# 文件路径evaluate.py import torch import torch.nn as nn class PainClassifier(nn.Module): def __init__(self, feat_dim768, num_classes3): super().__init__() self.fc nn.Sequential( nn.Linear(feat_dim, 256), nn.ReLU(), nn.Dropout(0.3), nn.Linear(256, num_classes), ) def forward(self, avg_feat): return self.fc(avg_feat)测试阶段输入只有 RGB 视频帧模型输出疼痛等级的概率分布。这一流程完整展示了 ReMiX-MAE “训练时跨模态测试时单模态”的核心优势。6. 常见问题与排查思路在实际复现 ReMiX-MAE 这种自监督跨模态框架时你可能会遇到不少问题。下面整理成表格方便快速定位。问题现象常见原因解决思路训练 loss 不下降学习率设置不合理尝试从 1e-4 开始使用 warmup 策略RGB 重建效果好但热通道重建效果差跨模态关联性不足增加对比损失或扩展编码器容量显存不足batch size 太大或输入分辨率太高减小 batch size、缩小输入尺寸、使用梯度累积面部区域对齐不准人脸检测或图像对齐误差太大引入人脸关键点对齐统一裁剪标准测试阶段效果比训练差很多过拟合到热成像模态增大 mask ratio加入数据增强预训练后微调不收敛学习率没有重新调整微调阶段使用较小学习率如 5e-5读取图像颜色异常OpenCV 通道顺序与 RGB 混淆统一使用cv2.COLOR_BGR2RGB转换下面挑两个典型问题展开说明。6.1 模型只会重建 RGB学不到跨模态特征如果你发现预训练 loss 中 RGB 部分降得很快但热通道部分几乎不下降说明模型没有找到 RGB 和热通道之间的有效映射。常见原因是训练数据里两种模态的对应关系太弱或者 mask 策略没有真正强迫模型依赖跨模态信息。排查步骤可视化热通道重建结果确认解码器输出的不是平均值。增大热通道重建损失的权重。增加对比学习约束让同一视频的 RGB 特征和热特征在特征空间靠近。检查热成像与 RGB 是否做了像素级对齐。6.2 预训练效果不错但下游任务没有提升这是自监督学习里常见的“表示能力强、下游任务不涨点”问题。可能原因有二一是预训练任务的难度与下游任务不匹配。ReMiX-MAE 的预训练目标是重建缺失通道但下游疼痛评估需要的是与疼痛相关的判别性特征。如果数据集中疼痛样本和非疼痛样本的热特征差异不大重建任务未必能学到判别性表征。二是下游微调策略不对。建议在微调时冻结编码器浅层只微调深层和分类头同时加入少量数据增强。解决思路# 微调时冻结浅层示例 for name, param in model.encoder.named_parameters(): if blocks.0 in name or blocks.1 in name: param.requires_grad False7. 最佳实践与工程建议7.1 数据层面面部视频属于敏感生物特征数据。采集、存储、传输必须符合伦理要求做好脱敏和加密。跨模态对齐是影响效果的关键因素建议在数据预处理阶段就做好严格对齐。如果热成像数据不易获取先用少量对齐好的数据做预训练再用 pseudo-label 扩充训练集也是一个可行思路。7.2 模型层面mask ratio 不是固定值建议在 0.5 到 0.9 之间做实验找到最适合任务的配置。编码器可以先用 ImageNet 预训练权重初始化加速收敛。解码器不宜过重MAE 原论文也强调编码器与解码器的非对称设计。7.3 实验层面记录每一次实验的超参数、数据版本、模型版本方便复现。不要只用准确率评价模型建议同时输出混淆矩阵、ROC-AUC 等指标。在临床场景下模型的解释性也很重要。可以尝试用 Grad-CAM 等工具可视化模型关注的面部区域判断是否与疼痛相关的生理区域一致。7.4 性能与部署推理阶段只使用 RGB 输入模型参数量和计算量比训练阶段小很多有利于临床部署。可以考虑将 ViT 蒸馏为轻量模型或者使用 TensorRT 加速推理。如果视频流实时性要求高可以每 N 帧采样一次而不是逐帧推理。7.5 医疗合规与安全疼痛评估涉及医疗决策辅助必须明确模型的使用边界。ReMiX-MAE 的研究目标是辅助性评估不能替代医生诊断。在实际应用中要围绕最小权限、可审计、人工复核原则设计系统。模型的输出建议标注置信度当置信度低于阈值时应转人工判断。8. 总结与学习路线ReMiX-MAE 的核心价值在于把 MAE 的掩码思想从空间维度扩展到模态通道维度让模型在训练阶段通过重建缺失通道学习跨模态表征在测试阶段仅依赖 RGB 输入就能完成下游任务。读完这篇文章你应该掌握以下要点MAE 掩码自编码器的基本原理和“非对称编码器-解码器”结构。跨模态学习中“缺失通道”问题的定义与解决思路。RGB 视频预处理中的底层问题包括通道顺序、Bayer/YUV 转换、红外相机对齐。用简化代码搭建 ReMiX-MAE 风格模型的完整流程。预训练与下游微调之间的衔接方法。下一步建议你按以下顺序深入学习先跑通原始 MAE 代码理解 patch 化和 mask 机制。将原始 MAE 扩展到“通道 mask”版本观察 loss 变化。准备自己的跨模态数据集哪怕先用模拟数据也可以验证框架可行性。尝试加入对比学习、时序建模等进阶技术逐步逼近论文效果。如果你对自监督学习、医学图像分析、多模态表征方向感兴趣ReMiX-MAE 是一个很好的结合点。它能让你同时接触到视觉 Transformer、掩码自编码器、跨模态对齐、医学任务建模等多方面内容。建议找一个小型数据集动手实验代码不一定要完全复现论文关键是理解“训练时多模态、测试时单模态”这个设计思想并把它应用到自己的场景中。
返回列表