CSAI Research Team logo

A Multimodal Perception Pipeline for Out-of-Distribution Autonomous Navigation

CSAI Research Team, California Polytechnic University San Luis Obispo

Abstract

Autonomous navigation systems trained on fixed datasets struggle to generalize when deployed in unfamiliar environments. A model trained on high-infrastructure urban settings may fail to correctly interpret a rural tractor, a costumed pedestrian, or an unusual roadside obstacle — not because the model is poorly designed, but because the object or scene lies outside its training distribution. Rather than attempting to retrain or replace existing navigation systems, this work explores a supplementary pipeline that can be layered on top of them to handle out-of-distribution inputs.

The pipeline operates in two stages. The first stage, unknown object detection, addresses the problem of a model encountering objects it cannot confidently classify. Three approaches were implemented and evaluated on live webcam input: a confidence-thresholded YOLO-World detector that flags low-confidence predictions as unknown, a dual-model consensus pipeline pairing a class-agnostic detector (NanoOWL) with YOLO-World to identify objects that are detected but cannot be matched to a known class, and a closed-vocabulary YOLO baseline that illustrates the core limitation motivating the other approaches. The second stage, multimodal scene interpretation, addresses the downstream question of what to do once an unknown or ambiguous scene is detected. A suite of vision-language models (VLMs) was evaluated on their ability to produce a natural-language scene description and a binary traversability judgment from a single image. Models evaluated include local VLMs run on-device (Qwen2-VL, LLaVA-1.5, Moondream2, InternVL2-2B) and cloud API approaches (GPT-4o-mini, Gemini 2.0 Flash Lite). Local models exhibited inference times of 10–30+ minutes per image on CPU, making them impractical for real-time deployment in their current form. Cloud API models returned results in 2–5 seconds with no local hardware requirements, demonstrating substantially greater feasibility for near-term prototyping.

Shared utilities across the VLM implementations were validated using property-based testing with the Hypothesis library, ensuring consistent traversability parsing, output formatting, and file path construction across all model backends. Taken together, the two subsystems form a modular, model-agnostic pipeline that can flag uncertainty in perception and provide contextual scene understanding — two capabilities that are largely absent from standard autonomous navigation stacks when operating outside their training domain.


How It Works

Pipeline architecture diagram: Capture, Unknown Object Detection, Persistence Gate, Multimodal Query, Navigation, Display, looping back to Capture
The pipeline runs continuously on live webcam frames. An unknown detection must persist for several consecutive frames before it is treated as real and triggers a multimodal query; navigation then gates forward motion on both the traversability verdict and the AprilTag's distance.

Research Subsystems

Unknown Object Detection

Ceyanna Badyal, Zach Goldwyn

Standard object detection models operate on closed-vocabulary datasets. When presented with an object outside their training distribution, these models either misclassify it or assign low confidence to their best guess. Four approaches were implemented, ranging from a closed-vocabulary baseline to a dual-model consensus pipeline, each evaluated qualitatively by presenting niche or unusual objects to a live webcam.

Confidence-Thresholded YOLO-World

YOLOv8s-worldv2, an open-vocabulary detector, runs on live webcam video with a 50% confidence threshold: detections at or above threshold are labeled with their class name, and detections below it are flagged UNKNOWN OBJECT. Confidence acts as a proxy for how well the object matches the model's training distribution.
for box in boxes:
    conf = float(box.conf[0])
    label = result.names[int(box.cls[0])]
    if conf * 100 > confidencebenchmark:
        # draw label + confidence in blue
    if conf * 100 < confidencebenchmark:
        # draw "UNKNOWN OBJECT" in red

Dual-Model Consensus (NanoOWL + YOLO-World)

A class-agnostic detector (NanoOWL) flags that something is present; YOLO-World attempts to classify it against a fixed 12-class candidate list. IoU-matched detections are scored as Matched, Weak Match, or Unknown depending on whether a match was found and YOLO-World's confidence in it.

Baseline Closed-Vocabulary YOLO

A standard YOLOv11n model with no unknown-object logic — every detection is forced into the closed class set. This baseline illustrates the core limitation motivating the other three approaches: no mechanism exists to express uncertainty about an out-of-distribution object.

Colour Histogram Change Detection

A lightweight, model-free pre-filter: consecutive frames are compared via 8×8×8-bin BGR colour histograms and the Bhattacharyya distance. A distance above 0.1 flags Color Changed. It detects that the scene changed, not what changed, and was evaluated as an early exploratory prototype — no live demo capture exists for this approach beyond its written description.
Limitations:
  • Evaluated qualitatively; no standardized benchmark dataset was used.
  • NanoOWL was run on CPU, significantly slower than the intended NVIDIA edge hardware target.
  • The YOLO-World candidate class list (12 classes) was manually curated and may not generalize to all environments.
  • A planned custom class-agnostic model, trained on researcher-collected data, was designed but not completed in this phase.

Multimodal Scene Interpretation

Vinayak Kohli

Even when an object is flagged unknown, the agent still needs to decide whether to proceed. This subsystem evaluates whether vision-language models (VLMs) can supply that judgment — a natural-language scene description plus a binary traversability verdict — from a single image.

ModelTypeParametersLatency
Qwen2-VLLocal (Hugging Face)~7B10–30+ min/image (CPU)
LLaVA-1.5Local (Hugging Face)~7B10–30+ min/image (CPU)
Moondream2Local (Hugging Face)~1.9B10–30+ min/image (CPU)
InternVL2-2BLocal (Hugging Face)~2B10–30+ min/image (CPU)
GPT-4o-miniCloud API (OpenAI)2–5s/image
Gemini 2.0 Flash LiteCloud API (Google)2–5s/image
All four local VLMs exhibited inference times of 10–30+ minutes per image on CPU — impractical for real-time deployment in their current form. Cloud APIs returned results in 2–5 seconds with no local hardware requirement, at the cost of a network dependency. Shared utilities (traversability parsing, output formatting, file-path construction) were validated with five correctness properties via property-based testing (Hypothesis, 100 examples each) — for example:
def parse_traversability(response: str) -> bool:
    """Returns True iff the response starts with 'yes' (case-insensitive)."""
    return response.strip().lower().startswith("yes")
Limitations:
  • No ground-truth traversability labels; assessment quality was evaluated qualitatively only.
  • CPU-only inference for local models; results may differ substantially with GPU acceleration.
  • Traversability is assessed on individual static frames with no temporal context, depth information, or sensor fusion.
  • The test images used are researcher-supplied and do not constitute a representative benchmark.

Navigation

Saurish Suman

Once an unknown object or non-traversable scene has been identified, the agent needs a reliable way to reorient itself using a known landmark. This subsystem uses AprilTag fiducial markers: a camera detects a printed tag, estimates its 3D pose using calibrated camera intrinsics (recovered via a checkerboard calibration procedure), and issues a directional movement command based on that pose.

ConditionCommand
Lateral offset < −7.5 cmMove Left
Lateral offset > +7.5 cmMove Right
Depth > 10 cmMove Forward
Depth ≤ 10 cmStop
No tag detectedNo Tag Detected
if tag.pose_t[0] < -0.075:      # Tag is to the left
    command = "Move Left"
elif tag.pose_t[0] > 0.075:     # Tag is to the right
    command = "Move Right"
elif tag.pose_t[2] > 0.1:       # Tag is far
    command = "Move Forward"
elif tag.pose_t[2] <= 0.1:      # Tag is close
    command = "Stop"

if len(tags) == 0:
    command = "No Tag Detected"
Limitations:
  • A single tag is assumed per scene; multi-tag disambiguation was not implemented.
  • Movement commands are discrete and threshold-based; no continuous control signal or PID controller was implemented.
  • Pose estimation accuracy degrades at steep viewing angles and long distances.
  • No temporal smoothing — rapid tag movement can cause flickering command output.
  • Calibration is camera-specific and must be recollected for a different camera or resolution.
  • No integration with the unknown object detection or multimodal interpretation subsystems was implemented in this phase.

Results

Detection Trials

Each detection approach was evaluated with the same protocol: five known objects and five unknown objects were each presented to the camera for three trials (30 trials total per approach), and every trial was scored as a true positive, true negative, false positive, or false negative against ground truth.

Grouped bar chart of accuracy, precision, recall, and F1 for three detection approaches across 30 trials each
ApproachTPTNFPFN AccuracyPrecisionRecallF1Source
Confidence-Thresholded YOLO-World 141411 93.3%93.3%93.3%93.3% PDF
Dual-Model Consensus (NanoOWL + YOLO-World) 111324 80.0%84.6%73.3%78.6% PDF
Colour Histogram Change Detection 214113 53.3%66.7%13.3%22.2% PDF

For navigation safety, recall matters more than precision — missing a real unknown object (a false negative) is more dangerous than a false alarm. The colour histogram approach's low recall reflects that it detects scene-level change rather than object-level presence, as noted in its write-up above.

Multimodal Traversability Comparison

A separate experiment compared two cloud VLMs — Gemini 2.5 Flash Lite and GPT-4.1-nano — on their ability to judge road traversability across 9 test images, using the same prompt and measuring wall-clock latency per call.

Bar charts comparing Gemini and OpenAI traversability accuracy and mean API latency
ImageGround TruthGeminiOpenAI
test1false✗ true✓ false
test2false✓ false✓ false
test3true✓ true✓ true
test5false✓ false✓ false
test6false✓ false✓ false
test7true✗ false✓ true
test8false✓ false✓ false
test9true✓ true✗ false
test10false✓ false✓ false
Correct7 / 98 / 9

Gemini errors: On test1, a person in a morph suit next to a novelty pedestrian sign was judged traversable — the model failed to treat the pedestrian-adjacent hazard as a reason to stop. On test7, a graffiti-covered but structurally sound bridge was judged non-traversable, over-indexing on visual degradation as a proxy for structural unsafety.

OpenAI errors: On test9, a woman hitchhiking on the roadside with a clear road ahead was judged non-traversable, citing her proximity to the road as a hazard even though the road itself was clear.

Given near-identical latency, accuracy is the primary differentiator for this use case, favouring GPT-4.1-nano for traversability-assessment deployment.


Tech Stack

Core CV
OpenCV NumPy Pillow
Navigation
pupil-apriltags
Object Detection / ML
Ultralytics (YOLO) PyTorch torchvision Transformers
Cloud APIs
Google Gemini API OpenAI API
Utilities
python-dotenv
Testing
pytest Hypothesis

Team

Zach GoldwynUnknown Object Detection
Ceyanna BadyalUnknown Object Detection
Vinayak KohliMultimodal Scene Interpretation
Saurish SumanNavigation & AprilTag
Ivan TorrianiProduct Manager

All team members contributed to experiments and testing.


Documentation & Resources