Skip to content

Commit fc252e6

Browse files
committed
added 1997 link for scienceweb
1 parent 507585a commit fc252e6

33 files changed

Lines changed: 356 additions & 73 deletions

content/posts/2026/advercityML.md

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
---
2+
date: '2026-03-23T09:15:13-04:00'
3+
title: Adver-City ML Workflow
4+
draft: false
5+
tags: ["featured"]
6+
categories: ["project"]
7+
ShowToc: true
8+
---
9+
10+
This project implements a **Machine Learning (ML) pipeline** for the [Adver-City](https://labs.cs.queensu.ca/quarrg/datasets/adver-city/) synthetic dataset. The dataset is designed for investigating **cooperative perception** in autonomous vehicles. Overall, this project enables efficient, reproducible modelling of the Adver-City dataset through ML workflows. We have chosen to train a model to identify weather conditions (clear, fog, rain) from nighttime images.
11+
12+
Note: full GitRepo available [here](https://github.com/tjards/adver-city-ETL).
13+
14+
<figure>
15+
<img src="/img/2026/example_view.gif" alt="Example Scenario (foggy)" width="800" style="border: 1px solid #ddd; border-radius: 8px; padding: 8px; background-color: #f9f9f9;">
16+
<figcaption style="text-align: center; margin-top: 12px; font-style: italic; color: #666;">
17+
<strong>Figure 1:</strong> Example Scenario (foggy) from the Adver-City dataset. The dataset contains images of a variety of weather conditions (clear, fog, rain) and times of day (day, night). In this project we focus on classifying weather conditions from nighttime images.
18+
</figcaption>
19+
</figure>
20+
21+
## Operation
22+
23+
The project is organized into four main stages. Depending on what your goal is (data exploration, ingestion, or training), the notebooks indicated below describe how to run each stage of the workflow.
24+
25+
1. **Initial Data Exploration:** A detailed [readme](./docs/README_ETL.md) has been provided to describe the Extract, Transform, and Load (ETL) process. This is complemented by a [notebook](./notebooks/initial_explore.ipynb) that walks through an exploration of the dataset.
26+
27+
2. **Data Ingestion Pipeline:** The pipeline selectively ingests data from the [FRDR remote server](https://www.frdr-dfdr.ca/repo/dataset/3bda7692-779f-4cbd-b806-b8aa69d5dff9), extracts files based on a sampling plan, creates labels, and generates clean train/val/test splits. A detailed [notebook](./notebooks/data_ingestion_pipeline.ipynb) describes the data ingestion pipeline, including how data is ingested, sampled, and prepared for training.
28+
29+
3. **Data Management Pipeline:** A detailed [notebook](./notebooks/data_management_pipeline.ipynb) describes the data management pipeline, including how the data is cleaned and transformed. A custom Dataset class is defined for use with PyTorch DataLoader. Some Preprocessing (resizing, normalization, and augmentation) is applied to the data.
30+
31+
4. **Training and Testing Pipeline:** A detailed [notebook](./notebooks/training_pipeline.ipynb) describes the training and testing pipeline, including how to train a model, save checkpoints, and evaluate performance on a test set.
32+
33+
## Project Structure
34+
35+
We have organized the project into a modular structure to facilitate efficient development and reproducibility. The main directories and their purposes are as follows:
36+
37+
```
38+
pytorch_project_advercity/
39+
├── README.md
40+
├── requirements.txt # required packages and their versions
41+
├── venv/ # virtual environment for project dependencies
42+
├── config/
43+
│ └── config.json # all configuration parameters stored here
44+
├── data/ # raw and processed data stored here
45+
│ ├── index/
46+
│ ├── raw/
47+
│ ├── ready/ # train, val, test splits stored here
48+
│ └── sampled/
49+
├── docs/
50+
│ └── README_ETL.md
51+
├── exploration/
52+
│ ├── __init__.py
53+
│ ├── utils.py
54+
│ └── data/
55+
├── master_scripts/ # useful master scripts for data pipelines
56+
│ ├── __init__.py
57+
│ ├── data_management_pipeline.py
58+
│ ├── ETL_pipeline.py
59+
│ └── __pycache__/
60+
├── notebooks/ # notebooks for each stage of the workflow
61+
│ ├── data_ingestion_pipeline.ipynb
62+
│ ├── data_management_pipeline.ipynb
63+
│ ├── initial_explore.ipynb
64+
│ ├── training_pipeline.ipynb
65+
│ └── img/
66+
├── results/
67+
│ └── # models and their training results saved here
68+
├── src/ # the main source code for the project
69+
│ ├── __init__.py
70+
│ ├── __pycache__/
71+
│ ├── data_management/
72+
│ ├── ingestion/
73+
│ ├── testing/
74+
│ ├── training/ # model definitions stored here
75+
│ └── utils/
76+
```
77+
78+
## Results
79+
80+
We trained a Convolutional Neural Network (CNN) model to classify weather conditions (clear, fog, rain) from nighttime images. The architecture of the model can be found in the `src/training/model_definitions.py` file.
81+
82+
Models and metrics are saved incrementally during training (using checkpoints) and the **best** model is updated along the way. Below shows an example of the results directory structure for a single training run. Each training run is saved in a separate subdirectory with a unique name (based on the experiment name defined in the config file) and timestamp.
83+
84+
```
85+
results/
86+
└── advercity_weather_classification_128x128_20260322_110258/
87+
├── best_model.pt
88+
├── config.json
89+
├── final_model.pt
90+
├── metrics.json
91+
└── checkpoints/
92+
├── epoch_1.pt
93+
├── epoch_2.pt
94+
├── epoch_3.pt
95+
└── latest.pt
96+
```
97+
98+
### Training and Validation
99+
100+
The model was trained on the **train** set split and validated on the **val** set split. The training process was monitored using the validation set to track performance and prevent overfitting.
101+
<figure>
102+
<img src="/img/2026/training_results.png" alt="Training Results Visualization" width="800" style="border: 1px solid #ddd; border-radius: 8px; padding: 8px; background-color: #f9f9f9;">
103+
<figcaption style="text-align: center; margin-top: 12px; font-style: italic; color: #666;">
104+
<strong>Figure 2:</strong> Training performance metrics show accuracy of our model improving over 10 epochs, with the best model achieving about 96% accuracy on the validation set.
105+
</figcaption>
106+
</figure>
107+
108+
### Testing
109+
110+
As shown in the [Training and Testing Pipeline notebook](./notebooks/training_pipeline.ipynb), the model above was tested on a separate **test** set split. The accuracy of the model on this split was 96.26%, consistent with the validation performance.
111+
112+
## Conclusion
113+
114+
In this project we implemented a complete ML workflow for the Adver-City dataset, including data ingestion, data management, training, and testing. The modular structure of the codebase allows for efficient development and reproducibility. The trained model achieved high accuracy in classifying weather conditions as clear, foggy, or rainy from nighttime images, demonstrating the effectiveness of our approach.
115+
116+
## References
117+
118+
**Karvat, M., & Givigi, S. (2024).** [Adver-City: Open-Source Multi-Modal Dataset for Collaborative Perception Under Adverse Weather Conditions](https://arxiv.org/abs/2410.06380). *arXiv preprint arXiv:2410.06380*.

content/posts/2026/recovered-scienceweb.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ title: "The Great Canadian Hairy Star Party: Restoring a Science Project from 19
33
date: 2026-03-29
44
draft: false
55
tags: ["featured"]
6+
categories: ["project"]
67
ShowToc: false
78
---
89

@@ -19,6 +20,7 @@ The servers hosting the original content were decommissioned in the early 2000s,
1920

2021
- The project is mentioned on the [CM Bulletin Board](https://www.cmreviews.ca/cm/vol3/no14/bb14.html), *Volume III, Number 14 — March 14, 1997*.
2122
- Some partial snapshots can be found on the [Wayback Machine](https://web.archive.org/), but you need to know the exact URLs to find them, and some elements are either missing or corrupted.
23+
- The school launched a similar initiative for Comet Hale-Bopp in 1997 for which some of the content is still available on the [here](https://web.archive.org/web/19990210164909/http://www.scienceweb.org/astro/comet/halebopp/teach/cstudents.html) (with lots of broken links).
2224

2325
I recently successfully recovered the page and have hosted it at the link above for posterity. It is a nostalgic glimpse into the early days of the web, before the era of big social media and large language models, when the internet was a more personal and creative space for individuals to share their passions and projects.
2426

@@ -29,7 +31,7 @@ I attempted to preserve the original page as faithfully as possible. Here's the
2931
- I started with an old box of hard drives and USB sticks in my basement, vaguely recalling I had a copy of the original files somewhere. After some digging, I found an old hard drive labeled *“Travis very old Toshiba HD”*. I connected it to my computer using a SATA-to-USB adapter like this:
3032

3133
![Figure 1](/img/2026/sata.jpeg)
32-
**Figure 1.** This did not work.
34+
**Figure 1.** This didn't work.
3335

3436
### corrupted drive
3537
- It didn’t work on my MacBook. Elena patiently allowed me to try on her Windows machines—no luck. I tried a few different adapters and cables, but the drive was not recognized by any of the machines.

public/.DS_Store

0 Bytes
Binary file not shown.

public/archives/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<!doctype html><html lang=en dir=auto><head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=robots content="index, follow"><title>posts | research notes</title>
22
<meta name=keywords content><meta name=description content="archives"><meta name=author content="tjards"><link rel=canonical href=http://localhost:1313/archives/><link crossorigin=anonymous href=/assets/css/stylesheet.b93646cb73c0e3fa8adbd074f75a838e4ff61605b76591de56d80fa16276c922.css integrity="sha256-uTZGy3PA4/qK29B091qDjk/2FgW3ZZHeVtgPoWJ2ySI=" rel="preload stylesheet" as=style><link rel=icon href=http://localhost:1313/img/favicon.ico><link rel=icon type=image/png sizes=16x16 href=http://localhost:1313/img/favicon16x16.png><link rel=icon type=image/png sizes=32x32 href=http://localhost:1313/img/favicon32x32.png><link rel=apple-touch-icon href=http://localhost:1313/apple-touch-icon.png><link rel=mask-icon href=http://localhost:1313/safari-pinned-tab.svg><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate hreflang=en href=http://localhost:1313/archives/><noscript><style>#theme-toggle,.top-link{display:none}</style></noscript><meta property="og:url" content="http://localhost:1313/archives/"><meta property="og:site_name" content="research notes"><meta property="og:title" content="posts"><meta property="og:description" content="archives"><meta property="og:locale" content="en-us"><meta property="og:type" content="article"><script type=application/ld+json>{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"posts","item":"http://localhost:1313/archives/"}]}</script><script type=application/ld+json>{"@context":"https://schema.org","@type":"BlogPosting","headline":"posts","name":"posts","description":"archives","keywords":[],"articleBody":"","wordCount":"0","inLanguage":"en","datePublished":"0001-01-01T00:00:00Z","dateModified":"0001-01-01T00:00:00Z","author":{"@type":"Person","name":"tjards"},"mainEntityOfPage":{"@type":"WebPage","@id":"http://localhost:1313/archives/"},"publisher":{"@type":"Organization","name":"research notes","logo":{"@type":"ImageObject","url":"http://localhost:1313/img/favicon.ico"}}}</script></head><body class=list id=top><header class=header><nav class=nav><div class=logo><a href=http://localhost:1313/ accesskey=h title="Home (Alt + H)">Home</a><div class=logo-switches></div></div><ul id=menu><li><a href=http://localhost:1313/about/ title="about me"><span>about me</span></a></li><li><a href=http://localhost:1313/archives/ title=posts><span class=active>posts</span></a></li><li><a href=http://localhost:1313/projects/ title=projects><span>projects</span></a></li><li><a href="https://scholar.google.com/citations?user=RGlv4ZUAAAAJ&amp;hl=en" title=publications><span>publications</span>&nbsp;<svg fill="none" shape-rendering="geometricPrecision" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.5" viewBox="0 0 24 24" height="12" width="12"><path d="M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6"/><path d="M15 3h6v6"/><path d="M10 14 21 3"/></svg></a></li></ul></nav></header><main class=main><div class=content-with-sidebar><div class=content-main><header class=page-header><h1>posts</h1></header><div class=archive-year><h2 class=archive-year-header id=2026><a class=archive-header-link href=#2026>2026</a>
3-
<sup class=archive-count>&nbsp;2</sup></h2><div class=archive-month><h3 class=archive-month-header id=2026-March><a class=archive-header-link href=#2026-March>March</a>
4-
<sup class=archive-count>&nbsp;2</sup></h3><div class=archive-posts><div class=archive-entry><h3 class="archive-entry-title entry-hint-parent">Recovered: My Grade 6 Comet Observation</h3><div class=archive-meta><span title='2026-03-29 00:00:00 +0000 UTC'>29 Mar 2026</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;tjards</div><a class=entry-link aria-label="post link to Recovered: My Grade 6 Comet Observation" href=http://localhost:1313/posts/2026/recovered-scienceweb/></a></div><div class=archive-entry><h3 class="archive-entry-title entry-hint-parent">Emergent Manifolds in Swarms: Hidden Spaces for Robots to Coordinate</h3><div class=archive-meta><span title='2026-03-15 13:31:41 -0400 EDT'>15 Mar 2026</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;tjards</div><a class=entry-link aria-label="post link to Emergent Manifolds in Swarms: Hidden Spaces for Robots to Coordinate" href=http://localhost:1313/posts/2026/rl_embeddings/></a></div></div></div></div><div class=archive-year><h2 class=archive-year-header id=2025><a class=archive-header-link href=#2025>2025</a>
3+
<sup class=archive-count>&nbsp;3</sup></h2><div class=archive-month><h3 class=archive-month-header id=2026-March><a class=archive-header-link href=#2026-March>March</a>
4+
<sup class=archive-count>&nbsp;3</sup></h3><div class=archive-posts><div class=archive-entry><h3 class="archive-entry-title entry-hint-parent">The Great Canadian Hairy Star Party: Restoring a Science Project from 1996</h3><div class=archive-meta><span title='2026-03-29 00:00:00 +0000 UTC'>29 Mar 2026</span>&nbsp;·&nbsp;3 min&nbsp;·&nbsp;tjards</div><a class=entry-link aria-label="post link to The Great Canadian Hairy Star Party: Restoring a Science Project from 1996" href=http://localhost:1313/posts/2026/recovered-scienceweb/></a></div><div class=archive-entry><h3 class="archive-entry-title entry-hint-parent">Adver-City ML Workflow</h3><div class=archive-meta><span title='2026-03-23 09:15:13 -0400 EDT'>23 Mar 2026</span>&nbsp;·&nbsp;4 min&nbsp;·&nbsp;tjards</div><a class=entry-link aria-label="post link to Adver-City ML Workflow" href=http://localhost:1313/posts/2026/advercityml/></a></div><div class=archive-entry><h3 class="archive-entry-title entry-hint-parent">Emergent Manifolds in Swarms: Hidden Spaces for Robots to Coordinate</h3><div class=archive-meta><span title='2026-03-15 13:31:41 -0400 EDT'>15 Mar 2026</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;tjards</div><a class=entry-link aria-label="post link to Emergent Manifolds in Swarms: Hidden Spaces for Robots to Coordinate" href=http://localhost:1313/posts/2026/rl_embeddings/></a></div></div></div></div><div class=archive-year><h2 class=archive-year-header id=2025><a class=archive-header-link href=#2025>2025</a>
55
<sup class=archive-count>&nbsp;8</sup></h2><div class=archive-month><h3 class=archive-month-header id=2025-December><a class=archive-header-link href=#2025-December>December</a>
66
<sup class=archive-count>&nbsp;1</sup></h3><div class=archive-posts><div class=archive-entry><h3 class="archive-entry-title entry-hint-parent">The Machines Built The Matrix to Avoid Model Collapse</h3><div class=archive-meta><span title='2025-12-08 13:42:09 -0400 -0400'>8 Dec 2025</span>&nbsp;·&nbsp;7 min&nbsp;·&nbsp;tjards</div><a class=entry-link aria-label="post link to The Machines Built The Matrix to Avoid Model Collapse" href=http://localhost:1313/posts/2025/matrix_entropy/></a></div></div></div><div class=archive-month><h3 class=archive-month-header id=2025-November><a class=archive-header-link href=#2025-November>November</a>
77
<sup class=archive-count>&nbsp;1</sup></h3><div class=archive-posts><div class=archive-entry><h3 class="archive-entry-title entry-hint-parent">The Density of Honey</h3><div class=archive-meta><span title='2025-11-23 16:02:59 -0500 EST'>23 Nov 2025</span>&nbsp;·&nbsp;4 min&nbsp;·&nbsp;tjards</div><a class=entry-link aria-label="post link to The Density of Honey" href=http://localhost:1313/posts/2025/density_of_honey/></a></div></div></div><div class=archive-month><h3 class=archive-month-header id=2025-September><a class=archive-header-link href=#2025-September>September</a>

0 commit comments

Comments
 (0)