CS 5043: HW7: Semantic Labeling

Assignment notes:

Data Set

The Chesapeake Watershed data set is derived from satellite imagery over all of the US states that are part of the Chesapeake Bay watershed system. We are using the patches part of the data set. Each patch is a 256 x 256 image with 29 channels, in which each pixel corresponds to a 1m x 1m area of space. Some of these channels are visible light channels (RGB), while others encode surface reflectivity at different frequencies. In addition, each pixel is labeled as being one of:

Here is an example of the RGB image of one patch and the corresponding pixel labels:

Notes:

Data Organization

All of the data are located on the supercomputer in: /scratch/fagg/chesapeake. Within this directory, there are both train and valid directories. Each of these contain directories F0 ... F9 (folds 0 to 9). Each training fold is composed of 5000 patches (you will need at least 40GB of RAM to load one fold; I don't recommend doing this on your home machine).

Local testing: the file /scratch/fagg/chesapeake_F0.tar.gz contains the data for training fold 0 (it is 3GB compressed).

We will use the valid data set as a proper test set. You should sample from the train directory for a proper validation data set.

Within each fold directory, the files are of the form: SOME_NON_UNIQUE_HEADER-YYY.npz. Where YYY is 0 ... 499 (all possible YYYs occur in each fold directory. There are multiple files with each YYY number in each directory (100 in the training fold directories, to be precise). Because there are 5000 patches in each training fold directory, we will generally be loading a subset of one fold of these data at any one time.

Data Access

In the git repository, we provide a loader for files in one directory:
ins, mask, outs, weights = load_files_from_dir(file_base, filt)
where: Of the return values, ins and outs are properly-formatted tensors for training / evaluating. ins is shape (examples, rows, cols, chans) and outs is shape (examples, rows, cols). Note that outs is an integer tensor that contains the class ID of each pixel (values 0 ... 6) (it is not one-hot encoded for efficiency reasons).

The Problem

Create an image-to-image translator that does semantic labeling of the images.

Details:

Deep Learning Experiment

For what you think is your best performing model type (and hyperparameters), perform 5 different experiments:

The five different experiments will use folds F0 ... F4 (so, no overlap in training data sets; likewise for the validation and testing datasets).

(details are subject to change)

Performance Reporting

  1. Figure: validation accuracy as a function of training epoch. Show 5 curves.

  2. 5 figures: for each final model, evaluate using the test data set and generate a confusion matrix for each of the models.

  3. Metric: average test accuracy across the models


What to Hand In

Hand in a PDF file that contains:

Grades

References

Hints


andrewhfagg -- gmail.com

Last modified: Thu Apr 22 10:51:24 2021