Getting Started

Welcome to Nemo, the AI-powered maritime hazard detection system. This guide will walk you through all features and settings to help you get the most out of your safety system.

System Requirements

Versions

Nemo is available in two versions:

If you're unsure which to pick, start with the Intel version.

Quick Start

  1. Run the Nemo installer (.exe)
  2. Click through the license agreement and readme
  3. Nemo installs to C:\Program Files\Nemo and creates two shortcuts on your desktop
  4. Open the Nemo Server shortcut first
  5. Then open the Nemo Dashboard shortcut to access the interface
Note: Nemo works completely offline after initial setup. No internet connection is required for core detection functionality.

Installation

Nemo ships as a standalone installer — everything is included. No Python, no pip, no Docker. Install and run.

Step 1: Download the Right Version

After purchasing your license, you'll receive a download link. Choose the version for your system:

Version Best For
Nemo (Intel) Any modern Windows laptop or desktop. If CUDA is already installed on your system, this version will likely use it automatically.
Nemo (CUDA) Systems with a dedicated NVIDIA GPU and CUDA toolkit installed, for maximum performance.

If you're unsure, start with the Intel version.

Step 2: Run the Installer

  1. Double-click the Nemo .exe installer
  2. Click Next to accept the license agreement
  3. Click Next to view the readme
  4. The installer will install Nemo to C:\Program Files\Nemo
  5. Two shortcuts are created on your desktop: Nemo Server and Nemo Dashboard

Step 3: Connect Camera

Plug in your USB camera before running Nemo.

Step 4: Start the Server

Open the Nemo Server shortcut on your desktop. The server must be running before you can use the dashboard.

Important: Always start the Nemo Server first. The dashboard will not work without the server running.

Step 5: Open the Dashboard

Open the Nemo Dashboard shortcut on your desktop. This opens the Nemo interface in your web browser.

Step 6: Accessing from Another Device

To access the dashboard from a phone, tablet, or another computer on the same network:

  1. Look at the Nemo Server window — it displays your IP addresses
  2. You'll see 127.0.0.1 (this is localhost, only for the computer running Nemo)
  3. Below that, you'll see another IP address (e.g. 192.168.1.100) — this is the one to use from other devices
  4. On the other device, open a browser and go to http://[that-ip-address]:5001

No WiFi Network on the Boat?

Most boats don't have a WiFi network, which means your phone and other devices can't connect to the laptop running Nemo. To fix this:

  1. On your laptop, turn on the Mobile Hotspot (Windows Settings > Network & Internet > Mobile Hotspot)
  2. Connect your phone, tablet, or other devices to the laptop's hotspot
  3. Then start the Nemo Server
  4. Use the IP address shown in the server window to access the dashboard from your connected devices
Tip: Start your laptop's WiFi hotspot before launching Nemo so the server picks up the correct network address for connected devices.

Performance Tip

You'll get better performance out of Nemo if you don't have the dashboard open on the same machine. Once you've configured your settings, close the dashboard and let the server run in the background — it will continue detecting and alerting without the dashboard.

If you want to tune the system before heading out, you can point Nemo at a local video file path instead of a live camera. This lets you run recorded footage through the detection system to dial in your settings before you're on the water.

Verify Detection

You should see the live camera feed with detection overlays. Check the FPS counter in the header — it should read 15+ FPS for normal operation.

Updating Nemo

Updates are included for 1 year with your license. When a new version is available:

  1. Download the new installer from your account
  2. Close the running Nemo Server
  3. Run the new installer — it will update the existing installation

Compatibility Check Tool

Before purchasing a software license, use the free Compatibility Check tool to verify your hardware can run Nemo.

What It Does

How to Run

  1. Download the compatibility check tool from mynemo.ca/compatibility-check
  2. Extract the archive for your platform
  3. Connect a USB camera to your Jetson or laptop
  4. Run the tool:

    Linux / Jetson:

    ./nemo-compat-check

    Windows:

    nemo-compat-check.exe
  5. Watch the live FPS counter and detection output

Interpreting Results

Result FPS Meaning
PASS >15 FPS Your hardware can run Nemo. You're ready to purchase the software license.
FAIL <15 FPS or errors Your hardware does not meet the minimum requirements for real-time detection.

Troubleshooting Failed Results

Why stock RT-DETR? The compatibility check uses a public model to benchmark your hardware without exposing any proprietary Nemo models. If the stock RT-DETR model runs at >15 FPS, the full Nemo maritime model will run correctly on your system.

Interface Overview

The Nemo interface is divided into several key areas:

Header Bar

Element Description
Menu Button Opens the settings panel and navigation menu
Status Indicator Shows "Online" when system is active, displays execution mode (TensorRT/CPU)
FPS Counter Real-time frames per second being processed
Object Count Number of objects currently being tracked

Main Display

The central area shows the live camera feed with detection overlays. Key information displayed:

Warning Banner

When collision risks are detected, an orange/red warning banner appears at the bottom of the screen showing the number of potential risks.

Live Camera Feed

The live video feed is the heart of Nemo's detection system. Nemo accepts any video source — USB cameras, IP cameras, RTSP streams, streaming feeds, or local files.

Feed Controls

Control Function
RAW Toggle Switch between processed view (with enhancements) and raw camera output
Eye Icon Shows/hides detection overlays
Fullscreen Expands the feed to full screen mode

RAW vs Processed View

Processed View (Default): Shows the camera feed with image enhancements applied (gamma correction, CLAHE, contrast adjustments). This is what the AI sees and is optimized for detection accuracy.

RAW View: Shows the unmodified camera output. Useful for troubleshooting camera issues or comparing detection performance.

Detection Overlays

Objects are highlighted with colored bounding boxes:

Detection System

Nemo uses advanced AI models trained specifically for maritime environments to detect and classify objects in real-time.

Detected Object Types

Object Type Description
Vessels/Boats Motorboats, sailboats, kayaks, canoes, commercial vessels
Persons People on docks, other vessels, or in the water
Swimmers People swimming in the water (separate from persons on vessels)
Jet Skis Personal watercraft and wave runners
Buoys Navigation buoys, channel markers, mooring buoys
Debris Floating debris, logs, hazardous objects in the water

How Detection Works

  1. Image Capture: Camera frames are captured at up to 60 FPS
  2. Preprocessing: Images are enhanced for optimal detection (gamma correction, contrast adjustment)
  3. AI Inference: TensorRT-optimized neural network analyzes each frame
  4. Object Classification: Detected objects are classified by type
  5. Risk Assessment: Object trajectories are analyzed for collision risk
  6. Alert Generation: Visual and audio alerts are triggered when risks are detected
Performance: Nemo achieves 30-60 FPS processing with 95%+ detection accuracy in typical maritime conditions.

Collision Warnings

Nemo continuously analyzes object trajectories and positions to identify potential collision risks.

Warning Levels

Level Indicator Meaning Action
Monitor Yellow box Object detected, tracking in progress Be aware of surroundings
Caution Orange highlight Object on converging path Monitor closely, prepare to maneuver
Warning Red box + banner + audio Collision risk imminent Take immediate evasive action

Warning Banner

When one or more collision risks are detected, a warning banner appears at the bottom of the screen:

⚠️ COLLISION WARNING - 4 potential collision risk(s) detected

The banner shows the total number of active collision risks. Click the banner to highlight the specific objects causing warnings.

Risk Calculation Factors

Nemo considers multiple factors when assessing collision risk:

Image Processing Settings

Nemo includes advanced image processing to optimize detection in various lighting and weather conditions.

CLAHE (Contrast Limited Adaptive Histogram Equalization)

CLAHE improves local contrast in images, making objects more visible in challenging lighting conditions.

Setting Range Default Description
CLAHE Tile Size 2-16 8 Size of the grid for local histogram equalization. Smaller values = more local contrast enhancement.

Contrast Adjustment

Manual contrast controls for fine-tuning image appearance.

Setting Range Default Description
Contrast Adjustment On/Off Off Enable/disable manual contrast controls
Contrast Alpha 0.5-3.0 1.0 Contrast multiplier. Values >1 increase contrast, <1 decrease.
Contrast Beta -100 to 100 0 Brightness adjustment. Positive values brighten, negative darken.

Gamma Correction

Adaptive gamma correction improves visibility in low-light conditions. This is handled automatically in Lightweight Mode or through the full preprocessing pipeline.

Tip: For most conditions, leave image processing at default settings. Only adjust if you notice detection issues in specific lighting conditions.

Performance Optimizations

These settings allow you to balance detection accuracy against processing speed.

Lightweight Mode

Setting Default Description
Lightweight Mode On Uses fast gamma correction instead of heavy preprocessing pipeline. Recommended for most use cases.

When to disable: In extremely challenging visibility conditions (heavy fog, dusk/dawn transitions) where full preprocessing may improve detection.

Two-Stage Inference

Setting Default Description
Two-Stage Inference Off Enables a coarse detection pass followed by focused ROI analysis for better small-object detection.
Coarse Pass Scale 50% Resolution for the initial coarse detection pass. Lower values = faster but may miss small objects.
ROI Margin 30% Margin above the waterline for the Region of Interest. Larger margins capture objects higher in frame.

When to enable Two-Stage:

Note: Enabling Two-Stage Inference will reduce FPS by approximately 15-25%. Monitor your FPS counter to ensure acceptable performance.

Detection Sensitivity

Adjust sensitivity thresholds for each object type to fine-tune detection behavior.

Sensitivity Sliders

Each object type has an independent sensitivity slider (0-100%):

Object Type Default Description
Person Sensitivity 10% Detection threshold for persons on vessels or docks
Swimmer Sensitivity 10% Detection threshold for swimmers in water
Boat Sensitivity 40% Detection threshold for vessels and watercraft
Jetski Sensitivity 12% Detection threshold for personal watercraft
Buoy Sensitivity 11% Detection threshold for navigation markers
Debris Sensitivity 10% Detection threshold for floating debris and hazards

Understanding Sensitivity

Lower values (0-25%): More detections, including uncertain ones. May increase false positives but catches more objects.

Higher values (75-100%): Only high-confidence detections. Fewer false positives but may miss some objects.

Recommended Settings by Environment

Environment Recommendation
Busy marina/harbor Higher sensitivity (20-40%) to reduce alert fatigue
Open water Lower sensitivity (5-15%) to catch distant objects
Swimming areas Very low swimmer/person sensitivity (5-10%)
Night operation Lower all sensitivities to compensate for reduced visibility
Tip: If you're getting too many false positives (detecting waves, reflections, etc.), increase the sensitivity value for that object type. If you're missing real objects, decrease it.

Video Input & Camera Setup

Nemo accepts virtually any video source. If it outputs video, Nemo can process it.

Supported Video Sources

Source Connection Notes
USB Webcam USB 2.0/3.0 Plug and play, easiest setup
IP Camera (RTSP) Ethernet/WiFi Any RTSP stream — network cameras, NVRs, etc.
Streaming Feed URL / Network Any HTTP, RTSP, or MJPEG video stream
Local Source File / Device Local video files or any system video device
Onboard Camera Varies Integration with existing vessel camera systems
CSI Camera CSI connector Direct Jetson connection, lowest latency

Camera Positioning

Adding an IP Camera or Stream

  1. Open Settings > Camera Configuration
  2. Select "Add Camera"
  3. Enter the stream URL: rtsp://[username:password@]ip_address:port/stream
  4. HTTP and MJPEG streams are also supported — paste any valid video URL
  5. Test connection and save

Multi-Camera Setup

Nemo supports multiple video sources for comprehensive coverage:

Streaming Detection Output

Nemo outputs the processed detection feed as a network stream. You can view it in the web dashboard, or consume it from any external application:

To get the stream URL, right-click the video feed in the dashboard and select "Copy stream URL" (or similar depending on browser). This lets you display the detection feed on any screen, device, or recording application on your network.

Tip: Use VLC's Open Network Stream to display the Nemo detection feed on a dedicated screen at the helm, a TV below deck, or record it for later review — all without opening a browser.

Audio Alerts

Nemo provides audible warnings so you don't have to constantly watch the screen.

Alert Types

Alert Sound Trigger
Object Detected Single tone New object enters detection zone (optional)
Collision Warning Repeating alarm Collision risk identified
Swimmer Alert Distinct tone Person in water detected
System Status Chime System start/stop, camera connect/disconnect

Audio Settings

Multi-Device Access

Access Nemo's dashboard from any device on your local network.

Connecting from Other Devices

  1. Ensure your device is on the same network as the Nemo Computer
  2. Open a web browser
  3. Navigate to http://nemo.local:5001 or http://[nemo-ip]:5001
  4. The full dashboard is available on any device

Supported Devices

Network Requirements

Home Assistant Integration

Integrate Nemo with your Home Assistant setup for advanced automation.

Capabilities

Setup

  1. Install the Nemo integration from HACS or manually
  2. In Home Assistant, go to Settings > Integrations > Add Integration
  3. Search for "Nemo" and select it
  4. Enter the Nemo Computer's IP address
  5. Configure which entities to expose

Available Entities

Entity Type Description
nemo.status Sensor Online/Offline status
nemo.object_count Sensor Number of detected objects
nemo.collision_warning Binary Sensor Active collision warning
nemo.fps Sensor Current processing FPS

Example Automation

automation:
  - alias: "Nemo Collision Alert"
    trigger:
      - platform: state
        entity_id: binary_sensor.nemo_collision_warning
        to: "on"
    action:
      - service: notify.mobile_app
        data:
          message: "Collision warning detected!"
      - service: light.turn_on
        entity_id: light.deck_lights
        data:
          flash: short

Troubleshooting

Common Issues

Low FPS / Slow Performance

  • Enable Lightweight Mode in Performance settings
  • Disable Two-Stage Inference
  • Reduce camera resolution if possible
  • Check for thermal throttling - ensure adequate ventilation

Too Many False Positives

  • Increase sensitivity values for the problematic object type
  • Adjust camera angle to reduce reflections/glare
  • Check for dirty camera lens

Missing Detections

  • Decrease sensitivity values for the object type
  • Enable Two-Stage Inference for distant objects
  • Check camera focus and cleanliness
  • Verify adequate lighting conditions

Camera Not Detected

  • Check physical connection (USB/network cable)
  • Try a different USB port
  • For IP cameras, verify network connectivity and RTSP URL
  • Restart the Nemo service

No Audio Alerts

  • Check volume settings in Audio configuration
  • Verify speaker/audio output connection
  • Ensure alerts are enabled for the event type

System Logs

Access detailed system logs at Settings > System > Logs for advanced troubleshooting.

API Reference

Nemo exposes a REST API on the local network, allowing you to control the detection system, read status, and stream video from any device or integration. All endpoints are served from http://<nemo-ip>:5001.

Base URL All endpoints below are relative to the Nemo system's address, e.g. http://192.168.1.100:5001

Detection Control

Start Detection

DetailValue
EndpointPOST /start
Content-Typeapplication/json
Body (optional){"video_source": 0}
Response{"success": true}

Starts the detection loop. Optionally pass a video_source (camera index or RTSP URL) to switch the input before starting.

curl -X POST http://192.168.1.100:5001/start \
  -H "Content-Type: application/json" \
  -d '{"video_source": 0}'

Stop Detection

DetailValue
EndpointPOST /stop
Response{"success": true}

Stops the detection loop.

curl -X POST http://192.168.1.100:5001/stop

System Status

Get Status

DetailValue
EndpointGET /status
ResponseJSON object (see below)

Returns the current system state including detection counts, FPS, and active collision risks.

// Example response
{
  "running": true,
  "device": "CUDAExecutionProvider",
  "detections": 3,
  "risks": 1,
  "fps": "26.4",
  "total_reflections_filtered": 12,
  "detections_list": [...]
}

Configuration

Get Configuration

DetailValue
EndpointGET /config
ResponseJSON object with all current settings

Returns the full configuration object including confidence thresholds, preprocessing flags, and risk parameters.

curl http://192.168.1.100:5001/config

Update Configuration

DetailValue
EndpointPOST /config
Content-Typeapplication/json
BodyJSON object with settings to change
Response{"success": true}

Updates one or more configuration values at runtime. Only include the keys you want to change.

curl -X POST http://192.168.1.100:5001/config \
  -H "Content-Type: application/json" \
  -d '{"lightweight_mode": true, "horizon_position": 0.3}'

Video Streams

Live Video Feed

DetailValue
EndpointGET /video_feed
Content-Typemultipart/x-mixed-replace (MJPEG)

MJPEG stream of the live detection feed with bounding boxes and risk overlays drawn on each frame. Embed directly in an <img> tag or consume programmatically.

<img src="http://192.168.1.100:5001/video_feed" />

Enhanced Video Feed

DetailValue
EndpointGET /video_feed_enhanced
Content-Typemultipart/x-mixed-replace (MJPEG)

MJPEG stream showing the preprocessed (enhanced) frame before detection. Useful for comparing raw vs. enhanced image quality.

Camera Management

List Cameras

DetailValue
EndpointGET /cameras
ResponseJSON with camera sources and active index
// Example response
{
  "camera_sources": ["0", "rtsp://192.168.1.50:554/stream"],
  "active_camera_index": 0
}

Update Camera Sources

DetailValue
EndpointPOST /cameras
Content-Typeapplication/json
Body{"camera_sources": ["0", "rtsp://..."]}
Response{"success": true}

Sets the list of available camera sources (USB indices or RTSP/HTTP URLs).

Switch Camera

DetailValue
EndpointPOST /switch_camera
Content-Typeapplication/json
Body{"camera_index": 1}
Response{"success": true} or {"success": false, "error": "Invalid camera index"}

Switches to a different camera from the configured sources. If detection is running, it will restart automatically with the new camera.

curl -X POST http://192.168.1.100:5001/switch_camera \
  -H "Content-Type: application/json" \
  -d '{"camera_index": 1}'

Debugging & Testing

Test Alarm

DetailValue
EndpointPOST /test_alarm
Response{"success": true}

Triggers the audio alarm manually. Use this to verify that the speaker and alarm audio are working correctly.

curl -X POST http://192.168.1.100:5001/test_alarm

Debug Mode

DetailValue
Endpoint (GET)GET /debug
Response{"debug_mode": false}
Endpoint (POST)POST /debug
Body{"enabled": true}
Response{"success": true}

Get or set debug mode. When enabled, additional diagnostic information is displayed on the video feed overlay.

curl -X POST http://192.168.1.100:5001/debug \
  -H "Content-Type: application/json" \
  -d '{"enabled": true}'

Quick Reference

Endpoint Method Description
/start POST Start detection loop
/stop POST Stop detection loop
/status GET System status, FPS, detections, risks
/config GET / POST Read or update configuration
/video_feed GET MJPEG live stream with overlays
/video_feed_enhanced GET MJPEG enhanced/preprocessed stream
/cameras GET / POST List or update camera sources
/switch_camera POST Switch active camera
/test_alarm POST Trigger alarm manually
/debug GET / POST Get or set debug mode

Technical Specifications

Supported Hardware

Platform Minimum Requirement
NVIDIA Jetson Orin Nano or Orin NX with JetPack SDK
Laptop Any modern Windows laptop (Intel version available, CUDA version for NVIDIA GPUs)
Nemo Computer Pre-configured Jetson Orin (included hardware product)

Hardware (Nemo Computer)

Component Specification
Processor NVIDIA Jetson Orin
GPU Ampere architecture with Tensor Cores
Memory 8-16GB unified memory
Storage 64GB+ NVMe SSD
Power 15-25W typical consumption
Operating Temp -25°C to 50°C

Software

Feature Specification
Operating System Ubuntu Linux (Jetson optimized)
AI Framework TensorRT (NVIDIA)
Processing Speed 30-60 FPS
Detection Accuracy 95%+ in typical conditions
Latency <100ms detection to alert

Connectivity

Interface Specification
USB 4x USB 3.0 ports
Network Gigabit Ethernet, WiFi optional
Video Input USB, RTSP, CSI
Audio Output 3.5mm, HDMI, USB