MaSE-Net是一个用于低光图像增强的深度学习网络,结合了混合注意力机制(MOA)和混合专家模型(MoE),实现高效的自适应图像增强。
- 双层耦合机制: 创新的"指引-内容"双层耦合,实现选择与处理的深度整合
- 分离式MoE: 为不同ISP方法创建专用信息通道,避免信息混淆
- 高效架构: 仅3M参数即可达到最高PSNR=26, SSIM=0.86的优秀性能
- 端到端训练: 支持完整的训练和推理流程
- 多数据集支持: 支持LOL-v1、LOL-v2、LSRW等主流低光增强数据集

数据集 | PSNR | SSIM | 参数量 |
---|---|---|---|
LOL-v1 | 26.8 | 0.82 | 3M |
LOL-v2-real | 23.2 | 0.86 | 3M |
LSRW | 22.8 | 0.69 | 3M |
Python版本:Python 3.9+
安装依赖:
pip install -r requirements.txt
pip install torch torchvision numpy matplotlib scikit-image tqdm pillow kornia optuna
数据集可从链接获取 https://pan.baidu.com/s/1a9V1A6iIcr0IHUbL-9-a_A?pwd=vn7c
项目支持以下数据集结构:
datasets/
├── LOL_V1/
│ └── lol_dataset/
│ ├── Train/
│ ├── Test/
│ └── Val/
├── LOL_v2/
│ ├── Train/
│ ├── Test/
│ └── Val/
└── OpenDataLab___LSRW/
└── raw/LSRW/
├── Train/
├── Test/
└── Val/
将数据集下载后放置在对应目录即可。
针对不同数据集的关键配置参数:
数据集 | patch_size | win_size | 说明 |
---|---|---|---|
LOL-v1 | 4 | 2 | 适用于LOL-v1数据集的配置 |
LSRW | 4 | 2 | 适用于LSRW数据集的配置 |
LOL-v2 | 2 | 4 | 适用于LOL-v2数据集的配置 |
配置修改方法:
-
在
config.py
文件中修改对应参数:# LOL-v1和LSRW数据集 'patch_size': 4, 'win_size': 2, # LOL-v2数据集 'patch_size': 2, 'win_size': 4,
-
如果需要更改输入输出图像尺寸,需要同时修改:
config.py
中的input_size
和output_size
参数data_loader.py
中对应的图像预处理尺寸设置
将预训练权重文件放置在 checkpoints/
目录下:
LOLv1_checkpoints.pth
- LOL-v1数据集训练的模型LOLv2_real_checkpoints.pth
- LOL-v2-real数据集训练的模型LSRW_checkpoints.pth
- LSRW数据集训练的模型
# 在LOL-v2数据集上训练
python train.py --data_dir ./datasets/LOL_v2 --epochs 500 --batch_size 4
# 自定义参数训练
python train.py \
--data_dir ./datasets/LOL_V1/lol_dataset \
--epochs 500 \
--batch_size 8 \
--lr 7.11e-5 \
--save_dir ./checkpoints
# 启用Optuna自动调参(推荐)
python train.py \
--optuna \
--optuna_trials 30 \
--optuna_epochs 8 \
--data_dir ./datasets/LOL_v2
参数 | 说明 | 默认值 |
---|---|---|
--data_dir |
数据集路径 | ./datasets/LOL_v2 |
--epochs |
训练轮数 | 500 |
--batch_size |
批大小 | 4 |
--lr |
学习率 | 7.11e-5 |
--use_amp |
混合精度训练 | False |
--resume |
恢复训练检查点 | None |
--optuna |
启用超参数优化 | False |
# 使用LOL-v1模型测试
python test.py \
--data_dir ./datasets/LOL_V1/lol_dataset \
--weights_path ./checkpoints/LOLv1_checkpoints.pth \
--dataset_split test
# 使用LOL-v2模型测试
python test.py \
--data_dir ./datasets/LOL_v2 \
--weights_path ./checkpoints/LOLv2_real_checkpoints.pth \
--dataset_split test
参数 | 说明 | 默认值 |
---|---|---|
--data_dir |
数据集路径 | ./datasets/LOL-v2 |
--weights_path |
模型权重路径 | ./checkpoints/LOLv1_checkpoints.pth |
--dataset_split |
测试集选择 | test |
--batch_size |
测试批大小 | 4 |
--save_enhanced |
保存增强图像 | True |
--save_originals |
保存原始图像 | False |
测试结果会自动保存在 ./result/{dataset_type}/
目录下,包括:
- 三图对比效果图 (
comparison_XXXX.png
) - 增强后的单独图像 (
enhanced_XXXX.png
) - 测试指标报告 (
test_results.txt
,test_results.json
)
在demo目录下运行演示:
cd demo
# 使用默认配置运行demo
python demo.py
# 自定义demo配置
python demo.py \
--data_dir ./lol_dataset \
--weights_path ../checkpoints/LOLv1_checkpoints.pth \
--batch_size 2
Demo会在 demo_results/
目录下生成:
- 演示对比图像 (
demo_comparison_XXXX.png
) - 演示结果报告 (
demo_results.txt
,demo_results.json
)
项目根目录下的 comparison_1.png
~ comparison_8.png
展示了MaSE-Net在不同场景下的增强效果对比:
- comparison_1.png: 室内场景低光增强效果
- comparison_2.png: 户外夜景增强对比
- comparison_3.png: 复杂光照条件处理
- comparison_4.png: 细节保持和噪声抑制
- comparison_5.png: 颜色还原准确性
- comparison_6.png: 高对比度场景处理
- comparison_7.png: 极低光条件增强
- comparison_8.png: 混合光源场景优化
每张对比图包含三部分:原始低光图像、MaSE-Net增强结果、参考真值图像,并显示PSNR和SSIM指标。
masenet/
├── README.md # 项目说明文档
├── config.py # 模型配置文件
├── train.py # 训练脚本
├── test.py # 测试脚本
├── models.py # 主模型定义
├── MoA.py # MOA和MOE模块实现
├── feature_extractor.py # 特征提取器
├── ISP.py # ISP操作模块
├── decoder.py # ISP参数解码器
├── data_loader.py # 数据加载器
├── data_augmentation.py # 数据增强工具
├── losses.py # 损失函数定义
├── utils.py # 工具函数
├── emb_gen.py # 嵌入生成器
├── checkpoints/ # 预训练模型目录
├── datasets/ # 数据集目录
├── demo/ # 演示脚本目录
│ ├── demo.py # 演示脚本
│ └── lol_dataset/ # 演示数据集
└── comparison_*.png # 效果展示图片
-
双层耦合机制:
- 指引层: Q_isp + K_isp → 智能选择处理方向
- 内容层: 基于指引的Q_new + K_features/V_features → 针对性内容处理
-
分离式MoE设计:
- MoE1的need_merge=False创建分离通道
- 为每个ISP方法创建独立信息传递通道
- 避免不同ISP方法信息相互干扰
-
渐进式精细化:
- 从window级决策到pixel级执行
- 4个ISP专家分别处理gamma、颜色、去噪、饱和度
组合损失包含:
- L1重建损失
- 感知损失(VGG特征)
- SSIM结构相似性损失
- PSNR优化损失
- LAB色彩空间损失
- 辅助正则化损失(MoE负载均衡)
欢迎提交Issue和Pull Request来改进项目。
如果您在研究中使用了MaSE-Net,请考虑引用:
@misc{masenet2024,
title={MaSE-Net: Mixture attention \& Selective Enhancement Network for Low-light Image Enhancement},
author={Xutong Lin},
year={2025},
howpublished={\url{https://github.com/Britark/MASE-Net}}
}
感谢以下开源项目和数据集:
联系方式: 如有问题请提交Issue或发送邮件至 britarklxt@gmail.com