MCDF(Multi-scale Cross-modal Deep Fusion)是一个基于深度学习的图像检测项目,主要用于真假图像检测任务。该项目集成了多种先进的深度学习模型,包括VMamba、CLIP、Simba等,通过多尺度跨模态深度融合技术实现高精度的图像真伪检测。
- 多模型支持: 集成VMamba、CLIP、Simba、PIMNet等多种先进模型
- 多尺度融合: 采用EinFFT等技术实现多尺度特征融合
- 跨模态学习: 结合视觉和文本信息进行深度学习
- 双分支架构: 支持DualBranchMCDF双分支网络结构
- 数据增强: 丰富的数据增强策略,包括模糊、JPEG压缩、旋转等
- 对比学习: 集成SupCon对比学习损失函数
MCDF/
├── configs/ # 配置文件
│ ├── config_mcdf.py # MCDF模型配置
│ └── config_setting.py # 训练设置配置
├── data/ # 数据目录
├── datasets/ # 数据集处理
│ └── dataset.py # 数据集类定义
├── models/ # 模型定义
│ ├── MCDF.py # MCDF主模型
│ ├── Dual_MCDF.py # 双分支MCDF模型
│ ├── Dual_MCDF_2d.py # 2D双分支MCDF模型
│ ├── PIMNet.py # PIMNet模型
│ ├── vmamba/ # VMamba模型
│ ├── clip/ # CLIP相关模型
│ └── ...
├── kernels/ # 自定义CUDA核心
│ └── selective_scan/ # 选择性扫描核心
├── mamba/ # Mamba状态空间模型
├── pre_trained_weights/ # 预训练权重
├── results/ # 训练结果
├── main_epoch.py # 主训练脚本
├── engine.py # 训练引擎
├── utils.py # 工具函数
└── earlystop.py # 早停机制
- MCDF: 多尺度跨模态深度融合模型
- DualBranchMCDF: 双分支MCDF模型
- VMamba: 视觉Mamba模型(Small/Base/Tiny版本)
- CLIP: 对比语言-图像预训练模型
- Simba: Simba模型(S/B/L版本)
- PIMNet: 位置信息挖掘网络
- GILMNet: GILM检测网络
- CLIP_VMamba_S/B/T220
- RN50
- ViT-L/14, ViT-B/32, ViT-B/16
- CLIP_Simba_S/B/L
- CNNSpot: 训练集
- FDMAS: 测试集
pip install torch torchvision
pip install timm
pip install tensorboardX
pip install scikit-learn
pip install opencv-python
pip install pillow
pip install scipy
pip install tqdm
pip install einops
pip install transformers项目包含自定义CUDA核心,需要:
- CUDA Toolkit
- ninja
- 编译环境
将数据集放置在相应目录:
# 示例:RealFake数据集
mkdir -p ./datasets/RealFake
# 将真实图像放在 real/ 子目录
# 将虚假图像放在 fake/ 子目录编辑配置文件 configs/config_mcdf.py:
# 选择模型
network = 'mcdf' # 或 'dual_mcdf'
# 选择CLIP骨干网络
clip_backbone_type = "CLIP_VMamba_B"
clip_backbone_path = "models/clip/VMamba_B_clip.pt"
# 数据集设置
datasets = 'RealFake'
data_path = "./datasets/RealFake"python main_epoch.py# 在config中设置测试路径
resume_txt_path = "path/to/test/images.txt"
# 运行测试
python main_epoch.pynetwork: 选择网络类型('mcdf', 'dual_mcdf', 'vmunet'等)clip_backbone_type: CLIP骨干网络类型num_classes: 分类数量(默认为1,二分类)
cropSize: 输入图像裁剪尺寸(默认224)loadSize: 图像加载尺寸blur_prob: 模糊增强概率jpg_prob: JPEG压缩增强概率
criterion: 主损失函数(BCEWithLogitsLoss)supcon_temperature: 对比学习温度参数supcon_weight: 对比学习权重use_supcon: 是否使用对比学习
- 基于FFT的频域特征处理
- 支持GPU优化的一维FFT
- 多块并行处理
- SupCon损失函数
- 温度缩放机制
- 特征对比学习
- 高斯模糊
- JPEG压缩
- 随机旋转和翻转
- 多种插值方法
训练结果保存在 results/ 目录下:
checkpoints/: 模型检查点log/: 训练日志outputs/: 预测结果summary/: 训练摘要
项目支持TensorBoard可视化:
tensorboard --logdir=results/[experiment_name]/summary- GPU内存: 某些模型需要较大GPU内存,建议使用16GB+显存
- CUDA编译: 首次运行可能需要编译CUDA核心,耗时较长
- 预训练权重: 确保下载相应的预训练权重文件
- 数据格式: 确保数据集格式符合要求
本项目遵循相应的开源许可证。Mamba组件遵循Apache 2.0许可证。
本项目基于以下优秀的开源项目:
如有问题或建议,请通过GitHub Issues联系。