ericyinyzy / VLAttack

This is an official repository of ``VLAttack: Multimodal Adversarial Attacks on Vision-Language Tasks via Pre-trained Models'' (NeurIPS 2023).
BSD 3-Clause "New" or "Revised" License
32 stars 2 forks source link

Code #4

Open CharmingKillr opened 1 week ago

CharmingKillr commented 1 week ago

Hello, when running attack_vqa under BLIP_attack, batch_size can only be set to 1, otherwise Traceback (most recent call last) will be reported: File "/opt/dpcvol/models/jw_projects/jw_projects/VLAttack/BLIP_attack/attack_vqa.py", line 140, in main(args, config, config_pretrain) File "/opt/dpcvol/models/jw_projects/jw_projects/VLAttack/BLIP_attack/attack_vqa.py", line 89, in main pgd_attack.evaluate(test_loader, tokenizer) The File "/ home/naie/local/lib/python3.9 / site - packages/torch/utils / _contextlib py", line 115, in decorate_context return func(*args, **kwargs) File "/opt/dpcvol/models/jw_projects/jw_projects/VLAttack/BLIP_attack/attack/VQA/adv_attack_blip.py", line 80, in evaluate for i, batch in enumerate(metric_logger.log_every(data_loader, print_freq, header)): File "/opt/dpcvol/models/jw_projects/jw_projects/VLAttack/BLIP_attack/utils.py", line 156, in log_every for obj in iterable: The File "/ home/naie/local/lib/python3.9 / site - packages/torch/utils/data/dataloader py", line 630, in next data = self._next_data() The File "/ home/naie/local/lib/python3.9 / site - packages/torch/utils/data/dataloader py", line 1345, in _next_data return self._process_data(data) The File "/ home/naie/local/lib/python3.9 / site - packages/torch/utils/data/dataloader py", line 1371, in _process_data data.reraise() The File "/ home/naie/local/lib/python3.9 / site - packages/torch / _utils. Py", line 694, in reraise raise exception RuntimeError: Caught RuntimeError in DataLoader worker process 0. Original Traceback (most recent call last): The File "/ home/naie/local/lib/python3.9 / site - packages/torch/utils/data / _utils/worker. Py", line 308, in _worker_loop data = fetcher.fetch(index) The File "/ home/naie/local/lib/python3.9 / site - packages/torch/utils/data / _utils/fetch. Py", line 54, fetch in return self.collate_fn(data) The File "/ home/naie/local/lib/python3.9 / site - packages/torch/utils/data / _utils/collate. Py", line 265, in default_collate return collate(batch, collate_fn_map=default_collate_fn_map) The File "/ home/naie/local/lib/python3.9 / site - packages/torch/utils/data / _utils/collate. Py", line 127, in collate return elem_type({key: collate([d[key] for d in batch], collate_fn_map=collate_fn_map) for key in elem}) The File "/ home/naie/local/lib/python3.9 / site - packages/torch/utils/data / _utils/collate. Py", line 127, in < dictcomp > return elem_type({key: collate([d[key] for d in batch], collate_fn_map=collate_fn_map) for key in elem}) The File "/ home/naie/local/lib/python3.9 / site - packages/torch/utils/data / _utils/collate. Py", line 138, in collate raise RuntimeError('each element in list of batch should be of equal size') RuntimeError: each element in list of batch should be of equal size

ericyinyzy commented 4 days ago

Yes, because the algorithm need to search for adversarial text for each sample, which can not use the batch run command.