gibbonNetR

gibbonNetR: an R Package for the Use of Convolutional Neural Networks for Automated Detection of Acoustic Data - Published in JOSS (2025)

https://github.com/denajgibbon/gibbonnetr

Science Score: 93.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
    Found 4 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Scientific Fields

Engineering Computer Science - 40% confidence
Last synced: 6 months ago · JSON representation

Repository

R package to use 'torch for R' for automated detection using convolutional neural nets in passive acoustic monitoring (PAM) data

Basic Info
Statistics
  • Stars: 2
  • Watchers: 1
  • Forks: 2
  • Open Issues: 2
  • Releases: 3
Created over 2 years ago · Last pushed 8 months ago
Metadata Files
Readme Contributing License Codemeta

README.Rmd

---
title: "gibbonNetR R Package"
author: "Dena J. Clink and Abdul Hamid Ahmad"
date: "`r Sys.Date()`"
output: github_document
---

```{r setup, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  out.width = "400px", dpi = 120
)

knitr::opts_knit$set(root.dir = "/Users/denaclink/Desktop/RStudioProjects/gibbonNetR_notgithub/")
```

# Overview

This README provides code for training, testing, and deploying, different convolutional neural network model architectures for automated detection and classification of acoustic data.

Users can train both binary and multi-class classification models on spectrogram images, and evaluate their performance on test datasets. The package includes tools for performance evaluation, allowing easy identification of the best-performing model. Once the best-performing model is identified, it can be deployed for large-scale inference on multiple sound files. In addition to classification, trained CNNs can be used as feature extractors. Combined with unsupervised clustering, this enables visualization of differences in acoustic signals.

# Usage

A detailed usage guide can be found at: 

Link to paper in the Journal of Open Source Software: 
[![DOI](https://joss.theoj.org/papers/10.21105/joss.07250/status.svg)](https://doi.org/10.21105/joss.07250)

# Prerequisites
This package assumes a basic understanding of machine learning, deep learning, and convolutional neural networks (CNNs). Users should be familiar with training and evaluating models, as well as handling spectrogram image data. For those new to these concepts, we recommend reviewing foundational machine learning and deep learning resources before using this package. a good starting point would be: 

Stowell, Dan. "Computational bioacoustics with deep learning: a review and roadmap." PeerJ 10 (2022): e13152. https://peerj.com/articles/13152/

Some practical information on improving model performance can be found here: https://kahst.github.io/BirdNET-Analyzer/best-practices/training.html#

# Installation

You can install the `gibbonNetR` package from its repository using `devtools`:

```{r eval = FALSE}
# If you don't have devtools installed
install.packages("devtools")

# Install gibbonNetR
devtools::install_github("https://github.com/DenaJGibbon/gibbonNetR")

# The first time you use the package 'torch' will need to install additional packages. You can start the process using the following:
library(torch)
```

```{r, message=FALSE, echo=FALSE, warning=FALSE}
devtools::load_all("/Users/denaclink/Desktop/RStudioProjects/gibbonNetR")
# library(gibbonNetR)
# Load other required libraries
library(dplyr)
library(torch)
library(torchvision)
library(purrr)
```

# Quickstart guide

```{r eval = FALSE}
library(gibbonNetR)

# Set file path to spectrogram images
filepath <- system.file("extdata", "multiclass/", package = "gibbonNetR")

# Train simple CNN model
train_CNN_multi(
  input.data.path = filepath,
  test.data = paste(filepath, "/test/", sep = ""),
  architecture = "alexnet", # Choose 'alexnet', 'vgg16', 'vgg19', 'resnet18', 'resnet50', or 'resnet152'
  unfreeze.param = TRUE,
  batch_size = 6,
  class_weights = rep((1 / 5), 5),
  learning_rate = 0.001,
  epoch.iterations = 1, # Or any other list of integer epochs
  early.stop = "yes",
  save.model = FALSE,
  output.base.path = file.path(tempdir(), "/MultiDir/", sep = ""),
  trainingfolder = "test_multi",
  noise.category = "noise"
)
```

Owner

  • Name: Dena J. Clink
  • Login: DenaJGibbon
  • Kind: user
  • Company: K. Lisa Yang Center for Conservation Bioacoustics

I am a biological anthropologist, bioacoustician, and avid R user. I use innovative bioacoustics techniques to answer evolutionary questions.

JOSS Publication

gibbonNetR: an R Package for the Use of Convolutional Neural Networks for Automated Detection of Acoustic Data
Published
June 07, 2025
Volume 10, Issue 110, Page 7250
Authors
Dena Jane Clink ORCID
K. Lisa Yang Center for Conservation Bioacoustics, Cornell Lab of Ornithology, Cornell University, Ithaca, New York, United States
Abdul Hamid Ahmad ORCID
Institute for Tropical Biology and Conservation, Universiti Malaysia Sabah (UMS), Kota Kinabalu, Sabah, Malaysia
Editor
Fabian-Robert Stöter ORCID
Tags
deep learning passive acoustic monitoring gibbon automated detection

CodeMeta (codemeta.json)

{
  "@context": "https://doi.org/10.5063/schema/codemeta-2.0",
  "@type": "SoftwareSourceCode",
  "identifier": "gibbonNetR",
  "description": "R Package for the Use of CNNs on Acoustic Data.",
  "name": "gibbonNetR: gibbonNetR: R Package for the Use of CNNs and Transfer Learning on\n    Acoustic Data",
  "codeRepository": "https://github.com/DenaJGibbon/gibbonNetR",
  "issueTracker": "https://github.com/DenaJGibbon/gibbonNetR/issues",
  "license": "https://spdx.org/licenses/MIT",
  "version": "1.0.0",
  "programmingLanguage": {
    "@type": "ComputerLanguage",
    "name": "R",
    "url": "https://r-project.org"
  },
  "runtimePlatform": "R version 4.4.0 (2024-04-24)",
  "author": [
    {
      "@type": "Person",
      "givenName": "Dena J.",
      "familyName": "Clink",
      "email": "dena.clink@cornell.edu",
      "@id": "https://orcid.org/0000-0003-0363-5581"
    }
  ],
  "maintainer": [
    {
      "@type": "Person",
      "givenName": "Dena J.",
      "familyName": "Clink",
      "email": "dena.clink@cornell.edu",
      "@id": "https://orcid.org/0000-0003-0363-5581"
    }
  ],
  "softwareSuggestions": [
    {
      "@type": "SoftwareApplication",
      "identifier": "devtools",
      "name": "devtools",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=devtools"
    },
    {
      "@type": "SoftwareApplication",
      "identifier": "knitr",
      "name": "knitr",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=knitr"
    },
    {
      "@type": "SoftwareApplication",
      "identifier": "rmarkdown",
      "name": "rmarkdown",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=rmarkdown"
    },
    {
      "@type": "SoftwareApplication",
      "identifier": "testthat",
      "name": "testthat",
      "version": ">= 3.0.0",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=testthat"
    }
  ],
  "softwareRequirements": {
    "1": {
      "@type": "SoftwareApplication",
      "identifier": "luz",
      "name": "luz",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=luz"
    },
    "2": {
      "@type": "SoftwareApplication",
      "identifier": "R",
      "name": "R",
      "version": ">= 2.10"
    },
    "3": {
      "@type": "SoftwareApplication",
      "identifier": "torch",
      "name": "torch",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=torch"
    },
    "4": {
      "@type": "SoftwareApplication",
      "identifier": "torchvision",
      "name": "torchvision",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=torchvision"
    },
    "5": {
      "@type": "SoftwareApplication",
      "identifier": "tuneR",
      "name": "tuneR",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=tuneR"
    },
    "6": {
      "@type": "SoftwareApplication",
      "identifier": "aricode",
      "name": "aricode",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=aricode"
    },
    "7": {
      "@type": "SoftwareApplication",
      "identifier": "caret",
      "name": "caret",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=caret"
    },
    "8": {
      "@type": "SoftwareApplication",
      "identifier": "coro",
      "name": "coro",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=coro"
    },
    "9": {
      "@type": "SoftwareApplication",
      "identifier": "cowplot",
      "name": "cowplot",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=cowplot"
    },
    "10": {
      "@type": "SoftwareApplication",
      "identifier": "data.table",
      "name": "data.table",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=data.table"
    },
    "11": {
      "@type": "SoftwareApplication",
      "identifier": "dbscan",
      "name": "dbscan",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=dbscan"
    },
    "12": {
      "@type": "SoftwareApplication",
      "identifier": "dplyr",
      "name": "dplyr",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=dplyr"
    },
    "13": {
      "@type": "SoftwareApplication",
      "identifier": "ggplot2",
      "name": "ggplot2",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=ggplot2"
    },
    "14": {
      "@type": "SoftwareApplication",
      "identifier": "ggpubr",
      "name": "ggpubr",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=ggpubr"
    },
    "15": {
      "@type": "SoftwareApplication",
      "identifier": "grDevices",
      "name": "grDevices"
    },
    "16": {
      "@type": "SoftwareApplication",
      "identifier": "magrittr",
      "name": "magrittr",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=magrittr"
    },
    "17": {
      "@type": "SoftwareApplication",
      "identifier": "purrr",
      "name": "purrr",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=purrr"
    },
    "18": {
      "@type": "SoftwareApplication",
      "identifier": "readr",
      "name": "readr",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=readr"
    },
    "19": {
      "@type": "SoftwareApplication",
      "identifier": "ROCR",
      "name": "ROCR",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=ROCR"
    },
    "20": {
      "@type": "SoftwareApplication",
      "identifier": "seewave",
      "name": "seewave",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=seewave"
    },
    "21": {
      "@type": "SoftwareApplication",
      "identifier": "stats",
      "name": "stats"
    },
    "22": {
      "@type": "SoftwareApplication",
      "identifier": "stringr",
      "name": "stringr",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=stringr"
    },
    "23": {
      "@type": "SoftwareApplication",
      "identifier": "tibble",
      "name": "tibble",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=tibble"
    },
    "24": {
      "@type": "SoftwareApplication",
      "identifier": "tidyr",
      "name": "tidyr",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=tidyr"
    },
    "25": {
      "@type": "SoftwareApplication",
      "identifier": "torchdatasets",
      "name": "torchdatasets",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=torchdatasets"
    },
    "26": {
      "@type": "SoftwareApplication",
      "identifier": "umap",
      "name": "umap",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=umap"
    },
    "27": {
      "@type": "SoftwareApplication",
      "identifier": "utils",
      "name": "utils"
    },
    "28": {
      "@type": "SoftwareApplication",
      "identifier": "viridis",
      "name": "viridis",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=viridis"
    },
    "SystemRequirements": null
  },
  "fileSize": "126647.829KB",
  "citation": [
    {
      "@type": "SoftwareSourceCode",
      "datePublished": "2025",
      "author": [
        {
          "@type": "Person",
          "givenName": [
            "Dena",
            "J."
          ],
          "familyName": "Clink"
        },
        {
          "@type": "Person",
          "givenName": [
            "Abdul",
            "Hamid"
          ],
          "familyName": "Ahmad"
        }
      ],
      "name": "gibbonNetR: R Package for the Use of CNNs and Transfer Learning on Acoustic Data",
      "url": "https://github.com/DenaJGibbon/gibbonNetR",
      "isPartOf": {
        "@type": "PublicationIssue",
        "datePublished": "2025",
        "isPartOf": {
          "@type": [
            "PublicationVolume",
            "Periodical"
          ],
          "name": "GitHub"
        }
      }
    }
  ],
  "relatedLink": "https://denajgibbon.github.io/gibbonNetR/",
  "readme": "https://github.com/DenaJGibbon/gibbonNetR/blob/main/README.md"
}

GitHub Events

Total
  • Create event: 1
  • Release event: 1
  • Issues event: 16
  • Issue comment event: 17
  • Push event: 178
  • Pull request review event: 1
  • Pull request event: 2
  • Fork event: 1
Last Year
  • Create event: 1
  • Release event: 1
  • Issues event: 16
  • Issue comment event: 17
  • Push event: 178
  • Pull request review event: 1
  • Pull request event: 2
  • Fork event: 1

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 8
  • Total pull requests: 2
  • Average time to close issues: 4 months
  • Average time to close pull requests: about 2 months
  • Total issue authors: 3
  • Total pull request authors: 2
  • Average comments per issue: 1.25
  • Average comments per pull request: 1.0
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 7
  • Pull requests: 2
  • Average time to close issues: 3 months
  • Average time to close pull requests: about 2 months
  • Issue authors: 3
  • Pull request authors: 2
  • Average comments per issue: 1.43
  • Average comments per pull request: 1.0
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • steffilazerte (4)
  • DenaJGibbon (3)
  • faroit (2)
Pull Request Authors
  • steffilazerte (1)
  • faroit (1)
Top Labels
Issue Labels
Pull Request Labels

Dependencies

.github/workflows/draft-pdf.yml actions
  • actions/checkout v4 composite
  • actions/upload-artifact v1 composite
  • openjournals/openjournals-draft-action master composite
DESCRIPTION cran
  • R >= 2.10 depends
  • aricode * depends
  • caret * depends
  • dbscan * depends
  • ggpubr * depends
  • luz * depends
  • pROC * depends
  • seewave * depends
  • stringr * depends
  • torch * depends
  • torchvision * depends
  • tuneR * depends
  • tibble * imports
  • knitr * suggests
  • rmarkdown * suggests
  • testthat >= 3.0.0 suggests