NLDF-pytorch icon indicating copy to clipboard operation
NLDF-pytorch copied to clipboard

An unofficial implementation of non-local deep features for salient object detection

NLDF

中文说明

An unofficial implementation of Non-Local Deep Features for Salient Object Detection.

The official Tensorflow version: NLDF

Some thing difference:

  1. ~~dataset~~
  2. score with one channel, rather than two channels
  3. Dice IOU: boundary version and area version

Prerequisites

Results

The information of Loss:

Performance:

Dataset max F(paper) MAE(paper) max F(here) MAE(here)
MSRA-B 0.911 0.048 0.9006 0.0592

Note:

  1. only training 200 epoch, larger epoch may nearly the original paper
  2. This reproduction use area IOU, and original paper use boundary IOU
  3. ~~it's unfairness to this compare. (Different training data, I can not find the dataset use in original paper )~~

Usage

1. Clone the repository

git clone [email protected]:AceCoooool/NLDF-pytorch.git
cd NLDF-pytorch/

2. Download the dataset

Note: the original paper use other datasets.

Download the ECSSD dataset.

bash download.sh

3. Get pre-trained vgg

cd tools/
python extract_vgg.py
cd ..

4. Demo

python demo.py --demo_img='your_picture' --trained_model='pre_trained pth' --cuda=True

Note:

  1. default choose: download and copy the pretrained model to weights directory.
  2. a demo picture is in png/demo.jpg

5. Train

python main.py --mode='train' --train_path='you_data' --label_path='you_label' --batch_size=8 --visdom=True --area=True

Note:

  1. --area=True, --boundary=True area and boundary Dice IOU (default: --area=True --boundary=False)
  2. --val=True add the validation (but your need to add the --val_path and --val_label)
  3. you_data, you_label means your training data root. (connect to the step 2)

6. Test

python main.py --mode='test', --test_path='you_data' --test_label='your_label' --batch_size=1 --model='your_trained_model'

Note:

  1. use the same evaluation (this is a reproduction from original achievement)

Bug

  1. The boundary Dice IOU may cause inf,it is better to use area Dice IOU.

Maybe, it is better to add Batch Normalization.