Convolutional neural network aimed to discriminate dark matter interactions with liquid argon (dark trident scattering) from neutrino interactions and from cosmic-ray muons. DM-CNN repurposes the MPID package to train a binary classifier. Analogously to MPID, this network receives 512x512 LArTPC images. The CNN returns the probability of the image containing either a dark trident interaction or a background interaction.
LArCV2 v2.0.0, ROOT, PyTorch
MPID was originally built using python 2.7 and PyTorch (V1.0.1). I have made an updated version with Python3 and CUDA 11.0 which should work on any modern GPU (hopefully!). A container with all the dependencies can be found here:
- Download the container
- Clone this repo
- Activate the docker container
- Setup dependencies and MPID core: source setup_larcv2_dm.sh
- Declare training parameters and paths in ./cfg/training_config.cfg
- python ./uboone/train_DM-CNN.py
Note: You might want to run this command with nohup, so the training will continue even if you close your terminal
- Declare paths in ./cfg/inference_config_binary.cfg
- python ./uboone/inference_DM-CNN.py
We can also use the LArCV tools to create event displays of the images we feed to the CNN.
- Declare display parameters and paths in ./cfg/print_image_config.cfg
- python ./uboone/print_image_with_score.py -n entry_number
A key part of performing a HEP analysis using deep learning tools is to understand what features are meaningful for the DL model. One strategy to evaluate what pixels are important to the CNN is to use a occlusion analysis (see arXiv:1311.2901). In this repo we include an script to perform an occlusion analysis over the larcv input images.
- Declare paths and occlusion box size in ./cfg/occlusion_config.cfg
- python ./uboone/occlusion_analysis_CNN.py -n entry_number
