Skip to content

Boundary Aware PoolNet = PoolNet + BASNet : Deeply supervised PoolNet using the hybrid loss in BASNet for Salient Object Detection

Notifications You must be signed in to change notification settings

chouxianyu/Boundary-Aware-PoolNet

Repository files navigation

Boundary-Aware-PoolNet

Boundary Aware PoolNet = PoolNet + BASNet : Deeply supervised PoolNet using the hybrid loss in BASNet for Salient Object Detection

Boundary Aware PoolNet = PoolNet + BASNet,即使用BASNet中的Deep Supervision和Hybrid Loss改进PoolNet。

经过评估,BAPoolNet的性能超过了之前的SOTA方法(注:在DUTS-TE数据集上进行测试,暂未在其它数据集上进行测试)。

相关文章汇总:

BAPoolNet结构

在PoolNet中Backbone是ResNet50时,模型自顶向下路径中有5个FUSE操作,我借鉴BASNet中的Deep Supervision和Hybrid Loss使用这5层输出的混合Loss之和进行梯度下降,我将这整个模型称为BAPoolNet(Boundary Aware PoolNet),其结构如下图所示。

img

与PoolNet相比,BAPoolNet的不同之处为:

  1. 添加5个边路输出以进行Deep Supervision
  2. 在计算Loss时使用BCE损失、SSIM损失、IOU损失之和

除了对PoolNet的改进之外,BAPoolNet的其它实现细节和实验细节和PoolNet保持一致。

如何实现Boundary Aware PoolNet,具体请看代码。

BAPoolNet性能

5个边路输出可视化结果

img

视觉对比

img

量化对比

下表中MAE和maxF为各方法在DUTS-TE数据集上的测试结果。

Method Conference Backbone Size(MB) MAE↓ maxF↑
CapSal CVPR19 ResNet-101 - 0.063 0.826
PiCANet CVPR18 ResNet-50 197.2 0.050 0.860
DGRL CVPR18 ResNet-50 646.1 0.049 0.828
BASNet CVPR19 ResNet-34 348.5 0.047 0.860
U2Net CVPR20 RSU 176.3 0.044 0.873
CPD CVPR19 ResNet-50 183.0 0.043 0.865
PoolNet CVPR19 ResNet-50 260.0 0.040 0.880
BAPoolNet - ResNet-50 260.7 0.035 0.892

PR曲线

下图为各方法在DUTS-TE数据集上的测试结果。

img

F-measure曲线

下图为各方法在DUTS-TE数据集上的测试结果。

img

BAPoolNet代码

传送门:

相比于PoolNet,BAPoolNet代码的改动之处有:

  1. BCE Loss计算方法

    设置为reduction=mean而非reduction=sum,并且用sigmoid+BCE代替F.binary_cross_entropy_with_logits

  2. PoolNetforward()返回结果

    PoolNet类返回了5个边路输出而非最终输出

  3. 整体Loss计算方法

    使用Hybrid Loss和Deep Supervision计算整体Loss

模型性能评估代码(MAE、F-measure等),我参考了:https://github.com/Hanqer/Evaluate-SOD

除了对PoolNet的改进之外,BAPoolNet的其它实现细节和实验细节和PoolNet保持一致。

Coding Environments:

Python 3.7.3
torch 1.4.0
torchvision 0.5.0
tensorflow  2.0.0
tensorboard 2.0.2
tensorboardX 2.1
……

Usage

  1. 下载代码到本地:git clone https://github.com/chouxianyu/Boundary-Aware-PoolNet.git

  2. 创建缺失的文件夹,如./data./dataset/pretrained./results

  3. 下载DUTS数据集、模型权重等文件

    DUTS数据集放在文件夹./data/中,ResNet权重放在文件夹./dataset/

  4. 运行代码

注:因为某些文件夹和文件我没有上传到该仓库,所以需要读者自己根据代码逻辑,创建或下载对应文件夹和文件。

Files Download

欢迎follow和提issue,本人学识尚浅,期待共同进步!

About

Boundary Aware PoolNet = PoolNet + BASNet : Deeply supervised PoolNet using the hybrid loss in BASNet for Salient Object Detection

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages