Selected Projects

VarLogger: Runtime Fault Detection for IoT Sensor Nodes

VarLogger is a lightweight runtime anomaly detection framework for resource-constrained IoT sensor nodes. It monitors selected program variables and execution flow during runtime to construct compact event traces, enabling the detection of abnormal system behavior with minimal computational and energy overhead.

The framework has been implemented and evaluated on real sensor node platforms, demonstrating low CPU, memory, and power overhead, and making it suitable for long-term deployment in low-power wireless and embedded systems.

Github Repo  


VarDiag: Fault Diagnosis for IoT Sensor Nodes

VarDiag is a trace-driven fault diagnosis framework that works alongside VarLogger to explain the root cause of anomalies in IoT sensor nodes. Instead of only flagging abnormal behavior, VarDiag analyzes recorded event traces offline to reconstruct execution, locate the point where behavior diverges, and identify which variables, states, or components are responsible. This approach keeps the sensor node lightweight while enabling developers to understand what went wrong, when it happened, and why, using only minimal runtime logging.

Github Repo  


Event Trace Visualization Dashboard

This project is an interactive dashboard for exploring event traces generated from IoT sensor nodes. Built using Plotly Dash with a SQLAlchemy-backed database, it allows users to load and compare traces, toggle ground-truth labels and anomaly detections, and switch between detections from multiple models. The dashboard provides an intuitive way to inspect how system behavior evolves over time and to visually understand where faults or anomalies were detected.

Github Repo  


Unsupervised Domain Adaptation for Object Detection (YOLOv3)

This project explores how to maintain object-detection accuracy when a YOLOv3 model is trained on synthetic fisheye images but deployed on real fisheye camera data for patient-monitoring scenarios. Because labeled real fisheye datasets are limited, the model is trained on synthetic data — but differences between the two domains can significantly reduce performance. To overcome this, I implemented and evaluated two unsupervised domain adaptation (UDA) methods that learn to bridge the synthetic–to–real gap without using labeled target data. The approach improves the model’s ability to reliably detect people in real environments while still benefiting from inexpensive synthetic training data.

Github Repo