Authors: Qiuping Jiang, Jinguang Cheng*, Zongwei Wu, Runmin Cong, Radu Timofte.
Dichotomous Image Segmentation (DIS) with rich fine-grained details within a single image is a challenging task. Despite the plausible results achieved by deep learning-based methods, most of them fail to segment generic objects when the boundary is cluttered with the background. In fact, the gradual decrease in feature map resolution during the encoding stage and the misleading texture clue may be the main issues. To handle these issues, we devise a novel frequency- and scale-aware deep neural network (FSANet) for high-precision DIS. The core of our proposed FSANet is twofold. First, a multi-modality fusion (MF) module that integrates the information in spatial and frequency domains is adopted to enhance the representation capability of image features. Second, a collaborative scale fusion module (CSFM) which deviates from the traditional serial structures is introduced to maintain high resolution during the entire feature encoding stage. In the decoder side, we introduce hierarchical context fusion (HCF) and selective feature fusion (SFF) modules to infer the segmentation results from the output features of the CSFM module. We conduct extensive experiments on several benchmark datasets and compare our proposed method with existing SOTA methods. The experimental results demonstrate that our FSANet achieves superior performance both qualitatively and quantitatively.
Figure 1: Architecture Overview
Figure 2: Qualitative Results.
The training and testing experiments are conducted using PyTorch with double 3090 GPU of 24 GB Memory.
Configuring your environment (Prerequisites):
Creating a virtual environment in terminal: conda create -n FSANet python=3.8
.
Installing necessary packages: pip install -r requirements.txt
. (PS: You can also select some of these packages to install that you need.)
Downloading necessary data:
downloading training/testing dataset and move it into data
,
which can be found in this (Google Drive).
downloading Res2Net weights and move it into ./models/res2net50_v1b_26w_4s-3cf99910.pth
(Google Drive) or (BaiduNetdisk)
downloading pvt-v2 weights and move it into ./FSANet/pvt_v2_b2.pth
(Google Drive) or (BaiduNetdisk)
Training Configuration:
--train_save
and --train_path
in train.py
.Testing Configuration:
test.py
to generate the final prediction map:
replace your trained model directory (--pth_path
).Comparing with your model:
One-key evaluation is written in python code (revised from link)