本文是《FCA: Learning a 3D Full-coverage Vehicle Camouflage for Multi-view Physical Adversarial Attack》论文代码复现过程中的踩坑记录
准备阶段
-
论文地址
-
Guthub项目地址
-
将项目clone下来之后,还需要clone另一个项目neural_renderer,这是原项目地址,原项目在高版本的pytorch需要做一些修改,而作者也提供了对其进行修改后的项目地址。
环境配置
由于neural_renderer环境配置比较麻烦,这部分主要说明我在服务器上具体环境下的配置方法。
-
环境:Ubuntu 18.04,gcc 7.5.0,NVIDIA GeForce RTX 3090,cuda 11.3
-
上述环境中cuda版本最重要,可通过
nvcc -V
命令查看。如果服务器上有多个cuda版本,可以使用ls /usr/local | grep cuda
查看,并通过修改~/.bashrc
文件指定具体版本。 -
下面进行conda环境配置
conda create -n fca python=3.6 # 只在python=3.6成功配置过neural_renderer
source activate fca
pip install torch==1.10.2+cu113 torchvision==0.11.3+cu113 -f https://download.pytorch.org/whl/torch_stable.html # 只在该pytorch版本下成功配置过neural_renderer
# 在安装完成pytorch后,必须先安装neural_renderer
cd neural_renderer
python setup.py install
# 如果可以成功安装,问题就基本解决了
# 如果出现类似load_textures.cpython-38-x86_64-linux-gnu.so: undefined symbol: _ZNK3c107SymBool10guard_boolEPKcl的报错,说明前面的步骤没走对
# 安装完成后,可以运行测试程序
pip install imageio skikit-image
python examples/example1.py # 如果顺利运行,可以看到一个进度条
ls -al examples/data
# 此时应该可以看到出现名为example1.gif的文件,且修改时间应该是最新的,如果到达这里,那nueral_renderer的安装完成
cd .. # 返回src目录下
pip install -r requirements.txt # 通过文件自动安装大多数重要的包
# opencv包可能会安装失败,此时应通过conda安装,并且在requirements.txt中注释掉opencv-python>=4.1.2这一行
conda install py-opencv
# 安装完成之后,检查opencv是否可以使用
python -c "import cv2; print(cv2.__version__)" # -c参数会使得后面的字符串作为程序输入,若成功输出结果,说明opencv安装成功。
- 如果顺利通过上面步骤,环境的配置基本已经完成。Congratulations!
数据集、模型下载
-
本文使用前作的数据集,可以直接在这里drive.google.com下载其中文件,并且将其移动到carla_dataset目录下,《Dual Attention Attack》项目也提供了网盘的下载链接。
-
执行
bash ./weights/download_weights.sh
文件,下载yolov3目标检测模型 -
如果想使用其他的目标检测模型、其他的数据集,可以利用data目录下各种yaml文件并通过其提示使用train.py训练目标检测模型。
ATTENTION! 这部分仍存在问题,持续更新中