Lab 11 · GUI Workflows for Labeling & Review (Shiny PNW-Cnet + Njobvu-AI)

Worth: 20 points  |  When: Day 4 evening (3 hours, optional but graded if attempted)  |  Files to submit: two short screen recordings (one per tool, ~2 min each) plus a 1-page PDF reflection.
Pre-reading: all of Days 1–4, especially the bioacoustics tutorial and the Lab 7 handout, and Appel et al. 2025 (link below).

Why this lab

Up to this point you've done everything in Python or R on the command line. That is great for reproducibility, but in real teams — field crews, undergraduates, partners across agencies — not everyone is going to install pycnet-audio in a conda env. The two GUI tools in this lab are the workhorse graphical interfaces in the PNW wildlife community for exactly the same tasks you've been doing on the CLI:

The point of this lab is not to learn a third or fourth tool from scratch. It's to learn when a GUI is the right answer — and how to evaluate one quickly against the CLI workflow you already know.

Reading

Required: Appel, C. L., Subramanian, A., Koning, J. S., et al. (2025). Developing custom computer vision models with Njobvu-AI: A collaborative, user-friendly platform for ecological research. Ecological Applications. doi:10.1002/eap.70096. Read end-to-end; this is short and gives you the context for Part 2 of the lab.

Part 1 — Shiny PNW-Cnet (10 pts)

Install

Shiny PNW-Cnet is an R Shiny app, so you need R + Shiny installed (you already have these from Labs 9 and 10). Clone Zack Ruff's repo and follow the README:

git clone https://github.com/zjruff/Shiny_PNW-Cnet.git
cd Shiny_PNW-Cnet

From R or RStudio:

# install dependencies once (this can take 5-10 min the first time)
source("install_dependencies.R")

# Then launch the app
shiny::runApp(".")

A browser window opens at http://127.0.0.1:<some port>/ with the Shiny UI. If the launch fails on a missing system tool (most commonly SoX or Python), the README has per-OS notes. The app also bundles a one-click Windows installer if you're on a lab/teaching computer.

Tasks (Part 1)

  1. Process a small recording set (4 pts). Point the app at data_sample/audio/. Use the PNW-Cnet v5 model. Run processing. Take a screenshot of the per-class detection-count summary it produces.
  2. Tune review thresholds (3 pts). Pick three classes of your choice (one common, one rare, one ambiguous). For each, move the score-threshold slider from 0.10 to 0.90 and write down how many detections survive at each step. Same exercise as Lab 6's calibration, but with sliders instead of a Python loop.
  3. Review and verify a handful (3 pts). Pick the top 10 detections for one species (your choice). Use the app's review interface to listen to each clip and mark it as confirmed / rejected. Note how many were real; report your verified precision @ the threshold you chose.

Deliverable (Part 1)

A 1–2 minute screen recording walking through the three tasks above. Software-wise the easiest options are macOS's built-in Cmd+Shift+5 or Windows's Game Bar (Win+G). No voice-over required; on-screen captions are fine.

Part 2 — Njobvu-AI for camera-trap labeling and training (10 pts)

Install

Njobvu-AI is a Node.js web app you run locally. You should have Node.js already if you followed the Node.js install section of the RStudio tutorial; if not, install it now.

git clone https://github.com/sullichrosu/Njobvu-AI.git
cd Njobvu-AI
npm install
npm install --save sqlite3   # storage backend

# Start the server
npm start
# Open http://localhost:8080 in your browser

On Windows, the repo also includes InstallMe.exe which installs Node.js for you and creates a desktop shortcut — use that if you're on a teaching computer where you can't run npm.

On the login page, click Signup, create a local account, log in.

Tasks (Part 2)

  1. Create a project and import data (2 pts). Create a new project. Import 20–30 images from data_sample/cameratraps/. Define 4 classes: deer, elk, bear, bobcat (matching Lab 4).
  2. Label a few (4 pts). Draw bounding boxes on at least 15 images. Use the keyboard shortcuts the README documents (much faster than the mouse). For an empty image, mark it as "reviewed, no animal" rather than drawing no box — an important distinction.
  3. Train a tiny model (2 pts). Upload one of the YOLO training scripts Njobvu-AI ships with (or adapt our Lab 4 script). Run training for 1–2 epochs as a smoke test. You don't need a usable model — you need to see the training-status log update in the GUI.
  4. Validate (2 pts). Switch to validation mode. Step through 5 of your labels and either confirm or correct them. Note how the UX compares to running yolo predict on the command line.

Deliverable (Part 2)

A 1–2 minute screen recording showing the labeling, training-run start, and validation step.

Reflection (1-page PDF, both parts)

In ~300 words, answer:

  1. For your own future projects, where would the GUI be a better choice than the CLI? Where is the CLI clearly better? Be specific (e.g., "for undergrad labeling sprints across 3 sites, Njobvu-AI's multi-user mode wins; for nightly batch processing of 100k images on a remote server, yolo predict on the CLI wins").
  2. What did the GUI surface that the CLI hid? (Often: how slow review really is. Sometimes: that your label classes are ambiguous.)
  3. What did the CLI surface that the GUI hid? (Often: reproducibility. Sometimes: which exact model version was used.)

Rubric

ComponentPoints
Part 1 — Shiny PNW-Cnet (install & 3 tasks)10
Part 2 — Njobvu-AI (install & 4 tasks)8
Reflection2
Total20

If something doesn't work

This lab also doubles as a sanity check for your final project: if your project will involve labeling new images or reviewing acoustic detections, one of these tools is almost certainly the right answer for that step.