Skip to content
此頁面尚未提供您所選語言的版本,當前顯示英文版本。

Camera Trap and Bioacoustics Annotation Tools Compared

Free and paid camera trap and bioacoustics tools compared on who runs the AI model, review by several people, and Camtrap DP and Raven formats.

Raven Pro costs $50 for a permanent non-profit license and Kaleidoscope Pro costs $399 a year, and Wildlife Insights charges government agencies and companies for camera-trap subscriptions while staying free for academic users. Timelapse, AddaxAI, and Agouti are free for camera traps, and Arbimon, BirdNET-Analyzer, Audacity, and the beta of Cornell's Raven Workbench are free for bioacoustics. Potato is a free, self-hosted alternative to Raven Pro and Kaleidoscope Pro for reviewing detections with several reviewers per image or recording, though Potato runs no detector or classifier and starts from the MegaDetector, BirdNET, Raven, or Audacity files those tools write.

A camera trap is a camera that photographs or films whatever passes in front of the camera's motion sensor. MegaDetector is an open-source model that finds animals, people, and vehicles in camera-trap images and draws a box around each animal, person, or vehicle. MegaDetector's README notes that the model is also useful for removing blank images. MegaDetector does not name the species, and a separate classifier such as Google's SpeciesNet does that step. Passive acoustic monitoring records a site for days or months with an unattended recorder, and bioacoustics software finds the calls of birds, bats, frogs, and whales in the recordings. A spectrogram shows a recording's frequencies over time, and a call is marked as a box with a start time, an end time, and a frequency range. A Raven selection table lists those boxes, one per row.

Camtrap DP is the TDWG data exchange format for camera-trap data, with tables of deployments, media, and observations. Darwin Core is the TDWG standard for occurrence records, and GBIF is the global biodiversity database that publishes data in both formats. Ecology in Potato lists Potato's ecology tasks in one place, and Camera Traps and Bioacoustics document every import and export option.

Camera trap tools worth comparing

Prices and licenses come from each project's own pages, checked on 2026-10-29.

ToolRuns asLicense or priceSuits
TimelapseDesktop app for WindowsFree; source under CC BY-NC-SA 4.0Tagging large image sets on one computer, with MegaDetector boxes shown and Camtrap DP export
AddaxAIDesktop app for Windows, macOS on Apple Silicon, and LinuxMIT; some species models are non-commercialRunning MegaDetector and a regional species model offline, then sorting or exporting the results
Wildlife InsightsHosted platform on Google CloudFree for academic users, individuals, and citizen scientists; paid subscriptions for government agencies and companies, priced on requestUploading surveys for AI species identification with review, and sharing data publicly
AgoutiHosted platform at Wageningen University and ResearchFree for academic and non-profit use; a contribution asked for commercial use and projects over 250 GBProject teams annotating and validating sequences, with Camtrap DP 1.0 export
TrapTaggerHosted web app, or your own serverApache-2.0; free hosted accountsAI classification combined with manual annotation by a team of annotators
CamelotDesktop app for Windows, macOS, and Linux, usable by several people at onceEclipse Public License 1.0Survey management and species identification, with reports for camtrapR and PRESENCE
ZooniverseHosted citizen-science platformProject Builder and hosting freePublic projects in which many volunteers classify each image
PotatoPython web server configured in YAML, on your own computer or serverGPL-3.0-or-laterSeveral reviewers checking MegaDetector boxes and species on a server the project controls

MegaDetector itself is MIT-licensed and installs with pip install megadetector. MegaDetector's README lists Timelapse, AddaxAI, Wildlife Insights, TrapTagger, Agouti, and Camelot among the tools and platforms that work with MegaDetector. Wildlife Insights uses SpeciesNet for species recognition, and SpeciesNet runs MegaDetector first and then a species classifier.

Bioacoustics tools worth comparing

ToolRuns asLicense or priceSuits
Raven ProDesktop app$50 non-profit or $100 commercial, as permanent licenses; free for non-commercial use by citizens of low- and middle-income countriesMeasuring sounds, running detectors such as BirdNET, and reviewing selection tables
Raven LiteDesktop appFreeViewing spectrograms and making selection tables with one annotation per selection
Raven WorkbenchSuite of apps, in betaFreeAnnotation and review in Raven Annotate, and detection and model training in Raven Intelligence
Kaleidoscope ProDesktop app$399 a year for one user on two computersBat species classification, cluster analysis, and BirdNET classifiers on large recording sets
ArbimonHosted platform from Rainforest ConnectionFree, with unlimited users and storagePattern matching, random forest models, species validation, and soundscapes in the cloud
BirdNET-AnalyzerCommand line and desktop GUICode MIT; models CC BY-NC-SA 4.0Detecting bird species in recordings and writing Raven, Audacity, Kaleidoscope, or CSV results
AudacityDesktop app for Windows, macOS, and LinuxGPLv3Label tracks with a frequency range from a spectral selection
Sonic VisualiserDesktop app for Windows, macOS, and LinuxFree and open sourceBox layers for time-frequency regions over a spectrogram, with CSV export of layers
PotatoPython web server configured in YAMLGPL-3.0-or-laterSeveral reviewers correcting BirdNET, Raven, or Audacity boxes on a spectrogram in the browser

Cornell's Raven Workbench page states that Workbench is meant to "enhance and replace the capabilities of Raven Pro" and that the Lab will eventually stop selling and supporting Raven Pro. Raven Pro's legacy downloads stay available. BirdNET's documentation treats all educational and research use as non-commercial, and the CC BY-NC-SA license on the models does not cover commercial use.

Which tool for which task

The table pairs each kind of ecology project with the tools built for that kind of project.

TaskGood fits
Running MegaDetector and a species classifier on a laptopAddaxAI, or MegaDetector and SpeciesNet from Python
Tagging a survey on one Windows computerTimelapse
Uploading a survey for AI identification and public data sharingWildlife Insights
A team annotating sequences and exporting Camtrap DP for GBIFAgouti, Timelapse, and Potato
Public volunteer classification of imagesZooniverse
Two or more reviewers checking every detection, with agreement reportedPotato
Measuring call frequency, duration, and energyRaven Pro and Raven Workbench
Bat call identificationKaleidoscope Pro
Detecting bird species in long recordingsBirdNET-Analyzer, Raven Pro, and Kaleidoscope Pro
Cloud pattern matching across a monitoring networkArbimon
Drawing call boxes by hand on a desktopRaven Lite, Audacity, and Sonic Visualiser
Several reviewers verifying BirdNET boxes in a browserPotato

The model-running tools appear wherever a detector or a classifier does the work, and the desktop tools appear where one person reviews the output. Potato appears where the output of those tools goes to several reviewers and the project needs each reviewer's answer kept separately.

Who runs the detector

Most of the tools on this page either run a model or show the output of a model run elsewhere. AddaxAI runs MegaDetector and a species model on your own computer with no internet connection after installation. Wildlife Insights runs the identification models on Google Cloud after upload. Timelapse runs no model itself and imports the recognition file that AddaxAI or MegaDetector writes. In bioacoustics, Raven Pro runs BirdNET and other models through Raven Pro's Learning Detector, Kaleidoscope Pro runs bat classifiers and BirdNET classifiers, and BirdNET-Analyzer is the standalone BirdNET program.

Potato's camera-trap and bioacoustics workflows run no detector or classifier. potato import reads MegaDetector batch-output JSON in format 1.x, COCO Camera Traps JSON, BirdNET-Analyzer's Raven table or CSV, Raven Pro or Raven Lite selection tables, and Audacity label tracks. Species classifications in a MegaDetector file become box labels and pre-ticked species. Each detection becomes a box that reviewers move, resize, relabel, or delete. On import, --md-threshold (default 0.2) and, for BirdNET, --min-confidence (default 0.1) leave out detections below the confidence you set. Every imported box keeps the model's name and confidence and gets "edited": true once a reviewer changes the box.

Free Raven Pro and Kaleidoscope Pro alternatives

Raven Pro and Kaleidoscope Pro are the two paid desktop programs in the bioacoustics table above. Raven Pro measures sounds, runs energy and machine-learning detectors, and compares a detector's selection table with a human-made table. Kaleidoscope Pro identifies bat species, clusters similar calls, and runs BirdNET classifiers across large recording sets. The free tools each cover part of that work.

Cornell's own Raven Workbench is free and is meant to replace Raven Pro, though Cornell describes the Workbench apps as beta or preview releases. Raven Lite is free for viewing spectrograms and making selection tables with one annotation per selection. BirdNET-Analyzer is free for detection, and the CC BY-NC-SA 4.0 license on the models does not cover commercial use. Arbimon is a free hosted platform for pattern matching and species validation across many recorders. Audacity and Sonic Visualiser are free desktop programs for drawing call boxes by hand.

Potato covers the review step after detection. Potato imports BirdNET or Raven output, assigns each recording to as many reviewers as the config sets, shows the boxes on a spectrogram computed in the browser, and writes each reviewer's corrected boxes to a separate Raven selection table or Audacity label file. Potato does not measure sounds, run detectors, cluster calls, or report agreement on spectrogram boxes, and what Potato does not do lists the other gaps.

For camera traps, Wildlife Insights charges only government agencies and companies, and Timelapse, AddaxAI, Agouti, TrapTagger, and Camelot are free. Potato fits a camera-trap project when several reviewers check each image and the images stay on the project's own server.

Several reviewers and agreement by tool

The tools share work among several people in different ways. Each row gives a tool's setup for several people on the same images or recordings and the agreement measure that the tool's documentation describes.

ToolHow several people share the workAgreement
TimelapseSeparate databases merged by checking in—
Wildlife InsightsOrganizations and projects with owner, editor, and contributor roles—
AgoutiProject roles from full access to view-only, with a Validate step for each sequence—
TrapTaggerAnnotator accounts that pick up annotation jobs—
CamelotSeveral people use Camelot at the same time—
ZooniverseEach image goes to a set number of volunteers before the image retires—
Raven Pro—Compares two selection tables, documented for checking a detector against a human-made table
ArbimonUsers added to a project—
Potatonum_annotators_per_item sets how many reviewers see each image or recordingTriage and other choices: Cohen's kappa, Fleiss' kappa, and Krippendorff's alpha. Species ticks: Jaccard and alpha with MASI distance. Boxes on images: matched IoU, detection F1, and chance-corrected alpha. Spectrogram boxes: none

A dash means we found nothing for the cell in the tool's own documentation, checked on 2026-10-29. If a cell is wrong, tell us.

When 10 observers processed the same 11,560 camera-trap images, only one observer found all 22 mammals in the set, and the other observers found between 18 and 22 (Zett et al., 2022). A second reviewer on a sample of images measures the same variation for your own project. Potato's admin dashboard at /admin/iaa reports the agreement for every pair of reviewers. Agreement on the detection boxes separates whether reviewers found the same animals, whether reviewers gave each animal the same label, and how closely the boxes match (Geometry Agreement). Potato computes no agreement on spectrogram boxes. A bioacoustics study that needs a kappa adds a clip-level question, as in the BirdNET config below.

Volunteers and citizen science

Zooniverse hosts public projects for free, and the Zooniverse team reviews a project before the project launches to the volunteer community. Snapshot Serengeti combined each image's volunteer classifications with a plurality vote and reached 96.6% accuracy for species against 4,149 image sets classified by experts (Swanson et al., 2015). Zooniverse hosts all project media at public URLs, even on a private project, and a project promoted to the community makes classification data open after a proprietary period of normally two years.

Potato has no public volunteer community. A project shares a sign-up link with the project's own volunteers or students, or recruits paid participants through Prolific (Running a Crowdsourced Study). A training phase gives volunteers practice images with feedback before the real images. With mace: enabled: true, Potato estimates each volunteer's reliability and an inferred answer for the triage and species questions once an item has three answers (MACE). Potato's Zooniverse importer reads a project's workflows and classifications. The importer leaves out survey tasks and reports how many were left out. A survey task is Zooniverse's grid of species choices with follow-up questions.

File formats and GBIF publishing

The table lists the formats an ecology project moves between and what Potato 2.13.1 reads and writes for each format.

FormatWritten or read byPotato importPotato export
MegaDetector batch-output JSONMegaDetector, AddaxAI, and TimelapseYes (-f megadetector)Yes, format 1.4, one reviewer per file (-f megadetector)
COCO Camera Traps JSONMegaDetector's conversion toolsYes, with sequences as one item each (-f coco_camera_traps)No
Camtrap DP 1.0Agouti, Timelapse, AddaxAI, and the GBIF IPTNoYes, profile 1.0.2, one reviewer per item (-f camtrap_dp)
Darwin Core occurrencesGBIFNoYes, occurrence.csv, one reviewer per item (-f darwin_core)
Raven selection tableRaven Pro, Raven Lite, and BirdNET-AnalyzerYes (-f raven, or -f birdnet for BirdNET's tables)Yes, one table per recording and reviewer, with a Box Source column (-f raven)
BirdNET-Analyzer CSVBirdNET-AnalyzerYes, as boxes over all frequencies (-f birdnet)No
Audacity label trackAudacity and BirdNET-AnalyzerYes, with spectral lines (-f audacity_labels)Yes, one file per recording and reviewer
Kaleidoscope resultsKaleidoscope Pro and BirdNET-AnalyzerNoNo

GBIF's recommended route for camera-trap data is a Camtrap DP package uploaded to the GBIF IPT, version 3 or later. GBIF converts a published package to Darwin Core occurrences with the camtrapdp R package and places each occurrence at the camera's location. Potato's Camtrap DP export needs facts Potato does not have, such as each deployment's coordinates, a UTC offset on every timestamp, and the package metadata. Item fields named latitude and longitude fill the coordinates, export options fill the rest, and the export names whatever is still missing. Validate the package before uploading the package to the IPT.

With several reviewers per image, the camtrap_dp, darwin_core, and megadetector exports write one reviewer per item, the first by user ID unless --option annotator=<user> names a reviewer, and warn that the item had several. Reconcile the reviewers' answers before exporting, so that the answer the export takes is the agreed one. The reviewer's user name goes in classifiedBy or identifiedBy.

Offline field use and data location

Timelapse, AddaxAI, Camelot, Raven, Kaleidoscope, Audacity, and Sonic Visualiser run on the computer that stores the images or recordings, and AddaxAI and Timelapse need no internet connection after installation. Wildlife Insights runs on Google Cloud and lets data providers embargo data for up to 48 months. Agouti stores all data on servers owned by Wageningen University and Research in the Netherlands. Arbimon stores recordings in the cloud. TrapTagger offers hosted accounts and a self-hosted install from the TrapTagger repository.

Potato installs with pip on a laptop or a server, and reviewers on the same machine or on a field station's local network work in a browser. Potato serves every script, stylesheet, font, and icon from the install, and the camera-trap and bioacoustics workflows load no model weights. With --image-dir, Potato serves images from the survey's existing folder without copying the survey. The spectrogram is computed in the reviewer's browser from the audio file, with no audio tools on the server. Both the image box scheme and the spectrogram scheme are on Potato's list of types tested by touch at phone width. Air-Gapped Deployment lists what Potato serves locally.

Reviewing MegaDetector output with two reviewers in Potato

Run MegaDetector on your own machine first, or AddaxAI with a species model. The import below keeps detections with confidence 0.5 or more and serves the images from the survey's own folder:

bash
potato import -i md_output.json --image-dir /data/traps --md-threshold 0.5 -o review-project/

The config below has the shape that the import writes, with two additions. num_annotators_per_item: 2 sends every image to two reviewers for agreement on the triage answer, the species, and the boxes. The classifier never named foxes, and the added Vulpes vulpes label lets reviewers label the foxes the classifier missed. The config is complete and passes Potato's validator:

yaml
annotation_task_name: Camera-trap review, two reviewers per image
task_dir: .
output_annotation_dir: annotation_output/
data_files:
  - data/md_output.jsonl
item_properties:
  id_key: id
  text_key: image_url
user_config:
  allow_all_users: true
  users: []
media_directory: /data/traps
 
# Every image goes to two reviewers for a comparison of the two reviews
num_annotators_per_item: 2
 
pre_annotation:
  enabled: true
  field: predictions
  allow_modification: true
 
annotation_schemes:
  - annotation_type: radio
    name: triage
    description: What does this image show?
    labels: [empty, animal, person, vehicle]
    sequential_key_binding: true
 
  - annotation_type: image_annotation
    name: detections
    description: Correct the boxes, delete false detections, and draw any animal that was missed.
    source_field: image_url
    tools: [bbox]
    zoom_enabled: true
    labels:
      - {name: Odocoileus virginianus, color: "#f58231"}
      - {name: Procyon lotor, color: "#911eb4"}
      # A species the classifier never names, added for reviewers to draw
      - {name: Vulpes vulpes, color: "#008080"}
      - {name: animal, color: "#3cb44b"}
      - {name: person, color: "#e6194b"}
      - {name: vehicle, color: "#4363d8"}
 
  - annotation_type: multiselect
    name: species
    description: Which species are present?
    labels: [Odocoileus virginianus, Procyon lotor, Vulpes vulpes]

Each image opens with the detector's boxes drawn and the triage answer chosen from the most confident detection, and reviewers answer the triage question with the keys 1 to 4. A pre-filled answer is stored only when the reviewer saves the image, and unreviewed images stay out of the export. Once the review is done, export the package and the occurrences:

bash
python -m potato.export -c review-project/config.yaml -f camtrap_dp -o package/ \
    --option timezone=-05:00 --option contributor="Your Name" \
    --option sampling_design=opportunistic --option capture_method=activityDetection
python -m potato.export -c review-project/config.yaml -f darwin_core -o package/

classificationMethod is machine for a detector box the reviewer left unchanged and human for a box the reviewer drew or changed. In the Darwin Core table, the same distinction sets basisOfRecord to MachineObservation or HumanObservation. Detecting Rubber-Stamped Pre-Labels shows how to check whether reviewers accepted the detector's boxes without looking.

Verifying BirdNET detections with two reviewers in Potato

Run BirdNET-Analyzer on your recordings first, and keep the recordings beside BirdNET's output files. The import below keeps detections with confidence 0.5 or more:

bash
potato import -i birdnet-output/ -f birdnet --min-confidence 0.5 -o birdnet-review/

The config below has the shape that the import writes, plus a second reviewer on every clip, a species BirdNET did not report, and a clip-level question. The clip-level question gives the admin dashboard a kappa, because Potato reports no agreement on spectrogram boxes. The config is complete and passes Potato's validator:

yaml
annotation_task_name: BirdNET verification, two reviewers per clip
task_dir: .
output_annotation_dir: annotation_output/
data_files:
  - data/birdnet-output.jsonl
item_properties:
  id_key: id
  text_key: recording
user_config:
  allow_all_users: true
  users: []
 
# Every clip goes to two reviewers for a comparison of the clip-level answers
num_annotators_per_item: 2
 
pre_annotation:
  enabled: true
  field: predictions
  allow_modification: true
 
annotation_schemes:
  - annotation_type: spectrogram_annotation
    name: calls
    description: Check BirdNET's boxes, fix or delete the wrong ones, and draw any call BirdNET missed.
    source_field: audio_url
    labels:
      - American Robin
      - Northern Cardinal
      # Species on the site list that BirdNET did not report in these clips
      - Song Sparrow
      - unknown
 
  - annotation_type: radio
    name: clip_review
    description: How well did BirdNET do on this clip?
    labels:
      - All boxes correct
      - Some boxes wrong or missing
      - Recording unusable

BirdNET's boxes are drawn with a dashed border until a reviewer changes a box. Export the corrected boxes for Raven or Audacity:

bash
python -m potato.export -c birdnet-review/config.yaml -f raven -o export/
python -m potato.export -c birdnet-review/config.yaml -f audacity_labels -o export/

With two reviewers, each recording gets one file per reviewer, such as site_a_0600.alice.selections.txt and site_a_0600.bob.selections.txt, and each file opens in Raven beside the recording. Spectrogram Annotation lists the scheme's options and controls.

What Potato does not do for ecology

  • No detector or classifier. MegaDetector, SpeciesNet, AddaxAI, Wildlife Insights, BirdNET-Analyzer, Raven Pro, and Kaleidoscope Pro run the models, and reviewers correct the output in Potato. Potato does not include BirdNET's models.
  • No sound measurements. Raven Pro and Raven Workbench measure frequency, duration, and energy, and Potato stores box edges only.
  • No agreement on spectrogram boxes. Agreement covers questions, species ticks, and boxes on images.
  • No reconciliation in the GBIF exports. Camtrap DP and Darwin Core exports write one observation per reviewer.
  • No long recordings in one view. The browser decodes the whole file and draws at most 4,096 spectrogram columns. Cut recordings into clips of a few minutes.
  • No Kaleidoscope or Arbimon formats. Potato reads Raven tables, Audacity labels, and BirdNET output.
  • No Camtrap DP import. Potato writes Camtrap DP and reads MegaDetector and COCO Camera Traps JSON.
  • No Zooniverse survey tasks on import. The species-grid task is left out with a warning.
  • No public volunteer community. Zooniverse brings volunteers, and Potato recruits through Prolific or a link the project shares.
  • Needs a server. Someone installs Potato with pip and runs the server, on a laptop for one reviewer or on a shared machine for a team.

Checked against each project's own documentation and pricing pages in October 2026.

Frequently asked questions

What free software can label time-frequency regions on a spectrogram?

Raven Lite, Audacity, and Sonic Visualiser are free desktop programs that mark time-frequency regions on a spectrogram. Raven Lite makes selection tables with one annotation per selection, Audacity stores the frequency range of a spectral selection in the extended label format, and Sonic Visualiser has a box layer for time-frequency regions. Cornell's Raven Workbench is free in beta and is meant to replace Raven Pro. Potato is free and self-hosted for the case where several people label the same recordings in a browser, with each person's boxes exported as a separate Raven selection table or Audacity label file.

How do I measure agreement between observers on camera trap images?

Give a sample of images to two or more observers, have each observer answer the same questions independently, and compute a chance-corrected coefficient such as Cohen's kappa for two observers or Krippendorff's alpha for three or more. In Potato, num_annotators_per_item: 2 sends every image to two reviewers, and the admin dashboard reports kappa and alpha for the triage answer, Jaccard and alpha for the species ticked, and matched IoU, detection F1, and chance-corrected alpha for the boxes. For answers exported from another tool, the agreement calculator computes kappa and alpha from a CSV in the browser.

How are volunteers' species identifications combined in citizen science camera trap projects?

Most projects give each image to several volunteers and keep the species most volunteers chose. Snapshot Serengeti combined volunteers' answers with this plurality vote and reached 96.6% accuracy for species against expert classifications. Dawid-Skene and MACE weight each volunteer by estimated reliability and can recover better labels than a plurality vote when volunteers differ in skill (Paun et al., 2018). With mace: enabled: true, Potato runs MACE on the triage and species questions once an image has three answers, and Aggregating Crowd Labels compares the methods.

Further reading

References

  1. Swanson, A., Kosmala, M., Lintott, C., Simpson, R., Smith, A., & Packer, C. (2015). Snapshot Serengeti, high-frequency annotated camera trap images of 40 mammalian species in an African savanna. Scientific Data, 2, 150026. https://doi.org/10.1038/sdata.2015.26
  2. Zett, T., Stratford, K. J., & Weise, F. J. (2022). Inter-observer variance and agreement of wildlife information extracted from camera trap images. Biodiversity and Conservation, 31(12), 3019-3037. https://doi.org/10.1007/s10531-022-02472-z