Skip to content

Latest commit

 

History

34 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation


⚡ whoami

from dataclasses import dataclass, field


@dataclass(frozen=True)
class FirstKhoi:
    """Baselines before benchmarks. Ablations before claims."""

    name:   str = "Luong Nhat Khoi"
    handle: str = "FirstKhoi"
    origin: str = "Vietnam 🇻🇳"
    status: str = "CS / Data Science · undergraduate"

    goal:   str = "Research-grade computer vision, built from first principles."

    focus: list[str] = field(default_factory=lambda: [
        "Computer Vision  → detection, tracking, spatial reasoning",
        "Deep Learning    → CNN internals, optimization, ablations",
        "Classical ML     → boosting theory, interpretability",
        "Research craft   → baselines, ablations, reproducibility",
    ])

    principle: str = "Depth over breadth. One question, answered properly."

    def why(self) -> str:
        return "A result I cannot reproduce is a result I do not have."

🧭 research_map

How the pieces connect. Every branch is built to converge on one research question.

flowchart LR
    subgraph F["🧱 Foundations"]
        direction TB
        F1["Classical CV<br/><i>MOG2 · centroid tracking</i>"]
        F2["CNN internals<br/><i>kernels · pooling · LeNet-5</i>"]
        F3["Ensembles &amp; Boosting<br/><i>RF · AdaBoost · XGBoost</i>"]
    end

    subgraph A["🔬 Applied Systems"]
        direction TB
        A1["Multi-Object Tracking<br/><i>SORT · ByteTrack · Kalman</i>"]
        A2["Indoor Localization<br/><i>vision-based positioning</i>"]
        A3["GIS Indoor Routing<br/><i>PostGIS · pgRouting</i>"]
    end

    subgraph R["🎯 Research Question"]
        direction TB
        RQ["<b>Can vision-based localization<br/>replace beacon infrastructure<br/>for indoor transit navigation?</b>"]
    end

    F1 --> A1
    F2 --> A1
    F2 --> A2
    F3 -.->|"rigor transfer:<br/>baselines &amp; ablations"| A2
    A1 --> RQ
    A2 --> RQ
    A3 --> RQ

    classDef found fill:#0D1117,stroke:#22D3EE,stroke-width:2px,color:#E6EDF3
    classDef appl  fill:#0D1117,stroke:#7C3AED,stroke-width:2px,color:#E6EDF3
    classDef res   fill:#1A1030,stroke:#A78BFA,stroke-width:3px,color:#E6EDF3
    class F1,F2,F3 found
    class A1,A2,A3 appl
    class RQ res
Loading

🛠 tech_stack

Core

Data · Infra · Tooling

Vision

OpenCV YOLOv8 MOG2 Optical Flow Centroid SORT Kalman Filter

Learning

PyTorch CUDA CNN LeNet ResNet XGBoost LightGBM TreeSHAP AdaBoost

Spatial

PostGIS pgRouting QGIS GeoJSON Graph routing EPSG:4326 EPSG:32648


📦 featured_work

🎥 Motion Detection → MOT

OpenCV YOLOv8 Kalman

Classical CV pipeline with a validated design decision: MOG2 chosen over static background subtraction after empirical comparison — 2 correct tracks vs. 4 ghost tracks.

Ships with CLI config, centroid tracker, and a YOLOv8 benchmarking harness.

▸ next: full MOT stack + MOTA/IDF1 eval

🗺 Indoor Navigation (Thesis)

PostGIS pgRouting GeoJSON

GIS-based indoor routing for a metro station — pilot site Ga Bến Thành. Floor-plan graph extraction, multi-level pathfinding, and turn-by-turn guidance.

4-person group thesis, spatial DB stack under evaluation.

▸ next: CAD ingestion + routing benchmarks

🧠 CNN From First Principles

PyTorch NumPy

Not a tutorial rerun — kernels, receptive fields and pooling derived by hand, then implemented. LeNet-5 reproduced, debugged, and ablated.

▸ next: CIFAR-10 ablation study (aug × depth × norm)

🌲 XGBoost From Scratch

NumPy scikit-learn

Second-order boosting implemented from the math up — Newton step, Tikhonov-regularized leaf weights, exact split finding.

Benchmarked against a real tabular pipeline.

▸ next: parity check vs. xgboost reference


📈 current_training_run

$ python -m notworle.train --track research-portfolio --epochs inf

  epoch  track                 metric              status
  ─────  ────────────────────  ──────────────────  ──────────────────────────
   01    classical-cv          ghost_tracks 4→2    ✔ MOG2 validated
   02    cnn-foundations       lenet5 debugged     ✔ forward() bug fixed
   03    ensembles             rf · adaboost       ✔ derived by hand
   04    boosting-theory       xgboost newton      ▶ in progress
   05    cnn-ablation          mnist → cifar10     ▶ in progress
   06    indoor-localization   leakage-safe split  ○ queued
   07    mot-benchmark         mota · idf1         ○ queued
   08    paper-reproduction    cvpr / iccv         ○ queued

  early_stopping = None          # patience: unlimited
  ⚠  watchlist: frame-level data leakage in video splits
📚 paper_trail — what I'm reading and why (click to expand)
Paper Why it's on the list
Simple Online and Realtime Tracking (SORT) Minimal, honest baseline — the thing every MOT claim should be measured against
ByteTrack Shows how much performance lives in low-confidence detections
Gradient Boosting: A Statistical View (Friedman) Boosting as functional gradient descent — the idea that makes XGBoost obvious
XGBoost: A Scalable Tree Boosting System Second-order approximation + regularization; the bridge to optimization theory
Batch Normalization / Deep Residual Learning Why depth became trainable — required context for any CNN ablation
PoseNet / camera relocalization line of work Direct ancestry for vision-based indoor localization

Reading protocol: claim → experiment → does the ablation actually support the claim?


📡 live_signal

Not narrative — pulled straight from the GitHub API on a schedule. If this block is stale, the pipeline broke, not the story.

$ python -m notworle.stats --source github --live

  metric                        value       updated (UTC)
  ─────────────────────────────  ──────────  ────────────────────
  current_streak_days             17          2026-09-29 17:53
  contributions_this_week         53
  repos_touched_7d                4
  last_active_at                  2026-09-29

  source: github graphql api · auto-regenerated every 12h

📊 stats

streak stats
top languages trophies

🐍 contribution_graph

contribution snake

🧊 isocalendar_3d

3D isocalendar

                    >>> FirstKhoi().why()
                    'A result I cannot reproduce is a result I do not have.'

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages