Official implementation of the paper "Steganographer Detection via a Similarity Accumulation Graph Convolutional Network"

Overview

SAGCN - Official PyTorch Implementation

| Paper | Project Page

This is the official implementation of the paper "Steganographer detection via a similarity accumulation graph convolutional network". NOTE: We are refactoring this project to the best practice of engineering.

Abstract

Steganographer detection aims to identify guilty users who conceal secret information in a number of images for the purpose of covert communication in social networks. Existing steganographer detection methods focus on designing discriminative features but do not explore relationship between image features or effectively represent users based on features. In these methods, each image is recognized as an equivalent, and each user is regarded as the distribution of all images shared by the corresponding user. However, the nuances of guilty users and innocent users are difficult to recognize with this flattened method. In this paper, the steganographer detection task is formulated as a multiple-instance learning problem in which each user is considered to be a bag, and the shared images are multiple instances in the bag. Specifically, we propose a similarity accumulation graph convolutional network to represent each user as a complete weighted graph, in which each node corresponds to features extracted from an image and the weight of an edge is the similarity between each pair of images. The constructed unit in the network can take advantage of the relationships between instances so that common patterns of positive instances can be enhanced via similarity accumulations. Instead of operating on a fixed original graph, we propose a novel strategy for reconstructing and pooling graphs based on node features to iteratively operate multiple convolutions. This strategy can effectively address oversmoothing problems that render nodes indistinguishable although they share different instance-level labels. Compared with the state-of-the-art method and other representative graph-based models, the proposed framework demonstrates its effectiveness and reliability ability across image domains, even in the context of large-scale social media scenarios. Moreover, the experimental results also indicate that the proposed network can be generalized to other multiple-instance learning problems.

Roadmap

After many rounds of revision, the project code implementation is not elegant. Thus, in order to help the readers to reproduce the experimental results of this paper quickly, we will open-source our study following this roadmap:

  • refactor and open-source all the model files, training files, and test files of the proposed method for comparison experiments.
  • refactor and open-source the visualization experiments.
  • refactor and open-source the APIs for the real-world steganographer detection in an out-of-box fashion.

Quick Start

Dataset and Pre-processing

We use the MDNNSD model to extract a 320-D feature from each image and save the extracted features in different .mat files. You should check ./data/train and ./data/test to confirm you have the dataset ready before experiments. For example, cover.mat and suniward_01.mat should be placed in the ./data/train and ./data/test folders.

Then, we provide a dataset tool to distribute image features and construct innocent users and guilty users as described in the paper, for example:

python preprocess_dataset.py --target suniward_01_100 --guilty_file suniward_01 --is_train --is_test --is_reset --mixin_num 0

Train the proposed SAGCN

To obtain our designed model for detecting steganographers, we provide an entry file with flexible command-line options, arguments to train the proposed SAGCN on the desired dataset under various experiment settings, for example:

python main.py --epochs 80 --batch_size 100 --model_name SAGCN --folder_name suniward_01_100 --parameters_name=sagcn_suniward_01_100 --mode train --learning_rate 1e-2 --gpu 1
python main.py --epochs 80 --batch_size 100 --model_name SAGCN --folder_name suniward_01_100 --parameters_name=sagcn_suniward_01_100 --mode train --learning_rate 1e-2 --gpu 1

Test the proposed SAGCN

For reproducing the reported experimental results, you just need to pass command-line options of the corresponding experimental setting, such as:

python main.py --batch_size 100 --model_name SAGCN --parameters_name sagcn_suniward_01_100 --folder_name suniward_01_100 --mode test --gpu 1

Visualize

If you set summary to True during training, you can use tensorboard to visualize the training process.

tensorboard --logdir logs --host 0.0.0.0 --port 8088

Requirement

  • Hardware: GPUs Tesla V100-PCIE (our version)
  • Software:
    • h5py==2.7.1 (our version)
    • scipy==1.1.0 (our version)
    • tqdm==4.25.0 (our version)
    • numpy==1.14.3 (our version)
    • torch==0.4.1 (our version)

Contact

If you have any questions, please feel free to open an issue.

Contribution

We thank all the people who already contributed to this project:

  • Zhi ZHANG
  • Mingjie ZHENG
  • Shenghua ZHONG
  • Yan LIU

Citation Information

If you find the project useful, please cite:

@article{zhang2021steganographer,
  title={Steganographer detection via a similarity accumulation graph convolutional network},
  author={Zhang, Zhi and Zheng, Mingjie and Zhong, Sheng-hua and Liu, Yan},
  journal={Neural Networks},
  volume={136},
  pages={97--111},
  year={2021}
}
Owner
ZHANG Zhi
日知其所亡,月无忘其所能
ZHANG Zhi
Code and models for "Pano3D: A Holistic Benchmark and a Solid Baseline for 360 Depth Estimation", OmniCV Workshop @ CVPR21.

Pano3D A Holistic Benchmark and a Solid Baseline for 360o Depth Estimation Pano3D is a new benchmark for depth estimation from spherical panoramas. We

Visual Computing Lab, Information Technologies Institute, Centre for Reseach and Technology Hellas 50 Dec 29, 2022
A collection of loss functions for medical image segmentation

A collection of loss functions for medical image segmentation

Jun 3.1k Jan 03, 2023
List of content farm sites like g.penzai.com.

内容农场网站清单 Google 中文搜索结果包含了相当一部分的内容农场式条目,比如「小 X 知识网」「小 X 百科网」。此种链接常会 302 重定向其主站,页面内容为自动生成,大量堆叠关键字,揉杂一些爬取到的内容,完全不具可读性和参考价值。 尤为过分的是,该类网站可能有成千上万个分身域名被 Goog

WDMPA 541 Jan 03, 2023
Code for CVPR2019 paper《Unequal Training for Deep Face Recognition with Long Tailed Noisy Data》

Unequal-Training-for-Deep-Face-Recognition-with-Long-Tailed-Noisy-Data. This is the code of CVPR 2019 paper《Unequal Training for Deep Face Recognition

Zhong Yaoyao 68 Jan 07, 2023
Lua-parser-lark - An out-of-box Lua parser written in Lark

An out-of-box Lua parser written in Lark Such parser handles a relaxed version o

Taine Zhao 2 Jul 19, 2022
Implementation of ICCV21 paper: PnP-DETR: Towards Efficient Visual Analysis with Transformers

Implementation of ICCV 2021 paper: PnP-DETR: Towards Efficient Visual Analysis with Transformers arxiv This repository is based on detr Recently, DETR

twang 113 Dec 27, 2022
TResNet: High Performance GPU-Dedicated Architecture

TResNet: High Performance GPU-Dedicated Architecture paperV2 | pretrained models Official PyTorch Implementation Tal Ridnik, Hussam Lawen, Asaf Noy, I

426 Dec 28, 2022
Implementation of CVAE. Trained CVAE on faces from UTKFace Dataset to produce synthetic faces with a given degree of happiness/smileyness.

Conditional Smiles! (SmileCVAE) About Implementation of AE, VAE and CVAE. Trained CVAE on faces from UTKFace Dataset. Using an encoding of the Smile-s

Raúl Ortega 3 Jan 09, 2022
This reporistory contains the test-dev data of the paper "xGQA: Cross-lingual Visual Question Answering".

This reporistory contains the test-dev data of the paper "xGQA: Cross-lingual Visual Question Answering".

AdapterHub 18 Dec 09, 2022
TensorFlow (Python API) implementation of Neural Style

neural-style-tf This is a TensorFlow implementation of several techniques described in the papers: Image Style Transfer Using Convolutional Neural Net

Cameron 3.1k Jan 02, 2023
PyTorch implementation of our paper: Decoupling and Recoupling Spatiotemporal Representation for RGB-D-based Motion Recognition

Decoupling and Recoupling Spatiotemporal Representation for RGB-D-based Motion Recognition, arxiv This is a PyTorch implementation of our paper. 1. Re

DamoCV 11 Nov 19, 2022
An implementation of Deep Graph Infomax (DGI) in PyTorch

DGI Deep Graph Infomax (Veličković et al., ICLR 2019): https://arxiv.org/abs/1809.10341 Overview Here we provide an implementation of Deep Graph Infom

Petar Veličković 491 Jan 03, 2023
An official source code for "Augmentation-Free Self-Supervised Learning on Graphs"

Augmentation-Free Self-Supervised Learning on Graphs An official source code for Augmentation-Free Self-Supervised Learning on Graphs paper, accepted

Namkyeong Lee 59 Dec 01, 2022
VITS: Conditional Variational Autoencoder with Adversarial Learning for End-to-End Text-to-Speech

VITS: Conditional Variational Autoencoder with Adversarial Learning for End-to-End Text-to-Speech Jaehyeon Kim, Jungil Kong, and Juhee Son In our rece

Jaehyeon Kim 1.7k Jan 08, 2023
This repository contains the PyTorch implementation of the paper STaCK: Sentence Ordering with Temporal Commonsense Knowledge appearing at EMNLP 2021.

STaCK: Sentence Ordering with Temporal Commonsense Knowledge This repository contains the pytorch implementation of the paper STaCK: Sentence Ordering

Deep Cognition and Language Research (DeCLaRe) Lab 23 Dec 16, 2022
ALFRED - A Benchmark for Interpreting Grounded Instructions for Everyday Tasks

ALFRED A Benchmark for Interpreting Grounded Instructions for Everyday Tasks Mohit Shridhar, Jesse Thomason, Daniel Gordon, Yonatan Bisk, Winson Han,

ALFRED 204 Dec 15, 2022
Open AI's Python library

OpenAI Python Library The OpenAI Python library provides convenient access to the OpenAI API from applications written in the Python language. It incl

Pavan Ananth Sharma 3 Jul 10, 2022
LBK 26 Dec 28, 2022
Tooling for GANs in TensorFlow

TensorFlow-GAN (TF-GAN) TF-GAN is a lightweight library for training and evaluating Generative Adversarial Networks (GANs). Can be installed with pip

803 Dec 24, 2022
This is the official repository for our paper: ''Pruning Self-attentions into Convolutional Layers in Single Path''.

Pruning Self-attentions into Convolutional Layers in Single Path This is the official repository for our paper: Pruning Self-attentions into Convoluti

Zhuang AI Group 77 Dec 26, 2022