Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Turning this lesson into concrete progress on your SDS320 project

1. Motivation

This lesson covered a lot: when segmentation fits, how encoder-decoder architectures work, a full binary workflow, band and sensor comparisons, pre-trained models, and multi-class post-processing. This page is about deciding, concretely, whether semantic segmentation belongs in your SDS320 project, and sketching the specific choices, classes, bands, architecture, and evaluation plan, your project will need.


2. Project checklist

Work through this list for your own project:


3. Decision points

Segmentation, or a different task? If your target is area-like or continuous, segmentation fits. If you actually need to count or separate individual instances, revisit L06 (detection) or look ahead to L08 (instance segmentation). If you are unsure, revisit the mini task on the “When Segmentation Fits” page.

Binary or multi-class? Start binary if your project genuinely only needs one target class versus everything else. Move to multi-class only when your project actually needs to distinguish among several specific categories; more classes mean more labeled data and training time needed to reach a comparable quality per class.

Custom training, or a pre-trained model? If a sensor-agnostic pre-trained model (like the water and cloud examples in this lesson) already covers your target class and sensor, it can save substantial time. If your target class is project-specific (a particular crop type, a local land-use category), custom training is likely unavoidable.

Which architecture and encoder? unet with resnet34 is a reasonable default for most course projects. Only move to an alternative architecture or encoder once you have a specific, diagnosed limitation, not by default.

What post-processing does your deliverable actually need? A raster mask may be sufficient for visual inspection or area statistics; a GIS deliverable that needs to be joined, filtered, or shared as discrete features needs vectorization, and possibly smoothing or orthogonalization depending on whether your target has natural curves or right angles.


4. Common pitfalls


5. Mini deliverable

Produce a short segmentation project plan (half a page is enough) that states:

  1. Your target class(es), and whether the task is binary or multi-class.

  2. Your imagery source and available bands, and whether you plan to use all of them.

  3. Your label source (existing dataset, pre-trained model, or your own annotation plan with a time estimate).

  4. Your planned starting architecture and encoder, with a one-sentence justification.

  5. Your primary evaluation metric(s) and your plan for handling any class imbalance.

  6. Your intended output format (raster mask, or vector polygons with specific post-processing).


6. Reflection questions

  1. Does your project genuinely need pixel-level masks, or would a simpler classification (L05) or detection (L06) approach actually answer your question?

  2. If your target class has a distinctive spectral signature (like water’s NIR/SWIR absorption), what does that imply for which bands you should prioritize?

  3. Would a pre-trained model plausibly cover your target class, or is custom training unavoidable for your specific project?

  4. If you expect class imbalance in a multi-class scheme, how will you address it, and how will you report per-class performance honestly?

  5. What does your project actually need as a final deliverable: a raster mask, or a vectorized, GIS-ready output, and does your post-processing plan match that?