Awesome
CVPR21_Transferred_Hash
A PyTorch Implementation of "You See What I Want You to See: Exploring Targeted Black-Box Transferability Attack for Hash-based Image Retrieval Systems" accepted by CVPR 2021.
Enviroments
You will need a CUDA device to run our code.
Basically you will need Python 3 at least and PyTorch 1.0+ to run this program. We suggest to install them with conda.
Dataset
ImageNet
We use a subset that includes 10% of all classes of the ImageNet following HashNet's implementation, which contains only 100 class. You may download them via thuml's link.
Remember to modify the path in files in ./HashNet/pytorch/data/imagenet/ directory.
Running
Preparing Models and Hash Code files.
We provide link for downloading all models and hash code files we have used. Here is the link. (This method is RECOMMENDED.)
The 'snapshot' folder should be placed under CVPR21_TransferredHash/AD_attack/HashNet/pytorch/ and the 'save_for_load' folder should be placed under CVPR21_TransferredHash/AD_attack/HashNet/pytorch/src/.
You could also do DIY training by:
python myTrain.py
optional arguments:
-h, --help show this help message and exit
--gpu_id GPU_ID device id to run
--dataset DATASET dataset name
--hash_bit HASH_BIT number of hash code bits
--net NET base network type
--prefix PREFIX save path prefix
--lr LR learning rate
--class_num CLASS_NUM
Then extract the hash code by:
python myExtractCodeLabel.py
optional arguments:
-h, --help show this help message and exit
--gpu_id GPU_ID device id to run
--hash_bit HASH_BIT number of hash code bits
--snapshot_iter SNAPSHOT_ITER
number of iterations the model has
--dataset DATASET dataset name
--net NET base network type
--batch_size BATCH_SIZE batch size to load data
Generating Adv.
For NAG(ours method).
python myExpForPapers_nag.py --net1 ResNet152
optional arguments:
-h, --help show this help message and exit
--gpu_id GPU_ID device id to run
--dis_method DIS_METHOD
distance method
--adv_method ADV_METHOD
adv method
--var_lambda VAR_LAMBDA
lbd to balance loss1 and loss2
--noise NOISE noise distribution
--noise_level NOISE_LEVEL
random_noise_level
--net1 NET1 net1
--net2 NET2 net2(NOT Necessary and Won't change to results!)
--l_inf_max L_INF_MAX
l_inf_max
--step_size STEP_SIZE
step_size
For PGD, DI, DI-Mom (iFGSM, iFGSMDI, miFGSMDI)
python myExpGetAdvVulnerable.py --gpu_id 0 --dis_method cW --adv_method iFGSM --net1 ResNet152
python myExpGetAdvVulnerable.py --gpu_id 0 --dis_method cW --adv_method iFGSMDI --net1 ResNet152
python myExpGetAdvVulnerable.py --gpu_id 0 --dis_method cW --adv_method miFGSMDI --net1 ResNet152
Contacts and Issues
Yanru Xiao: yxiao002@odu.edu For any further issues, please oepn a new issue on github.