Geologists seek to understand the relationship between volcanic unrest and eruptions by identifying subtle Volcanic Thermal Features (VTFs) in high-resolution satellite imagery. This analysis requires the careful curation of large databases of relevant volcanic thermal information. However, volcanic unrest is characterized by highly subtle thermal anomalies. Manual identification on a global scale is highly labor- and time-intensive. We propose Hotspotter: an end-to-end system to automatically detect subtle volcanic thermal anomalies in satellite images and derive relevant thermal statistics. Previous solutions for automated VTF detection have limited data size and geographic diversity. To accommodate an unprecedentedly large and diverse volcanic dataset, we propose an automated pipeline combining unsupervised anomaly detection with supervised classification to filter anomalous regions. Hotspotter gives 90% anomaly detection accuracy and robust generalization to new volcanoes. Our automated approach can accelerate scientists’ search for VTFs to help identify relevant thermal precursors and enable more precise forecasts of global volcanic eruptions.
-
Install DORA on your local machine following the steps from the vtf-dora branch in this forked repo -https://github.com/nasaharvest/dora/tree/vtf-dora/dora_exp_pipeline
-
Navigate to directory inference_pipeline with
cd inference_pipeline/ -
Once the results are obtained, run
pip install -r requirements.txtto install all requirements for this app -
Run
vtf_app.pywith your specified input directory and output file for one volcano at a time. For example:python3 vtf_app.py --input="/data/Pacaya/" --output="Pacaya_res.csv"You can runpython3 vtf_app.py --helpif you want to specify any additional arguments
Note: Your directory structure should be of the following format - {Volcano}/"all"/{ASTER file name}, for example: Pacaya/all/AST_08_00302282019042806_20230914075707_28909.SurfaceKineticTemperature.KineticTemperature.tif
- Run
run_all.pywith your specified input directory of a volcanic region. For example:python3 run_all.py --region="Kuril_Islands"You can runpython3 run_all.py --helpif you want help specifying arguments
The VTF app works with ASTER data.
- Volcano_Data_Collected - contains 52 volcanoes and 7941 total TIF files (Box folder)
- Merged_tables_processed.xlsx - latest pruned and processed excel files containing these volcanoes and correct volcano names
To adapt the existing VTF model to a new volcano dataset or a custom set of labeled thermal anomalies, you can fine-tune the pretrained CNN weights with a labeled CSV.
Create two CSV files in inference_pipeline/training/:
fine_tune_train.csvfine_tune_val.csv
Each file must contain the following columns:
Filename_LRX,Volcanic Thermal Anomaly (Y/N)
path/to/image_1.tif,Y
path/to/image_2.tif,N
path/to/image_3.tif,YAccepted label values are:
Y/YES/1N/NO/0
From the VTFDetection repo root:
cd inference_pipeline
python training/train_finetune.pyThis will:
- load the pretrained model from
inference_pipeline/model/model_618_2.pth - freeze the early convolutional layers
- train the later layers on your new labeled data
- save the best model to
inference_pipeline/model/model_618_2_finetuned.pth
The training script uses Average Precision (PR-AUC) as the validation metric, which is a suitable choice for class-imbalanced VTF detection tasks.
After training, update the model path in inference_pipeline/vtf_app.py to use the fine-tuned checkpoint:
MODEL_PATH = Path(__file__).resolve().parent / "model" / "model_618_2_finetuned.pth"This allows the inference pipeline to use the updated model weights for new predictions.
Mohan, A., Gomez-Patron, A., Pritchard, M., & Kerner, H. (2025). Hotspotter: A Generalizable Pipeline for Automated Detection of Subtle Volcanic Thermal Features in Satellite Images. Proceedings of the AAAI Conference on Artificial Intelligence, 39(28), 28857–28863. https://doi.org/10.1609/aaai.v39i28.35151
This codebase is released under the MIT License. See the LICENSE file for details.
