cameratraps
Tools for training and running detectors and classifiers for wildlife images collected from motion-triggered cameras.
Science Score: 36.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
✓Academic publication links
Links to: researchgate.net -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (12.3%) to scientific vocabulary
Repository
Tools for training and running detectors and classifiers for wildlife images collected from motion-triggered cameras.
Basic Info
Statistics
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
- Releases: 0
Metadata Files
README.md
Overview
This repo contains the tools for training, running, and evaluating detectors and classifiers for images collected from motion-triggered camera traps. The core functionality provided is:
- Data parsing from frequently-used camera trap metadata formats into a common format
- Training and evaluation of detectors, particularly MegaDetector, an object detection model that does a pretty good job finding animals, people, and vehicles (and therefore is pretty good at finding empty images) in a variety of terrestrial ecosystems
- A batch processing API that runs MegaDetector on large image collections, to accelerate population surveys
- A real-time API that runs MegaDetector (and some species classifiers) synchronously, primarily to support anti-poaching scenarios (e.g. see this blog post describing how this API supports Wildlife Protection Solutions)
- Training and evaluation of species-level classifiers for specific data sets
- Miscellaneous useful tools for manipulating camera trap data
- Research experiments we're doing around camera trap data (i.e., some directories are highly experimental and you should take them with a grain of salt)
This repo is maintained by folks at Ecologize and folks in the Microsoft AI for Earth program who like looking at pictures of animals. We want to support conservation, of course, but we also really like looking at pictures of animals.
What's MegaDetector all about?
The main model that we train and run using tools in this repo is MegaDetector, an object detection model that identifies animals, people, and vehicles in camera trap images. This model is trained on several hundred thousand bounding boxes from a variety of ecosystems. Lots more information – including download links and instructions for running the model – is available on the MegaDetector page.
Here's a "teaser" image of what detector output looks like:

Image credit University of Washington.
How do I get started?
If you're just considering the use of AI in your workflow, and aren't even sure yet whether MegaDetector would be useful to you, we recommend reading this page first.
If you're already familiar with MegaDetector and you're ready to run it on your data (and you have some familiarity with running Python code), see the MegaDetector README for instructions on downloading and running MegaDetector.
Who is using MegaDetector?
We work with ecologists all over the world to help them spend less time annotating images and more time thinking about conservation. You can read a little more about how this works on our getting started with MegaDetector page.
Here are a few of the organizations that have used MegaDetector... we're only listing organizations who (a) we know about and (b) have kindly given us permission to refer to them here (or have posted publicly about their use of MegaDetector), so if you're using MegaDetector or other tools from this repo and would like to be added to this list, email us!
- Arizona Department of Environmental Quality
- Blackbird Environmental
- Camelot
- Conservation X Labs
- Czech University of Life Sciences Prague
- EcoLogic Consultants Ltd.
- Estacin Biolgica de Doana
- Idaho Department of Fish and Game
- Island Conservation
- Myall Lakes Dingo Project
- Point No Point Treaty Council
- Ramat Hanadiv Nature Park
- SPEA (Portuguese Society for the Study of Birds)
- San Diego Zoo Wildlife Alliance
- Synthetaic
- Taronga Conservation Society
- The Nature Conservancy in Wyoming
- TrapTagger
Applied Conservation Macro Ecology Lab, University of Victoria
Banff National Park Resource Conservation, Parks Canada
Blumstein Lab, UCLA
Borderlands Research Institute, Sul Ross State University
Capitol Reef National Park / Utah Valley University
Center for Biodiversity and Conservation, American Museum of Natural History
Centre for Ecosystem Science, UNSW Sydney
Cross-Cultural Ecology Lab, Macquarie University
DC Cat Count, led by the Humane Rescue Alliance
Department of Fish and Wildlife Sciences, University of Idaho
Ecology and Conservation of Amazonian Vertebrates Research Group, Federal University of Amap
Gola Forest Programma, Royal Society for the Protection of Birds (RSPB)
Graeme Shannon's Research Group, Bangor University
Hamaarag, The Steinhardt Museum of Natural History, Tel Aviv University
Institut des Science de la Fort Tempre (ISFORT), Universit du Qubec en Outaouais
Lab of Dr. Bilal Habib, the Wildlife Institute of India
Mammal Spatial Ecology and Conservation Lab, Washington State University
McLoughlin Lab in Population Ecology, University of Saskatchewan
National Wildlife Refuge System, Southwest Region, US Fish and Wildlife
Northern Great Plains Program, Smithsonian
Quantitative Ecology Lab, University of Washington
Santa Monica Mountains Recreation Area, National Park Service
Seattle Urban Carnivore Project, Woodland Park Zoo
Serra dos rgos National Park, ICMBio
Snapshot USA, Smithsonian
Wildlife Coexistence Lab, University of British Columbia
Wildlife Research, Oregon Department of Fish and Wildlife
Department of Ecology, TU Berlin
Ghost Cat Analytics
Wildlife Division, Michigan Department of Natural Resources
School of Natural Sciences, University of Tasmania (story)
Alberta Biodiversity Monitoring Institute (ABMI) (WildTrax platform) (blog post)
Shan Shui Conservation Center (blog post) (translated blog post)
Road Ecology Center, University of California, Davis (Wildlife Observer Network platform)
Data
This repo does not directly host camera trap data, but we work with our collaborators to make data and annotations available whenever possible on lila.science.
Contact
For questions about this repo, contact cameratraps@lila.science.
Contents
This repo is organized into the following folders...
api
Code for hosting our models as an API, either for synchronous operation (i.e., for real-time inference) or as a batch process (for large biodiversity surveys).
classification
Experimental code for training species classifiers on new data sets, generally trained on MegaDetector crops. Currently the main pipeline described in this folder relies on a large database of labeled images that is not publicly available; therefore, this folder is not yet set up to facilitate training of your own classifiers. However, it is useful for users of the classifiers that we train, and contains some useful starting points if you are going to take a "DIY" approach to training classifiers on cropped images.
All that said, here's another "teaser image" of what you get at the end of training and running a classifier:

data_management
Code for:
- Converting frequently-used metadata formats to COCO Camera Traps format
- Creating, visualizing, and editing COCO Camera Traps .json databases
detection
Code for training, running, and evaluating MegaDetector.
research
Ongoing research projects that use this repository in one way or another; as of the time I'm editing this README, there are projects in this folder around active learning and the use of simulated environments for training data augmentation.
sandbox
Random things that don't fit in any other directory. For example:
- A not-super-useful but super-duper-satisfying and mostly-successful attempt to use OCR to pull metadata out of image pixels in a fairly generic way, to handle those pesky cases when image metadata is lost.
- Experimental postprocessing scripts that were built for a single use case
taxonomy-mapping
Code to facilitate mapping data-set-specific categories (e.g. "lion", which means very different things in Idaho vs. South Africa) to a standard taxonomy.
test-images
A handful of images from LILA that facilitate testing and debugging.
visualization
Shared tools for visualizing images with ground truth and/or predicted annotations.
Gratuitous pretty camera trap picture

Image credit USDA, from the NACTI data set.
Contributing
This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit cla.microsoft.com.
When you submit a pull request, a CLA-bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.
License
This repository is licensed with the MIT license.
Owner
- Name: ganhao
- Login: cgyx008
- Kind: user
- Repositories: 3
- Profile: https://github.com/cgyx008
GitHub Events
Total
Last Year
Dependencies
- tensorflow/tensorflow 1.14.0-gpu-py3 build
- $BASE_IMAGE latest build
- BouncyCastle 1.8.3.1
- Google.Protobuf 3.15.0
- K4os.Compression.LZ4 1.1.11
- K4os.Compression.LZ4.Streams 1.1.11
- K4os.Hash.xxHash 1.0.6
- MySql.Data 8.0.21
- NLog 4.7.2
- Newtonsoft.Json 13.0.1
- SSH.NET 2020.0.2
- Serilog 2.9.0
- System.Buffers 4.5.0
- System.Memory 4.5.3
- System.Numerics.Vectors 4.4.0
- System.Runtime.CompilerServices.Unsafe 4.6.0
- Newtonsoft.Json 13.0.1
- Flask ==2.0.1
- Flask-RESTful ==0.3.8
- gunicorn ==20.0.4
- humanfriendly
- ipykernel
- joblib
- jsonpickle
- jsonschema
- matplotlib
- nb_conda_kernels
- numpy
- pandas
- pillow
- pyqtree
- python 3.8.*
- requests
- scikit-image >=0.13.1
- scikit-learn >=0.19.1
- tqdm
- unidecode