论文链接:
SiamCAR: Siamese Fully Convolutional Classification and Regression for Visual Tracking
Group-CAM: Group Score-Weighted Visual Explanations for Deep Convolutional Networks
代码链接:
SiamCAR:code
Group-CAM:code
SiamCAR+Group-CAM:code
环境配置:
pip install -r requirements.txt
cd toolkit/utils/
python setup.py build_ext --inplace
注:与SiamCAR环境配置相同,不同的是这里增加了一个python包:kornia
运行:
对于SiamCAR-CAM代码的运行,在终端上,参见下面的代码。
cd /path/to/SiamCAR-CAM
conda activate SiamCAR
export PYTHONPATH=./:$PYTHONPATH
python tools/CAM-demo.py \
--dataset_dir /path/to/dataset/root \ # dataset path
--dataset UAV123 \ # dataset name(OTB100, GOT-10k, LaSOT, UAV123)
--snapshot snapshot/general_model.pth \ # tracker_name
--format bmp \ # save fomat (pdf,png,jpg,bmp)
--save_dir /path/to/save \ # save dir
--config ./experiments/siamcar_r50/config.yaml \ # config file
--register_layer softmax \ # module register name
值得注意的是,通过CAM进行可视化,只有最后一层分类分支或者SiamCAR中,经过归一化的Centerness分支的输出进行可视化才是有意义的。其余分支经过CAM可视化会出现杂乱无章的状态,这对于我们的数据分析来说是无用的。
以上面代码为例,在配置好环境后,我们在终端下进行如下的指令运行:
cd /home/db306/桌面/SiamCAR-CAM
conda activate SiamCAR
export PYTHONPATH=./:$PYTHONPATH
python tools/CAM-demo.py \
--dataset_dir /media/db306/HUSHUO/Benchmark/ \
--dataset OTB100 \
--snapshot snapshot/general_model.pth \
--format bmp \
--save_dir ./test \
--config ./experiments/siamcar_r50/config.yaml \
--register_layer softmax
最后绘制出SiamCAR的分类分支可视化的结果:
OTB100基准下不同视频不同帧的分类分支heatmap可视化
CAM部分代码:
参见:
/path/to/SiamCAR-CAM/CAM/GroupCAM.py
/path/to/SiamCAR-CAM/pysot/tracker/siamcar_tracker_cam.py
/path/to/SiamCAR-CAM/tools/CAM-demo.py
注:由于未知原因,实际上经运行发现,不是所有的视频帧都会出现heatmap图像,这与Group-CAM有关,以及单目标跟踪中(pysot系列),通常不会将输入图像进行归一化有关,这篇代码中,对于CAM部分,我们进行了归一化操作,对于涉及到跟踪器的部分,我们进行了反归一化操作。故猜测可能是这一个问题造成的。