Are you sure you want to delete this task? Once this task is deleted, it cannot be recovered.
deng 11a8d3e39f | 1 year ago | |
---|---|---|
model_utils | 2 years ago | |
scripts | 2 years ago | |
src | 2 years ago | |
README.md | 1 year ago | |
data_crop.py | 2 years ago | |
default_config.yaml | 2 years ago | |
eval.py | 2 years ago | |
export.py | 2 years ago | |
sal2edge.py | 2 years ago | |
train.py | 2 years ago |
EGNet是用来解决静态目标检测问题,它由边缘特征提取部分、显著性目标特征提取部分以及一对一的导向模块三部分构成,利用边缘特征帮助显著性目标特征定位目标,使目标的边界更加准确。在6个不同的数据集中与15种目前最好的方法进行对比,实验结果表明EGNet性能最优。
论文: Zhao J X, Liu J J, Fan D P, et al. EGNet: Edge guidance network for salient object detection[C]//Proceedings of the IEEE/CVF International Conference on Computer Vision. 2019: 8779-8788.
EGNet网络由三个部分组成,NLSEM(边缘提取模块)、PSFEM(目标特征提取模块)、O2OGM(一对一指导模块),原始图片通过两次卷积输出图片边缘信息,与此同时,对原始图像进行更深层次的卷积操作提取salient object,然后将边缘信息与不同深度提取出来的显著目标在一对一指导模块中分别FF(融合),再分别经过卷积操作得到不同程度的显著性图像,最终输出了一张融合后的显著性检测图像。
使用的数据集:显著性检测数据集
通过官方网站安装MindSpore后,您可以按照如下步骤进行训练和评估:
# 数据集进行裁剪
python data_crop.py --data_name --data_root --output_path=[OUTPUT_PATH]
# 运行训练示例(默认VGG)
bash run_train.sh
# 运行分布式训练示例
bash run_distribute_train.sh
# 运行评估示例
bash run_eval.sh
├── model_zoo
├── EGNet
├── README.md # EGNet相关说明
├── model_utils # config,modelarts等配置脚本文件夹
│ ├──config.py # 解析参数配置文件
├── scripts
│ ├──run_train.sh # 启动GPU单机训练(单卡)
│ ├──run_distribute_train.sh # 启动GPU分布式训练(8卡)
│ ├──run_eval.sh # 启动GPU评估
├── src
│ ├──dataset.py # 加载数据集
│ ├──egnet.py # EGNet的网络结构
│ ├──vgg.py # vgg的网络结构
│ ├──resnet.py # resnet的网络结构
│ ├──sal_edge_loss.py # 损失定义
│ ├──train_forward_backward.py # 前向传播和反向传播定义
├── sal2edge.py # 预处理,把显著图像转化为边缘图像
├── data_crop.py # 数据裁剪
├── train.py # 训练脚本
├── eval.py # 评估脚本
├── export.py # 模型导出脚本
├── default_config.yaml # 参数配置文件
在config.py中可以同时配置训练参数和评估参数。
dataset_name: "DUTS-TR" # 数据集名称
name: "egnet" # 网络名称
pre_trained: Ture # 是否基于预训练模型训练
lr_init: 5e-5(resnet) or 2e-5(vgg) # 初始学习率
batch_size: 10 # 训练批次大小
epoch_size: 30 # 总计训练epoch数
momentum: 0.1 # 动量
weight_decay:5e-4 # 权重衰减值
image_height: 200 # 输入到模型的图像高度
image_width: 200 # 输入到模型的图像宽度
train_data_path: "./data/DUTS-TR/" # 训练数据集的相对路径
eval_data_path: "./data/DUTS-TE/" # 评估数据集的相对路径
checkpoint_path: "./EGNet/run-nnet/models/" # checkpoint文件保存的相对路径
更多配置细节请参考 src/config.py。
python data_crop.py --data_name --data_root --output_path=[OUTPUT_PATH]
python train.py --mode train --base_model vgg --vgg=[PRETRAINED_PATH]
python train.py --mode train --base_model resnet --resnet=[PRETRAINED_PATH]
上述python命令将在后台运行,您可以通过./EGNet/run-nnet/logs/log.txt文件查看结果。
训练结束后,您可在默认./EGNet/run-nnet/models/文件夹下找到检查点文件。
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7
mpirun -n {device_num} python train.py --mode train --base_model vgg --vgg=[PRETRAINED_PATH] --is_distributed True
mpirun -n {device_num} python train.py --mode train --base_model resnet --resnet=[PRETRAINED_PATH] --is_distributed True
上述shell脚本将在后台运行分布训练。您可以通过train/train.log文件查看结果。
python eval.py --model=[MODEL_PATH] --sal_mode=[DATA_NAME] --test_fold=[TEST_DATA_PATH] --base_model=vgg
python eval.py --model=[MODEL_PATH] --sal_mode=[DATA_NAME] --test_fold=[TEST_DATA_PATH] --base_model=resnet
在导出之前需要修改default_config.ymal配置文件.
需要修改的配置项为ckpt_file.
python export.py --ckpt_file=[CKPT_FILE]
参数 | GPU | GPU |
---|---|---|
模型版本 | EGNet(VGG) | EGNet(resnet) |
资源 | GeForce RTX 2080 Ti(单卡) V100(多卡) | GeForce RTX 2080 Ti(单卡) V100(多卡) |
上传日期 | 2021-12-02 | 2021-12-02 |
MindSpore版本 | 1.3.0 | 1.3.0 |
数据集 | DUTS-TR | DUTS-TR |
训练参数 | epoch=30, steps=1050, batch_size = 10, lr=2e-5 | epoch=30, steps=1050, batch_size=10, lr=5e-5 |
优化器 | Adam | Adam |
损失函数 | Binary交叉熵 | Binary交叉熵 |
速度 | 单卡:1148.571毫秒/步 ; 2卡:921.905毫秒/步 | 单卡:1323.810毫秒/步; 2卡:1057.143毫秒/步 |
总时长 | 单卡:10h3m ; 2卡:8h4m | 单卡:11h35m ; 2卡:9h15m |
微调检查点 | 412M (.ckpt文件) | 426M (.ckpt文件) |
脚本 | EGNnet脚本 | EGNet 脚本 |
参数 | GPU | GPU |
---|---|---|
模型版本 | EGNet(VGG) | EGNet(resnet) |
资源 | GeForce RTX 2080 Ti | GeForce RTX 2080 Ti |
上传日期 | 2021-12-02 | 2021-12-02 |
MindSpore 版本 | 1.3.0 | 1.3.0 |
数据集 | DUTS-TE, 5019张图像 | DUTS-TE, 5019张图像 |
评估指标(单卡) | MaxF:0.8529936 ; MAE:0.0946914 ; S:0.8197438 | MaxF:0.8621546 ; MAE:0.0894348 ; S:0.8290318 |
评估指标(多卡) | MaxF:0.8538571 ; MAE:0.0988344 ; S:0.8163447 | MaxF:0.8622078 ; MAE:0.0952874 ; S:0.8256527 |
数据集 | SOD, 300张图像 | SOD, 300张图像 |
评估指标(单卡) | MaxF:0.8773976 ; MAE:0.1494375 ; S:0.7398942 | MaxF:0.8763721 ; MAE:0.1503588 ; S:0.7325447 |
评估指标(多卡) | MaxF:0.8766531 ; MAE:0.1585068 ; S:0.7345684 | MaxF:0.8742505 ; MAE:0.1539668 ; S:0.7367481 |
数据集 | ECSSD, 1000张图像 | ECSSD, 1000张图像 |
评估指标(单卡) | MaxF:0.9407956 ; MAE:0.0697847 ; S:0.8687190 | MaxF:0.9473603 ; MAE:0.06478707 ; S:0.8760312 |
评估指标(多卡) | MaxF:0.9383455 ; MAE:0.0796092 ; S:0.8634995 | MaxF:0.9470877 ; MAE:0.0667448 ; S:0.8785607 |
数据集 | PASCAL-S, 850张图像 | PASCAL-S, 850张图像 |
评估指标(单卡) | MaxF:0.8819262 ; MAE:0.1107578 ; S:0.7719119 | MaxF:0.8797955 ; MAE:0.1123267 ; S:0.7720478 |
评估指标(多卡) | MaxF:0.8838800 ; MAE:0.1167115 ; S:0.77207838 | MaxF:0.8828960 ; MAE:0.1153322 ; S:0.7741047 |
数据集 | DUTS-OMRON, 5168张图像 | DUTS-OMRON, 5168张图像 |
评估指标(单卡) | MaxF:0.7873633 ; MAE:0.1399568 ; S:0.7542322 | MaxF:0.7990565 ; MAE:0.1398752 ; S:0.7617166 |
评估指标(多卡) | MaxF:0.7890620 ; MAE:0.1445215 ; S:0.7536457 | MaxF:0.8009216 ; MAE:0.1434804 ; S:0.7621028 |
数据集 | HKU-IS, 4447张图像 | HKU-IS, 4447张图像 |
评估指标(单卡) | MaxF:0.9236114 ; MAE:0.0673895 ; S:0.8734632 | MaxF:0.9281392 ; MAE:0.0637083 ; S:0.8780866 |
评估指标(多卡) | MaxF:0.9215954 ; MAE:0.0746705 ; S:0.8683793 | MaxF:0.9285262; MAE:0.0677548 ; S:0.8784274 |
请浏览官网主页。
EGNet是用来解决静态目标检测问题,它由边缘特征提取部分、显著性目标特征提取部分以及一对一的导向模块三部分构成,利用边缘特征帮助显著性目标特征定位目标,使目标的边界更加准确。在6个不同的数据集中与15种目前最好的方法进行对比,实验结果表明EGNet性能最优。
Python Shell
Dear OpenI User
Thank you for your continuous support to the Openl Qizhi Community AI Collaboration Platform. In order to protect your usage rights and ensure network security, we updated the Openl Qizhi Community AI Collaboration Platform Usage Agreement in January 2024. The updated agreement specifies that users are prohibited from using intranet penetration tools. After you click "Agree and continue", you can continue to use our services. Thank you for your cooperation and understanding.
For more agreement content, please refer to the《Openl Qizhi Community AI Collaboration Platform Usage Agreement》