FNNS
Fixed Neural Network Steganography
The encoding process of FNNS first encodes a message into an image with SteganoGAN, then optimizes the encoded image itself with L-BFGS, which is inspired by adversarial attacks. The decoding procedure of FNNS is identical to the SteganoGAN decoding process.
- Module adapted from: varshakishore/FNNS.
- Original paper published at FNNS: Fixed Neural Network Steganography. (ICLR 2022 Poster)
This module depends on the stegobox.codec.SteganoGAN module.
stegobox.codec.FNNS
Bases: SteganoGAN
Source code in stegobox/codec/fnns.py
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 |
|
__init__(mode='fnns-de', steps=2000, max_iter=10, alpha=0.1, eps=0.3, num_bits=1, stegano_gan_arch='basic', stegano_gan_data_depth=1, stegano_gan_hidden_size=32, stegano_gan_weights_path='ckpt/stegano_gan/basic_mscoco.pt', cuda=True, verbose=True)
FNNS - Fixed Neural Network Steganography
Parameters:
Name | Type | Description | Default |
---|---|---|---|
mode |
str
|
FNNS mode, one of |
'fnns-de'
|
steps |
int
|
Number of FNNS optimization steps. Defaults to 2000. |
2000
|
max_iter |
int
|
Max iterations of FNNS optimization. Defaults to 10. |
10
|
alpha |
float
|
FNNS alpha. Defaults to 0.1. |
0.1
|
eps |
float
|
FNNS epsilon. Defaults to 0.3. |
0.3
|
num_bits |
int
|
Number of bits in payload. Defaults to 1. |
1
|
stegano_gan_arch |
str
|
SteganoGAN architecture, must be one of |
'basic'
|
stegano_gan_data_depth |
int
|
Data depth. Defaults to 1. |
1
|
stegano_gan_hidden_size |
int
|
Hidden layer size. Defaults to 32. |
32
|
stegano_gan_weights_path |
str
|
Pretrained SteganoGAN weights
|
'ckpt/stegano_gan/basic_mscoco.pt'
|
cuda |
bool
|
Whether use CUDA or not. Defaults to True. |
True
|
verbose |
bool
|
Whether enable verbose logging or not. Defaults to True. |
True
|
Source code in stegobox/codec/fnns.py
encode(carrier, payload)
Encode an image with payload string with SteganoGAN, then use FNNS to optimize the generated steganographic image.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
carrier |
Image
|
Carrier PIL image. |
required |
payload |
str
|
Payload string. |
required |
Raises:
Type | Description |
---|---|
ValueError
|
If |
Returns:
Type | Description |
---|---|
Image
|
Encoded and FNNS optimized PIL image. |
Source code in stegobox/codec/fnns.py
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 |
|
decode(carrier)
FNNS decoding process is identical to the one implemented in SteganoGAN.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
carrier |
Image
|
Encoded PIL image. |
required |
Returns:
Type | Description |
---|---|
str
|
Decoded payload string. |