Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

summary | contents | usage | running the notebooks | issues | citation | license

Machine learning for classifying unexploded ordnance (UXO) from electromagnetic data

These notebooks were used to produce the figures shown in the SEG abstract (Heagy et al., 2020).


Electromagnetic methods are widely used for the detection and classification of unexploded ordnance objects in former war zones or military training grounds. Typically, targets are classified using intrinsic parameters that are estimated via inversion of the observed data. In this work, we present an approach for using convolutional neural networks to classify unexploded ordnance directly from time-domain electromagnetic data. The outputs of the network are probabilities that the signal in a given spatial window is associated with an ordnance object, as well as a classification, which is simply the class with the largest probability. We demonstrate our approach with a synthetic example and show that the trained neural network can distinguish between small, medium, and large ordnance objects, as well as metallic clutter, and background response. These results illustrate the potential utility of machine learning for the interpretation of electromagnetic data collected over sites contaminated with ordnance.


There are 2 notebooks in this repository:

  1. generate-data: This notebook is used to generate synthetic data. It relies on BTInvert which is provided by Black Tusk Geophysics
  2. cnns-for-uxo: This notebook uses pytorch to implement a convolutional neural network to classify UXO from electromagnetic data. It runs fully on open software, with dependencies described in the environment.yml


To run the first notebook, you need BTInvert from Black Tusk Geophysics. This produces the data files that are stored online and accessible for the machine learning pipeline. The second notebook can be run entirely on open software.

To run the notebooks locally, you will need to have python installed, preferably through anaconda .

You can then clone this repository. From a command line, run

git clone

Then cd into the heagy-et-al-2020-uxo-seg directory:

cd heagy-et-al-2020-uxo-seg

To setup your software environment, we recommend you use the provided conda environment

conda env create -f environment.yml
conda activate seg-2020-uxo

Alternatively, you can install the requirements using pypi:

pip install -r requirements.txt 

You can then launch Jupyter

jupyter notebook

Jupyter will then launch in your web-browser.

Running the notebooks

Each cell of code can be run with shift + enter or you can run the entire notebook by selecting cell, Run All in the toolbar.

For more information on running Jupyter notebooks, see the Jupyter Documentation


Please make an issue if you encounter any problems while trying to run the notebooks.


If you build upon or use these examples in your work, please cite:

Heagy, L. J., Oldenburg, D. W., Pérez, F. & Beran, L. (2020, submitted). Machine learning for classifying unexploded ordnance from electromagnetic data. In SEG Technical Program Expanded Abstracts 2020. Society of Exploration Geophysicists.

author = {Heagy, Lindsey J. and Oldenburg, Douglas W and Pérez, Fernando and Beran, Laurens},
booktitle = {SEG Technical Program Expanded Abstracts 2020 (submitted)},
doi = {10.1190/segam2015-5931035.1},
publisher = {Society of Exploration Geophysicists},
title = {{Machine learning for classifying unexploded ordnance from electromagnetic data}},
year = {2020}


These notebooks are licensed under the MIT License which allows academic and commercial re-use and adaptation of this work.


Machine learning for classifying unexploded ordnance from electromagnetic data







No releases published


No packages published